From 7c480b2bcafffbdfea386e0ee0469208ecf12e3c Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:08:06 +0800 Subject: [PATCH 1/2] pre-commit: PR118955 --- 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..d42ba377de6 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/118955 export COMPTIME_MODE=0 # Please rebase manually From 54a63a9c1c6d91b26470e91142c638b35ab3af98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:24:50 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll | 8 +- bench/arrow/optimized/compression.cc.ll | 182 ++++--- bench/arrow/optimized/expression.cc.ll | 50 +- bench/assimp/optimized/PlyLoader.cpp.ll | 335 ++++++------ bench/assimp/optimized/PlyParser.cpp.ll | 30 +- bench/c3c/optimized/sema_casts.c.ll | 338 ++++++------ bench/c3c/optimized/sema_decls.c.ll | 361 +++++++------ bench/c3c/optimized/types.c.ll | 23 +- bench/cmake/optimized/zstd_compress.c.ll | 57 +- bench/cpython/optimized/compile.ll | 15 +- bench/cpython/optimized/memoryobject.ll | 41 +- bench/cpython/optimized/unicodectype.ll | 20 +- bench/diesel-rs/optimized/vkwsu3my6pq0v7j.ll | 116 ++--- .../duckdb/optimized/ub_duckdb_common.cpp.ll | 11 +- bench/flac/optimized/stream_decoder.c.ll | 19 +- bench/glslang/optimized/Intermediate.cpp.ll | 293 ++++++----- bench/glslang/optimized/linkValidate.cpp.ll | 439 ++++++++-------- bench/gromacs/optimized/atomdata.cpp.ll | 84 ++- bench/gromacs/optimized/calc_verletbuf.cpp.ll | 22 +- .../optimized/device_management_common.cpp.ll | 17 +- bench/gromacs/optimized/nbnxm_setup.cpp.ll | 212 ++++---- bench/gromacs/optimized/stat.cpp.ll | 60 +-- bench/gromacs/optimized/toputil.cpp.ll | 312 ++++++----- bench/harfbuzz/optimized/harfbuzz.cc.ll | 27 +- bench/hdf5/optimized/H5C.c.ll | 2 +- bench/icu/optimized/regexcmp.ll | 24 +- bench/jq/optimized/regcomp.ll | 136 ++--- bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll | 22 +- bench/libquic/optimized/connect.c.ll | 11 +- bench/libquic/optimized/fd.c.ll | 10 +- bench/libquic/optimized/mul.c.ll | 162 +++--- bench/lief/optimized/psa_crypto.c.ll | 210 ++++---- bench/llama.cpp/optimized/ggml.c.ll | 13 +- bench/llvm/optimized/ConstantFold.cpp.ll | 21 +- bench/llvm/optimized/Decl.cpp.ll | 10 +- bench/llvm/optimized/ExprConstant.cpp.ll | 39 +- bench/llvm/optimized/Instruction.cpp.ll | 139 +++-- bench/llvm/optimized/LowerTypeTests.cpp.ll | 27 +- bench/llvm/optimized/MasmParser.cpp.ll | 91 ++-- bench/llvm/optimized/SemaSystemZ.cpp.ll | 59 +-- bench/llvm/optimized/TypeRecordHelpers.cpp.ll | 157 +++--- bench/llvm/optimized/VPlanRecipes.cpp.ll | 82 ++- bench/meshlab/optimized/filter_unsharp.cpp.ll | 16 +- bench/ocio/optimized/CTFReaderUtils.cpp.ll | 11 +- .../optimized/ExposureContrastOpData.cpp.ll | 20 +- bench/openjdk/optimized/constantPool.ll | 58 +-- bench/openjdk/optimized/hb-ot-metrics.ll | 181 +++---- bench/openjdk/optimized/util.ll | 290 +++++------ bench/openjdk/optimized/vectornode.ll | 122 ++--- bench/openmpi/optimized/bfrop_base_copy.ll | 110 ++-- bench/openmpi/optimized/psquash_native.ll | 254 ++++----- .../optimized/libcrypto-lib-bss_acpt.ll | 13 +- .../openssl/optimized/libcrypto-lib-bss_fd.ll | 16 +- bench/openusd/optimized/aom_image.c.ll | 492 +++++++++--------- bench/openusd/optimized/patchMap.cpp.ll | 6 +- bench/openusd/optimized/types.cpp.ll | 188 +++---- bench/php/optimized/dce.ll | 44 +- bench/php/optimized/ir_emit.ll | 55 +- bench/postgres/optimized/acl.ll | 113 ++-- bench/postgres/optimized/arrayfuncs.ll | 51 +- bench/postgres/optimized/json.ll | 38 +- .../optimized/multirangetypes_selfuncs.ll | 65 ++- bench/postgres/optimized/objectaddress.ll | 40 +- bench/postgres/optimized/parse_agg.ll | 88 ++-- bench/postgres/optimized/typename.ll | 38 +- bench/proxygen/optimized/HTTP2Codec.cpp.ll | 4 +- bench/qemu/optimized/linux-user_strace.c.ll | 42 +- bench/qemu/optimized/linux-user_syscall.c.ll | 307 +++++------ bench/qemu/optimized/tcg.c.ll | 171 +++--- bench/ruby/optimized/regcomp.ll | 68 +-- bench/wasmedge/optimized/controlInstr.cpp.ll | 92 ++-- .../wasmtime-rs/optimized/joyny9bexuq72mb.ll | 176 +++---- bench/wireshark/optimized/packet-ber.c.ll | 107 ++-- bench/wireshark/optimized/packet-btlmp.c.ll | 164 +++--- bench/wireshark/optimized/packet-nfs.c.ll | 32 +- bench/wireshark/optimized/packet-quic.c.ll | 253 +++++---- bench/wireshark/optimized/packet-rdp.c.ll | 70 +-- bench/wireshark/optimized/packet-scsi.c.ll | 266 +++++----- .../optimized/d31g6vudldcq1cl7b9cowxr8a.ll | 43 +- 79 files changed, 4005 insertions(+), 4386 deletions(-) diff --git a/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll b/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll index a33402e582a..1a19ccb22ae 100644 --- a/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll +++ b/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll @@ -686,8 +686,8 @@ default.unreachable: ; preds = %1 6: ; preds = %1 %.mask = and i64 %3, -4294967296 - %cond = icmp eq i64 %.mask, 8589934592 - %spec.select1 = select i1 %cond, i8 0, i8 13 + %switch.selectcmp = icmp eq i64 %.mask, 8589934592 + %switch.select = select i1 %switch.selectcmp, i8 0, i8 13 br label %_ZN3std2io5error5Error4kind17h2040909452a97b57E.exit 7: ; preds = %1 @@ -703,8 +703,8 @@ default.unreachable: ; preds = %1 %14 = load i8, ptr %13, align 8, !range !174, !noundef !4 br label %_ZN3std2io5error5Error4kind17h2040909452a97b57E.exit -_ZN3std2io5error5Error4kind17h2040909452a97b57E.exit: ; preds = %6, %5, %7, %10 - %.0.i = phi i8 [ %14, %10 ], [ %9, %7 ], [ %spec.select, %5 ], [ %spec.select1, %6 ] +_ZN3std2io5error5Error4kind17h2040909452a97b57E.exit: ; preds = %5, %6, %7, %10 + %.0.i = phi i8 [ %14, %10 ], [ %9, %7 ], [ %spec.select, %5 ], [ %switch.select, %6 ] %15 = icmp eq i8 %.0.i, 0 ret i1 %15 } diff --git a/bench/arrow/optimized/compression.cc.ll b/bench/arrow/optimized/compression.cc.ll index c12a71bbe4b..ac810674ac7 100644 --- a/bench/arrow/optimized/compression.cc.ll +++ b/bench/arrow/optimized/compression.cc.ll @@ -1434,33 +1434,33 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68: ; preds br i1 %cmp.i.i.i.i.i.i.i.i.i70, label %cleanup.sink.split.sink.split, label %cleanup.sink.split cleanup.sink.split.sink.split.sink.split: ; preds = %if.then.i.i.i.i.i.i.i40, %if.then.i.i.i.i.i.i.i76 - %.sink242 = phi ptr [ %23, %if.then.i.i.i.i.i.i.i76 ], [ %13, %if.then.i.i.i.i.i.i.i40 ] - %.sink237.ph.ph = phi ptr [ %22, %if.then.i.i.i.i.i.i.i76 ], [ %12, %if.then.i.i.i.i.i.i.i40 ] + %.sink239 = phi ptr [ %23, %if.then.i.i.i.i.i.i.i76 ], [ %13, %if.then.i.i.i.i.i.i.i40 ] + %.sink234.ph.ph = phi ptr [ %22, %if.then.i.i.i.i.i.i.i76 ], [ %12, %if.then.i.i.i.i.i.i.i40 ] %ref.tmp8.sink.ph.ph = phi ptr [ %ref.tmp8, %if.then.i.i.i.i.i.i.i76 ], [ %ref.tmp5, %if.then.i.i.i.i.i.i.i40 ] - %_M_weak_count.i.i.i.i.i.i.i77 = getelementptr inbounds nuw i8, ptr %.sink242, i64 12 + %_M_weak_count.i.i.i.i.i.i.i77 = getelementptr inbounds nuw i8, ptr %.sink239, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i.i.i.i77, align 4 - %vtable.i.i.i.i.i.i.i78 = load ptr, ptr %.sink242, align 8 + %vtable.i.i.i.i.i.i.i78 = load ptr, ptr %.sink239, align 8 %vfn.i.i.i.i.i.i.i79 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i78, i64 16 %32 = load ptr, ptr %vfn.i.i.i.i.i.i.i79, align 8 - call void %32(ptr noundef nonnull align 8 dereferenceable(16) %.sink242) #17 + call void %32(ptr noundef nonnull align 8 dereferenceable(16) %.sink239) #17 br label %cleanup.sink.split.sink.split cleanup.sink.split.sink.split: ; preds = %cleanup.sink.split.sink.split.sink.split, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 - %.sink239 = phi ptr [ %13, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %23, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %.sink242, %cleanup.sink.split.sink.split.sink.split ] - %.sink237.ph = phi ptr [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %.sink237.ph.ph, %cleanup.sink.split.sink.split.sink.split ] + %.sink236 = phi ptr [ %13, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %23, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %.sink239, %cleanup.sink.split.sink.split.sink.split ] + %.sink234.ph = phi ptr [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %.sink234.ph.ph, %cleanup.sink.split.sink.split.sink.split ] %ref.tmp8.sink.ph = phi ptr [ %ref.tmp5, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %ref.tmp8, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %ref.tmp8.sink.ph.ph, %cleanup.sink.split.sink.split.sink.split ] - %vtable2.i.i.i.i.i.i.i.i.i72 = load ptr, ptr %.sink239, align 8 + %vtable2.i.i.i.i.i.i.i.i.i72 = load ptr, ptr %.sink236, align 8 %vfn3.i.i.i.i.i.i.i.i.i73 = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i.i.i72, i64 24 %33 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i.i73, align 8 - call void %33(ptr noundef nonnull align 8 dereferenceable(16) %.sink239) #17 + call void %33(ptr noundef nonnull align 8 dereferenceable(16) %.sink236) #17 br label %cleanup.sink.split cleanup.sink.split: ; preds = %cleanup.sink.split.sink.split, %delete.notnull.i.i46, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i56, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68, %delete.notnull.i.i10, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i20, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 - %.sink237 = phi ptr [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i20 ], [ %12, %delete.notnull.i.i10 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i56 ], [ %22, %delete.notnull.i.i46 ], [ %.sink237.ph, %cleanup.sink.split.sink.split ] + %.sink234 = phi ptr [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %12, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i20 ], [ %12, %delete.notnull.i.i10 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %22, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i56 ], [ %22, %delete.notnull.i.i46 ], [ %.sink234.ph, %cleanup.sink.split.sink.split ] %ref.tmp8.sink = phi ptr [ %ref.tmp5, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i32 ], [ %ref.tmp5, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i20 ], [ %ref.tmp5, %delete.notnull.i.i10 ], [ %ref.tmp8, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i68 ], [ %ref.tmp8, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i56 ], [ %ref.tmp8, %delete.notnull.i.i46 ], [ %ref.tmp8.sink.ph, %cleanup.sink.split.sink.split ] - %msg.i.i.i60 = getelementptr inbounds nuw i8, ptr %.sink237, i64 8 + %msg.i.i.i60 = getelementptr inbounds nuw i8, ptr %.sink234, i64 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %msg.i.i.i60) #17 - call void @_ZdlPv(ptr noundef nonnull %.sink237) #20 + call void @_ZdlPv(ptr noundef nonnull %.sink234) #20 store ptr null, ptr %ref.tmp8.sink, align 8 br label %cleanup @@ -1472,101 +1472,101 @@ if.end12: ; preds = %entry %compression_level13 = getelementptr inbounds nuw i8, ptr %codec_options, i64 8 %34 = load i32, ptr %compression_level13, align 8 %cmp14.not = icmp eq i32 %34, -2147483648 - br i1 %cmp14.not, label %_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit233, label %if.then16 + br i1 %cmp14.not, label %_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit231, label %if.then16 if.then16: ; preds = %if.end12 %call18 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN5arrow4util5Codec16GetCodecAsStringB5cxx11ENS_11Compression4typeE(i32 noundef 0) call void @_ZN5arrow6Status8FromArgsIJRA8_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA47_S2_EEES0_NS_10StatusCodeEDpOT_(ptr nonnull sret(%"class.arrow::Status") align 8 %ref.tmp17, i8 noundef signext 4, ptr noundef nonnull align 1 dereferenceable(8) @.str.16, ptr noundef nonnull align 8 dereferenceable(32) %call18, ptr noundef nonnull align 1 dereferenceable(47) @.str.17) call void @_ZN5arrow6ResultISt10unique_ptrINS_4util5CodecESt14default_deleteIS3_EEEC2ERKNS_6StatusE(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp17) #17 %35 = load ptr, ptr %ref.tmp17, align 8 - %cmp.not.i83 = icmp eq ptr %35, null - br i1 %cmp.not.i83, label %return, label %delete.notnull.i.i84 - -delete.notnull.i.i84: ; preds = %if.then16 - %_M_refcount.i.i.i.i.i85 = getelementptr inbounds nuw i8, ptr %35, i64 48 - %36 = load ptr, ptr %_M_refcount.i.i.i.i.i85, align 8 - %cmp.not.i.i.i.i.i.i86 = icmp eq ptr %36, null - br i1 %cmp.not.i.i.i.i.i.i86, label %_ZN5arrow6Status11DeleteStateEv.exit.i97, label %if.then.i.i.i.i.i.i87 - -if.then.i.i.i.i.i.i87: ; preds = %delete.notnull.i.i84 - %_M_use_count.i.i.i.i.i.i.i88 = getelementptr inbounds nuw i8, ptr %36, i64 8 - %37 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i.i88 acquire, align 8 - %cmp.i.i.i.i.i.i.i89 = icmp eq i64 %37, 4294967297 + %cmp.not.i81 = icmp eq ptr %35, null + br i1 %cmp.not.i81, label %return, label %delete.notnull.i.i82 + +delete.notnull.i.i82: ; preds = %if.then16 + %_M_refcount.i.i.i.i.i83 = getelementptr inbounds nuw i8, ptr %35, i64 48 + %36 = load ptr, ptr %_M_refcount.i.i.i.i.i83, align 8 + %cmp.not.i.i.i.i.i.i84 = icmp eq ptr %36, null + br i1 %cmp.not.i.i.i.i.i.i84, label %_ZN5arrow6Status11DeleteStateEv.exit.i95, label %if.then.i.i.i.i.i.i85 + +if.then.i.i.i.i.i.i85: ; preds = %delete.notnull.i.i82 + %_M_use_count.i.i.i.i.i.i.i86 = getelementptr inbounds nuw i8, ptr %36, i64 8 + %37 = load atomic i64, ptr %_M_use_count.i.i.i.i.i.i.i86 acquire, align 8 + %cmp.i.i.i.i.i.i.i87 = icmp eq i64 %37, 4294967297 %38 = trunc i64 %37 to i32 - br i1 %cmp.i.i.i.i.i.i.i89, label %if.then.i.i.i.i.i.i.i114, label %if.end.i.i.i.i.i.i.i90 - -if.then.i.i.i.i.i.i.i114: ; preds = %if.then.i.i.i.i.i.i87 - store i32 0, ptr %_M_use_count.i.i.i.i.i.i.i88, align 8 - %_M_weak_count.i.i.i.i.i.i.i115 = getelementptr inbounds nuw i8, ptr %36, i64 12 - store i32 0, ptr %_M_weak_count.i.i.i.i.i.i.i115, align 4 - %vtable.i.i.i.i.i.i.i116 = load ptr, ptr %36, align 8 - %vfn.i.i.i.i.i.i.i117 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i116, i64 16 - %39 = load ptr, ptr %vfn.i.i.i.i.i.i.i117, align 8 + br i1 %cmp.i.i.i.i.i.i.i87, label %if.then.i.i.i.i.i.i.i112, label %if.end.i.i.i.i.i.i.i88 + +if.then.i.i.i.i.i.i.i112: ; preds = %if.then.i.i.i.i.i.i85 + store i32 0, ptr %_M_use_count.i.i.i.i.i.i.i86, align 8 + %_M_weak_count.i.i.i.i.i.i.i113 = getelementptr inbounds nuw i8, ptr %36, i64 12 + store i32 0, ptr %_M_weak_count.i.i.i.i.i.i.i113, align 4 + %vtable.i.i.i.i.i.i.i114 = load ptr, ptr %36, align 8 + %vfn.i.i.i.i.i.i.i115 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i114, i64 16 + %39 = load ptr, ptr %vfn.i.i.i.i.i.i.i115, align 8 call void %39(ptr noundef nonnull align 8 dereferenceable(16) %36) #17 - br label %if.end8.sink.split.i.i.i.i.i.i.i109 + br label %if.end8.sink.split.i.i.i.i.i.i.i107 -if.end.i.i.i.i.i.i.i90: ; preds = %if.then.i.i.i.i.i.i87 +if.end.i.i.i.i.i.i.i88: ; preds = %if.then.i.i.i.i.i.i85 %40 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i.i91 = icmp eq i8 %40, 0 - br i1 %tobool.i.not.i.i.i.i.i.i.i91, label %if.else.i.i.i.i.i.i.i.i113, label %if.then.i.i.i.i.i.i.i.i92 - -if.then.i.i.i.i.i.i.i.i92: ; preds = %if.end.i.i.i.i.i.i.i90 - %add.i.i.i.i.i.i.i.i93 = add nsw i32 %38, -1 - store i32 %add.i.i.i.i.i.i.i.i93, ptr %_M_use_count.i.i.i.i.i.i.i88, align 4 - br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i94 - -if.else.i.i.i.i.i.i.i.i113: ; preds = %if.end.i.i.i.i.i.i.i90 - %41 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i88, i32 -1 acq_rel, align 4 - br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i94 - -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i94: ; preds = %if.else.i.i.i.i.i.i.i.i113, %if.then.i.i.i.i.i.i.i.i92 - %retval.i.0.i.i.i.i.i.i.i95 = phi i32 [ %38, %if.then.i.i.i.i.i.i.i.i92 ], [ %41, %if.else.i.i.i.i.i.i.i.i113 ] - %cmp6.i.i.i.i.i.i.i96 = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i95, 1 - br i1 %cmp6.i.i.i.i.i.i.i96, label %if.then7.i.i.i.i.i.i.i99, label %_ZN5arrow6Status11DeleteStateEv.exit.i97 - -if.then7.i.i.i.i.i.i.i99: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i94 - %vtable.i.i.i.i.i.i.i.i.i100 = load ptr, ptr %36, align 8 - %vfn.i.i.i.i.i.i.i.i.i101 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i.i.i100, i64 16 - %42 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i101, align 8 + %tobool.i.not.i.i.i.i.i.i.i89 = icmp eq i8 %40, 0 + br i1 %tobool.i.not.i.i.i.i.i.i.i89, label %if.else.i.i.i.i.i.i.i.i111, label %if.then.i.i.i.i.i.i.i.i90 + +if.then.i.i.i.i.i.i.i.i90: ; preds = %if.end.i.i.i.i.i.i.i88 + %add.i.i.i.i.i.i.i.i91 = add nsw i32 %38, -1 + store i32 %add.i.i.i.i.i.i.i.i91, ptr %_M_use_count.i.i.i.i.i.i.i86, align 4 + br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i92 + +if.else.i.i.i.i.i.i.i.i111: ; preds = %if.end.i.i.i.i.i.i.i88 + %41 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i86, i32 -1 acq_rel, align 4 + br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i92 + +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i92: ; preds = %if.else.i.i.i.i.i.i.i.i111, %if.then.i.i.i.i.i.i.i.i90 + %retval.i.0.i.i.i.i.i.i.i93 = phi i32 [ %38, %if.then.i.i.i.i.i.i.i.i90 ], [ %41, %if.else.i.i.i.i.i.i.i.i111 ] + %cmp6.i.i.i.i.i.i.i94 = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i93, 1 + br i1 %cmp6.i.i.i.i.i.i.i94, label %if.then7.i.i.i.i.i.i.i97, label %_ZN5arrow6Status11DeleteStateEv.exit.i95 + +if.then7.i.i.i.i.i.i.i97: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i92 + %vtable.i.i.i.i.i.i.i.i.i98 = load ptr, ptr %36, align 8 + %vfn.i.i.i.i.i.i.i.i.i99 = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i.i.i98, i64 16 + %42 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i99, align 8 call void %42(ptr noundef nonnull align 8 dereferenceable(16) %36) #17 - %_M_weak_count.i.i.i.i.i.i.i.i.i102 = getelementptr inbounds nuw i8, ptr %36, i64 12 + %_M_weak_count.i.i.i.i.i.i.i.i.i100 = getelementptr inbounds nuw i8, ptr %36, i64 12 %43 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i.i.i.i103 = icmp eq i8 %43, 0 - br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i103, label %if.else.i.i.i.i.i.i.i.i.i.i112, label %if.then.i.i.i.i.i.i.i.i.i.i104 - -if.then.i.i.i.i.i.i.i.i.i.i104: ; preds = %if.then7.i.i.i.i.i.i.i99 - %44 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i102, align 4 - %add.i.i.i.i.i.i.i.i.i.i105 = add nsw i32 %44, -1 - store i32 %add.i.i.i.i.i.i.i.i.i.i105, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i102, align 4 - br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i106 - -if.else.i.i.i.i.i.i.i.i.i.i112: ; preds = %if.then7.i.i.i.i.i.i.i99 - %45 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i.i102, i32 -1 acq_rel, align 4 - br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i106 - -_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i106: ; preds = %if.else.i.i.i.i.i.i.i.i.i.i112, %if.then.i.i.i.i.i.i.i.i.i.i104 - %retval.i.0.i.i.i.i.i.i.i.i.i107 = phi i32 [ %44, %if.then.i.i.i.i.i.i.i.i.i.i104 ], [ %45, %if.else.i.i.i.i.i.i.i.i.i.i112 ] - %cmp.i.i.i.i.i.i.i.i.i108 = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i.i.i107, 1 - br i1 %cmp.i.i.i.i.i.i.i.i.i108, label %if.end8.sink.split.i.i.i.i.i.i.i109, label %_ZN5arrow6Status11DeleteStateEv.exit.i97 - -if.end8.sink.split.i.i.i.i.i.i.i109: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i106, %if.then.i.i.i.i.i.i.i114 - %vtable2.i.i.i.i.i.i.i.i.i110 = load ptr, ptr %36, align 8 - %vfn3.i.i.i.i.i.i.i.i.i111 = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i.i.i110, i64 24 - %46 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i.i111, align 8 + %tobool.i.not.i.i.i.i.i.i.i.i.i101 = icmp eq i8 %43, 0 + br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i101, label %if.else.i.i.i.i.i.i.i.i.i.i110, label %if.then.i.i.i.i.i.i.i.i.i.i102 + +if.then.i.i.i.i.i.i.i.i.i.i102: ; preds = %if.then7.i.i.i.i.i.i.i97 + %44 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i100, align 4 + %add.i.i.i.i.i.i.i.i.i.i103 = add nsw i32 %44, -1 + store i32 %add.i.i.i.i.i.i.i.i.i.i103, ptr %_M_weak_count.i.i.i.i.i.i.i.i.i100, align 4 + br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i104 + +if.else.i.i.i.i.i.i.i.i.i.i110: ; preds = %if.then7.i.i.i.i.i.i.i97 + %45 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i.i.i100, i32 -1 acq_rel, align 4 + br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i104 + +_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i104: ; preds = %if.else.i.i.i.i.i.i.i.i.i.i110, %if.then.i.i.i.i.i.i.i.i.i.i102 + %retval.i.0.i.i.i.i.i.i.i.i.i105 = phi i32 [ %44, %if.then.i.i.i.i.i.i.i.i.i.i102 ], [ %45, %if.else.i.i.i.i.i.i.i.i.i.i110 ] + %cmp.i.i.i.i.i.i.i.i.i106 = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i.i.i105, 1 + br i1 %cmp.i.i.i.i.i.i.i.i.i106, label %if.end8.sink.split.i.i.i.i.i.i.i107, label %_ZN5arrow6Status11DeleteStateEv.exit.i95 + +if.end8.sink.split.i.i.i.i.i.i.i107: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i104, %if.then.i.i.i.i.i.i.i112 + %vtable2.i.i.i.i.i.i.i.i.i108 = load ptr, ptr %36, align 8 + %vfn3.i.i.i.i.i.i.i.i.i109 = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i.i.i108, i64 24 + %46 = load ptr, ptr %vfn3.i.i.i.i.i.i.i.i.i109, align 8 call void %46(ptr noundef nonnull align 8 dereferenceable(16) %36) #17 - br label %_ZN5arrow6Status11DeleteStateEv.exit.i97 + br label %_ZN5arrow6Status11DeleteStateEv.exit.i95 -_ZN5arrow6Status11DeleteStateEv.exit.i97: ; preds = %if.end8.sink.split.i.i.i.i.i.i.i109, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i106, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i94, %delete.notnull.i.i84 - %msg.i.i.i98 = getelementptr inbounds nuw i8, ptr %35, i64 8 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %msg.i.i.i98) #17 +_ZN5arrow6Status11DeleteStateEv.exit.i95: ; preds = %if.end8.sink.split.i.i.i.i.i.i.i107, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i.i.i104, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i92, %delete.notnull.i.i82 + %msg.i.i.i96 = getelementptr inbounds nuw i8, ptr %35, i64 8 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %msg.i.i.i96) #17 call void @_ZdlPv(ptr noundef nonnull %35) #20 br label %return -_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit233: ; preds = %if.end12 +_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit231: ; preds = %if.end12 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, i8 0, i64 16, i1 false) br label %return -return: ; preds = %_ZN5arrow6Status11DeleteStateEv.exit.i97, %if.then16, %_ZN5arrow6Status11DeleteStateEv.exit.i, %if.then1, %_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit233, %cleanup +return: ; preds = %_ZN5arrow6Status11DeleteStateEv.exit.i95, %if.then16, %_ZN5arrow6Status11DeleteStateEv.exit.i, %if.then1, %_ZNSt10unique_ptrIN5arrow4util5CodecESt14default_deleteIS2_EED2Ev.exit231, %cleanup ret void eh.resume: ; preds = %if.end7, %if.then4, %invoke.cont9 @@ -2028,12 +2028,8 @@ return: ; preds = %_ZN5arrow6Status11D ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef zeroext i1 @_ZN5arrow4util5Codec11IsAvailableENS_11Compression4typeE(i32 noundef %codec_type) local_unnamed_addr #0 align 2 { entry: - %0 = icmp ult i32 %codec_type, 10 - %switch.cast = trunc i32 %codec_type to i10 - %switch.downshift = lshr i10 1, %switch.cast - %switch.masked = trunc nuw i10 %switch.downshift to i1 - %retval.0 = select i1 %0, i1 %switch.masked, i1 false - ret i1 %retval.0 + %cond = icmp eq i32 %codec_type, 0 + ret i1 %cond } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/arrow/optimized/expression.cc.ll b/bench/arrow/optimized/expression.cc.ll index 159a117f199..0689c0070e7 100644 --- a/bench/arrow/optimized/expression.cc.ll +++ b/bench/arrow/optimized/expression.cc.ll @@ -69956,12 +69956,12 @@ lpad.body: ; preds = %ehcleanup.i, %lpad5 define linkonce_odr noundef nonnull align 8 dereferenceable(16) ptr @_ZN5arrow7compute10Comparison25StripOrderPreservingCastsERKNS0_10ExpressionE(ptr noundef nonnull align 8 dereferenceable(16) %expr) local_unnamed_addr #0 comdat align 2 { entry: %0 = load ptr, ptr %expr, align 8 - %cmp.i.not.i.i64 = icmp eq ptr %0, null - br i1 %cmp.i.not.i.i64, label %return, label %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i + %cmp.i.not.i.i62 = icmp eq ptr %0, null + br i1 %cmp.i.not.i.i62, label %return, label %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i _ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i: ; preds = %entry, %tailrecurse.backedge %1 = phi ptr [ %10, %tailrecurse.backedge ], [ %0, %entry ] - %expr.tr65 = phi ptr [ %3, %tailrecurse.backedge ], [ %expr, %entry ] + %expr.tr63 = phi ptr [ %3, %tailrecurse.backedge ], [ %expr, %entry ] %_M_index.i.i.i.i = getelementptr inbounds nuw i8, ptr %1, i64 144 %2 = load i8, ptr %_M_index.i.i.i.i, align 8 %cmp.i.i.i = icmp eq i8 %2, 2 @@ -70002,7 +70002,7 @@ _ZNK5arrow7compute10Expression4typeEv.exit: ; preds = %if.then3.i, %if.the %retval.0.i23 = load ptr, ptr %retval.0.i23.in, align 8 %id_.i = getelementptr inbounds nuw i8, ptr %retval.0.i23, i64 40 %6 = load i32, ptr %id_.i, align 8 - %7 = load ptr, ptr %expr.tr65, align 8, !nonnull !4, !noundef !4 + %7 = load ptr, ptr %expr.tr63, align 8, !nonnull !4, !noundef !4 %_M_index.i.i.i.i.i26 = getelementptr inbounds nuw i8, ptr %7, i64 144 %8 = load i8, ptr %_M_index.i.i.i.i.i26, align 8 switch i8 %8, label %_ZN5arrow7compute11CallNotNullERKNS0_10ExpressionE.exit.i32 [ @@ -70038,7 +70038,7 @@ if.then11: ; preds = %_ZNK5arrow7compute1 %switch = icmp ult i32 %.off, 11 br i1 %switch, label %tailrecurse.backedge, label %return -tailrecurse.backedge: ; preds = %if.then11, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit56, %land.lhs.true30 +tailrecurse.backedge: ; preds = %if.then11, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit54, %land.lhs.true30 %10 = load ptr, ptr %3, align 8 %cmp.i.not.i.i = icmp eq ptr %10, null br i1 %cmp.i.not.i.i, label %return, label %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i @@ -70068,29 +70068,29 @@ switch.lookup: ; preds = %land.lhs.true _ZN5arrowL9bit_widthENS_4Type4typeE.exit: ; preds = %land.lhs.true, %switch.lookup %retval.0.i44 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %land.lhs.true ] - %switch.tableidx74 = add i32 %6, -1 - %15 = icmp ult i32 %switch.tableidx74, 37 - br i1 %15, label %switch.lookup73, label %_ZN5arrowL9bit_widthENS_4Type4typeE.exit56 - -switch.lookup73: ; preds = %_ZN5arrowL9bit_widthENS_4Type4typeE.exit - %16 = zext nneg i32 %switch.tableidx74 to i64 - %switch.gep75 = getelementptr inbounds nuw [37 x i32], ptr @switch.table._ZN5arrowL9bit_widthENS_4Type4typeE, i64 0, i64 %16 - %switch.load76 = load i32, ptr %switch.gep75, align 4 - br label %_ZN5arrowL9bit_widthENS_4Type4typeE.exit56 - -_ZN5arrowL9bit_widthENS_4Type4typeE.exit56: ; preds = %_ZN5arrowL9bit_widthENS_4Type4typeE.exit, %switch.lookup73 - %retval.0.i46 = phi i32 [ %switch.load76, %switch.lookup73 ], [ 0, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit ] + %switch.tableidx72 = add i32 %6, -1 + %15 = icmp ult i32 %switch.tableidx72, 37 + br i1 %15, label %switch.lookup71, label %_ZN5arrowL9bit_widthENS_4Type4typeE.exit54 + +switch.lookup71: ; preds = %_ZN5arrowL9bit_widthENS_4Type4typeE.exit + %16 = zext nneg i32 %switch.tableidx72 to i64 + %switch.gep73 = getelementptr inbounds nuw [37 x i32], ptr @switch.table._ZN5arrowL9bit_widthENS_4Type4typeE, i64 0, i64 %16 + %switch.load74 = load i32, ptr %switch.gep73, align 4 + br label %_ZN5arrowL9bit_widthENS_4Type4typeE.exit54 + +_ZN5arrowL9bit_widthENS_4Type4typeE.exit54: ; preds = %_ZN5arrowL9bit_widthENS_4Type4typeE.exit, %switch.lookup71 + %retval.0.i46 = phi i32 [ %switch.load74, %switch.lookup71 ], [ 0, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit ] %cmp.not = icmp samesign ult i32 %retval.0.i44, %retval.0.i46 br i1 %cmp.not, label %return, label %tailrecurse.backedge if.end26: ; preds = %if.end17 %17 = add i32 %9, -3 - %switch.and.i57 = and i32 %17, -7 - %switch.selectcmp.i58 = icmp eq i32 %switch.and.i57, 0 - %type_id.off.i59 = add i32 %6, -2 - %switch.i60 = icmp ult i32 %type_id.off.i59, 8 - %or.cond63 = select i1 %switch.selectcmp.i58, i1 %switch.i60, i1 false - br i1 %or.cond63, label %land.lhs.true30, label %return + %switch.and.i55 = and i32 %17, -7 + %switch.selectcmp.i56 = icmp eq i32 %switch.and.i55, 0 + %type_id.off.i57 = add i32 %6, -2 + %switch.i58 = icmp ult i32 %type_id.off.i57, 8 + %or.cond61 = select i1 %switch.selectcmp.i56, i1 %switch.i58, i1 false + br i1 %or.cond61, label %land.lhs.true30, label %return land.lhs.true30: ; preds = %if.end26 %call31 = tail call fastcc noundef i32 @_ZN5arrowL9bit_widthENS_4Type4typeE(i32 noundef %9) @@ -70098,8 +70098,8 @@ land.lhs.true30: ; preds = %if.end26 %cmp33.not = icmp samesign ult i32 %call31, %call32 br i1 %cmp33.not, label %return, label %tailrecurse.backedge -return: ; preds = %if.end, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit56, %if.then19, %land.lhs.true30, %if.end26, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i, %tailrecurse.backedge, %if.then11, %entry - %expr.tr.lcssa = phi ptr [ %expr, %entry ], [ %expr.tr65, %if.then11 ], [ %3, %tailrecurse.backedge ], [ %expr.tr65, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i ], [ %expr.tr65, %if.end26 ], [ %expr.tr65, %land.lhs.true30 ], [ %expr.tr65, %if.then19 ], [ %expr.tr65, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit56 ], [ %expr.tr65, %if.end ] +return: ; preds = %if.end, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit54, %if.then19, %land.lhs.true30, %if.end26, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i, %tailrecurse.backedge, %if.then11, %entry + %expr.tr.lcssa = phi ptr [ %expr, %entry ], [ %expr.tr63, %if.then11 ], [ %3, %tailrecurse.backedge ], [ %expr.tr63, %_ZSt6get_ifIN5arrow7compute10Expression4CallEJNS0_5DatumENS2_9ParameterES3_EENSt11add_pointerIT_E4typeEPSt7variantIJDpT0_EE.exit.i ], [ %expr.tr63, %if.end26 ], [ %expr.tr63, %land.lhs.true30 ], [ %expr.tr63, %if.then19 ], [ %expr.tr63, %_ZN5arrowL9bit_widthENS_4Type4typeE.exit54 ], [ %expr.tr63, %if.end ] ret ptr %expr.tr.lcssa } diff --git a/bench/assimp/optimized/PlyLoader.cpp.ll b/bench/assimp/optimized/PlyLoader.cpp.ll index 9588bead52b..cc4a2ef6101 100644 --- a/bench/assimp/optimized/PlyLoader.cpp.ll +++ b/bench/assimp/optimized/PlyLoader.cpp.ll @@ -3978,10 +3978,10 @@ invoke.cont: ; preds = %if.then tail call void @__cxa_throw(ptr nonnull %exception, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZN17DeadlyImportErrorD2Ev) #18 unreachable -common.resume: ; preds = %lpad.i135, %lpad.i89, %lpad.i75, %lpad.i, %lpad - %exception.i134.sink = phi ptr [ %exception.i134, %lpad.i135 ], [ %exception.i88, %lpad.i89 ], [ %exception.i74, %lpad.i75 ], [ %exception.i, %lpad.i ], [ %exception, %lpad ] - %common.resume.op = phi { ptr, i32 } [ %65, %lpad.i135 ], [ %38, %lpad.i89 ], [ %30, %lpad.i75 ], [ %22, %lpad.i ], [ %1, %lpad ] - tail call void @__cxa_free_exception(ptr %exception.i134.sink) #17 +common.resume: ; preds = %lpad.i134, %lpad.i89, %lpad.i75, %lpad.i, %lpad + %exception.i133.sink = phi ptr [ %exception.i133, %lpad.i134 ], [ %exception.i88, %lpad.i89 ], [ %exception.i74, %lpad.i75 ], [ %exception.i, %lpad.i ], [ %exception, %lpad ] + %common.resume.op = phi { ptr, i32 } [ %65, %lpad.i134 ], [ %38, %lpad.i89 ], [ %30, %lpad.i75 ], [ %22, %lpad.i ], [ %1, %lpad ] + tail call void @__cxa_free_exception(ptr %exception.i133.sink) #17 resume { ptr, i32 } %common.resume.op lpad: ; preds = %if.then @@ -4001,18 +4001,18 @@ if.then3: ; preds = %if.end %3 = load ptr, ptr %pcElement, align 8 %_M_finish.i = getelementptr inbounds nuw i8, ptr %pcElement, i64 8 %4 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i.not196 = icmp eq ptr %3, %4 - br i1 %cmp.i.not196, label %if.end307, label %for.body + %cmp.i.not194 = icmp eq ptr %3, %4 + br i1 %cmp.i.not194, label %if.end307, label %for.body for.body: ; preds = %if.then3, %for.inc - %bOne.0203 = phi i1 [ %bOne.1, %for.inc ], [ false, %if.then3 ] - %iProperty.0202 = phi i32 [ %iProperty.1, %for.inc ], [ -1, %if.then3 ] - %eType.0201 = phi i32 [ %eType.1, %for.inc ], [ 0, %if.then3 ] - %iTextureCoord.0200 = phi i32 [ %iTextureCoord.1, %for.inc ], [ -1, %if.then3 ] - %eType3.0199 = phi i32 [ %eType3.1, %for.inc ], [ 0, %if.then3 ] - %_a.0198 = phi i32 [ %inc, %for.inc ], [ 0, %if.then3 ] - %a.sroa.0.0197 = phi ptr [ %incdec.ptr.i, %for.inc ], [ %3, %if.then3 ] - %Semantic = getelementptr inbounds nuw i8, ptr %a.sroa.0.0197, i64 4 + %bOne.0201 = phi i1 [ %bOne.1, %for.inc ], [ false, %if.then3 ] + %iProperty.0200 = phi i32 [ %iProperty.1, %for.inc ], [ -1, %if.then3 ] + %eType.0199 = phi i32 [ %eType.1, %for.inc ], [ 0, %if.then3 ] + %iTextureCoord.0198 = phi i32 [ %iTextureCoord.1, %for.inc ], [ -1, %if.then3 ] + %eType3.0197 = phi i32 [ %eType3.1, %for.inc ], [ 0, %if.then3 ] + %_a.0196 = phi i32 [ %inc, %for.inc ], [ 0, %if.then3 ] + %a.sroa.0.0195 = phi ptr [ %incdec.ptr.i, %for.inc ], [ %3, %if.then3 ] + %Semantic = getelementptr inbounds nuw i8, ptr %a.sroa.0.0195, i64 4 %5 = load i32, ptr %Semantic, align 4 switch i32 %5, label %for.inc [ i32 12, label %if.then10 @@ -4020,33 +4020,33 @@ for.body: ; preds = %if.then3, %for.inc ] if.then10: ; preds = %for.body - %bIsList = getelementptr inbounds nuw i8, ptr %a.sroa.0.0197, i64 40 + %bIsList = getelementptr inbounds nuw i8, ptr %a.sroa.0.0195, i64 40 %6 = load i8, ptr %bIsList, align 8 %tobool = trunc i8 %6 to i1 br i1 %tobool, label %if.end13, label %for.inc if.end13: ; preds = %if.then10 - %7 = load i32, ptr %a.sroa.0.0197, align 8 + %7 = load i32, ptr %a.sroa.0.0195, align 8 br label %for.inc if.then19: ; preds = %for.body - %bIsList21 = getelementptr inbounds nuw i8, ptr %a.sroa.0.0197, i64 40 + %bIsList21 = getelementptr inbounds nuw i8, ptr %a.sroa.0.0195, i64 40 %8 = load i8, ptr %bIsList21, align 8 %tobool22 = trunc i8 %8 to i1 br i1 %tobool22, label %if.end24, label %for.inc if.end24: ; preds = %if.then19 - %9 = load i32, ptr %a.sroa.0.0197, align 8 + %9 = load i32, ptr %a.sroa.0.0195, align 8 br label %for.inc for.inc: ; preds = %for.body, %if.end13, %if.end24, %if.then19, %if.then10 - %eType3.1 = phi i32 [ %eType3.0199, %if.end13 ], [ %eType3.0199, %if.then10 ], [ %9, %if.end24 ], [ %eType3.0199, %if.then19 ], [ %eType3.0199, %for.body ] - %iTextureCoord.1 = phi i32 [ %iTextureCoord.0200, %if.end13 ], [ %iTextureCoord.0200, %if.then10 ], [ %_a.0198, %if.end24 ], [ %iTextureCoord.0200, %if.then19 ], [ %iTextureCoord.0200, %for.body ] - %eType.1 = phi i32 [ %7, %if.end13 ], [ %eType.0201, %if.then10 ], [ %eType.0201, %if.end24 ], [ %eType.0201, %if.then19 ], [ %eType.0201, %for.body ] - %iProperty.1 = phi i32 [ %_a.0198, %if.end13 ], [ %iProperty.0202, %if.then10 ], [ %iProperty.0202, %if.end24 ], [ %iProperty.0202, %if.then19 ], [ %iProperty.0202, %for.body ] - %bOne.1 = phi i1 [ true, %if.end13 ], [ %bOne.0203, %if.then10 ], [ true, %if.end24 ], [ %bOne.0203, %if.then19 ], [ %bOne.0203, %for.body ] - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %a.sroa.0.0197, i64 48 - %inc = add i32 %_a.0198, 1 + %eType3.1 = phi i32 [ %eType3.0197, %if.end13 ], [ %eType3.0197, %if.then10 ], [ %9, %if.end24 ], [ %eType3.0197, %if.then19 ], [ %eType3.0197, %for.body ] + %iTextureCoord.1 = phi i32 [ %iTextureCoord.0198, %if.end13 ], [ %iTextureCoord.0198, %if.then10 ], [ %_a.0196, %if.end24 ], [ %iTextureCoord.0198, %if.then19 ], [ %iTextureCoord.0198, %for.body ] + %eType.1 = phi i32 [ %7, %if.end13 ], [ %eType.0199, %if.then10 ], [ %eType.0199, %if.end24 ], [ %eType.0199, %if.then19 ], [ %eType.0199, %for.body ] + %iProperty.1 = phi i32 [ %_a.0196, %if.end13 ], [ %iProperty.0200, %if.then10 ], [ %iProperty.0200, %if.end24 ], [ %iProperty.0200, %if.then19 ], [ %iProperty.0200, %for.body ] + %bOne.1 = phi i1 [ true, %if.end13 ], [ %bOne.0201, %if.then10 ], [ true, %if.end24 ], [ %bOne.0201, %if.then19 ], [ %bOne.0201, %for.body ] + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %a.sroa.0.0195, i64 48 + %inc = add i32 %_a.0196, 1 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %4 br i1 %cmp.i.not, label %if.end58, label %for.body, !llvm.loop !26 @@ -4054,36 +4054,36 @@ if.then33: ; preds = %if.end %10 = load ptr, ptr %pcElement, align 8 %_M_finish.i63 = getelementptr inbounds nuw i8, ptr %pcElement, i64 8 %11 = load ptr, ptr %_M_finish.i63, align 8 - %cmp.i64.not193 = icmp eq ptr %10, %11 - br i1 %cmp.i64.not193, label %if.end307, label %for.body45 + %cmp.i64.not191 = icmp eq ptr %10, %11 + br i1 %cmp.i64.not191, label %if.end307, label %for.body45 for.body45: ; preds = %if.then33, %for.inc53 - %_a34.0195 = phi i32 [ %inc55, %for.inc53 ], [ 0, %if.then33 ] - %a35.sroa.0.0194 = phi ptr [ %incdec.ptr.i65, %for.inc53 ], [ %10, %if.then33 ] - %bIsList47 = getelementptr inbounds nuw i8, ptr %a35.sroa.0.0194, i64 40 + %_a34.0193 = phi i32 [ %inc55, %for.inc53 ], [ 0, %if.then33 ] + %a35.sroa.0.0192 = phi ptr [ %incdec.ptr.i65, %for.inc53 ], [ %10, %if.then33 ] + %bIsList47 = getelementptr inbounds nuw i8, ptr %a35.sroa.0.0192, i64 40 %12 = load i8, ptr %bIsList47, align 8 %tobool48 = trunc i8 %12 to i1 - br i1 %tobool48, label %if.end58.thread173, label %for.inc53 + br i1 %tobool48, label %if.end58.thread171, label %for.inc53 -if.end58.thread173: ; preds = %for.body45 - %13 = load i32, ptr %a35.sroa.0.0194, align 8 +if.end58.thread171: ; preds = %for.body45 + %13 = load i32, ptr %a35.sroa.0.0192, align 8 br label %if.then60 for.inc53: ; preds = %for.body45 - %incdec.ptr.i65 = getelementptr inbounds nuw i8, ptr %a35.sroa.0.0194, i64 48 - %inc55 = add i32 %_a34.0195, 1 + %incdec.ptr.i65 = getelementptr inbounds nuw i8, ptr %a35.sroa.0.0192, i64 48 + %inc55 = add i32 %_a34.0193, 1 %cmp.i64.not = icmp eq ptr %incdec.ptr.i65, %11 br i1 %cmp.i64.not, label %if.end307, label %for.body45, !llvm.loop !27 if.end58: ; preds = %for.inc br i1 %bOne.1, label %if.then60, label %if.end307 -if.then60: ; preds = %if.end58.thread173, %if.end58 - %iProperty.2185 = phi i32 [ %_a34.0195, %if.end58.thread173 ], [ %iProperty.1, %if.end58 ] - %eType.2184 = phi i32 [ %13, %if.end58.thread173 ], [ %eType.1, %if.end58 ] - %bIsTriStrip.0183 = phi i1 [ true, %if.end58.thread173 ], [ false, %if.end58 ] - %iTextureCoord.2182 = phi i32 [ -1, %if.end58.thread173 ], [ %iTextureCoord.1, %if.end58 ] - %eType3.2181 = phi i32 [ 0, %if.end58.thread173 ], [ %eType3.1, %if.end58 ] +if.then60: ; preds = %if.end58.thread171, %if.end58 + %iProperty.2183 = phi i32 [ %_a34.0193, %if.end58.thread171 ], [ %iProperty.1, %if.end58 ] + %eType.2182 = phi i32 [ %13, %if.end58.thread171 ], [ %eType.1, %if.end58 ] + %bIsTriStrip.0181 = phi i1 [ true, %if.end58.thread171 ], [ false, %if.end58 ] + %iTextureCoord.2180 = phi i32 [ -1, %if.end58.thread171 ], [ %iTextureCoord.1, %if.end58 ] + %eType3.2179 = phi i32 [ 0, %if.end58.thread171 ], [ %eType3.1, %if.end58 ] %mFaces = getelementptr inbounds nuw i8, ptr %0, i64 208 %14 = load ptr, ptr %mFaces, align 8 %cmp62 = icmp eq ptr %14, null @@ -4125,17 +4125,17 @@ arrayctor.cont: ; preds = %arrayctor.loop, %if br label %if.end70 if.end70: ; preds = %arrayctor.cont, %if.then60 - br i1 %bIsTriStrip.0183, label %if.else198, label %if.then72 + br i1 %bIsTriStrip.0181, label %if.else198, label %if.then72 if.then72: ; preds = %if.end70 - %cmp73.not = icmp eq i32 %iProperty.2185, -1 + %cmp73.not = icmp eq i32 %iProperty.2183, -1 br i1 %cmp73.not, label %if.end110, label %if.then74 if.then74: ; preds = %if.then72 %instElement.val61 = load ptr, ptr %instElement, align 8 %21 = getelementptr i8, ptr %instElement, i64 8 %instElement.val62 = load ptr, ptr %21, align 8 - %conv.i = sext i32 %iProperty.2185 to i64 + %conv.i = sext i32 %iProperty.2183 to i64 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %instElement.val62 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %instElement.val61 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i @@ -4205,8 +4205,8 @@ lpad.i75: ; preds = %if.then.i73 br label %common.resume _ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit78: ; preds = %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit - %cmp94208.not = icmp eq i32 %conv78, 0 - br i1 %cmp94208.not, label %if.end110, label %for.body95.preheader + %cmp94206.not = icmp eq i32 %conv78, 0 + br i1 %cmp94206.not, label %if.end110, label %for.body95.preheader for.body95.preheader: ; preds = %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit78 %add.ptr.i.i77 = getelementptr inbounds %"class.Assimp::PLY::PropertyInstance", ptr %instElement.val59, i64 %conv.i @@ -4216,18 +4216,18 @@ for.body95.preheader: ; preds = %_ZN6Assimp12_GLOBAL for.body95: ; preds = %for.body95.preheader, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit %indvars.iv = phi i64 [ 0, %for.body95.preheader ], [ %indvars.iv.next, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] - %p.sroa.0.0209 = phi ptr [ %31, %for.body95.preheader ], [ %incdec.ptr.i80, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] - %agg.tmp.sroa.0.0.copyload = load i64, ptr %p.sroa.0.0209, align 8 + %p.sroa.0.0207 = phi ptr [ %31, %for.body95.preheader ], [ %incdec.ptr.i80, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] + %agg.tmp.sroa.0.0.copyload = load i64, ptr %p.sroa.0.0207, align 8 %v.sroa.0.sroa.0.0.extract.trunc.i = trunc i64 %agg.tmp.sroa.0.0.copyload to i32 - switch i32 %eType.2184, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit [ + switch i32 %eType.2182, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit [ i32 6, label %sw.bb.i i32 7, label %sw.bb1.i i32 5, label %sw.bb3.i i32 3, label %sw.bb3.i i32 1, label %sw.bb3.i - i32 4, label %sw.bb4.i - i32 2, label %sw.bb4.i - i32 0, label %sw.bb4.i + i32 4, label %sw.bb3.i + i32 2, label %sw.bb3.i + i32 0, label %sw.bb3.i ] sw.bb.i: ; preds = %for.body95 @@ -4240,14 +4240,11 @@ sw.bb1.i: ; preds = %for.body95 %conv2.i = fptoui double %33 to i32 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb3.i: ; preds = %for.body95, %for.body95, %for.body95 - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - -sw.bb4.i: ; preds = %for.body95, %for.body95, %for.body95 +sw.bb3.i: ; preds = %for.body95, %for.body95, %for.body95, %for.body95, %for.body95, %for.body95 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %for.body95, %sw.bb.i, %sw.bb1.i, %sw.bb3.i, %sw.bb4.i - %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb4.i ], [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i79, %sw.bb.i ], [ 0, %for.body95 ] +_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %for.body95, %sw.bb.i, %sw.bb1.i, %sw.bb3.i + %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i79, %sw.bb.i ], [ 0, %for.body95 ] %34 = load ptr, ptr %mGeneratedMesh, align 8 %mFaces100 = getelementptr inbounds nuw i8, ptr %34, i64 208 %35 = load ptr, ptr %mFaces100, align 8 @@ -4256,19 +4253,19 @@ _ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE %arrayidx105 = getelementptr inbounds nuw i32, ptr %36, i64 %indvars.iv store i32 %retval.0.i, ptr %arrayidx105, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %incdec.ptr.i80 = getelementptr inbounds nuw i8, ptr %p.sroa.0.0209, i64 8 + %incdec.ptr.i80 = getelementptr inbounds nuw i8, ptr %p.sroa.0.0207, i64 8 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.end110, label %for.body95, !llvm.loop !28 if.end110: ; preds = %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit, %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit78, %if.then72 - %cmp111.not = icmp eq i32 %iTextureCoord.2182, -1 + %cmp111.not = icmp eq i32 %iTextureCoord.2180, -1 br i1 %cmp111.not, label %if.end307, label %if.then112 if.then112: ; preds = %if.end110 %instElement.val57 = load ptr, ptr %instElement, align 8 %37 = getelementptr i8, ptr %instElement, i64 8 %instElement.val58 = load ptr, ptr %37, align 8 - %conv.i81 = sext i32 %iTextureCoord.2182 to i64 + %conv.i81 = sext i32 %iTextureCoord.2180 to i64 %sub.ptr.lhs.cast.i.i82 = ptrtoint ptr %instElement.val58 to i64 %sub.ptr.rhs.cast.i.i83 = ptrtoint ptr %instElement.val57 to i64 %sub.ptr.sub.i.i84 = sub i64 %sub.ptr.lhs.cast.i.i82, %sub.ptr.rhs.cast.i.i83 @@ -4309,14 +4306,14 @@ for.body130.lr.ph: ; preds = %_ZN6Assimp12_GLOBAL br label %for.body130 for.body130: ; preds = %for.body130.lr.ph, %for.inc192 - %a127.0214 = phi i32 [ 0, %for.body130.lr.ph ], [ %inc193, %for.inc192 ] - %p119.sroa.0.0212 = phi ptr [ %40, %for.body130.lr.ph ], [ %incdec.ptr.i126, %for.inc192 ] + %a127.0212 = phi i32 [ 0, %for.body130.lr.ph ], [ %inc193, %for.inc192 ] + %p119.sroa.0.0210 = phi ptr [ %40, %for.body130.lr.ph ], [ %incdec.ptr.i125, %for.inc192 ] %41 = load ptr, ptr %mGeneratedMesh, align 8 %mFaces132 = getelementptr inbounds nuw i8, ptr %41, i64 208 %42 = load ptr, ptr %mFaces132, align 8 %mIndices135 = getelementptr inbounds nuw %struct.aiFace, ptr %42, i64 %idxprom133, i32 1 %43 = load ptr, ptr %mIndices135, align 8 - %div13653 = lshr i32 %a127.0214, 1 + %div13653 = lshr i32 %a127.0212, 1 %idxprom137 = zext nneg i32 %div13653 to i64 %arrayidx138 = getelementptr inbounds nuw i32, ptr %43, i64 %idxprom137 %44 = load i32, ptr %arrayidx138, align 4 @@ -4357,92 +4354,92 @@ arrayctor.cont159: ; preds = %new.ctorloop153, %i br label %if.end163 if.end163: ; preds = %arrayctor.cont159, %if.then141 - %rem = and i32 %a127.0214, 1 + %rem = and i32 %a127.0212, 1 %cmp164 = icmp eq i32 %rem, 0 - %agg.tmp166.sroa.0.0.copyload = load i64, ptr %p119.sroa.0.0212, align 8 + %agg.tmp166.sroa.0.0.copyload = load i64, ptr %p119.sroa.0.0210, align 8 %v.sroa.0.sroa.0.0.extract.trunc.i110 = trunc i64 %agg.tmp166.sroa.0.0.copyload to i32 br i1 %cmp164, label %if.then165, label %if.else175 if.then165: ; preds = %if.end163 - switch i32 %eType3.2181, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit [ - i32 6, label %sw.bb.i115 - i32 7, label %sw.bb1.i113 + switch i32 %eType3.2179, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit [ + i32 6, label %sw.bb.i114 + i32 7, label %sw.bb1.i112 i32 5, label %sw.bb2.i i32 3, label %sw.bb2.i i32 1, label %sw.bb2.i - i32 4, label %sw.bb4.i111 - i32 2, label %sw.bb4.i111 - i32 0, label %sw.bb4.i111 + i32 4, label %sw.bb4.i + i32 2, label %sw.bb4.i + i32 0, label %sw.bb4.i ] -sw.bb.i115: ; preds = %if.then165 +sw.bb.i114: ; preds = %if.then165 %54 = bitcast i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb1.i113: ; preds = %if.then165 +sw.bb1.i112: ; preds = %if.then165 %55 = bitcast i64 %agg.tmp166.sroa.0.0.copyload to double - %conv.i114 = fptrunc double %55 to float + %conv.i113 = fptrunc double %55 to float br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit sw.bb2.i: ; preds = %if.then165, %if.then165, %if.then165 %conv3.i = uitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb4.i111: ; preds = %if.then165, %if.then165, %if.then165 +sw.bb4.i: ; preds = %if.then165, %if.then165, %if.then165 %conv5.i = sitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then165, %sw.bb.i115, %sw.bb1.i113, %sw.bb2.i, %sw.bb4.i111 - %retval.0.i112 = phi float [ %conv5.i, %sw.bb4.i111 ], [ %conv3.i, %sw.bb2.i ], [ %conv.i114, %sw.bb1.i113 ], [ %54, %sw.bb.i115 ], [ 0.000000e+00, %if.then165 ] +_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then165, %sw.bb.i114, %sw.bb1.i112, %sw.bb2.i, %sw.bb4.i + %retval.0.i111 = phi float [ %conv5.i, %sw.bb4.i ], [ %conv3.i, %sw.bb2.i ], [ %conv.i113, %sw.bb1.i112 ], [ %54, %sw.bb.i114 ], [ 0.000000e+00, %if.then165 ] %56 = load ptr, ptr %mGeneratedMesh, align 8 %mTextureCoords171 = getelementptr inbounds nuw i8, ptr %56, i64 112 %57 = load ptr, ptr %mTextureCoords171, align 8 %idxprom173 = zext i32 %44 to i64 %arrayidx174 = getelementptr inbounds nuw %class.aiVector3t, ptr %57, i64 %idxprom173 - store float %retval.0.i112, ptr %arrayidx174, align 4 + store float %retval.0.i111, ptr %arrayidx174, align 4 br label %if.end185 if.else175: ; preds = %if.end163 - switch i32 %eType3.2181, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 [ - i32 6, label %sw.bb.i124 - i32 7, label %sw.bb1.i122 - i32 5, label %sw.bb2.i120 - i32 3, label %sw.bb2.i120 - i32 1, label %sw.bb2.i120 - i32 4, label %sw.bb4.i117 - i32 2, label %sw.bb4.i117 - i32 0, label %sw.bb4.i117 + switch i32 %eType3.2179, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 [ + i32 6, label %sw.bb.i123 + i32 7, label %sw.bb1.i121 + i32 5, label %sw.bb2.i119 + i32 3, label %sw.bb2.i119 + i32 1, label %sw.bb2.i119 + i32 4, label %sw.bb4.i116 + i32 2, label %sw.bb4.i116 + i32 0, label %sw.bb4.i116 ] -sw.bb.i124: ; preds = %if.else175 +sw.bb.i123: ; preds = %if.else175 %58 = bitcast i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 + br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 -sw.bb1.i122: ; preds = %if.else175 +sw.bb1.i121: ; preds = %if.else175 %59 = bitcast i64 %agg.tmp166.sroa.0.0.copyload to double - %conv.i123 = fptrunc double %59 to float - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 + %conv.i122 = fptrunc double %59 to float + br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 -sw.bb2.i120: ; preds = %if.else175, %if.else175, %if.else175 - %conv3.i121 = uitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 +sw.bb2.i119: ; preds = %if.else175, %if.else175, %if.else175 + %conv3.i120 = uitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float + br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 -sw.bb4.i117: ; preds = %if.else175, %if.else175, %if.else175 - %conv5.i118 = sitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 +sw.bb4.i116: ; preds = %if.else175, %if.else175, %if.else175 + %conv5.i117 = sitofp i32 %v.sroa.0.sroa.0.0.extract.trunc.i110 to float + br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 -_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125: ; preds = %if.else175, %sw.bb.i124, %sw.bb1.i122, %sw.bb2.i120, %sw.bb4.i117 - %retval.0.i119 = phi float [ %conv5.i118, %sw.bb4.i117 ], [ %conv3.i121, %sw.bb2.i120 ], [ %conv.i123, %sw.bb1.i122 ], [ %58, %sw.bb.i124 ], [ 0.000000e+00, %if.else175 ] +_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124: ; preds = %if.else175, %sw.bb.i123, %sw.bb1.i121, %sw.bb2.i119, %sw.bb4.i116 + %retval.0.i118 = phi float [ %conv5.i117, %sw.bb4.i116 ], [ %conv3.i120, %sw.bb2.i119 ], [ %conv.i122, %sw.bb1.i121 ], [ %58, %sw.bb.i123 ], [ 0.000000e+00, %if.else175 ] %60 = load ptr, ptr %mGeneratedMesh, align 8 %mTextureCoords181 = getelementptr inbounds nuw i8, ptr %60, i64 112 %61 = load ptr, ptr %mTextureCoords181, align 8 %idxprom183 = zext i32 %44 to i64 %y = getelementptr inbounds nuw %class.aiVector3t, ptr %61, i64 %idxprom183, i32 1 - store float %retval.0.i119, ptr %y, align 4 + store float %retval.0.i118, ptr %y, align 4 br label %if.end185 -if.end185: ; preds = %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - %idxprom189.pre-phi = phi i64 [ %idxprom183, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit125 ], [ %idxprom173, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] +if.end185: ; preds = %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit + %idxprom189.pre-phi = phi i64 [ %idxprom183, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit124 ], [ %idxprom173, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIfEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] %62 = load ptr, ptr %mGeneratedMesh, align 8 %mTextureCoords187 = getelementptr inbounds nuw i8, ptr %62, i64 112 %63 = load ptr, ptr %mTextureCoords187, align 8 @@ -4451,60 +4448,60 @@ if.end185: ; preds = %_ZN6Assimp3PLY16Pro br label %for.inc192 for.inc192: ; preds = %for.body130, %if.end185 - %inc193 = add nuw i32 %a127.0214, 1 - %incdec.ptr.i126 = getelementptr inbounds nuw i8, ptr %p119.sroa.0.0212, i64 8 - %exitcond225.not = icmp eq i32 %inc193, %conv118 - br i1 %exitcond225.not, label %if.end307, label %for.body130, !llvm.loop !29 + %inc193 = add nuw i32 %a127.0212, 1 + %incdec.ptr.i125 = getelementptr inbounds nuw i8, ptr %p119.sroa.0.0210, i64 8 + %exitcond223.not = icmp eq i32 %inc193, %conv118 + br i1 %exitcond223.not, label %if.end307, label %for.body130, !llvm.loop !29 if.else198: ; preds = %if.end70 %instElement.val = load ptr, ptr %instElement, align 8 %64 = getelementptr i8, ptr %instElement, i64 8 %instElement.val54 = load ptr, ptr %64, align 8 - %conv.i127 = sext i32 %iProperty.2185 to i64 - %sub.ptr.lhs.cast.i.i128 = ptrtoint ptr %instElement.val54 to i64 - %sub.ptr.rhs.cast.i.i129 = ptrtoint ptr %instElement.val to i64 - %sub.ptr.sub.i.i130 = sub i64 %sub.ptr.lhs.cast.i.i128, %sub.ptr.rhs.cast.i.i129 - %sub.ptr.div.i.i131 = sdiv exact i64 %sub.ptr.sub.i.i130, 24 - %cmp.not.i132 = icmp ugt i64 %sub.ptr.div.i.i131, %conv.i127 - br i1 %cmp.not.i132, label %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit138, label %if.then.i133 - -if.then.i133: ; preds = %if.else198 - %exception.i134 = tail call ptr @__cxa_allocate_exception(i64 16) #17 - invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %exception.i134, ptr noundef nonnull @.str.30) - to label %invoke.cont.i136 unwind label %lpad.i135 - -invoke.cont.i136: ; preds = %if.then.i133 - tail call void @__cxa_throw(ptr nonnull %exception.i134, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZN17DeadlyImportErrorD2Ev) #18 + %conv.i126 = sext i32 %iProperty.2183 to i64 + %sub.ptr.lhs.cast.i.i127 = ptrtoint ptr %instElement.val54 to i64 + %sub.ptr.rhs.cast.i.i128 = ptrtoint ptr %instElement.val to i64 + %sub.ptr.sub.i.i129 = sub i64 %sub.ptr.lhs.cast.i.i127, %sub.ptr.rhs.cast.i.i128 + %sub.ptr.div.i.i130 = sdiv exact i64 %sub.ptr.sub.i.i129, 24 + %cmp.not.i131 = icmp ugt i64 %sub.ptr.div.i.i130, %conv.i126 + br i1 %cmp.not.i131, label %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit137, label %if.then.i132 + +if.then.i132: ; preds = %if.else198 + %exception.i133 = tail call ptr @__cxa_allocate_exception(i64 16) #17 + invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %exception.i133, ptr noundef nonnull @.str.30) + to label %invoke.cont.i135 unwind label %lpad.i134 + +invoke.cont.i135: ; preds = %if.then.i132 + tail call void @__cxa_throw(ptr nonnull %exception.i133, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZN17DeadlyImportErrorD2Ev) #18 unreachable -lpad.i135: ; preds = %if.then.i133 +lpad.i134: ; preds = %if.then.i132 %65 = landingpad { ptr, i32 } cleanup br label %common.resume -_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit138: ; preds = %if.else198 - %add.ptr.i.i137 = getelementptr inbounds %"class.Assimp::PLY::PropertyInstance", ptr %instElement.val, i64 %conv.i127 - %66 = load ptr, ptr %add.ptr.i.i137, align 8 - %_M_finish.i139 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i137, i64 8 - %67 = load ptr, ptr %_M_finish.i139, align 8 - %cmp.i140.not215 = icmp eq ptr %66, %67 - br i1 %cmp.i140.not215, label %if.end307, label %for.body210.lr.ph +_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit137: ; preds = %if.else198 + %add.ptr.i.i136 = getelementptr inbounds %"class.Assimp::PLY::PropertyInstance", ptr %instElement.val, i64 %conv.i126 + %66 = load ptr, ptr %add.ptr.i.i136, align 8 + %_M_finish.i138 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i136, i64 8 + %67 = load ptr, ptr %_M_finish.i138, align 8 + %cmp.i139.not213 = icmp eq ptr %66, %67 + br i1 %cmp.i139.not213, label %if.end307, label %for.body210.lr.ph -for.body210.lr.ph: ; preds = %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit138 +for.body210.lr.ph: ; preds = %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit137 %NumOccur235 = getelementptr inbounds nuw i8, ptr %pcElement, i64 64 %idxprom255 = zext i32 %pos to i64 br label %for.body210 for.body210: ; preds = %for.body210.lr.ph, %for.inc303 - %aiTable.sroa.0.0219 = phi i32 [ -1, %for.body210.lr.ph ], [ %aiTable.sroa.0.1, %for.inc303 ] - %aiTable.sroa.6.0218 = phi i32 [ -1, %for.body210.lr.ph ], [ %aiTable.sroa.6.1, %for.inc303 ] - %flip.0217 = phi i1 [ false, %for.body210.lr.ph ], [ %flip.1, %for.inc303 ] - %a202.sroa.0.0216 = phi ptr [ %66, %for.body210.lr.ph ], [ %incdec.ptr.i150, %for.inc303 ] - %agg.tmp212.sroa.0.0.copyload = load i64, ptr %a202.sroa.0.0216, align 8 - %v.sroa.0.sroa.0.0.extract.trunc.i141 = trunc i64 %agg.tmp212.sroa.0.0.copyload to i32 - switch i32 %eType.2184, label %if.end220 [ - i32 6, label %sw.bb.i147 - i32 7, label %sw.bb1.i145 + %aiTable.sroa.0.0217 = phi i32 [ -1, %for.body210.lr.ph ], [ %aiTable.sroa.0.1, %for.inc303 ] + %aiTable.sroa.6.0216 = phi i32 [ -1, %for.body210.lr.ph ], [ %aiTable.sroa.6.1, %for.inc303 ] + %flip.0215 = phi i1 [ false, %for.body210.lr.ph ], [ %flip.1, %for.inc303 ] + %a202.sroa.0.0214 = phi ptr [ %66, %for.body210.lr.ph ], [ %incdec.ptr.i148, %for.inc303 ] + %agg.tmp212.sroa.0.0.copyload = load i64, ptr %a202.sroa.0.0214, align 8 + %v.sroa.0.sroa.0.0.extract.trunc.i140 = trunc i64 %agg.tmp212.sroa.0.0.copyload to i32 + switch i32 %eType.2182, label %if.end220 [ + i32 6, label %sw.bb.i145 + i32 7, label %sw.bb1.i143 i32 5, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit i32 3, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit i32 1, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit @@ -4513,28 +4510,28 @@ for.body210: ; preds = %for.body210.lr.ph, i32 0, label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ] -sw.bb.i147: ; preds = %for.body210 - %68 = bitcast i32 %v.sroa.0.sroa.0.0.extract.trunc.i141 to float - %conv.i148 = fptosi float %68 to i32 +sw.bb.i145: ; preds = %for.body210 + %68 = bitcast i32 %v.sroa.0.sroa.0.0.extract.trunc.i140 to float + %conv.i146 = fptosi float %68 to i32 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb1.i145: ; preds = %for.body210 +sw.bb1.i143: ; preds = %for.body210 %69 = bitcast i64 %agg.tmp212.sroa.0.0.copyload to double - %conv2.i146 = fptosi double %69 to i32 + %conv2.i144 = fptosi double %69 to i32 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %for.body210, %for.body210, %for.body210, %for.body210, %for.body210, %for.body210, %sw.bb.i147, %sw.bb1.i145 - %retval.0.i143 = phi i32 [ %conv2.i146, %sw.bb1.i145 ], [ %conv.i148, %sw.bb.i147 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i141, %for.body210 ] - %cmp216 = icmp eq i32 %retval.0.i143, -1 +_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %for.body210, %for.body210, %for.body210, %for.body210, %for.body210, %for.body210, %sw.bb.i145, %sw.bb1.i143 + %retval.0.i142 = phi i32 [ %conv2.i144, %sw.bb1.i143 ], [ %conv.i146, %sw.bb.i145 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ], [ %v.sroa.0.sroa.0.0.extract.trunc.i140, %for.body210 ] + %cmp216 = icmp eq i32 %retval.0.i142, -1 br i1 %cmp216, label %for.inc303, label %if.end220 if.end220: ; preds = %for.body210, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - %retval.0.i143188 = phi i32 [ %retval.0.i143, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ 0, %for.body210 ] - %cmp222 = icmp eq i32 %aiTable.sroa.0.0219, -1 + %retval.0.i142186 = phi i32 [ %retval.0.i142, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ 0, %for.body210 ] + %cmp222 = icmp eq i32 %aiTable.sroa.0.0217, -1 br i1 %cmp222, label %for.inc303, label %if.end225 if.end225: ; preds = %if.end220 - %cmp227 = icmp eq i32 %aiTable.sroa.6.0218, -1 + %cmp227 = icmp eq i32 %aiTable.sroa.6.0216, -1 br i1 %cmp227, label %for.inc303, label %if.end230 if.end230: ; preds = %if.end225 @@ -4567,8 +4564,8 @@ new.ctorloop243: ; preds = %if.then234 arrayctor.loop245: ; preds = %arrayctor.loop245, %new.ctorloop243 %arrayctor.cur246 = phi ptr [ %77, %new.ctorloop243 ], [ %arrayctor.next247, %arrayctor.loop245 ] store i32 0, ptr %arrayctor.cur246, align 8 - %mIndices.i149 = getelementptr inbounds nuw i8, ptr %arrayctor.cur246, i64 8 - store ptr null, ptr %mIndices.i149, align 8 + %mIndices.i147 = getelementptr inbounds nuw i8, ptr %arrayctor.cur246, i64 8 + store ptr null, ptr %mIndices.i147, align 8 %arrayctor.next247 = getelementptr inbounds nuw i8, ptr %arrayctor.cur246, i64 16 %arrayctor.done248 = icmp eq ptr %arrayctor.next247, %arrayctor.end244 br i1 %arrayctor.done248, label %arrayctor.cont249, label %arrayctor.loop245 @@ -4578,11 +4575,11 @@ arrayctor.cont249: ; preds = %arrayctor.loop245, store ptr %77, ptr %mFaces251, align 8 %.pre = load ptr, ptr %mGeneratedMesh, align 8 %mFaces254.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 208 - %.pre226 = load ptr, ptr %mFaces254.phi.trans.insert, align 8 + %.pre224 = load ptr, ptr %mFaces254.phi.trans.insert, align 8 br label %if.end252 if.end252: ; preds = %arrayctor.cont249, %if.end230 - %78 = phi ptr [ %.pre226, %arrayctor.cont249 ], [ %71, %if.end230 ] + %78 = phi ptr [ %.pre224, %arrayctor.cont249 ], [ %71, %if.end230 ] %arrayidx256 = getelementptr inbounds nuw %struct.aiFace, ptr %78, i64 %idxprom255 store i32 3, ptr %arrayidx256, align 8 %call258 = tail call noalias noundef nonnull dereferenceable(12) ptr @_Znam(i64 noundef 12) #19 @@ -4596,22 +4593,22 @@ if.end252: ; preds = %arrayctor.cont249, %82 = load ptr, ptr %mFaces266, align 8 %mIndices269 = getelementptr inbounds nuw %struct.aiFace, ptr %82, i64 %idxprom255, i32 1 %83 = load ptr, ptr %mIndices269, align 8 - store i32 %aiTable.sroa.0.0219, ptr %83, align 4 + store i32 %aiTable.sroa.0.0217, ptr %83, align 4 %84 = load ptr, ptr %mGeneratedMesh, align 8 %mFaces273 = getelementptr inbounds nuw i8, ptr %84, i64 208 %85 = load ptr, ptr %mFaces273, align 8 %mIndices276 = getelementptr inbounds nuw %struct.aiFace, ptr %85, i64 %idxprom255, i32 1 %86 = load ptr, ptr %mIndices276, align 8 %arrayidx277 = getelementptr inbounds nuw i8, ptr %86, i64 4 - store i32 %aiTable.sroa.6.0218, ptr %arrayidx277, align 4 + store i32 %aiTable.sroa.6.0216, ptr %arrayidx277, align 4 %87 = load ptr, ptr %mGeneratedMesh, align 8 %mFaces279 = getelementptr inbounds nuw i8, ptr %87, i64 208 %88 = load ptr, ptr %mFaces279, align 8 %mIndices282 = getelementptr inbounds nuw %struct.aiFace, ptr %88, i64 %idxprom255, i32 1 %89 = load ptr, ptr %mIndices282, align 8 %arrayidx283 = getelementptr inbounds nuw i8, ptr %89, i64 8 - store i32 %retval.0.i143188, ptr %arrayidx283, align 4 - br i1 %flip.0217, label %for.inc303, label %if.then286 + store i32 %retval.0.i142186, ptr %arrayidx283, align 4 + br i1 %flip.0215, label %for.inc303, label %if.then286 if.then286: ; preds = %if.end252 %90 = load ptr, ptr %mGeneratedMesh, align 8 @@ -4627,15 +4624,15 @@ if.then286: ; preds = %if.end252 br label %for.inc303 for.inc303: ; preds = %if.end252, %if.then286, %if.end225, %if.end220, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - %flip.1 = phi i1 [ false, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %flip.0217, %if.end220 ], [ %flip.0217, %if.end225 ], [ true, %if.then286 ], [ false, %if.end252 ] - %aiTable.sroa.6.1 = phi i32 [ -1, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %aiTable.sroa.6.0218, %if.end220 ], [ %retval.0.i143188, %if.end225 ], [ %retval.0.i143188, %if.then286 ], [ %retval.0.i143188, %if.end252 ] - %aiTable.sroa.0.1 = phi i32 [ -1, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %retval.0.i143188, %if.end220 ], [ %aiTable.sroa.0.0219, %if.end225 ], [ %aiTable.sroa.6.0218, %if.then286 ], [ %aiTable.sroa.6.0218, %if.end252 ] - %incdec.ptr.i150 = getelementptr inbounds nuw i8, ptr %a202.sroa.0.0216, i64 8 - %95 = load ptr, ptr %_M_finish.i139, align 8 - %cmp.i140.not = icmp eq ptr %incdec.ptr.i150, %95 - br i1 %cmp.i140.not, label %if.end307, label %for.body210, !llvm.loop !30 - -if.end307: ; preds = %for.inc53, %for.inc192, %for.inc303, %if.then3, %if.then33, %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit138, %if.end, %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit109, %if.end110, %if.end58 + %flip.1 = phi i1 [ false, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %flip.0215, %if.end220 ], [ %flip.0215, %if.end225 ], [ true, %if.then286 ], [ false, %if.end252 ] + %aiTable.sroa.6.1 = phi i32 [ -1, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %aiTable.sroa.6.0216, %if.end220 ], [ %retval.0.i142186, %if.end225 ], [ %retval.0.i142186, %if.then286 ], [ %retval.0.i142186, %if.end252 ] + %aiTable.sroa.0.1 = phi i32 [ -1, %_ZN6Assimp3PLY16PropertyInstance9ConvertToIiEET_NS1_10ValueUnionENS0_9EDataTypeE.exit ], [ %retval.0.i142186, %if.end220 ], [ %aiTable.sroa.0.0217, %if.end225 ], [ %aiTable.sroa.6.0216, %if.then286 ], [ %aiTable.sroa.6.0216, %if.end252 ] + %incdec.ptr.i148 = getelementptr inbounds nuw i8, ptr %a202.sroa.0.0214, i64 8 + %95 = load ptr, ptr %_M_finish.i138, align 8 + %cmp.i139.not = icmp eq ptr %incdec.ptr.i148, %95 + br i1 %cmp.i139.not, label %if.end307, label %for.body210, !llvm.loop !30 + +if.end307: ; preds = %for.inc53, %for.inc192, %for.inc303, %if.then3, %if.then33, %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit137, %if.end, %_ZN6Assimp12_GLOBAL__N_111GetPropertyINS_3PLY16PropertyInstanceEEERKT_RKSt6vectorIS4_SaIS4_EEi.exit109, %if.end110, %if.end58 ret void } diff --git a/bench/assimp/optimized/PlyParser.cpp.ll b/bench/assimp/optimized/PlyParser.cpp.ll index a4ab3685b9e..cf0c798006f 100644 --- a/bench/assimp/optimized/PlyParser.cpp.ll +++ b/bench/assimp/optimized/PlyParser.cpp.ll @@ -5633,9 +5633,9 @@ if.then1: ; preds = %if.end i32 5, label %sw.bb3.i i32 3, label %sw.bb3.i i32 1, label %sw.bb3.i - i32 4, label %sw.bb4.i - i32 2, label %sw.bb4.i - i32 0, label %sw.bb4.i + i32 4, label %sw.bb3.i + i32 2, label %sw.bb3.i + i32 0, label %sw.bb3.i ] sw.bb.i: ; preds = %if.then1 @@ -5648,14 +5648,11 @@ sw.bb1.i: ; preds = %if.then1 %conv2.i = fptoui double %8 to i32 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb3.i: ; preds = %if.then1, %if.then1, %if.then1 +sw.bb3.i: ; preds = %if.then1, %if.then1, %if.then1, %if.then1, %if.then1, %if.then1 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb4.i: ; preds = %if.then1, %if.then1, %if.then1 - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - -_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then1, %sw.bb.i, %sw.bb1.i, %sw.bb3.i, %sw.bb4.i - %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb4.i ], [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i, %sw.bb.i ], [ 0, %if.then1 ] +_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then1, %sw.bb.i, %sw.bb1.i, %sw.bb3.i + %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i, %sw.bb.i ], [ 0, %if.then1 ] %conv = zext i32 %retval.0.i to i64 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %p_pcOut, i64 8 %9 = load ptr, ptr %_M_finish.i.i, align 8 @@ -5878,9 +5875,9 @@ if.then: ; preds = %entry i32 5, label %sw.bb3.i i32 3, label %sw.bb3.i i32 1, label %sw.bb3.i - i32 4, label %sw.bb4.i - i32 2, label %sw.bb4.i - i32 0, label %sw.bb4.i + i32 4, label %sw.bb3.i + i32 2, label %sw.bb3.i + i32 0, label %sw.bb3.i ] sw.bb.i: ; preds = %if.then @@ -5893,14 +5890,11 @@ sw.bb1.i: ; preds = %if.then %conv2.i = fptoui double %4 to i32 br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -sw.bb3.i: ; preds = %if.then, %if.then, %if.then - br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit - -sw.bb4.i: ; preds = %if.then, %if.then, %if.then +sw.bb3.i: ; preds = %if.then, %if.then, %if.then, %if.then, %if.then, %if.then br label %_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit -_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then, %sw.bb.i, %sw.bb1.i, %sw.bb3.i, %sw.bb4.i - %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb4.i ], [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i, %sw.bb.i ], [ 0, %if.then ] +_ZN6Assimp3PLY16PropertyInstance9ConvertToIjEET_NS1_10ValueUnionENS0_9EDataTypeE.exit: ; preds = %if.then, %sw.bb.i, %sw.bb1.i, %sw.bb3.i + %retval.0.i = phi i32 [ %v.sroa.0.sroa.0.0.extract.trunc.i, %sw.bb3.i ], [ %conv2.i, %sw.bb1.i ], [ %conv.i, %sw.bb.i ], [ 0, %if.then ] %conv = zext i32 %retval.0.i to i64 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %p_pcOut, i64 8 %5 = load ptr, ptr %_M_finish.i.i, align 8 diff --git a/bench/c3c/optimized/sema_casts.c.ll b/bench/c3c/optimized/sema_casts.c.ll index 8eea53d1deb..3e23476accf 100644 --- a/bench/c3c/optimized/sema_casts.c.ll +++ b/bench/c3c/optimized/sema_casts.c.ll @@ -1125,8 +1125,8 @@ define dso_local ptr @type_infer_len_from_actual_type(ptr noundef %0, ptr nounde %4 = load i32, ptr %0, align 8 br label %6 -thread-pre-split: ; preds = %6, %8, %9 - %.sink = phi i64 [ 56, %8 ], [ 56, %9 ], [ 8, %6 ] +thread-pre-split: ; preds = %6, %8 + %.sink = phi i64 [ 56, %8 ], [ 8, %6 ] %5 = getelementptr inbounds nuw i8, ptr %.093, i64 %.sink %.093.ph = load ptr, ptr %5, align 8 %.pr = load i32, ptr %.093.ph, align 8 @@ -1138,244 +1138,238 @@ thread-pre-split: ; preds = %6, %8, %9 switch i32 %7, label %.critedge [ i32 31, label %thread-pre-split i32 40, label %8 - i32 33, label %9 - i32 34, label %9 - i32 35, label %9 - i32 37, label %9 - i32 36, label %10 - i32 38, label %10 + i32 33, label %8 + i32 34, label %8 + i32 35, label %8 + i32 37, label %8 + i32 36, label %9 + i32 38, label %9 i32 23, label %8 ] -8: ; preds = %6, %6 +8: ; preds = %6, %6, %6, %6, %6, %6 br label %thread-pre-split -9: ; preds = %6, %6, %6, %6 - br label %thread-pre-split - -10: ; preds = %6, %6 - %11 = icmp eq i32 %4, 31 - br i1 %11, label %12, label %.critedge111 +9: ; preds = %6, %6 + %10 = icmp eq i32 %4, 31 + br i1 %10, label %11, label %.critedge111 -12: ; preds = %10 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %14 = load ptr, ptr %13, align 8 - %15 = load i32, ptr %14, align 8 +11: ; preds = %9 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %13 = load ptr, ptr %12, align 8 + %14 = load i32, ptr %13, align 8 br label %.critedge111 -.critedge111: ; preds = %10, %12 - %.0100 = phi i32 [ %15, %12 ], [ %4, %10 ] - %16 = icmp eq i32 %.0100, 40 - br i1 %16, label %17, label %.critedge111.thread +.critedge111: ; preds = %9, %11 + %.0100 = phi i32 [ %14, %11 ], [ %4, %9 ] + %15 = icmp eq i32 %.0100, 40 + br i1 %15, label %16, label %.critedge111.thread -17: ; preds = %.critedge111 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %19 = load ptr, ptr %18, align 8 +16: ; preds = %.critedge111 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %18 = load ptr, ptr %17, align 8 br label %.critedge111.thread -.critedge111.thread: ; preds = %2, %17, %.critedge111 - %.098119 = phi i1 [ true, %17 ], [ false, %.critedge111 ], [ false, %2 ] - %.091 = phi ptr [ %19, %17 ], [ %0, %.critedge111 ], [ null, %2 ] +.critedge111.thread: ; preds = %2, %16, %.critedge111 + %.098119 = phi i1 [ true, %16 ], [ false, %.critedge111 ], [ false, %2 ] + %.091 = phi ptr [ %18, %16 ], [ %0, %.critedge111 ], [ null, %2 ] %.not108 = icmp eq ptr %1, null - br i1 %.not108, label %26, label %20 + br i1 %.not108, label %25, label %19 -20: ; preds = %.critedge111.thread - %21 = load i32, ptr %1, align 8 - %22 = icmp eq i32 %21, 40 - br i1 %22, label %23, label %26 +19: ; preds = %.critedge111.thread + %20 = load i32, ptr %1, align 8 + %21 = icmp eq i32 %20, 40 + br i1 %21, label %22, label %25 -23: ; preds = %20 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 56 - %25 = load ptr, ptr %24, align 8 - br label %26 +22: ; preds = %19 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %24 = load ptr, ptr %23, align 8 + br label %25 -26: ; preds = %20, %.critedge111.thread, %23 - %.0 = phi ptr [ %25, %23 ], [ null, %.critedge111.thread ], [ %1, %20 ] - %27 = tail call ptr @type_get_indexed_type(ptr noundef %.091) #10 - %28 = tail call ptr @type_get_indexed_type(ptr noundef %.0) #10 - %.not109 = icmp eq ptr %27, null +25: ; preds = %19, %.critedge111.thread, %22 + %.0 = phi ptr [ %24, %22 ], [ null, %.critedge111.thread ], [ %1, %19 ] + %26 = tail call ptr @type_get_indexed_type(ptr noundef %.091) #10 + %27 = tail call ptr @type_get_indexed_type(ptr noundef %.0) #10 + %.not109 = icmp eq ptr %26, null br i1 %.not109, label %.loopexit, label %.preheader123 -thread-pre-split120: ; preds = %.preheader123, %31, %32 - %.sink133 = phi i64 [ 56, %31 ], [ 56, %32 ], [ 8, %.preheader123 ] - %29 = getelementptr inbounds nuw i8, ptr %.in, i64 %.sink133 - %.096.ph = load ptr, ptr %29, align 8 +thread-pre-split120: ; preds = %.preheader123, %30 + %.sink133 = phi i64 [ 56, %30 ], [ 8, %.preheader123 ] + %28 = getelementptr inbounds nuw i8, ptr %.in, i64 %.sink133 + %.096.ph = load ptr, ptr %28, align 8 br label %.preheader123 -.preheader123: ; preds = %26, %thread-pre-split120 - %.in = phi ptr [ %.096.ph, %thread-pre-split120 ], [ %27, %26 ] - %30 = load i32, ptr %.in, align 8 - switch i32 %30, label %.critedge113 [ +.preheader123: ; preds = %25, %thread-pre-split120 + %.in = phi ptr [ %.096.ph, %thread-pre-split120 ], [ %26, %25 ] + %29 = load i32, ptr %.in, align 8 + switch i32 %29, label %.critedge113 [ i32 31, label %thread-pre-split120 - i32 40, label %31 - i32 33, label %32 - i32 34, label %32 - i32 35, label %32 - i32 37, label %32 + i32 40, label %30 + i32 33, label %30 + i32 34, label %30 + i32 35, label %30 + i32 37, label %30 i32 36, label %.loopexit i32 38, label %.loopexit - i32 23, label %31 + i32 23, label %30 ] -31: ; preds = %.preheader123, %.preheader123 - br label %thread-pre-split120 - -32: ; preds = %.preheader123, %.preheader123, %.preheader123, %.preheader123 +30: ; preds = %.preheader123, %.preheader123, %.preheader123, %.preheader123, %.preheader123, %.preheader123 br label %thread-pre-split120 -.loopexit: ; preds = %.preheader123, %.preheader123, %26 - %33 = tail call ptr @type_infer_len_from_actual_type(ptr noundef %27, ptr noundef %28) +.loopexit: ; preds = %.preheader123, %.preheader123, %25 + %31 = tail call ptr @type_infer_len_from_actual_type(ptr noundef %26, ptr noundef %27) br label %.critedge113 .critedge113: ; preds = %.preheader123, %.loopexit - %.089 = phi ptr [ %33, %.loopexit ], [ %27, %.preheader123 ] - %34 = load i32, ptr %.091, align 8 - switch i32 %34, label %97 [ - i32 23, label %35 - i32 33, label %40 + %.089 = phi ptr [ %31, %.loopexit ], [ %26, %.preheader123 ] + %32 = load i32, ptr %.091, align 8 + switch i32 %32, label %95 [ + i32 23, label %33 + i32 33, label %38 i32 36, label %.preheader i32 38, label %.preheader122 - i32 34, label %85 - i32 37, label %90 + i32 34, label %83 + i32 37, label %88 ] -35: ; preds = %.critedge113 - %36 = tail call ptr @type_get_ptr(ptr noundef %.089) #10 - br i1 %.098119, label %37, label %.critedge +33: ; preds = %.critedge113 + %34 = tail call ptr @type_get_ptr(ptr noundef %.089) #10 + br i1 %.098119, label %35, label %.critedge -37: ; preds = %35 - %38 = load i32, ptr %36, align 8 - %39 = icmp eq i32 %38, 40 - br i1 %39, label %.critedge, label %.critedge.sink.split +35: ; preds = %33 + %36 = load i32, ptr %34, align 8 + %37 = icmp eq i32 %36, 40 + br i1 %37, label %.critedge, label %.critedge.sink.split -40: ; preds = %.critedge113 - %41 = getelementptr inbounds nuw i8, ptr %.091, i64 64 - %42 = load i32, ptr %41, align 8 - %43 = tail call ptr @type_get_array(ptr noundef %.089, i32 noundef %42) #10 - br i1 %.098119, label %44, label %.critedge +38: ; preds = %.critedge113 + %39 = getelementptr inbounds nuw i8, ptr %.091, i64 64 + %40 = load i32, ptr %39, align 8 + %41 = tail call ptr @type_get_array(ptr noundef %.089, i32 noundef %40) #10 + br i1 %.098119, label %42, label %.critedge -44: ; preds = %40 - %45 = load i32, ptr %43, align 8 - %46 = icmp eq i32 %45, 40 - br i1 %46, label %.critedge, label %.critedge.sink.split +42: ; preds = %38 + %43 = load i32, ptr %41, align 8 + %44 = icmp eq i32 %43, 40 + br i1 %44, label %.critedge, label %.critedge.sink.split -.preheader: ; preds = %.critedge113, %59 - %.0.i = phi ptr [ %.1.i, %59 ], [ %.0, %.critedge113 ] - %47 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 - %48 = load ptr, ptr %47, align 8 - %49 = load i32, ptr %48, align 8 - switch i32 %49, label %type_flatten.exit [ - i32 32, label %50 - i32 40, label %56 - i32 31, label %58 +.preheader: ; preds = %.critedge113, %57 + %.0.i = phi ptr [ %.1.i, %57 ], [ %.0, %.critedge113 ] + %45 = getelementptr inbounds nuw i8, ptr %.0.i, i64 8 + %46 = load ptr, ptr %45, align 8 + %47 = load i32, ptr %46, align 8 + switch i32 %47, label %type_flatten.exit [ + i32 32, label %48 + i32 40, label %54 + i32 31, label %56 ] -50: ; preds = %.preheader - %51 = getelementptr inbounds nuw i8, ptr %48, i64 56 +48: ; preds = %.preheader + %49 = getelementptr inbounds nuw i8, ptr %46, i64 56 + %50 = load ptr, ptr %49, align 8 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 96 %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 96 - %54 = load ptr, ptr %53, align 8 - %55 = getelementptr inbounds nuw i8, ptr %54, i64 8 - br label %59 + %53 = getelementptr inbounds nuw i8, ptr %52, i64 8 + br label %57 -56: ; preds = %.preheader - %57 = getelementptr inbounds nuw i8, ptr %48, i64 56 - br label %59 +54: ; preds = %.preheader + %55 = getelementptr inbounds nuw i8, ptr %46, i64 56 + br label %57 -58: ; preds = %.preheader +56: ; preds = %.preheader tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.type_flatten, ptr noundef nonnull @.str.10, i32 noundef 2984) #11 unreachable -59: ; preds = %56, %50 - %.1.in.i = phi ptr [ %57, %56 ], [ %55, %50 ] +57: ; preds = %54, %48 + %.1.in.i = phi ptr [ %55, %54 ], [ %53, %48 ] %.1.i = load ptr, ptr %.1.in.i, align 8 br label %.preheader type_flatten.exit: ; preds = %.preheader - %60 = getelementptr inbounds nuw i8, ptr %48, i64 64 - %61 = load i32, ptr %60, align 8 - %62 = tail call ptr @type_get_array(ptr noundef %.089, i32 noundef %61) #10 - br i1 %.098119, label %63, label %.critedge + %58 = getelementptr inbounds nuw i8, ptr %46, i64 64 + %59 = load i32, ptr %58, align 8 + %60 = tail call ptr @type_get_array(ptr noundef %.089, i32 noundef %59) #10 + br i1 %.098119, label %61, label %.critedge -63: ; preds = %type_flatten.exit - %64 = load i32, ptr %62, align 8 - %65 = icmp eq i32 %64, 40 - br i1 %65, label %.critedge, label %.critedge.sink.split +61: ; preds = %type_flatten.exit + %62 = load i32, ptr %60, align 8 + %63 = icmp eq i32 %62, 40 + br i1 %63, label %.critedge, label %.critedge.sink.split -.preheader122: ; preds = %.critedge113, %78 - %.0.i114 = phi ptr [ %.1.i116, %78 ], [ %.0, %.critedge113 ] - %66 = getelementptr inbounds nuw i8, ptr %.0.i114, i64 8 - %67 = load ptr, ptr %66, align 8 - %68 = load i32, ptr %67, align 8 - switch i32 %68, label %type_flatten.exit117 [ - i32 32, label %69 - i32 40, label %75 - i32 31, label %77 +.preheader122: ; preds = %.critedge113, %76 + %.0.i114 = phi ptr [ %.1.i116, %76 ], [ %.0, %.critedge113 ] + %64 = getelementptr inbounds nuw i8, ptr %.0.i114, i64 8 + %65 = load ptr, ptr %64, align 8 + %66 = load i32, ptr %65, align 8 + switch i32 %66, label %type_flatten.exit117 [ + i32 32, label %67 + i32 40, label %73 + i32 31, label %75 ] -69: ; preds = %.preheader122 - %70 = getelementptr inbounds nuw i8, ptr %67, i64 56 +67: ; preds = %.preheader122 + %68 = getelementptr inbounds nuw i8, ptr %65, i64 56 + %69 = load ptr, ptr %68, align 8 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 96 %71 = load ptr, ptr %70, align 8 - %72 = getelementptr inbounds nuw i8, ptr %71, i64 96 - %73 = load ptr, ptr %72, align 8 - %74 = getelementptr inbounds nuw i8, ptr %73, i64 8 - br label %78 + %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 + br label %76 -75: ; preds = %.preheader122 - %76 = getelementptr inbounds nuw i8, ptr %67, i64 56 - br label %78 +73: ; preds = %.preheader122 + %74 = getelementptr inbounds nuw i8, ptr %65, i64 56 + br label %76 -77: ; preds = %.preheader122 +75: ; preds = %.preheader122 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.type_flatten, ptr noundef nonnull @.str.10, i32 noundef 2984) #11 unreachable -78: ; preds = %75, %69 - %.1.in.i115 = phi ptr [ %76, %75 ], [ %74, %69 ] +76: ; preds = %73, %67 + %.1.in.i115 = phi ptr [ %74, %73 ], [ %72, %67 ] %.1.i116 = load ptr, ptr %.1.in.i115, align 8 br label %.preheader122 type_flatten.exit117: ; preds = %.preheader122 - %79 = getelementptr inbounds nuw i8, ptr %67, i64 64 - %80 = load i32, ptr %79, align 8 - %81 = tail call ptr @type_get_vector(ptr noundef %.089, i32 noundef %80) #10 - br i1 %.098119, label %82, label %.critedge - -82: ; preds = %type_flatten.exit117 - %83 = load i32, ptr %81, align 8 - %84 = icmp eq i32 %83, 40 - br i1 %84, label %.critedge, label %.critedge.sink.split - -85: ; preds = %.critedge113 - %86 = tail call ptr @type_get_subarray(ptr noundef %.089) #10 - br i1 %.098119, label %87, label %.critedge - -87: ; preds = %85 - %88 = load i32, ptr %86, align 8 - %89 = icmp eq i32 %88, 40 - br i1 %89, label %.critedge, label %.critedge.sink.split - -90: ; preds = %.critedge113 - %91 = getelementptr inbounds nuw i8, ptr %.091, i64 64 - %92 = load i32, ptr %91, align 8 - %93 = tail call ptr @type_get_vector(ptr noundef %.089, i32 noundef %92) #10 - br i1 %.098119, label %94, label %.critedge - -94: ; preds = %90 - %95 = load i32, ptr %93, align 8 - %96 = icmp eq i32 %95, 40 - br i1 %96, label %.critedge, label %.critedge.sink.split - -97: ; preds = %.critedge113 + %77 = getelementptr inbounds nuw i8, ptr %65, i64 64 + %78 = load i32, ptr %77, align 8 + %79 = tail call ptr @type_get_vector(ptr noundef %.089, i32 noundef %78) #10 + br i1 %.098119, label %80, label %.critedge + +80: ; preds = %type_flatten.exit117 + %81 = load i32, ptr %79, align 8 + %82 = icmp eq i32 %81, 40 + br i1 %82, label %.critedge, label %.critedge.sink.split + +83: ; preds = %.critedge113 + %84 = tail call ptr @type_get_subarray(ptr noundef %.089) #10 + br i1 %.098119, label %85, label %.critedge + +85: ; preds = %83 + %86 = load i32, ptr %84, align 8 + %87 = icmp eq i32 %86, 40 + br i1 %87, label %.critedge, label %.critedge.sink.split + +88: ; preds = %.critedge113 + %89 = getelementptr inbounds nuw i8, ptr %.091, i64 64 + %90 = load i32, ptr %89, align 8 + %91 = tail call ptr @type_get_vector(ptr noundef %.089, i32 noundef %90) #10 + br i1 %.098119, label %92, label %.critedge + +92: ; preds = %88 + %93 = load i32, ptr %91, align 8 + %94 = icmp eq i32 %93, 40 + br i1 %94, label %.critedge, label %.critedge.sink.split + +95: ; preds = %.critedge113 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @__func__.type_infer_len_from_actual_type, ptr noundef nonnull @.str.4, i32 noundef 270) #11 unreachable -.critedge.sink.split: ; preds = %94, %87, %82, %63, %44, %37 - %.sink134 = phi ptr [ %36, %37 ], [ %43, %44 ], [ %62, %63 ], [ %81, %82 ], [ %86, %87 ], [ %93, %94 ] - %98 = tail call ptr @type_get_optional(ptr noundef nonnull %.sink134) #10 +.critedge.sink.split: ; preds = %92, %85, %80, %61, %42, %35 + %.sink134 = phi ptr [ %34, %35 ], [ %41, %42 ], [ %60, %61 ], [ %79, %80 ], [ %84, %85 ], [ %91, %92 ] + %96 = tail call ptr @type_get_optional(ptr noundef nonnull %.sink134) #10 br label %.critedge -.critedge: ; preds = %6, %.critedge.sink.split, %94, %90, %87, %85, %82, %type_flatten.exit117, %63, %type_flatten.exit, %44, %40, %37, %35 - %.092 = phi ptr [ %36, %37 ], [ %36, %35 ], [ %43, %44 ], [ %43, %40 ], [ %62, %63 ], [ %62, %type_flatten.exit ], [ %81, %82 ], [ %81, %type_flatten.exit117 ], [ %86, %87 ], [ %86, %85 ], [ %93, %94 ], [ %93, %90 ], [ %98, %.critedge.sink.split ], [ %0, %6 ] +.critedge: ; preds = %6, %.critedge.sink.split, %92, %88, %85, %83, %80, %type_flatten.exit117, %61, %type_flatten.exit, %42, %38, %35, %33 + %.092 = phi ptr [ %34, %35 ], [ %34, %33 ], [ %41, %42 ], [ %41, %38 ], [ %60, %61 ], [ %60, %type_flatten.exit ], [ %79, %80 ], [ %79, %type_flatten.exit117 ], [ %84, %85 ], [ %84, %83 ], [ %91, %92 ], [ %91, %88 ], [ %96, %.critedge.sink.split ], [ %0, %6 ] ret ptr %.092 } diff --git a/bench/c3c/optimized/sema_decls.c.ll b/bench/c3c/optimized/sema_decls.c.ll index 45f95178e1c..573afec1bb7 100644 --- a/bench/c3c/optimized/sema_decls.c.ll +++ b/bench/c3c/optimized/sema_decls.c.ll @@ -2129,7 +2129,7 @@ define dso_local zeroext i1 @sema_analyse_var_decl(ptr noundef %0, ptr noundef % %195 = getelementptr inbounds nuw i8, ptr %106, i64 8 %196 = load i64, ptr %195, align 8 %197 = tail call zeroext i1 @sema_analyse_decl_type(ptr poison, ptr noundef %194, i64 %196) - br i1 %197, label %341, label %198 + br i1 %197, label %340, label %198 198: ; preds = %193 %199 = load i64, ptr %86, align 8 @@ -2223,8 +2223,8 @@ define dso_local zeroext i1 @sema_analyse_var_decl(ptr noundef %0, ptr noundef % %.not272 = icmp eq ptr %246, null br i1 %.not272, label %.loopexit, label %.preheader308 -thread-pre-split: ; preds = %.preheader308, %249, %250 - %.sink = phi i64 [ 56, %249 ], [ 56, %250 ], [ 8, %.preheader308 ] +thread-pre-split: ; preds = %.preheader308, %249 + %.sink = phi i64 [ 56, %249 ], [ 8, %.preheader308 ] %247 = getelementptr inbounds nuw i8, ptr %.in, i64 %.sink %.0233.ph = load ptr, ptr %247, align 8 br label %.preheader308 @@ -2235,216 +2235,213 @@ thread-pre-split: ; preds = %.preheader308, %249 switch i32 %248, label %.thread296 [ i32 31, label %thread-pre-split i32 40, label %249 - i32 33, label %250 - i32 34, label %250 - i32 35, label %250 - i32 37, label %250 + i32 33, label %249 + i32 34, label %249 + i32 35, label %249 + i32 37, label %249 i32 36, label %.loopexit i32 38, label %.loopexit i32 23, label %249 ] -249: ; preds = %.preheader308, %.preheader308 - br label %thread-pre-split - -250: ; preds = %.preheader308, %.preheader308, %.preheader308, %.preheader308 +249: ; preds = %.preheader308, %.preheader308, %.preheader308, %.preheader308, %.preheader308, %.preheader308 br label %thread-pre-split .thread296: ; preds = %.preheader308 - %251 = load ptr, ptr %105, align 8 - %.not273298 = icmp eq ptr %251, null - br i1 %.not273298, label %341, label %258 + %250 = load ptr, ptr %105, align 8 + %.not273298 = icmp eq ptr %250, null + br i1 %.not273298, label %340, label %257 .loopexit: ; preds = %.preheader308, %.preheader308, %245 - %252 = load ptr, ptr %105, align 8 - %.not273.not = icmp eq ptr %252, null - br i1 %.not273.not, label %253, label %.thread305 - -253: ; preds = %.loopexit - %254 = load i64, ptr %213, align 8 - tail call void (i64, ptr, ...) @sema_error_at(i64 %254, ptr noundef nonnull @.str.24) #10 - %255 = load i64, ptr %86, align 8 - %256 = and i64 %255, -1024 - %257 = or disjoint i64 %256, 256 - store i64 %257, ptr %86, align 8 + %251 = load ptr, ptr %105, align 8 + %.not273.not = icmp eq ptr %251, null + br i1 %.not273.not, label %252, label %.thread305 + +252: ; preds = %.loopexit + %253 = load i64, ptr %213, align 8 + tail call void (i64, ptr, ...) @sema_error_at(i64 %253, ptr noundef nonnull @.str.24) #10 + %254 = load i64, ptr %86, align 8 + %255 = and i64 %254, -1024 + %256 = or disjoint i64 %255, 256 + store i64 %256, ptr %86, align 8 br label %.critedge284 -258: ; preds = %.thread296 - %259 = load i64, ptr %86, align 8 - %260 = and i64 %259, -897 - %261 = or disjoint i64 %260, 256 - store i64 %261, ptr %86, align 8 - %262 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %263 = load i32, ptr %262, align 8 - %.not275 = icmp eq i32 %263, 0 - br i1 %.not275, label %264, label %.thread305 - -264: ; preds = %258 - %265 = tail call zeroext i1 @sema_resolve_type_decl(ptr noundef %0, ptr noundef nonnull %246) #10 - br i1 %265, label %266, label %.critedge284 - -266: ; preds = %264 - %267 = tail call i32 @type_alloca_alignment(ptr noundef nonnull %246) #10 - store i32 %267, ptr %262, align 4 +257: ; preds = %.thread296 + %258 = load i64, ptr %86, align 8 + %259 = and i64 %258, -897 + %260 = or disjoint i64 %259, 256 + store i64 %260, ptr %86, align 8 + %261 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %262 = load i32, ptr %261, align 8 + %.not275 = icmp eq i32 %262, 0 + br i1 %.not275, label %263, label %.thread305 + +263: ; preds = %257 + %264 = tail call zeroext i1 @sema_resolve_type_decl(ptr noundef %0, ptr noundef nonnull %246) #10 + br i1 %264, label %265, label %.critedge284 + +265: ; preds = %263 + %266 = tail call i32 @type_alloca_alignment(ptr noundef nonnull %246) #10 + store i32 %266, ptr %261, align 4 br label %.thread305 -.thread305: ; preds = %.loopexit, %266, %258 - %268 = phi ptr [ %251, %266 ], [ %251, %258 ], [ %252, %.loopexit ] - %.0232302304307 = phi i1 [ false, %266 ], [ false, %258 ], [ true, %.loopexit ] - %269 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %270 = load i16, ptr %269, align 8 - %271 = and i16 %270, 255 - br i1 %.not259, label %272, label %274 - -272: ; preds = %.thread305 - %273 = and i16 %270, -256 - store i16 %273, ptr %269, align 8 - br label %274 - -274: ; preds = %272, %.thread305 - %275 = load ptr, ptr %212, align 8 - %276 = tail call zeroext i1 @sema_expr_analyse_assign_right_side(ptr noundef nonnull %0, ptr noundef null, ptr noundef %275, ptr noundef nonnull %268, i1 noundef zeroext false) #10 - %277 = load i16, ptr %269, align 8 - %278 = and i16 %277, -256 - %279 = or disjoint i16 %278, %271 - store i16 %279, ptr %269, align 8 - br i1 %276, label %284, label %280 - -280: ; preds = %274 - %281 = load i64, ptr %86, align 8 - %282 = and i64 %281, -1024 - %283 = or disjoint i64 %282, 256 - store i64 %283, ptr %86, align 8 +.thread305: ; preds = %.loopexit, %265, %257 + %267 = phi ptr [ %250, %265 ], [ %250, %257 ], [ %251, %.loopexit ] + %.0232302304307 = phi i1 [ false, %265 ], [ false, %257 ], [ true, %.loopexit ] + %268 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %269 = load i16, ptr %268, align 8 + %270 = and i16 %269, 255 + br i1 %.not259, label %271, label %273 + +271: ; preds = %.thread305 + %272 = and i16 %269, -256 + store i16 %272, ptr %268, align 8 + br label %273 + +273: ; preds = %271, %.thread305 + %274 = load ptr, ptr %212, align 8 + %275 = tail call zeroext i1 @sema_expr_analyse_assign_right_side(ptr noundef nonnull %0, ptr noundef null, ptr noundef %274, ptr noundef nonnull %267, i1 noundef zeroext false) #10 + %276 = load i16, ptr %268, align 8 + %277 = and i16 %276, -256 + %278 = or disjoint i16 %277, %270 + store i16 %278, ptr %268, align 8 + br i1 %275, label %283, label %279 + +279: ; preds = %273 + %280 = load i64, ptr %86, align 8 + %281 = and i64 %280, -1024 + %282 = or disjoint i64 %281, 256 + store i64 %282, ptr %86, align 8 br label %.critedge284 -284: ; preds = %274 - br i1 %.0232302304307, label %285, label %302 +283: ; preds = %273 + br i1 %.0232302304307, label %284, label %301 -285: ; preds = %284 - %286 = load ptr, ptr %268, align 8 - %287 = load ptr, ptr %212, align 8 - %.not276 = icmp eq ptr %287, null - br i1 %.not276, label %.critedge288, label %288 +284: ; preds = %283 + %285 = load ptr, ptr %267, align 8 + %286 = load ptr, ptr %212, align 8 + %.not276 = icmp eq ptr %286, null + br i1 %.not276, label %.critedge288, label %287 -288: ; preds = %285 - %289 = load i32, ptr %287, align 8 - %290 = icmp eq i32 %289, 31 - br i1 %290, label %291, label %295 +287: ; preds = %284 + %288 = load i32, ptr %286, align 8 + %289 = icmp eq i32 %288, 31 + br i1 %289, label %290, label %294 -291: ; preds = %288 - %292 = getelementptr inbounds nuw i8, ptr %287, i64 8 - %293 = load ptr, ptr %292, align 8 - %294 = load i32, ptr %293, align 8 - br label %295 +290: ; preds = %287 + %291 = getelementptr inbounds nuw i8, ptr %286, i64 8 + %292 = load ptr, ptr %291, align 8 + %293 = load i32, ptr %292, align 8 + br label %294 -295: ; preds = %291, %288 - %.0245 = phi i32 [ %294, %291 ], [ %289, %288 ] - %296 = icmp eq i32 %.0245, 40 - br i1 %296, label %297, label %.critedge288 +294: ; preds = %290, %287 + %.0245 = phi i32 [ %293, %290 ], [ %288, %287 ] + %295 = icmp eq i32 %.0245, 40 + br i1 %295, label %296, label %.critedge288 -297: ; preds = %295 - %298 = load i32, ptr %286, align 8 - %299 = icmp eq i32 %298, 40 - br i1 %299, label %.critedge288, label %300 +296: ; preds = %294 + %297 = load i32, ptr %285, align 8 + %298 = icmp eq i32 %297, 40 + br i1 %298, label %.critedge288, label %299 -300: ; preds = %297 - %301 = tail call ptr @type_get_optional(ptr noundef nonnull %286) #10 +299: ; preds = %296 + %300 = tail call ptr @type_get_optional(ptr noundef nonnull %285) #10 br label %.critedge288 -.critedge288: ; preds = %295, %297, %285, %300 - %.0 = phi ptr [ %301, %300 ], [ %286, %285 ], [ %286, %297 ], [ %286, %295 ] +.critedge288: ; preds = %294, %296, %284, %299 + %.0 = phi ptr [ %300, %299 ], [ %285, %284 ], [ %285, %296 ], [ %285, %294 ] store ptr %.0, ptr %212, align 8 - br label %302 - -302: ; preds = %.critedge288, %284 - %303 = load ptr, ptr %105, align 8 - br i1 %spec.select, label %304, label %312 - -304: ; preds = %302 - %305 = tail call zeroext i1 @expr_is_constant_eval(ptr noundef %303, i32 noundef 1) #10 - br i1 %305, label %312, label %306 - -306: ; preds = %304 - %307 = getelementptr inbounds nuw i8, ptr %303, i64 8 - %308 = load i64, ptr %307, align 8 - tail call void (i64, ptr, ...) @sema_error_at(i64 %308, ptr noundef nonnull @.str.25) #10 - %309 = load i64, ptr %86, align 8 - %310 = and i64 %309, -1024 - %311 = or disjoint i64 %310, 256 - store i64 %311, ptr %86, align 8 - br label %.critedge284 + br label %301 + +301: ; preds = %.critedge288, %283 + %302 = load ptr, ptr %105, align 8 + br i1 %spec.select, label %303, label %311 -312: ; preds = %304, %302 - %313 = load i32, ptr %5, align 8 - %314 = and i32 %313, 256 - %.not277 = icmp eq i32 %314, 0 - br i1 %.not277, label %.critedge290, label %315 - -315: ; preds = %312 - %316 = load ptr, ptr %268, align 8 - %.not278 = icmp eq ptr %316, null - br i1 %.not278, label %.critedge290, label %317 - -317: ; preds = %315 - %318 = load i32, ptr %316, align 8 - %319 = icmp eq i32 %318, 31 - br i1 %319, label %320, label %324 - -320: ; preds = %317 - %321 = getelementptr inbounds nuw i8, ptr %316, i64 8 - %322 = load ptr, ptr %321, align 8 - %323 = load i32, ptr %322, align 8 - br label %324 - -324: ; preds = %320, %317 - %.0244 = phi i32 [ %323, %320 ], [ %318, %317 ] - %325 = icmp eq i32 %.0244, 40 - br i1 %325, label %326, label %.critedge290 - -326: ; preds = %324 - %327 = load ptr, ptr %105, align 8 - %328 = getelementptr inbounds nuw i8, ptr %327, i64 8 - %329 = load i64, ptr %328, align 8 - tail call void (i64, ptr, ...) @sema_error_at(i64 %329, ptr noundef nonnull @.str.26) #10 - %330 = load i64, ptr %86, align 8 - %331 = and i64 %330, -1024 - %332 = or disjoint i64 %331, 256 - store i64 %332, ptr %86, align 8 +303: ; preds = %301 + %304 = tail call zeroext i1 @expr_is_constant_eval(ptr noundef %302, i32 noundef 1) #10 + br i1 %304, label %311, label %305 + +305: ; preds = %303 + %306 = getelementptr inbounds nuw i8, ptr %302, i64 8 + %307 = load i64, ptr %306, align 8 + tail call void (i64, ptr, ...) @sema_error_at(i64 %307, ptr noundef nonnull @.str.25) #10 + %308 = load i64, ptr %86, align 8 + %309 = and i64 %308, -1024 + %310 = or disjoint i64 %309, 256 + store i64 %310, ptr %86, align 8 br label %.critedge284 -.critedge290: ; preds = %315, %312, %324 - %333 = getelementptr inbounds nuw i8, ptr %303, i64 16 - %334 = load i16, ptr %333, align 8 - %335 = and i16 %334, 255 - %336 = icmp eq i16 %335, 14 - br i1 %336, label %337, label %341 - -337: ; preds = %.critedge290 - %338 = getelementptr inbounds nuw i8, ptr %303, i64 24 - %339 = load i16, ptr %338, align 8 - %340 = and i16 %339, -513 - store i16 %340, ptr %338, align 8 - br label %341 +311: ; preds = %303, %301 + %312 = load i32, ptr %5, align 8 + %313 = and i32 %312, 256 + %.not277 = icmp eq i32 %313, 0 + br i1 %.not277, label %.critedge290, label %314 + +314: ; preds = %311 + %315 = load ptr, ptr %267, align 8 + %.not278 = icmp eq ptr %315, null + br i1 %.not278, label %.critedge290, label %316 + +316: ; preds = %314 + %317 = load i32, ptr %315, align 8 + %318 = icmp eq i32 %317, 31 + br i1 %318, label %319, label %323 + +319: ; preds = %316 + %320 = getelementptr inbounds nuw i8, ptr %315, i64 8 + %321 = load ptr, ptr %320, align 8 + %322 = load i32, ptr %321, align 8 + br label %323 + +323: ; preds = %319, %316 + %.0244 = phi i32 [ %322, %319 ], [ %317, %316 ] + %324 = icmp eq i32 %.0244, 40 + br i1 %324, label %325, label %.critedge290 + +325: ; preds = %323 + %326 = load ptr, ptr %105, align 8 + %327 = getelementptr inbounds nuw i8, ptr %326, i64 8 + %328 = load i64, ptr %327, align 8 + tail call void (i64, ptr, ...) @sema_error_at(i64 %328, ptr noundef nonnull @.str.26) #10 + %329 = load i64, ptr %86, align 8 + %330 = and i64 %329, -1024 + %331 = or disjoint i64 %330, 256 + store i64 %331, ptr %86, align 8 + br label %.critedge284 -341: ; preds = %.thread296, %337, %.critedge290, %193 - %342 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %343 = load i32, ptr %342, align 8 - %.not279 = icmp eq i32 %343, 0 - br i1 %.not279, label %344, label %.critedge284 - -344: ; preds = %341 - %345 = getelementptr inbounds nuw i8, ptr %1, i64 72 - %346 = load ptr, ptr %345, align 8 - %347 = tail call zeroext i1 @sema_resolve_type_decl(ptr noundef %0, ptr noundef %346) #10 - br i1 %347, label %348, label %.critedge284 - -348: ; preds = %344 - %349 = tail call i32 @type_alloca_alignment(ptr noundef %346) #10 - store i32 %349, ptr %342, align 4 +.critedge290: ; preds = %314, %311, %323 + %332 = getelementptr inbounds nuw i8, ptr %302, i64 16 + %333 = load i16, ptr %332, align 8 + %334 = and i16 %333, 255 + %335 = icmp eq i16 %334, 14 + br i1 %335, label %336, label %340 + +336: ; preds = %.critedge290 + %337 = getelementptr inbounds nuw i8, ptr %302, i64 24 + %338 = load i16, ptr %337, align 8 + %339 = and i16 %338, -513 + store i16 %339, ptr %337, align 8 + br label %340 + +340: ; preds = %.thread296, %336, %.critedge290, %193 + %341 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %342 = load i32, ptr %341, align 8 + %.not279 = icmp eq i32 %342, 0 + br i1 %.not279, label %343, label %.critedge284 + +343: ; preds = %340 + %344 = getelementptr inbounds nuw i8, ptr %1, i64 72 + %345 = load ptr, ptr %344, align 8 + %346 = tail call zeroext i1 @sema_resolve_type_decl(ptr noundef %0, ptr noundef %345) #10 + br i1 %346, label %347, label %.critedge284 + +347: ; preds = %343 + %348 = tail call i32 @type_alloca_alignment(ptr noundef %345) #10 + store i32 %348, ptr %341, align 4 br label %.critedge284 -.critedge284: ; preds = %341, %348, %344, %264, %189, %326, %306, %280, %253, %239, %216, %205, %198, %183, %135, %128, %119, %108, %101, %92, %56, %44, %38, %34, %8 - %.0243 = phi i1 [ false, %92 ], [ true, %101 ], [ false, %239 ], [ false, %326 ], [ false, %306 ], [ false, %280 ], [ false, %253 ], [ false, %216 ], [ false, %205 ], [ false, %183 ], [ false, %198 ], [ false, %135 ], [ false, %128 ], [ false, %119 ], [ false, %108 ], [ false, %56 ], [ false, %34 ], [ false, %38 ], [ false, %44 ], [ %9, %8 ], [ false, %189 ], [ false, %264 ], [ false, %344 ], [ true, %348 ], [ true, %341 ] +.critedge284: ; preds = %340, %347, %343, %263, %189, %325, %305, %279, %252, %239, %216, %205, %198, %183, %135, %128, %119, %108, %101, %92, %56, %44, %38, %34, %8 + %.0243 = phi i1 [ false, %92 ], [ true, %101 ], [ false, %239 ], [ false, %325 ], [ false, %305 ], [ false, %279 ], [ false, %252 ], [ false, %216 ], [ false, %205 ], [ false, %183 ], [ false, %198 ], [ false, %135 ], [ false, %128 ], [ false, %119 ], [ false, %108 ], [ false, %56 ], [ false, %34 ], [ false, %38 ], [ false, %44 ], [ %9, %8 ], [ false, %189 ], [ false, %263 ], [ false, %343 ], [ true, %347 ], [ true, %340 ] ret i1 %.0243 } diff --git a/bench/c3c/optimized/types.c.ll b/bench/c3c/optimized/types.c.ll index 48c7756782d..24edbe47e9b 100644 --- a/bench/c3c/optimized/types.c.ll +++ b/bench/c3c/optimized/types.c.ll @@ -6744,7 +6744,7 @@ define dso_local ptr @type_base_module(ptr nocapture noundef readonly %0) local_ 2: ; preds = %.backedge, %1 %.0 = phi ptr [ %0, %1 ], [ %.0.be, %.backedge ] %3 = load i32, ptr %.0, align 8 - switch i32 %3, label %26 [ + switch i32 %3, label %25 [ i32 0, label %.loopexit i32 1, label %.loopexit i32 3, label %.loopexit @@ -6785,17 +6785,17 @@ define dso_local ptr @type_base_module(ptr nocapture noundef readonly %0) local_ i32 35, label %23 i32 37, label %23 i32 38, label %23 - i32 40, label %24 - i32 39, label %25 - i32 42, label %25 - i32 43, label %25 + i32 40, label %4 + i32 39, label %24 + i32 42, label %24 + i32 43, label %24 ] -4: ; preds = %2, %2 +4: ; preds = %2, %2, %2 br label %.backedge -.backedge: ; preds = %2, %4, %23, %24 - %.sink = phi i64 [ 56, %4 ], [ 56, %23 ], [ 56, %24 ], [ 8, %2 ] +.backedge: ; preds = %2, %4, %23 + %.sink = phi i64 [ 56, %4 ], [ 56, %23 ], [ 8, %2 ] %5 = getelementptr inbounds nuw i8, ptr %.0, i64 %.sink %.0.be = load ptr, ptr %5, align 8 br label %2 @@ -6835,14 +6835,11 @@ define dso_local ptr @type_base_module(ptr nocapture noundef readonly %0) local_ 23: ; preds = %2, %2, %2, %2, %2, %2 br label %.backedge -24: ; preds = %2 - br label %.backedge - -25: ; preds = %2, %2, %2 +24: ; preds = %2, %2, %2 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, ptr noundef nonnull @__func__.type_base_module, ptr noundef nonnull @.str.2, i32 noundef 2361) #13 unreachable -26: ; preds = %2 +25: ; preds = %2 tail call void (ptr, ...) @error_exit(ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, ptr noundef nonnull @__func__.type_base_module, ptr noundef nonnull @.str.2, i32 noundef 2363) #13 unreachable diff --git a/bench/cmake/optimized/zstd_compress.c.ll b/bench/cmake/optimized/zstd_compress.c.ll index 10f0cbfa919..7b8e86082fe 100644 --- a/bench/cmake/optimized/zstd_compress.c.ll +++ b/bench/cmake/optimized/zstd_compress.c.ll @@ -749,9 +749,9 @@ define dso_local range(i64 -42, 1) i64 @ZSTD_checkCParams(ptr nocapture noundef ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local { i64, i64 } @ZSTD_cParam_getBounds(i32 noundef %0) local_unnamed_addr #0 { - switch i32 %0, label %19 [ + switch i32 %0, label %18 [ i32 100, label %2 - i32 101, label %20 + i32 101, label %19 i32 102, label %3 i32 103, label %3 i32 104, label %4 @@ -777,8 +777,8 @@ define dso_local { i64, i64 } @ZSTD_cParam_getBounds(i32 noundef %0) local_unnam i32 1002, label %10 i32 1003, label %15 i32 1004, label %16 - i32 1006, label %17 - i32 1007, label %17 + i32 1006, label %8 + i32 1007, label %8 i32 1008, label %8 i32 1009, label %8 i32 1010, label %10 @@ -786,67 +786,64 @@ define dso_local { i64, i64 } @ZSTD_cParam_getBounds(i32 noundef %0) local_unnam i32 1012, label %8 i32 1013, label %10 i32 1014, label %8 - i32 1015, label %18 + i32 1015, label %17 i32 1016, label %10 ] 2: ; preds = %1 - br label %20 + br label %19 3: ; preds = %1, %1, %1 - br label %20 + br label %19 4: ; preds = %1 - br label %20 + br label %19 5: ; preds = %1 - br label %20 + br label %19 6: ; preds = %1 - br label %20 + br label %19 7: ; preds = %1 - br label %20 + br label %19 -8: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 - br label %20 +8: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 + br label %19 9: ; preds = %1, %1, %1 - br label %20 + br label %19 10: ; preds = %1, %1, %1, %1, %1, %1 - br label %20 + br label %19 11: ; preds = %1 - br label %20 + br label %19 12: ; preds = %1 - br label %20 + br label %19 13: ; preds = %1 - br label %20 + br label %19 14: ; preds = %1 - br label %20 + br label %19 15: ; preds = %1 - br label %20 + br label %19 16: ; preds = %1 - br label %20 + br label %19 -17: ; preds = %1, %1 - br label %20 +17: ; preds = %1 + br label %19 18: ; preds = %1 - br label %20 - -19: ; preds = %1 - br label %20 + br label %19 -20: ; preds = %1, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2 - %.sroa.3.0 = phi i64 [ 0, %19 ], [ 562949953422336, %18 ], [ 4294967296, %17 ], [ 9223372032559808512, %16 ], [ 562949953421376, %15 ], [ 12884901888, %14 ], [ 107374182400, %13 ], [ 34359738369, %12 ], [ 17592186044420, %11 ], [ 8589934592, %10 ], [ 0, %9 ], [ 4294967296, %8 ], [ 38654705665, %7 ], [ 562949953421312, %6 ], [ 30064771075, %5 ], [ 128849018881, %4 ], [ 128849018886, %3 ], [ 98784116736, %2 ], [ 133143986186, %1 ] - %.sroa.0.0 = phi i64 [ -40, %19 ], [ 0, %18 ], [ 0, %17 ], [ 0, %16 ], [ 0, %15 ], [ 0, %14 ], [ 0, %13 ], [ 0, %12 ], [ 0, %11 ], [ 0, %10 ], [ 0, %9 ], [ 0, %8 ], [ 0, %7 ], [ 0, %6 ], [ 0, %5 ], [ 0, %4 ], [ 0, %3 ], [ 0, %2 ], [ 0, %1 ] +19: ; preds = %1, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2 + %.sroa.3.0 = phi i64 [ 0, %18 ], [ 562949953422336, %17 ], [ 9223372032559808512, %16 ], [ 562949953421376, %15 ], [ 12884901888, %14 ], [ 107374182400, %13 ], [ 34359738369, %12 ], [ 17592186044420, %11 ], [ 8589934592, %10 ], [ 0, %9 ], [ 4294967296, %8 ], [ 38654705665, %7 ], [ 562949953421312, %6 ], [ 30064771075, %5 ], [ 128849018881, %4 ], [ 128849018886, %3 ], [ 98784116736, %2 ], [ 133143986186, %1 ] + %.sroa.0.0 = phi i64 [ -40, %18 ], [ 0, %17 ], [ 0, %16 ], [ 0, %15 ], [ 0, %14 ], [ 0, %13 ], [ 0, %12 ], [ 0, %11 ], [ 0, %10 ], [ 0, %9 ], [ 0, %8 ], [ 0, %7 ], [ 0, %6 ], [ 0, %5 ], [ 0, %4 ], [ 0, %3 ], [ 0, %2 ], [ 0, %1 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.3.0, 1 ret { i64, i64 } %.fca.1.insert diff --git a/bench/cpython/optimized/compile.ll b/bench/cpython/optimized/compile.ll index cd4bacc7a1c..17780d56803 100644 --- a/bench/cpython/optimized/compile.ll +++ b/bench/cpython/optimized/compile.ll @@ -2796,18 +2796,18 @@ if.end41: ; preds = %entry i32 263, label %return i32 256, label %return i32 257, label %return - i32 261, label %sw.bb53 + i32 261, label %sw.bb42 i32 265, label %sw.bb43 i32 264, label %sw.bb44 i32 266, label %sw.bb47 i32 267, label %sw.bb42 i32 258, label %sw.bb51 i32 259, label %sw.bb51 - i32 260, label %sw.bb53 - i32 262, label %sw.bb53 + i32 260, label %sw.bb42 + i32 262, label %sw.bb42 ] -sw.bb42: ; preds = %if.end41 +sw.bb42: ; preds = %if.end41, %if.end41, %if.end41, %if.end41 br label %return sw.bb43: ; preds = %if.end41 @@ -2828,14 +2828,11 @@ sw.bb47: ; preds = %if.end41 sw.bb51: ; preds = %if.end41, %if.end41 br label %return -sw.bb53: ; preds = %if.end41, %if.end41, %if.end41 - br label %return - sw.default: ; preds = %if.end41 br label %return -return: ; preds = %if.end41, %if.end41, %if.end41, %if.end33, %if.then24, %if.end, %if.then, %sw.default, %sw.bb53, %sw.bb51, %sw.bb47, %sw.bb44, %sw.bb43, %sw.bb42, %if.then20 - %retval.0 = phi i32 [ %sub, %if.then20 ], [ 2147483647, %sw.default ], [ -1, %sw.bb53 ], [ 1, %sw.bb51 ], [ %cond49, %sw.bb47 ], [ %cond46, %sw.bb44 ], [ %cond, %sw.bb43 ], [ -1, %sw.bb42 ], [ 2147483647, %if.then ], [ 2147483647, %if.end ], [ 2147483647, %if.then24 ], [ %sub35.sub34, %if.end33 ], [ 0, %if.end41 ], [ 0, %if.end41 ], [ 0, %if.end41 ] +return: ; preds = %if.end41, %if.end41, %if.end41, %if.end33, %if.then24, %if.end, %if.then, %sw.default, %sw.bb51, %sw.bb47, %sw.bb44, %sw.bb43, %sw.bb42, %if.then20 + %retval.0 = phi i32 [ %sub, %if.then20 ], [ 2147483647, %sw.default ], [ 1, %sw.bb51 ], [ %cond49, %sw.bb47 ], [ %cond46, %sw.bb44 ], [ %cond, %sw.bb43 ], [ -1, %sw.bb42 ], [ 2147483647, %if.then ], [ 2147483647, %if.end ], [ 2147483647, %if.then24 ], [ %sub35.sub34, %if.end33 ], [ 0, %if.end41 ], [ 0, %if.end41 ], [ 0, %if.end41 ] ret i32 %retval.0 } diff --git a/bench/cpython/optimized/memoryobject.ll b/bench/cpython/optimized/memoryobject.ll index df45225ac92..2e7469966e4 100644 --- a/bench/cpython/optimized/memoryobject.ll +++ b/bench/cpython/optimized/memoryobject.ll @@ -6302,43 +6302,28 @@ entry: i8 73, label %sw.bb5 i8 108, label %sw.bb6 i8 76, label %sw.bb6 - i8 113, label %sw.bb7 - i8 81, label %sw.bb7 - i8 110, label %sw.bb8 - i8 78, label %sw.bb8 - i8 102, label %sw.bb9 - i8 100, label %sw.bb10 - i8 101, label %sw.bb11 + i8 113, label %sw.bb6 + i8 81, label %sw.bb6 + i8 110, label %sw.bb6 + i8 78, label %sw.bb6 + i8 102, label %sw.bb5 + i8 100, label %sw.bb6 + i8 101, label %sw.bb4 i8 63, label %land.lhs.true - i8 80, label %sw.bb10 + i8 80, label %sw.bb6 ] -sw.bb4: ; preds = %entry, %entry +sw.bb4: ; preds = %entry, %entry, %entry br label %land.lhs.true -sw.bb5: ; preds = %entry, %entry +sw.bb5: ; preds = %entry, %entry, %entry br label %land.lhs.true -sw.bb6: ; preds = %entry, %entry +sw.bb6: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %land.lhs.true -sw.bb7: ; preds = %entry, %entry - br label %land.lhs.true - -sw.bb8: ; preds = %entry, %entry - br label %land.lhs.true - -sw.bb9: ; preds = %entry - br label %land.lhs.true - -sw.bb10: ; preds = %entry, %entry - br label %land.lhs.true - -sw.bb11: ; preds = %entry - br label %land.lhs.true - -land.lhs.true: ; preds = %entry, %entry, %entry, %entry, %sw.bb11, %sw.bb10, %sw.bb9, %sw.bb8, %sw.bb7, %sw.bb6, %sw.bb5, %sw.bb4 - %size.0.ph = phi i64 [ 2, %sw.bb4 ], [ 4, %sw.bb5 ], [ 8, %sw.bb6 ], [ 8, %sw.bb7 ], [ 8, %sw.bb8 ], [ 4, %sw.bb9 ], [ 8, %sw.bb10 ], [ 2, %sw.bb11 ], [ 1, %entry ], [ 1, %entry ], [ 1, %entry ], [ 1, %entry ] +land.lhs.true: ; preds = %entry, %entry, %entry, %entry, %sw.bb6, %sw.bb5, %sw.bb4 + %size.0.ph = phi i64 [ 2, %sw.bb4 ], [ 4, %sw.bb5 ], [ 8, %sw.bb6 ], [ 1, %entry ], [ 1, %entry ], [ 1, %entry ], [ 1, %entry ] %arrayidx16 = getelementptr i8, ptr %spec.select, i64 1 %2 = load i8, ptr %arrayidx16, align 1 %cmp18 = icmp eq i8 %2, 0 diff --git a/bench/cpython/optimized/unicodectype.ll b/bench/cpython/optimized/unicodectype.ll index 71bcf361888..2b7b997dc4e 100644 --- a/bench/cpython/optimized/unicodectype.ll +++ b/bench/cpython/optimized/unicodectype.ll @@ -690,7 +690,7 @@ entry: i32 127235, label %sw.bb48 i32 130034, label %sw.bb48 i32 140176, label %sw.bb48 - i32 68087, label %sw.bb49 + i32 68087, label %sw.bb15 i32 8532, label %sw.bb50 i32 65911, label %sw.bb50 i32 69246, label %sw.bb50 @@ -1289,8 +1289,8 @@ entry: i32 131361, label %sw.bb110 i32 68090, label %sw.bb111 i32 3884, label %sw.bb112 - i32 8538, label %sw.bb113 - i32 74844, label %sw.bb113 + i32 8538, label %sw.bb22 + i32 74844, label %sw.bb22 i32 8541, label %sw.bb114 i32 4982, label %sw.bb115 i32 8556, label %sw.bb115 @@ -1980,7 +1980,7 @@ sw.bb13: ; preds = %entry, %entry sw.bb14: ; preds = %entry, %entry, %entry br label %return -sw.bb15: ; preds = %entry, %entry, %entry +sw.bb15: ; preds = %entry, %entry, %entry, %entry br label %return sw.bb16: ; preds = %entry @@ -2001,7 +2001,7 @@ sw.bb20: ; preds = %entry sw.bb21: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %return -sw.bb22: ; preds = %entry +sw.bb22: ; preds = %entry, %entry, %entry br label %return sw.bb23: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry @@ -2082,9 +2082,6 @@ sw.bb47: ; preds = %entry, %entry, %ent sw.bb48: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %return -sw.bb49: ; preds = %entry - br label %return - sw.bb50: ; preds = %entry, %entry, %entry, %entry, %entry, %entry br label %return @@ -2274,9 +2271,6 @@ sw.bb111: ; preds = %entry sw.bb112: ; preds = %entry br label %return -sw.bb113: ; preds = %entry, %entry - br label %return - sw.bb114: ; preds = %entry br label %return @@ -2391,8 +2385,8 @@ sw.bb150: ; preds = %entry sw.epilog: ; preds = %entry br label %return -return: ; preds = %entry, %sw.epilog, %sw.bb150, %sw.bb149, %sw.bb148, %sw.bb147, %sw.bb146, %sw.bb145, %sw.bb144, %sw.bb143, %sw.bb142, %sw.bb141, %sw.bb140, %sw.bb139, %sw.bb138, %sw.bb137, %sw.bb136, %sw.bb135, %sw.bb134, %sw.bb133, %sw.bb132, %sw.bb131, %sw.bb130, %sw.bb129, %sw.bb128, %sw.bb127, %sw.bb126, %sw.bb125, %sw.bb124, %sw.bb123, %sw.bb122, %sw.bb121, %sw.bb120, %sw.bb119, %sw.bb118, %sw.bb117, %sw.bb116, %sw.bb115, %sw.bb114, %sw.bb113, %sw.bb112, %sw.bb111, %sw.bb110, %sw.bb109, %sw.bb108, %sw.bb107, %sw.bb106, %sw.bb105, %sw.bb104, %sw.bb103, %sw.bb102, %sw.bb101, %sw.bb100, %sw.bb99, %sw.bb98, %sw.bb97, %sw.bb96, %sw.bb95, %sw.bb94, %sw.bb93, %sw.bb92, %sw.bb91, %sw.bb90, %sw.bb89, %sw.bb88, %sw.bb87, %sw.bb86, %sw.bb85, %sw.bb84, %sw.bb83, %sw.bb82, %sw.bb81, %sw.bb80, %sw.bb79, %sw.bb78, %sw.bb77, %sw.bb76, %sw.bb75, %sw.bb74, %sw.bb73, %sw.bb72, %sw.bb71, %sw.bb70, %sw.bb69, %sw.bb68, %sw.bb67, %sw.bb66, %sw.bb65, %sw.bb64, %sw.bb63, %sw.bb62, %sw.bb61, %sw.bb60, %sw.bb59, %sw.bb58, %sw.bb57, %sw.bb56, %sw.bb55, %sw.bb54, %sw.bb53, %sw.bb52, %sw.bb51, %sw.bb50, %sw.bb49, %sw.bb48, %sw.bb47, %sw.bb46, %sw.bb45, %sw.bb44, %sw.bb43, %sw.bb42, %sw.bb41, %sw.bb40, %sw.bb39, %sw.bb38, %sw.bb37, %sw.bb36, %sw.bb35, %sw.bb34, %sw.bb33, %sw.bb32, %sw.bb31, %sw.bb30, %sw.bb29, %sw.bb28, %sw.bb27, %sw.bb26, %sw.bb25, %sw.bb24, %sw.bb23, %sw.bb22, %sw.bb21, %sw.bb20, %sw.bb19, %sw.bb18, %sw.bb17, %sw.bb16, %sw.bb15, %sw.bb14, %sw.bb13, %sw.bb12, %sw.bb11, %sw.bb10, %sw.bb9, %sw.bb8, %sw.bb7, %sw.bb6, %sw.bb5, %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1 - %retval.0 = phi double [ -1.000000e+00, %sw.epilog ], [ 9.000000e+05, %sw.bb150 ], [ 9.000000e+04, %sw.bb149 ], [ 9.000000e+03, %sw.bb148 ], [ 9.000000e+02, %sw.bb147 ], [ 9.000000e+01, %sw.bb146 ], [ 4.500000e+00, %sw.bb145 ], [ 7.500000e-01, %sw.bb144 ], [ 9.000000e+00, %sw.bb143 ], [ 8.000000e+05, %sw.bb142 ], [ 8.000000e+04, %sw.bb141 ], [ 8.000000e+03, %sw.bb140 ], [ 8.000000e+02, %sw.bb139 ], [ 8.000000e+01, %sw.bb138 ], [ 0x3FE5555555555555, %sw.bb137 ], [ 8.000000e+00, %sw.bb136 ], [ 7.000000e+05, %sw.bb135 ], [ 7.000000e+04, %sw.bb134 ], [ 7.000000e+03, %sw.bb133 ], [ 7.000000e+02, %sw.bb132 ], [ 7.000000e+01, %sw.bb131 ], [ 8.750000e-01, %sw.bb130 ], [ 3.500000e+00, %sw.bb129 ], [ 0x3FE2AAAAAAAAAAAB, %sw.bb128 ], [ 7.000000e+00, %sw.bb127 ], [ 6.000000e+05, %sw.bb126 ], [ 6.000000e+04, %sw.bb125 ], [ 6.000000e+03, %sw.bb124 ], [ 6.000000e+02, %sw.bb123 ], [ 6.000000e+01, %sw.bb122 ], [ 5.000000e-01, %sw.bb121 ], [ 6.000000e+00, %sw.bb120 ], [ 5.000000e+05, %sw.bb119 ], [ 5.000000e+04, %sw.bb118 ], [ 5.000000e+03, %sw.bb117 ], [ 5.000000e+02, %sw.bb116 ], [ 5.000000e+01, %sw.bb115 ], [ 6.250000e-01, %sw.bb114 ], [ 0x3FEAAAAAAAAAAAAB, %sw.bb113 ], [ 2.500000e+00, %sw.bb112 ], [ 0x3FDAAAAAAAAAAAAB, %sw.bb111 ], [ 5.000000e+00, %sw.bb110 ], [ 4.900000e+01, %sw.bb109 ], [ 4.800000e+01, %sw.bb108 ], [ 4.700000e+01, %sw.bb107 ], [ 4.600000e+01, %sw.bb106 ], [ 4.500000e+01, %sw.bb105 ], [ 4.400000e+01, %sw.bb104 ], [ 4.320000e+05, %sw.bb103 ], [ 4.300000e+01, %sw.bb102 ], [ 4.200000e+01, %sw.bb101 ], [ 4.100000e+01, %sw.bb100 ], [ 4.000000e+05, %sw.bb99 ], [ 4.000000e+04, %sw.bb98 ], [ 4.000000e+03, %sw.bb97 ], [ 4.000000e+02, %sw.bb96 ], [ 4.000000e+01, %sw.bb95 ], [ 8.000000e-01, %sw.bb94 ], [ 0x3FD5555555555555, %sw.bb93 ], [ 4.000000e+00, %sw.bb92 ], [ 3.900000e+01, %sw.bb91 ], [ 3.800000e+01, %sw.bb90 ], [ 3.700000e+01, %sw.bb89 ], [ 3.600000e+01, %sw.bb88 ], [ 3.500000e+01, %sw.bb87 ], [ 3.400000e+01, %sw.bb86 ], [ 3.300000e+01, %sw.bb85 ], [ 3.200000e+01, %sw.bb84 ], [ 3.100000e+01, %sw.bb83 ], [ 3.000000e+05, %sw.bb82 ], [ 3.000000e+04, %sw.bb81 ], [ 3.000000e+03, %sw.bb80 ], [ 3.000000e+02, %sw.bb79 ], [ 3.000000e+01, %sw.bb78 ], [ 3.750000e-02, %sw.bb77 ], [ 3.750000e-01, %sw.bb76 ], [ 4.687500e-02, %sw.bb75 ], [ 6.000000e-01, %sw.bb74 ], [ 7.500000e-01, %sw.bb73 ], [ 1.500000e-01, %sw.bb72 ], [ 1.500000e+00, %sw.bb71 ], [ 1.875000e-01, %sw.bb70 ], [ 2.500000e-01, %sw.bb69 ], [ 3.000000e+00, %sw.bb68 ], [ 2.900000e+01, %sw.bb67 ], [ 2.800000e+01, %sw.bb66 ], [ 2.700000e+01, %sw.bb65 ], [ 2.600000e+01, %sw.bb64 ], [ 2.500000e+01, %sw.bb63 ], [ 2.400000e+01, %sw.bb62 ], [ 2.300000e+01, %sw.bb61 ], [ 2.200000e+01, %sw.bb60 ], [ 2.160000e+05, %sw.bb59 ], [ 2.100000e+01, %sw.bb58 ], [ 2.000000e+07, %sw.bb57 ], [ 2.000000e+05, %sw.bb56 ], [ 2.000000e+04, %sw.bb55 ], [ 2.000000e+03, %sw.bb54 ], [ 2.000000e+02, %sw.bb53 ], [ 2.000000e+01, %sw.bb52 ], [ 4.000000e-01, %sw.bb51 ], [ 0x3FE5555555555555, %sw.bb50 ], [ 0x3FC5555555555555, %sw.bb49 ], [ 2.000000e+00, %sw.bb48 ], [ 1.900000e+01, %sw.bb47 ], [ 1.800000e+01, %sw.bb46 ], [ 8.500000e+00, %sw.bb45 ], [ 1.700000e+01, %sw.bb44 ], [ 1.600000e+01, %sw.bb43 ], [ 7.500000e+00, %sw.bb42 ], [ 1.500000e+01, %sw.bb41 ], [ 1.400000e+01, %sw.bb40 ], [ 6.500000e+00, %sw.bb39 ], [ 1.300000e+01, %sw.bb38 ], [ 1.200000e+01, %sw.bb37 ], [ 5.500000e+00, %sw.bb36 ], [ 0x3FED555555555555, %sw.bb35 ], [ 1.100000e+01, %sw.bb34 ], [ 1.000000e+16, %sw.bb33 ], [ 1.000000e+12, %sw.bb32 ], [ 1.000000e+10, %sw.bb31 ], [ 1.000000e+09, %sw.bb30 ], [ 1.000000e+08, %sw.bb29 ], [ 1.000000e+07, %sw.bb28 ], [ 1.000000e+06, %sw.bb27 ], [ 1.000000e+05, %sw.bb26 ], [ 1.000000e+04, %sw.bb25 ], [ 1.000000e+03, %sw.bb24 ], [ 1.000000e+02, %sw.bb23 ], [ 0x3FEAAAAAAAAAAAAB, %sw.bb22 ], [ 1.000000e+01, %sw.bb21 ], [ 0x3FBC71C71C71C71C, %sw.bb20 ], [ 1.250000e-02, %sw.bb19 ], [ 1.250000e-01, %sw.bb18 ], [ 0x3FC2492492492492, %sw.bb17 ], [ 1.562500e-02, %sw.bb16 ], [ 0x3FC5555555555555, %sw.bb15 ], [ 2.000000e-01, %sw.bb14 ], [ 2.500000e-02, %sw.bb13 ], [ 2.500000e-01, %sw.bb12 ], [ 3.125000e-03, %sw.bb11 ], [ 3.125000e-02, %sw.bb10 ], [ 0x3FD5555555555555, %sw.bb9 ], [ 5.000000e-02, %sw.bb8 ], [ 5.000000e-01, %sw.bb7 ], [ 6.250000e-03, %sw.bb6 ], [ 6.250000e-02, %sw.bb5 ], [ 0x3FB5555555555555, %sw.bb4 ], [ 1.000000e-01, %sw.bb3 ], [ 1.000000e+00, %sw.bb2 ], [ 0.000000e+00, %sw.bb1 ], [ -5.000000e-01, %entry ] +return: ; preds = %entry, %sw.epilog, %sw.bb150, %sw.bb149, %sw.bb148, %sw.bb147, %sw.bb146, %sw.bb145, %sw.bb144, %sw.bb143, %sw.bb142, %sw.bb141, %sw.bb140, %sw.bb139, %sw.bb138, %sw.bb137, %sw.bb136, %sw.bb135, %sw.bb134, %sw.bb133, %sw.bb132, %sw.bb131, %sw.bb130, %sw.bb129, %sw.bb128, %sw.bb127, %sw.bb126, %sw.bb125, %sw.bb124, %sw.bb123, %sw.bb122, %sw.bb121, %sw.bb120, %sw.bb119, %sw.bb118, %sw.bb117, %sw.bb116, %sw.bb115, %sw.bb114, %sw.bb112, %sw.bb111, %sw.bb110, %sw.bb109, %sw.bb108, %sw.bb107, %sw.bb106, %sw.bb105, %sw.bb104, %sw.bb103, %sw.bb102, %sw.bb101, %sw.bb100, %sw.bb99, %sw.bb98, %sw.bb97, %sw.bb96, %sw.bb95, %sw.bb94, %sw.bb93, %sw.bb92, %sw.bb91, %sw.bb90, %sw.bb89, %sw.bb88, %sw.bb87, %sw.bb86, %sw.bb85, %sw.bb84, %sw.bb83, %sw.bb82, %sw.bb81, %sw.bb80, %sw.bb79, %sw.bb78, %sw.bb77, %sw.bb76, %sw.bb75, %sw.bb74, %sw.bb73, %sw.bb72, %sw.bb71, %sw.bb70, %sw.bb69, %sw.bb68, %sw.bb67, %sw.bb66, %sw.bb65, %sw.bb64, %sw.bb63, %sw.bb62, %sw.bb61, %sw.bb60, %sw.bb59, %sw.bb58, %sw.bb57, %sw.bb56, %sw.bb55, %sw.bb54, %sw.bb53, %sw.bb52, %sw.bb51, %sw.bb50, %sw.bb48, %sw.bb47, %sw.bb46, %sw.bb45, %sw.bb44, %sw.bb43, %sw.bb42, %sw.bb41, %sw.bb40, %sw.bb39, %sw.bb38, %sw.bb37, %sw.bb36, %sw.bb35, %sw.bb34, %sw.bb33, %sw.bb32, %sw.bb31, %sw.bb30, %sw.bb29, %sw.bb28, %sw.bb27, %sw.bb26, %sw.bb25, %sw.bb24, %sw.bb23, %sw.bb22, %sw.bb21, %sw.bb20, %sw.bb19, %sw.bb18, %sw.bb17, %sw.bb16, %sw.bb15, %sw.bb14, %sw.bb13, %sw.bb12, %sw.bb11, %sw.bb10, %sw.bb9, %sw.bb8, %sw.bb7, %sw.bb6, %sw.bb5, %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1 + %retval.0 = phi double [ -1.000000e+00, %sw.epilog ], [ 9.000000e+05, %sw.bb150 ], [ 9.000000e+04, %sw.bb149 ], [ 9.000000e+03, %sw.bb148 ], [ 9.000000e+02, %sw.bb147 ], [ 9.000000e+01, %sw.bb146 ], [ 4.500000e+00, %sw.bb145 ], [ 7.500000e-01, %sw.bb144 ], [ 9.000000e+00, %sw.bb143 ], [ 8.000000e+05, %sw.bb142 ], [ 8.000000e+04, %sw.bb141 ], [ 8.000000e+03, %sw.bb140 ], [ 8.000000e+02, %sw.bb139 ], [ 8.000000e+01, %sw.bb138 ], [ 0x3FE5555555555555, %sw.bb137 ], [ 8.000000e+00, %sw.bb136 ], [ 7.000000e+05, %sw.bb135 ], [ 7.000000e+04, %sw.bb134 ], [ 7.000000e+03, %sw.bb133 ], [ 7.000000e+02, %sw.bb132 ], [ 7.000000e+01, %sw.bb131 ], [ 8.750000e-01, %sw.bb130 ], [ 3.500000e+00, %sw.bb129 ], [ 0x3FE2AAAAAAAAAAAB, %sw.bb128 ], [ 7.000000e+00, %sw.bb127 ], [ 6.000000e+05, %sw.bb126 ], [ 6.000000e+04, %sw.bb125 ], [ 6.000000e+03, %sw.bb124 ], [ 6.000000e+02, %sw.bb123 ], [ 6.000000e+01, %sw.bb122 ], [ 5.000000e-01, %sw.bb121 ], [ 6.000000e+00, %sw.bb120 ], [ 5.000000e+05, %sw.bb119 ], [ 5.000000e+04, %sw.bb118 ], [ 5.000000e+03, %sw.bb117 ], [ 5.000000e+02, %sw.bb116 ], [ 5.000000e+01, %sw.bb115 ], [ 6.250000e-01, %sw.bb114 ], [ 2.500000e+00, %sw.bb112 ], [ 0x3FDAAAAAAAAAAAAB, %sw.bb111 ], [ 5.000000e+00, %sw.bb110 ], [ 4.900000e+01, %sw.bb109 ], [ 4.800000e+01, %sw.bb108 ], [ 4.700000e+01, %sw.bb107 ], [ 4.600000e+01, %sw.bb106 ], [ 4.500000e+01, %sw.bb105 ], [ 4.400000e+01, %sw.bb104 ], [ 4.320000e+05, %sw.bb103 ], [ 4.300000e+01, %sw.bb102 ], [ 4.200000e+01, %sw.bb101 ], [ 4.100000e+01, %sw.bb100 ], [ 4.000000e+05, %sw.bb99 ], [ 4.000000e+04, %sw.bb98 ], [ 4.000000e+03, %sw.bb97 ], [ 4.000000e+02, %sw.bb96 ], [ 4.000000e+01, %sw.bb95 ], [ 8.000000e-01, %sw.bb94 ], [ 0x3FD5555555555555, %sw.bb93 ], [ 4.000000e+00, %sw.bb92 ], [ 3.900000e+01, %sw.bb91 ], [ 3.800000e+01, %sw.bb90 ], [ 3.700000e+01, %sw.bb89 ], [ 3.600000e+01, %sw.bb88 ], [ 3.500000e+01, %sw.bb87 ], [ 3.400000e+01, %sw.bb86 ], [ 3.300000e+01, %sw.bb85 ], [ 3.200000e+01, %sw.bb84 ], [ 3.100000e+01, %sw.bb83 ], [ 3.000000e+05, %sw.bb82 ], [ 3.000000e+04, %sw.bb81 ], [ 3.000000e+03, %sw.bb80 ], [ 3.000000e+02, %sw.bb79 ], [ 3.000000e+01, %sw.bb78 ], [ 3.750000e-02, %sw.bb77 ], [ 3.750000e-01, %sw.bb76 ], [ 4.687500e-02, %sw.bb75 ], [ 6.000000e-01, %sw.bb74 ], [ 7.500000e-01, %sw.bb73 ], [ 1.500000e-01, %sw.bb72 ], [ 1.500000e+00, %sw.bb71 ], [ 1.875000e-01, %sw.bb70 ], [ 2.500000e-01, %sw.bb69 ], [ 3.000000e+00, %sw.bb68 ], [ 2.900000e+01, %sw.bb67 ], [ 2.800000e+01, %sw.bb66 ], [ 2.700000e+01, %sw.bb65 ], [ 2.600000e+01, %sw.bb64 ], [ 2.500000e+01, %sw.bb63 ], [ 2.400000e+01, %sw.bb62 ], [ 2.300000e+01, %sw.bb61 ], [ 2.200000e+01, %sw.bb60 ], [ 2.160000e+05, %sw.bb59 ], [ 2.100000e+01, %sw.bb58 ], [ 2.000000e+07, %sw.bb57 ], [ 2.000000e+05, %sw.bb56 ], [ 2.000000e+04, %sw.bb55 ], [ 2.000000e+03, %sw.bb54 ], [ 2.000000e+02, %sw.bb53 ], [ 2.000000e+01, %sw.bb52 ], [ 4.000000e-01, %sw.bb51 ], [ 0x3FE5555555555555, %sw.bb50 ], [ 2.000000e+00, %sw.bb48 ], [ 1.900000e+01, %sw.bb47 ], [ 1.800000e+01, %sw.bb46 ], [ 8.500000e+00, %sw.bb45 ], [ 1.700000e+01, %sw.bb44 ], [ 1.600000e+01, %sw.bb43 ], [ 7.500000e+00, %sw.bb42 ], [ 1.500000e+01, %sw.bb41 ], [ 1.400000e+01, %sw.bb40 ], [ 6.500000e+00, %sw.bb39 ], [ 1.300000e+01, %sw.bb38 ], [ 1.200000e+01, %sw.bb37 ], [ 5.500000e+00, %sw.bb36 ], [ 0x3FED555555555555, %sw.bb35 ], [ 1.100000e+01, %sw.bb34 ], [ 1.000000e+16, %sw.bb33 ], [ 1.000000e+12, %sw.bb32 ], [ 1.000000e+10, %sw.bb31 ], [ 1.000000e+09, %sw.bb30 ], [ 1.000000e+08, %sw.bb29 ], [ 1.000000e+07, %sw.bb28 ], [ 1.000000e+06, %sw.bb27 ], [ 1.000000e+05, %sw.bb26 ], [ 1.000000e+04, %sw.bb25 ], [ 1.000000e+03, %sw.bb24 ], [ 1.000000e+02, %sw.bb23 ], [ 0x3FEAAAAAAAAAAAAB, %sw.bb22 ], [ 1.000000e+01, %sw.bb21 ], [ 0x3FBC71C71C71C71C, %sw.bb20 ], [ 1.250000e-02, %sw.bb19 ], [ 1.250000e-01, %sw.bb18 ], [ 0x3FC2492492492492, %sw.bb17 ], [ 1.562500e-02, %sw.bb16 ], [ 0x3FC5555555555555, %sw.bb15 ], [ 2.000000e-01, %sw.bb14 ], [ 2.500000e-02, %sw.bb13 ], [ 2.500000e-01, %sw.bb12 ], [ 3.125000e-03, %sw.bb11 ], [ 3.125000e-02, %sw.bb10 ], [ 0x3FD5555555555555, %sw.bb9 ], [ 5.000000e-02, %sw.bb8 ], [ 5.000000e-01, %sw.bb7 ], [ 6.250000e-03, %sw.bb6 ], [ 6.250000e-02, %sw.bb5 ], [ 0x3FB5555555555555, %sw.bb4 ], [ 1.000000e-01, %sw.bb3 ], [ 1.000000e+00, %sw.bb2 ], [ 0.000000e+00, %sw.bb1 ], [ -5.000000e-01, %entry ] ret double %retval.0 } diff --git a/bench/diesel-rs/optimized/vkwsu3my6pq0v7j.ll b/bench/diesel-rs/optimized/vkwsu3my6pq0v7j.ll index bab291bd0e7..4d8ee3cd8de 100644 --- a/bench/diesel-rs/optimized/vkwsu3my6pq0v7j.ll +++ b/bench/diesel-rs/optimized/vkwsu3my6pq0v7j.ll @@ -1090,7 +1090,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i8 %.sroa.210.i.sroa.0.0.copyload, ptr %.sroa.237.0..sroa_idx, align 8 %.sroa.338.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338, i64 23, i1 false) - br label %59 + br label %58 20: ; preds = %16 %21 = load i64, ptr %2, align 8, !range !318, !noundef !20 @@ -1145,7 +1145,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store ptr %29, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.0a1d393417899a61e67914e067b044ae.4, ptr %.sroa.5.0..sroa_idx, align 8 - br label %59 + br label %58 37: ; preds = %20 call void @llvm.experimental.noalias.scope.decl(metadata !325) @@ -1204,7 +1204,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" - %.sroa.6.0.i169 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %.sroa.6.0.i168 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !351) @@ -1212,7 +1212,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70", %.thread149, %.thread146, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" - %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i169, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] + %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i168, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] %.sroa.13.0.i71 = phi ptr [ %46, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ undef, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] %.sroa.11.0.i72 = phi ptr [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %52, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] store i64 %21, ptr %9, align 8, !alias.scope !351, !noalias !348 @@ -1228,7 +1228,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %54 = load i64, ptr %10, align 8, !range !22, !noundef !20 %55 = icmp eq i64 %54, -9223372036854775798 - br i1 %55, label %57, label %58 + br i1 %55, label %.thread162, label %57 56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread127" %.sroa.46.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -1237,23 +1237,23 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i64 %40, ptr %0, align 8 %.sroa.244.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244, i64 24, i1 false) - br label %59 + br label %58 -57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +.thread162: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 -9223372036854775798, ptr %0, align 8 - br label %59 + br label %58 -58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.448.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 %54, ptr %0, align 8 %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, i64 24, i1 false) - br label %59 + br label %58 -59: ; preds = %57, %58, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 +58: ; preds = %.thread162, %57, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 ret void } @@ -1306,7 +1306,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i8 %.sroa.210.i.sroa.0.0.copyload, ptr %.sroa.237.0..sroa_idx, align 8 %.sroa.338.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338, i64 23, i1 false) - br label %62 + br label %61 21: ; preds = %17 %22 = load i64, ptr %2, align 8, !range !318, !noundef !20 @@ -1361,7 +1361,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store ptr %30, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.0a1d393417899a61e67914e067b044ae.4, ptr %.sroa.5.0..sroa_idx, align 8 - br label %62 + br label %61 38: ; preds = %21 call void @llvm.experimental.noalias.scope.decl(metadata !384) @@ -1421,7 +1421,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br i1 %55, label %.thread42.i, label %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit.thread" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" - %.sroa.6.0.i203 = phi ptr [ %49, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %.sroa.6.0.i202 = phi ptr [ %49, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) br label %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" @@ -1435,12 +1435,12 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %11, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..sroa_idx.i.i.i79, i64 24, i1 false), !noalias !433 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !423 - br label %60 + br label %59 "_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69.thread159", %.thread153, %.thread42.i, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69" %.sroa.11.0.i71172 = phi ptr [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69" ], [ %53, %.thread42.i ], [ undef, %.thread153 ], [ %45, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69.thread159" ] %.sroa.13.0.i70169 = phi ptr [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69" ], [ undef, %.thread42.i ], [ undef, %.thread153 ], [ %47, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69.thread159" ] - %.sroa.6.0.i134.ph149157167 = phi ptr [ %.sroa.6.0.i203, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69" ], [ %40, %.thread42.i ], [ %51, %.thread153 ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69.thread159" ] + %.sroa.6.0.i134.ph149157167 = phi ptr [ %.sroa.6.0.i202, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69" ], [ %40, %.thread42.i ], [ %51, %.thread153 ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit69.thread159" ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !434 store i64 %22, ptr %5, align 8, !alias.scope !435, !noalias !438 %.sroa.6.0..sroa_idx.i13.i = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -1455,7 +1455,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !434 %.pr = load i64, ptr %11, align 8 %57 = icmp eq i64 %.pr, -9223372036854775798 - br i1 %57, label %59, label %60 + br i1 %57, label %.thread196, label %59 58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread131" %.sroa.46.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -1464,24 +1464,24 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i64 %41, ptr %0, align 8 %.sroa.244.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244, i64 24, i1 false) - br label %62 + br label %61 -59: ; preds = %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" +.thread196: ; preds = %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) store i64 -9223372036854775798, ptr %0, align 8 - br label %62 + br label %61 -60: ; preds = %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit.thread", %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" - %61 = phi i64 [ %54, %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit.thread" ], [ %.pr, %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" ] +59: ; preds = %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit.thread", %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" + %60 = phi i64 [ %54, %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit.thread" ], [ %.pr, %"_ZN138_$LT$diesel..query_builder..update_statement..changeset..Assign$LT$T$C$U$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h0dd3a647ba4b9deeE.exit" ] %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.448.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) - store i64 %61, ptr %0, align 8 + store i64 %60, ptr %0, align 8 %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, i64 24, i1 false) - br label %62 + br label %61 -62: ; preds = %59, %60, %58, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %20 +61: ; preds = %.thread196, %59, %58, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %20 ret void } @@ -2088,7 +2088,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i8 %.sroa.210.i.sroa.0.0.copyload, ptr %.sroa.237.0..sroa_idx, align 8 %.sroa.338.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338, i64 23, i1 false) - br label %59 + br label %58 20: ; preds = %16 %21 = load i64, ptr %2, align 8, !range !318, !noundef !20 @@ -2143,7 +2143,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store ptr %29, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.0a1d393417899a61e67914e067b044ae.4, ptr %.sroa.5.0..sroa_idx, align 8 - br label %59 + br label %58 37: ; preds = %20 call void @llvm.experimental.noalias.scope.decl(metadata !553) @@ -2202,7 +2202,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" - %.sroa.6.0.i169 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %.sroa.6.0.i168 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !579) @@ -2210,7 +2210,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70", %.thread149, %.thread146, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" - %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i169, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] + %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i168, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] %.sroa.13.0.i71 = phi ptr [ %46, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ undef, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] %.sroa.11.0.i72 = phi ptr [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %52, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] store i64 %21, ptr %9, align 8, !alias.scope !579, !noalias !576 @@ -2226,7 +2226,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %54 = load i64, ptr %10, align 8, !range !22, !noundef !20 %55 = icmp eq i64 %54, -9223372036854775798 - br i1 %55, label %57, label %58 + br i1 %55, label %.thread162, label %57 56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread127" %.sroa.46.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2235,23 +2235,23 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i64 %40, ptr %0, align 8 %.sroa.244.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244, i64 24, i1 false) - br label %59 + br label %58 -57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +.thread162: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 -9223372036854775798, ptr %0, align 8 - br label %59 + br label %58 -58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.448.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 %54, ptr %0, align 8 %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, i64 24, i1 false) - br label %59 + br label %58 -59: ; preds = %57, %58, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 +58: ; preds = %.thread162, %57, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 ret void } @@ -2303,7 +2303,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i8 %.sroa.210.i.sroa.0.0.copyload, ptr %.sroa.237.0..sroa_idx, align 8 %.sroa.338.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338, i64 23, i1 false) - br label %59 + br label %58 20: ; preds = %16 %21 = load i64, ptr %2, align 8, !range !318, !noundef !20 @@ -2358,7 +2358,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store ptr %29, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.0a1d393417899a61e67914e067b044ae.4, ptr %.sroa.5.0..sroa_idx, align 8 - br label %59 + br label %58 37: ; preds = %20 call void @llvm.experimental.noalias.scope.decl(metadata !598) @@ -2417,7 +2417,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" - %.sroa.6.0.i169 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %.sroa.6.0.i168 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !624) @@ -2425,7 +2425,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70", %.thread149, %.thread146, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" - %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i169, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] + %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i168, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] %.sroa.13.0.i71 = phi ptr [ %46, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ undef, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] %.sroa.11.0.i72 = phi ptr [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %52, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] store i64 %21, ptr %9, align 8, !alias.scope !624, !noalias !621 @@ -2441,7 +2441,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %54 = load i64, ptr %10, align 8, !range !22, !noundef !20 %55 = icmp eq i64 %54, -9223372036854775798 - br i1 %55, label %57, label %58 + br i1 %55, label %.thread162, label %57 56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread127" %.sroa.46.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2450,23 +2450,23 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i64 %40, ptr %0, align 8 %.sroa.244.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244, i64 24, i1 false) - br label %59 + br label %58 -57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +.thread162: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 -9223372036854775798, ptr %0, align 8 - br label %59 + br label %58 -58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.448.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 %54, ptr %0, align 8 %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, i64 24, i1 false) - br label %59 + br label %58 -59: ; preds = %57, %58, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 +58: ; preds = %.thread162, %57, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 ret void } @@ -2518,7 +2518,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i8 %.sroa.210.i.sroa.0.0.copyload, ptr %.sroa.237.0..sroa_idx, align 8 %.sroa.338.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.338, i64 23, i1 false) - br label %59 + br label %58 20: ; preds = %16 %21 = load i64, ptr %2, align 8, !range !318, !noundef !20 @@ -2573,7 +2573,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store ptr %29, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr @anon.0a1d393417899a61e67914e067b044ae.4, ptr %.sroa.5.0..sroa_idx, align 8 - br label %59 + br label %58 37: ; preds = %20 call void @llvm.experimental.noalias.scope.decl(metadata !643) @@ -2632,7 +2632,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" - %.sroa.6.0.i169 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %.sroa.6.0.i168 = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit" ], [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) call void @llvm.experimental.noalias.scope.decl(metadata !669) @@ -2640,7 +2640,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70", %.thread149, %.thread146, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" - %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i169, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] + %.sroa.6.0.i130.ph145153 = phi ptr [ %.sroa.6.0.i.pre, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %39, %.thread146 ], [ %.sroa.6.0.i168, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ %50, %.thread149 ] %.sroa.13.0.i71 = phi ptr [ %46, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ undef, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] %.sroa.11.0.i72 = phi ptr [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70.thread155" ], [ %52, %.thread146 ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit70" ], [ undef, %.thread149 ] store i64 %21, ptr %9, align 8, !alias.scope !669, !noalias !666 @@ -2656,7 +2656,7 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %54 = load i64, ptr %10, align 8, !range !22, !noundef !20 %55 = icmp eq i64 %54, -9223372036854775798 - br i1 %55, label %57, label %58 + br i1 %55, label %.thread162, label %57 56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread127" %.sroa.46.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2665,23 +2665,23 @@ define hidden void @"_ZN146_$LT$diesel..query_builder..update_statement..UpdateS store i64 %40, ptr %0, align 8 %.sroa.244.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.244, i64 24, i1 false) - br label %59 + br label %58 -57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +.thread162: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 -9223372036854775798, ptr %0, align 8 - br label %59 + br label %58 -58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" +57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit79" %.sroa.448.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.448.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) store i64 %54, ptr %0, align 8 %.sroa.250.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.250, i64 24, i1 false) - br label %59 + br label %58 -59: ; preds = %57, %58, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 +58: ; preds = %.thread162, %57, %56, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17he4dbfba0f4aefea1E.exit", %19 ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll index b4c47540442..50f823b08ba 100644 --- a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll @@ -161132,7 +161132,7 @@ entry: i8 0, label %sw.bb50 i8 2, label %sw.bb50 i8 4, label %sw.bb51 - i8 105, label %sw.bb52 + i8 105, label %sw.bb37 ] sw.bb2: ; preds = %entry @@ -161238,7 +161238,7 @@ ehcleanup: ; preds = %lpad29 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #52 br i1 %cleanup.isactive.0, label %eh.resume.sink.split, label %eh.resume -sw.bb37: ; preds = %entry, %entry, %entry, %entry +sw.bb37: ; preds = %entry, %entry, %entry, %entry, %entry br label %return sw.bb38: ; preds = %entry @@ -161274,9 +161274,6 @@ sw.bb50: ; preds = %entry, %entry, %ent sw.bb51: ; preds = %entry br label %return -sw.bb52: ; preds = %entry - br label %return - sw.default: ; preds = %entry %exception53 = tail call ptr @__cxa_allocate_exception(i64 80) #52 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp54) #52 @@ -161367,8 +161364,8 @@ ehcleanup65: ; preds = %ehcleanup64 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp54) #52 br i1 %cleanup.isactive62.0, label %eh.resume.sink.split, label %eh.resume -return: ; preds = %sw.bb52, %sw.bb51, %sw.bb50, %if.end48, %sw.bb44, %sw.bb43, %sw.bb41, %sw.bb40, %sw.bb39, %sw.bb38, %sw.bb37, %if.else23, %if.else19, %if.else, %if.end, %sw.bb13, %sw.bb12, %sw.bb11, %sw.bb10, %sw.bb9, %sw.bb8, %sw.bb7, %sw.bb6, %sw.bb5, %sw.bb4, %sw.bb3, %sw.bb2, %entry - %retval.1 = phi i8 [ -56, %sw.bb52 ], [ -51, %sw.bb51 ], [ -1, %sw.bb50 ], [ %call3.i, %if.end48 ], [ -50, %sw.bb43 ], [ 29, %sw.bb41 ], [ 23, %sw.bb40 ], [ 24, %sw.bb39 ], [ 21, %sw.bb38 ], [ -56, %sw.bb37 ], [ 12, %sw.bb12 ], [ 11, %sw.bb11 ], [ -52, %sw.bb10 ], [ 8, %sw.bb9 ], [ 9, %sw.bb8 ], [ 6, %sw.bb7 ], [ 7, %sw.bb6 ], [ 4, %sw.bb5 ], [ 5, %sw.bb4 ], [ 2, %sw.bb3 ], [ 3, %sw.bb2 ], [ 1, %entry ], [ -1, %sw.bb13 ], [ 5, %if.end ], [ 7, %if.else ], [ 9, %if.else19 ], [ -52, %if.else23 ], [ -1, %sw.bb44 ] +return: ; preds = %sw.bb51, %sw.bb50, %if.end48, %sw.bb44, %sw.bb43, %sw.bb41, %sw.bb40, %sw.bb39, %sw.bb38, %sw.bb37, %if.else23, %if.else19, %if.else, %if.end, %sw.bb13, %sw.bb12, %sw.bb11, %sw.bb10, %sw.bb9, %sw.bb8, %sw.bb7, %sw.bb6, %sw.bb5, %sw.bb4, %sw.bb3, %sw.bb2, %entry + %retval.1 = phi i8 [ -51, %sw.bb51 ], [ -1, %sw.bb50 ], [ %call3.i, %if.end48 ], [ -50, %sw.bb43 ], [ 29, %sw.bb41 ], [ 23, %sw.bb40 ], [ 24, %sw.bb39 ], [ 21, %sw.bb38 ], [ -56, %sw.bb37 ], [ 12, %sw.bb12 ], [ 11, %sw.bb11 ], [ -52, %sw.bb10 ], [ 8, %sw.bb9 ], [ 9, %sw.bb8 ], [ 6, %sw.bb7 ], [ 7, %sw.bb6 ], [ 4, %sw.bb5 ], [ 5, %sw.bb4 ], [ 2, %sw.bb3 ], [ 3, %sw.bb2 ], [ 1, %entry ], [ -1, %sw.bb13 ], [ 5, %if.end ], [ 7, %if.else ], [ 9, %if.else19 ], [ -52, %if.else23 ], [ -1, %sw.bb44 ] ret i8 %retval.1 eh.resume.sink.split: ; preds = %ehcleanup65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i92, %ehcleanup65.thread109, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i92.thread, %ehcleanup65.thread, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %ehcleanup.thread diff --git a/bench/flac/optimized/stream_decoder.c.ll b/bench/flac/optimized/stream_decoder.c.ll index a19852b91fd..8f37ac37e58 100644 --- a/bench/flac/optimized/stream_decoder.c.ll +++ b/bench/flac/optimized/stream_decoder.c.ll @@ -5283,9 +5283,9 @@ entry: while.body: ; preds = %while.body.backedge, %entry %0 = load ptr, ptr %decoder, align 8 %1 = load i32, ptr %0, align 8 - switch i32 %1, label %return.loopexit [ - i32 7, label %return - i32 4, label %return + switch i32 %1, label %return [ + i32 7, label %return.loopexit + i32 4, label %return.loopexit i32 2, label %sw.bb1 i32 3, label %sw.bb2 ] @@ -5293,27 +5293,26 @@ while.body: ; preds = %while.body.backedge sw.bb1: ; preds = %while.body %call = tail call fastcc i32 @frame_sync_(ptr noundef nonnull %decoder) %tobool.not = icmp eq i32 %call, 0 - br i1 %tobool.not, label %return.loopexit, label %while.body.backedge + br i1 %tobool.not, label %return, label %while.body.backedge sw.bb2: ; preds = %while.body %call3 = call fastcc i32 @read_frame_(ptr noundef nonnull %decoder, ptr noundef %got_a_frame, i32 noundef 0) %tobool4.not = icmp eq i32 %call3, 0 - br i1 %tobool4.not, label %return.loopexit, label %if.end6 + br i1 %tobool4.not, label %return, label %if.end6 if.end6: ; preds = %sw.bb2 %2 = load i32, ptr %got_a_frame, align 4 %tobool7.not = icmp eq i32 %2, 0 - br i1 %tobool7.not, label %while.body.backedge, label %return.loopexit + br i1 %tobool7.not, label %while.body.backedge, label %return while.body.backedge: ; preds = %if.end6, %sw.bb1 br label %while.body -return.loopexit: ; preds = %sw.bb1, %sw.bb2, %if.end6, %while.body - %retval.0.ph = phi i32 [ 0, %while.body ], [ 1, %if.end6 ], [ 0, %sw.bb2 ], [ 1, %sw.bb1 ] +return.loopexit: ; preds = %while.body, %while.body br label %return -return: ; preds = %while.body, %while.body, %return.loopexit - %retval.0 = phi i32 [ %retval.0.ph, %return.loopexit ], [ 1, %while.body ], [ 1, %while.body ] +return: ; preds = %if.end6, %sw.bb2, %sw.bb1, %while.body, %return.loopexit + %retval.0 = phi i32 [ 1, %return.loopexit ], [ 0, %while.body ], [ 1, %if.end6 ], [ 0, %sw.bb2 ], [ 1, %sw.bb1 ] ret i32 %retval.0 } diff --git a/bench/glslang/optimized/Intermediate.cpp.ll b/bench/glslang/optimized/Intermediate.cpp.ll index 5229a024104..4fe1f4a2de3 100644 --- a/bench/glslang/optimized/Intermediate.cpp.ll +++ b/bench/glslang/optimized/Intermediate.cpp.ll @@ -457,7 +457,7 @@ $_ZTVN7glslang16TIntermTraverserE = comdat any @switch.table._ZNK7glslang13TIntermediate14buildConvertOpENS_10TBasicTypeES1_RNS_9TOperatorE.14 = private unnamed_addr constant [12 x i32] [i32 133, i32 143, i32 123, i32 42, i32 50, i32 62, i32 70, i32 82, i32 90, i32 42, i32 110, i32 35], align 4 @switch.table._ZNK7glslang13TIntermediate14buildConvertOpENS_10TBasicTypeES1_RNS_9TOperatorE.15 = private unnamed_addr constant [12 x i32] [i32 137, i32 147, i32 127, i32 46, i32 53, i32 66, i32 73, i32 86, i32 93, i32 106, i32 46, i32 36], align 4 @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20 = private unnamed_addr constant [8 x i32] [i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3], align 4 -@switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22 = private unnamed_addr constant [7 x i32] [i32 5, i32 24, i32 7, i32 24, i32 9, i32 24, i32 11], align 4 +@switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22 = private unnamed_addr constant [5 x i32] [i32 10, i32 11, i32 10, i32 11, i32 10], align 4 @switch.table._ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE = private unnamed_addr constant [4 x i32] [i32 484, i32 486, i32 487, i32 488], align 4 @switch.table._ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE.23 = private unnamed_addr constant [4 x i32] [i32 475, i32 516, i32 517, i32 518], align 4 @switch.table._ZNK7glslang13TIntermediate22mapTypeToConstructorOpERKNS_5TTypeE.24 = private unnamed_addr constant [4 x i32] [i32 476, i32 519, i32 520, i32 521], align 4 @@ -3709,7 +3709,7 @@ define noundef ptr @_ZN7glslang13TIntermediate21addUniShapeConversionENS_9TOpera %13 = icmp eq i32 %12, 1 br i1 %13, label %16, label %14 -14: ; preds = %7, %7, %8, %7, %7 +14: ; preds = %8, %7, %7, %7, %7 %15 = tail call noundef ptr @_ZN7glslang13TIntermediate18addShapeConversionERKNS_5TTypeEPNS_12TIntermTypedE(ptr noundef nonnull align 8 dereferenceable(2024) %0, ptr noundef nonnull align 8 dereferenceable(152) %2, ptr noundef %3) br label %16 @@ -4935,18 +4935,18 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 11: ; preds = %5 %12 = icmp slt i32 %10, 310 - br i1 %12, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %13 + br i1 %12, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %13 13: ; preds = %11 %14 = getelementptr inbounds nuw i8, ptr %1, i64 1480 %15 = load i32, ptr %14, align 8 %16 = and i32 %15, 256 - %.not172 = icmp eq i32 %16, 0 - br i1 %.not172, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %18 + %.not200 = icmp eq i32 %16, 0 + br i1 %.not200, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %18 17: ; preds = %5 %.old71 = icmp eq i32 %10, 110 - br i1 %.old71, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %18 + br i1 %.old71, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %18 18: ; preds = %13, %17 %19 = getelementptr inbounds nuw i8, ptr %1, i64 768 @@ -4956,12 +4956,12 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 22: ; preds = %18 %23 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %3, i32 noundef %2, i32 noundef %4) - br i1 %23, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %24 + br i1 %23, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %24 24: ; preds = %22 %25 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) %spec.select = select i1 %25, i32 %3, i32 24 - br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 26: ; preds = %18 %27 = icmp eq i32 %2, 2 @@ -4969,7 +4969,7 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 28: ; preds = %26 %29 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %3, i32 noundef 2, i32 noundef %4) - br i1 %29, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %30 + br i1 %29, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %30 30: ; preds = %28, %26 %31 = icmp eq i32 %3, 2 @@ -4977,7 +4977,7 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 32: ; preds = %30 %33 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %2, i32 noundef 2, i32 noundef %4) - br i1 %33, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %34 + br i1 %33, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %34 34: ; preds = %32, %30 %35 = icmp eq i32 %2, 1 @@ -4985,7 +4985,7 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 36: ; preds = %34 %37 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %3, i32 noundef 1, i32 noundef %4) - br i1 %37, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %38 + br i1 %37, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %38 38: ; preds = %36, %34 %39 = icmp eq i32 %3, 1 @@ -4993,7 +4993,7 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 40: ; preds = %38 %41 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %2, i32 noundef 1, i32 noundef %4) - br i1 %41, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %42 + br i1 %41, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %42 42: ; preds = %40, %38 %43 = icmp eq i32 %2, 3 @@ -5012,7 +5012,7 @@ define void @_ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBas 51: ; preds = %44 %52 = icmp eq i32 %3, 3 - br i1 %52, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %53 + br i1 %52, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %53 53: ; preds = %51 %54 = load i32, ptr %19, align 8 @@ -5027,7 +5027,7 @@ _ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thr %58 = load i32, ptr %57, align 8 %59 = and i32 %58, 255 %or.cond87.not.i = icmp eq i32 %59, 0 - br i1 %or.cond87.not.i, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %or.cond87.not.i, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 _ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i: ; preds = %53, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i br i1 %46, label %.thread, label %60 @@ -5042,7 +5042,7 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat %63 = load i32, ptr %62, align 8 %64 = and i32 %63, 1024 %.not = icmp eq i32 %64, 0 - br i1 %.not, label %.thread, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %.not, label %.thread, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit.thread: ; preds = %60, %44, %42 %65 = icmp eq i32 %3, 3 @@ -5060,22 +5060,22 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat br i1 %or.cond.i73, label %.thread, label %73 73: ; preds = %66 - br i1 %43, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %74 + br i1 %43, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %74 74: ; preds = %73 %75 = load i32, ptr %19, align 8 %76 = icmp ne i32 %75, 2 %77 = and i32 %2, -4 - %switch171 = icmp eq i32 %77, 4 - %or.cond176 = and i1 %switch171, %76 - br i1 %or.cond176, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77 + %switch195 = icmp eq i32 %77, 4 + %or.cond204 = and i1 %switch195, %76 + br i1 %or.cond204, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77 _ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80: ; preds = %74 %78 = getelementptr inbounds nuw i8, ptr %1, i64 1480 %79 = load i32, ptr %78, align 8 %80 = and i32 %79, 255 %or.cond87.not.i81 = icmp eq i32 %80, 0 - br i1 %or.cond87.not.i81, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %or.cond87.not.i81, label %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 _ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77: ; preds = %74, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80 %81 = and i32 %2, -2 @@ -5087,8 +5087,8 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat %82 = getelementptr inbounds nuw i8, ptr %1, i64 1480 %83 = load i32, ptr %82, align 8 %84 = and i32 %83, 1024 - %.not173 = icmp eq i32 %84, 0 - br i1 %.not173, label %.thread, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + %.not201 = icmp eq i32 %84, 0 + br i1 %.not201, label %.thread, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 .thread: ; preds = %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.i77, %66, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit84, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit.thread %85 = add i32 %2, -4 @@ -5098,7 +5098,7 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat %switch.and.i2.i = and i32 %86, -7 %switch.selectcmp.i3.i = icmp eq i32 %switch.and.i2.i, 0 %87 = or i1 %switch.selectcmp.i.i86, %switch.selectcmp.i3.i - br i1 %87, label %88, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %87, label %88, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 88: ; preds = %.thread %89 = add i32 %3, -4 @@ -5108,7 +5108,7 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat %switch.and.i2.i89 = and i32 %90, -7 %switch.selectcmp.i3.i90 = icmp eq i32 %switch.and.i2.i89, 0 %91 = or i1 %switch.selectcmp.i.i88, %switch.selectcmp.i3.i90 - br i1 %91, label %92, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %91, label %92, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 92: ; preds = %88 %93 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) @@ -5116,7 +5116,7 @@ _ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperat 94: ; preds = %92 %95 = tail call noundef zeroext i1 @_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE(ptr noundef nonnull align 8 dereferenceable(2024) %1, i32 noundef %3, i32 noundef %2, i32 noundef %4) - br i1 %95, label %96, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + br i1 %95, label %96, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 96: ; preds = %94, %92 %97 = or i32 %89, %85 @@ -5143,122 +5143,158 @@ switch.lookup: ; preds = %101 _ZN7glslang11getTypeRankENS_10TBasicTypeE.exit: ; preds = %switch.lookup, %101 %.0.i97 = phi i32 [ -1, %101 ], [ %switch.load, %switch.lookup ] - %switch.tableidx179 = add i32 %3, -4 - %104 = icmp ult i32 %switch.tableidx179, 8 - br i1 %104, label %switch.lookup178, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99 - -switch.lookup178: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit - %105 = zext nneg i32 %switch.tableidx179 to i64 - %switch.gep180 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %105 - %switch.load181 = load i32, ptr %switch.gep180, align 4 + %switch.tableidx207 = add i32 %3, -4 + %104 = icmp ult i32 %switch.tableidx207, 8 + br i1 %104, label %switch.lookup206, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99 + +switch.lookup206: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit + %105 = zext nneg i32 %switch.tableidx207 to i64 + %switch.gep208 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %105 + %switch.load209 = load i32, ptr %switch.gep208, align 4 br label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99 -_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99: ; preds = %switch.lookup178, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit - %.0.i98 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit ], [ %switch.load181, %switch.lookup178 ] +_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99: ; preds = %switch.lookup206, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit + %.0.i98 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit ], [ %switch.load209, %switch.lookup206 ] %106 = icmp slt i32 %.0.i97, %.0.i98 - %spec.select168 = select i1 %106, i32 %3, i32 %2 - br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + %spec.select188 = select i1 %106, i32 %3, i32 %2 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 107: ; preds = %100 - %switch.tableidx183 = add i32 %2, -4 - %108 = icmp ult i32 %switch.tableidx183, 8 - br i1 %108, label %switch.lookup182, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 - -switch.lookup182: ; preds = %107 - %109 = zext nneg i32 %switch.tableidx183 to i64 - %switch.gep184 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %109 - %switch.load185 = load i32, ptr %switch.gep184, align 4 + %switch.tableidx211 = add i32 %2, -4 + %108 = icmp ult i32 %switch.tableidx211, 8 + br i1 %108, label %switch.lookup210, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 + +switch.lookup210: ; preds = %107 + %109 = zext nneg i32 %switch.tableidx211 to i64 + %switch.gep212 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %109 + %switch.load213 = load i32, ptr %switch.gep212, align 4 br label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 -_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103: ; preds = %switch.lookup182, %107 - %.0.i102 = phi i32 [ -1, %107 ], [ %switch.load185, %switch.lookup182 ] - %switch.tableidx187 = add i32 %3, -4 - %110 = icmp ult i32 %switch.tableidx187, 8 - br i1 %110, label %switch.lookup186, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105 +_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103: ; preds = %switch.lookup210, %107 + %.0.i102 = phi i32 [ -1, %107 ], [ %switch.load213, %switch.lookup210 ] + %switch.tableidx215 = add i32 %3, -4 + %110 = icmp ult i32 %switch.tableidx215, 8 + br i1 %110, label %switch.lookup214, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105 -switch.lookup186: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 - %111 = zext nneg i32 %switch.tableidx187 to i64 - %switch.gep188 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %111 - %switch.load189 = load i32, ptr %switch.gep188, align 4 +switch.lookup214: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 + %111 = zext nneg i32 %switch.tableidx215 to i64 + %switch.gep216 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %111 + %switch.load217 = load i32, ptr %switch.gep216, align 4 br label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105 -_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105: ; preds = %switch.lookup186, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 - %.0.i104 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 ], [ %switch.load189, %switch.lookup186 ] +_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105: ; preds = %switch.lookup214, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 + %.0.i104 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit103 ], [ %switch.load217, %switch.lookup214 ] %112 = icmp sgt i32 %.0.i102, %.0.i104 - br i1 %112, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %.thread142 + br i1 %112, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %.thread148 113: ; preds = %99 - br i1 %switch.selectcmp.i3.i90, label %114, label %.thread142 + br i1 %switch.selectcmp.i3.i90, label %114, label %.thread148 114: ; preds = %113 - %switch.tableidx191 = add i32 %3, -4 - %115 = icmp ult i32 %switch.tableidx191, 8 - br i1 %115, label %switch.lookup190, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 - -switch.lookup190: ; preds = %114 - %116 = zext nneg i32 %switch.tableidx191 to i64 - %switch.gep192 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %116 - %switch.load193 = load i32, ptr %switch.gep192, align 4 + %switch.tableidx219 = add i32 %3, -4 + %115 = icmp ult i32 %switch.tableidx219, 8 + br i1 %115, label %switch.lookup218, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 + +switch.lookup218: ; preds = %114 + %116 = zext nneg i32 %switch.tableidx219 to i64 + %switch.gep220 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %116 + %switch.load221 = load i32, ptr %switch.gep220, align 4 br label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 -_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109: ; preds = %switch.lookup190, %114 - %.0.i108 = phi i32 [ -1, %114 ], [ %switch.load193, %switch.lookup190 ] - %switch.tableidx195 = add i32 %2, -4 - %117 = icmp ult i32 %switch.tableidx195, 8 - br i1 %117, label %switch.lookup194, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111 +_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109: ; preds = %switch.lookup218, %114 + %.0.i108 = phi i32 [ -1, %114 ], [ %switch.load221, %switch.lookup218 ] + %switch.tableidx223 = add i32 %2, -4 + %117 = icmp ult i32 %switch.tableidx223, 8 + br i1 %117, label %switch.lookup222, label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111 -switch.lookup194: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 - %118 = zext nneg i32 %switch.tableidx195 to i64 - %switch.gep196 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %118 - %switch.load197 = load i32, ptr %switch.gep196, align 4 +switch.lookup222: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 + %118 = zext nneg i32 %switch.tableidx223 to i64 + %switch.gep224 = getelementptr inbounds nuw [8 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.20, i64 0, i64 %118 + %switch.load225 = load i32, ptr %switch.gep224, align 4 br label %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111 -_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111: ; preds = %switch.lookup194, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 - %.0.i110 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 ], [ %switch.load197, %switch.lookup194 ] +_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111: ; preds = %switch.lookup222, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 + %.0.i110 = phi i32 [ -1, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit109 ], [ %switch.load225, %switch.lookup222 ] %119 = icmp sgt i32 %.0.i108, %.0.i110 - br i1 %119, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %.thread142 + br i1 %119, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117, label %.thread148 -.thread142: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111, %113 +.thread148: ; preds = %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111, %113 br i1 %switch.selectcmp.i.i86, label %120, label %124 -120: ; preds = %.thread142 - %121 = tail call fastcc noundef zeroext i1 @_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_(i32 noundef %2, i32 noundef %3) - br i1 %121, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %122 +120: ; preds = %.thread148 + switch i32 %2, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit [ + i32 10, label %122 + i32 6, label %121 + i32 8, label %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit + i32 4, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + ] + +121: ; preds = %120 + %cond.i = icmp eq i32 %3, 5 + %spec.select196 = select i1 %cond.i, i32 6, i32 7 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 122: ; preds = %120 - %switch.tableidx199 = add i32 %2, -4 - %123 = icmp ult i32 %switch.tableidx199, 7 - br i1 %123, label %switch.lookup198, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 + %switch.tableidx227 = add i32 %3, -5 + %123 = icmp ult i32 %switch.tableidx227, 5 + br i1 %123, label %switch.lookup226, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit: ; preds = %120 + %switch.and5.i = and i32 %90, -3 + %switch.selectcmp6.i = icmp eq i32 %switch.and5.i, 0 + %spec.select190 = select i1 %switch.selectcmp6.i, i32 8, i32 9 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 -124: ; preds = %.thread142 - br i1 %switch.selectcmp.i.i88, label %125, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 +_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit: ; preds = %120 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +124: ; preds = %.thread148 + br i1 %switch.selectcmp.i.i88, label %125, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 125: ; preds = %124 - %126 = tail call fastcc noundef zeroext i1 @_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_(i32 noundef %3, i32 noundef %2) - br i1 %126, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116, label %127 + switch i32 %3, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit126 [ + i32 10, label %127 + i32 6, label %126 + i32 8, label %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit124 + i32 4, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + ] + +126: ; preds = %125 + %cond.i123 = icmp eq i32 %2, 5 + %spec.select198 = select i1 %cond.i123, i32 6, i32 7 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 127: ; preds = %125 - %switch.tableidx203 = add i32 %3, -4 - %128 = icmp ult i32 %switch.tableidx203, 7 - br i1 %128, label %switch.lookup202, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 - -switch.lookup198: ; preds = %122 - %129 = zext nneg i32 %switch.tableidx199 to i64 - %switch.gep200 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22, i64 0, i64 %129 - %switch.load201 = load i32, ptr %switch.gep200, align 4 - br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 - -switch.lookup202: ; preds = %127 - %130 = zext nneg i32 %switch.tableidx203 to i64 - %switch.gep204 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22, i64 0, i64 %130 - %switch.load205 = load i32, ptr %switch.gep204, align 4 - br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116 - -_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit116: ; preds = %127, %switch.lookup202, %122, %switch.lookup198, %124, %94, %88, %.thread, %32, %28, %40, %36, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit84, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111, %120, %125, %51, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i, %73, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99, %22, %24, %11, %13, %17 - %.1132.sink177 = phi i32 [ 24, %17 ], [ 24, %13 ], [ 24, %11 ], [ %2, %22 ], [ %spec.select, %24 ], [ 24, %124 ], [ 24, %94 ], [ 24, %88 ], [ 24, %.thread ], [ 2, %32 ], [ 2, %28 ], [ 1, %40 ], [ 1, %36 ], [ 3, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit84 ], [ 3, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit ], [ %2, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105 ], [ %3, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111 ], [ %2, %120 ], [ %3, %125 ], [ 3, %51 ], [ 3, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i ], [ 3, %73 ], [ 3, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80 ], [ %spec.select168, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99 ], [ %switch.load201, %switch.lookup198 ], [ 24, %122 ], [ %switch.load205, %switch.lookup202 ], [ 24, %127 ] - store i32 %.1132.sink177, ptr %0, align 4 + %switch.tableidx231 = add i32 %2, -5 + %128 = icmp ult i32 %switch.tableidx231, 5 + br i1 %128, label %switch.lookup230, label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit124: ; preds = %125 + %switch.and5.i120 = and i32 %86, -3 + %switch.selectcmp6.i121 = icmp eq i32 %switch.and5.i120, 0 + %spec.select192 = select i1 %switch.selectcmp6.i121, i32 8, i32 9 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit126: ; preds = %125 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +switch.lookup226: ; preds = %122 + %129 = zext nneg i32 %switch.tableidx227 to i64 + %switch.gep228 = getelementptr inbounds nuw [5 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22, i64 0, i64 %129 + %switch.load229 = load i32, ptr %switch.gep228, align 4 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +switch.lookup230: ; preds = %127 + %130 = zext nneg i32 %switch.tableidx231 to i64 + %switch.gep232 = getelementptr inbounds nuw [5 x i32], ptr @switch.table._ZNK7glslang13TIntermediate28getConversionDestinationTypeENS_10TBasicTypeES1_NS_9TOperatorE.22, i64 0, i64 %130 + %switch.load233 = load i32, ptr %switch.gep232, align 4 + br label %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117 + +_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit117: ; preds = %127, %switch.lookup230, %122, %switch.lookup226, %124, %94, %88, %.thread, %32, %28, %40, %36, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit84, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111, %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit, %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit126, %51, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i, %73, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80, %120, %125, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99, %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit, %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit124, %121, %126, %22, %24, %11, %13, %17 + %.1138.sink205 = phi i32 [ 24, %17 ], [ 24, %13 ], [ 24, %11 ], [ %2, %22 ], [ %spec.select, %24 ], [ 24, %124 ], [ 24, %94 ], [ 24, %88 ], [ 24, %.thread ], [ 2, %32 ], [ 2, %28 ], [ 1, %40 ], [ 1, %36 ], [ 3, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit84 ], [ 3, %_ZNK7glslang13TIntermediate20canImplicitlyPromoteENS_10TBasicTypeES1_NS_9TOperatorE.exit ], [ %2, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit105 ], [ %3, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit111 ], [ 24, %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit ], [ 24, %_ZN7glslangL28getCorrespondingUnsignedTypeENS_10TBasicTypeE.exit126 ], [ 3, %51 ], [ 3, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i ], [ 3, %73 ], [ 3, %_ZNK7glslang13TIntermediate22isFPIntegralConversionENS_10TBasicTypeES1_.exit.thread.i80 ], [ %spec.select188, %_ZN7glslang11getTypeRankENS_10TBasicTypeE.exit99 ], [ 5, %120 ], [ %spec.select190, %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit ], [ 5, %125 ], [ %spec.select192, %_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_.exit124 ], [ %spec.select196, %121 ], [ %spec.select198, %126 ], [ %switch.load229, %switch.lookup226 ], [ 11, %122 ], [ %switch.load233, %switch.lookup230 ], [ 11, %127 ] + store i32 %.1138.sink205, ptr %0, align 4 %131 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 %.1132.sink177, ptr %131, align 4 + store i32 %.1138.sink205, ptr %131, align 4 ret void } @@ -9358,45 +9394,6 @@ _ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5 ret i1 %21 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable -define internal fastcc noundef zeroext i1 @_ZN7glslangL42canSignedIntTypeRepresentAllUnsignedValuesENS_10TBasicTypeES0_(i32 noundef %0, i32 noundef %1) unnamed_addr #2 { - switch i32 %0, label %9 [ - i32 10, label %7 - i32 6, label %3 - i32 8, label %5 - ] - -3: ; preds = %2 - %4 = icmp ult i32 %1, 12 - br i1 %4, label %switch.lookup, label %9 - -5: ; preds = %2 - %6 = add i32 %1, -5 - %switch.and5 = and i32 %6, -3 - %switch.selectcmp6 = icmp eq i32 %switch.and5, 0 - br label %9 - -7: ; preds = %2 - %8 = icmp ult i32 %1, 10 - br i1 %8, label %switch.lookup7, label %9 - -switch.lookup: ; preds = %3 - %switch.cast = trunc nuw i32 %1 to i12 - %switch.downshift = lshr i12 32, %switch.cast - %switch.masked = trunc i12 %switch.downshift to i1 - br label %9 - -switch.lookup7: ; preds = %7 - %switch.cast8 = trunc nuw i32 %1 to i10 - %switch.downshift10 = lshr i10 -352, %switch.cast8 - %switch.masked11 = trunc i10 %switch.downshift10 to i1 - br label %9 - -9: ; preds = %7, %switch.lookup7, %3, %switch.lookup, %2, %5 - %.0 = phi i1 [ %switch.selectcmp6, %5 ], [ false, %2 ], [ %switch.masked, %switch.lookup ], [ false, %3 ], [ %switch.masked11, %switch.lookup7 ], [ false, %7 ] - ret i1 %.0 -} - ; Function Attrs: mustprogress nounwind uwtable define noundef ptr @_ZN7glslang13TIntermediate13growAggregateEP11TIntermNodeS2_(ptr nocapture nonnull readnone align 8 %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 align 2 { %4 = icmp eq ptr %1, null diff --git a/bench/glslang/optimized/linkValidate.cpp.ll b/bench/glslang/optimized/linkValidate.cpp.ll index 2372a074fcf..f160b7d3f66 100644 --- a/bench/glslang/optimized/linkValidate.cpp.ll +++ b/bench/glslang/optimized/linkValidate.cpp.ll @@ -25081,48 +25081,45 @@ define noundef range(i32 1, 9) i32 @_ZN7glslang13TIntermediate22getBaseAlignment %4 = getelementptr inbounds nuw i8, ptr %3, i64 56 %5 = load ptr, ptr %4, align 8 %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %6, label %20 [ - i32 10, label %21 - i32 11, label %21 - i32 2, label %21 + switch i32 %6, label %19 [ + i32 10, label %20 + i32 11, label %20 + i32 2, label %20 i32 3, label %7 i32 4, label %8 i32 5, label %8 - i32 6, label %9 - i32 7, label %9 - i32 18, label %21 - i32 14, label %10 + i32 6, label %7 + i32 7, label %7 + i32 18, label %20 + i32 14, label %9 ] -7: ; preds = %2 - br label %21 +7: ; preds = %2, %2, %2 + br label %20 8: ; preds = %2, %2 - br label %21 - -9: ; preds = %2, %2 - br label %21 + br label %20 -10: ; preds = %2 - %11 = load ptr, ptr %0, align 8 - %12 = getelementptr inbounds nuw i8, ptr %11, i64 368 - %13 = load ptr, ptr %12, align 8 - %14 = tail call noundef zeroext i1 %13(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %14, label %21, label %15 +9: ; preds = %2 + %10 = load ptr, ptr %0, align 8 + %11 = getelementptr inbounds nuw i8, ptr %10, i64 368 + %12 = load ptr, ptr %11, align 8 + %13 = tail call noundef zeroext i1 %12(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %13, label %20, label %14 -15: ; preds = %10 - %16 = load ptr, ptr %0, align 8 - %17 = getelementptr inbounds nuw i8, ptr %16, i64 376 - %18 = load ptr, ptr %17, align 8 - %19 = tail call noundef zeroext i1 %18(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %spec.select = select i1 %19, i32 8, i32 4 - br label %21 +14: ; preds = %9 + %15 = load ptr, ptr %0, align 8 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 376 + %17 = load ptr, ptr %16, align 8 + %18 = tail call noundef zeroext i1 %17(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %spec.select = select i1 %18, i32 8, i32 4 + br label %20 -20: ; preds = %2 - br label %21 +19: ; preds = %2 + br label %20 -21: ; preds = %15, %10, %2, %2, %2, %2, %20, %9, %8, %7 - %.sink = phi i32 [ 4, %20 ], [ 2, %9 ], [ 1, %8 ], [ 2, %7 ], [ 8, %2 ], [ 8, %2 ], [ 8, %2 ], [ 8, %2 ], [ 8, %10 ], [ %spec.select, %15 ] +20: ; preds = %14, %9, %2, %2, %2, %2, %19, %8, %7 + %.sink = phi i32 [ 4, %19 ], [ 1, %8 ], [ 2, %7 ], [ 8, %2 ], [ 8, %2 ], [ 8, %2 ], [ 8, %2 ], [ 8, %9 ], [ %spec.select, %14 ] store i32 %.sink, ptr %1, align 4 ret i32 %.sink } @@ -25179,7 +25176,7 @@ define noundef range(i32 0, 33) i32 @_ZN7glslang13TIntermediate16getBaseAlignmen %40 = load i32, ptr %2, align 4 %41 = mul nsw i32 %40, %39 store i32 %41, ptr %1, align 4 - br label %180 + br label %178 42: ; preds = %5 %43 = load ptr, ptr %0, align 8 @@ -25258,7 +25255,7 @@ define noundef range(i32 0, 33) i32 @_ZN7glslang13TIntermediate16getBaseAlignmen %98 = sub nsw i32 0, %.098.lcssa %99 = and i32 %97, %98 store i32 %99, ptr %1, align 4 - br label %180 + br label %178 100: ; preds = %48 %101 = load ptr, ptr %0, align 8 @@ -25266,171 +25263,165 @@ define noundef range(i32 0, 33) i32 @_ZN7glslang13TIntermediate16getBaseAlignmen %103 = load ptr, ptr %102, align 8 %104 = tail call noundef zeroext i1 %103(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 %105 = load ptr, ptr %0, align 8 - br i1 %104, label %106, label %124 + br i1 %104, label %106, label %123 106: ; preds = %100 %107 = getelementptr inbounds nuw i8, ptr %105, i64 56 %108 = load ptr, ptr %107, align 8 %109 = tail call noundef i32 %108(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %109, label %123 [ + switch i32 %109, label %122 [ i32 10, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit i32 11, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit i32 2, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit i32 3, label %110 i32 4, label %111 i32 5, label %111 - i32 6, label %112 - i32 7, label %112 + i32 6, label %110 + i32 7, label %110 i32 18, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit - i32 14, label %113 + i32 14, label %112 ] -110: ; preds = %106 +110: ; preds = %106, %106, %106 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit 111: ; preds = %106, %106 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit -112: ; preds = %106, %106 - br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit - -113: ; preds = %106 - %114 = load ptr, ptr %0, align 8 - %115 = getelementptr inbounds nuw i8, ptr %114, i64 368 - %116 = load ptr, ptr %115, align 8 - %117 = tail call noundef zeroext i1 %116(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %117, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit, label %118 +112: ; preds = %106 + %113 = load ptr, ptr %0, align 8 + %114 = getelementptr inbounds nuw i8, ptr %113, i64 368 + %115 = load ptr, ptr %114, align 8 + %116 = tail call noundef zeroext i1 %115(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %116, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit, label %117 -118: ; preds = %113 - %119 = load ptr, ptr %0, align 8 - %120 = getelementptr inbounds nuw i8, ptr %119, i64 376 - %121 = load ptr, ptr %120, align 8 - %122 = tail call noundef zeroext i1 %121(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %spec.select.i = select i1 %122, i32 8, i32 4 +117: ; preds = %112 + %118 = load ptr, ptr %0, align 8 + %119 = getelementptr inbounds nuw i8, ptr %118, i64 376 + %120 = load ptr, ptr %119, align 8 + %121 = tail call noundef zeroext i1 %120(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %spec.select.i = select i1 %121, i32 8, i32 4 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit -123: ; preds = %106 +122: ; preds = %106 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit -_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit: ; preds = %106, %106, %106, %106, %110, %111, %112, %113, %118, %123 - %.sink.i = phi i32 [ 4, %123 ], [ 2, %112 ], [ 1, %111 ], [ 2, %110 ], [ 8, %106 ], [ 8, %106 ], [ 8, %106 ], [ 8, %106 ], [ 8, %113 ], [ %spec.select.i, %118 ] +_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit: ; preds = %106, %106, %106, %106, %110, %111, %112, %117, %122 + %.sink.i = phi i32 [ 4, %122 ], [ 1, %111 ], [ 2, %110 ], [ 8, %106 ], [ 8, %106 ], [ 8, %106 ], [ 8, %106 ], [ 8, %112 ], [ %spec.select.i, %117 ] store i32 %.sink.i, ptr %1, align 4 - br label %180 + br label %178 -124: ; preds = %100 - %125 = getelementptr inbounds nuw i8, ptr %105, i64 216 - %126 = load ptr, ptr %125, align 8 - %127 = tail call noundef zeroext i1 %126(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %128 = load ptr, ptr %0, align 8 - br i1 %127, label %129, label %163 +123: ; preds = %100 + %124 = getelementptr inbounds nuw i8, ptr %105, i64 216 + %125 = load ptr, ptr %124, align 8 + %126 = tail call noundef zeroext i1 %125(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %127 = load ptr, ptr %0, align 8 + br i1 %126, label %128, label %161 -129: ; preds = %124 - %130 = getelementptr inbounds nuw i8, ptr %128, i64 56 - %131 = load ptr, ptr %130, align 8 - %132 = tail call noundef i32 %131(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %132, label %146 [ +128: ; preds = %123 + %129 = getelementptr inbounds nuw i8, ptr %127, i64 56 + %130 = load ptr, ptr %129, align 8 + %131 = tail call noundef i32 %130(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + switch i32 %131, label %144 [ i32 10, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 i32 11, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 i32 2, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 - i32 3, label %133 - i32 4, label %134 - i32 5, label %134 - i32 6, label %135 - i32 7, label %135 + i32 3, label %132 + i32 4, label %133 + i32 5, label %133 + i32 6, label %132 + i32 7, label %132 i32 18, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 - i32 14, label %136 + i32 14, label %134 ] -133: ; preds = %129 - br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 - -134: ; preds = %129, %129 +132: ; preds = %128, %128, %128 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 -135: ; preds = %129, %129 +133: ; preds = %128, %128 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 -136: ; preds = %129 - %137 = load ptr, ptr %0, align 8 - %138 = getelementptr inbounds nuw i8, ptr %137, i64 368 - %139 = load ptr, ptr %138, align 8 - %140 = tail call noundef zeroext i1 %139(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %140, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71, label %141 +134: ; preds = %128 + %135 = load ptr, ptr %0, align 8 + %136 = getelementptr inbounds nuw i8, ptr %135, i64 368 + %137 = load ptr, ptr %136, align 8 + %138 = tail call noundef zeroext i1 %137(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %138, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71, label %139 -141: ; preds = %136 - %142 = load ptr, ptr %0, align 8 - %143 = getelementptr inbounds nuw i8, ptr %142, i64 376 - %144 = load ptr, ptr %143, align 8 - %145 = tail call noundef zeroext i1 %144(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %spec.select.i69 = select i1 %145, i32 8, i32 4 +139: ; preds = %134 + %140 = load ptr, ptr %0, align 8 + %141 = getelementptr inbounds nuw i8, ptr %140, i64 376 + %142 = load ptr, ptr %141, align 8 + %143 = tail call noundef zeroext i1 %142(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %spec.select.i69 = select i1 %143, i32 8, i32 4 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 -146: ; preds = %129 +144: ; preds = %128 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 -_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71: ; preds = %129, %129, %129, %129, %133, %134, %135, %136, %141, %146 - %.sink.i70 = phi i32 [ 4, %146 ], [ 2, %135 ], [ 1, %134 ], [ 2, %133 ], [ 8, %129 ], [ 8, %129 ], [ 8, %129 ], [ 8, %129 ], [ 8, %136 ], [ %spec.select.i69, %141 ] +_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71: ; preds = %128, %128, %128, %128, %132, %133, %134, %139, %144 + %.sink.i70 = phi i32 [ 4, %144 ], [ 1, %133 ], [ 2, %132 ], [ 8, %128 ], [ 8, %128 ], [ 8, %128 ], [ 8, %128 ], [ 8, %134 ], [ %spec.select.i69, %139 ] store i32 %.sink.i70, ptr %1, align 4 - %147 = load ptr, ptr %0, align 8 - %148 = getelementptr inbounds nuw i8, ptr %147, i64 96 - %149 = load ptr, ptr %148, align 8 - %150 = tail call noundef i32 %149(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %150, label %155 [ - i32 1, label %180 - i32 2, label %151 + %145 = load ptr, ptr %0, align 8 + %146 = getelementptr inbounds nuw i8, ptr %145, i64 96 + %147 = load ptr, ptr %146, align 8 + %148 = tail call noundef i32 %147(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + switch i32 %148, label %153 [ + i32 1, label %178 + i32 2, label %149 ] -151: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 - %152 = load i32, ptr %1, align 4 - %153 = shl nsw i32 %152, 1 - store i32 %153, ptr %1, align 4 - %154 = shl nuw nsw i32 %.sink.i70, 1 - br label %180 +149: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 + %150 = load i32, ptr %1, align 4 + %151 = shl nsw i32 %150, 1 + store i32 %151, ptr %1, align 4 + %152 = shl nuw nsw i32 %.sink.i70, 1 + br label %178 -155: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 - %156 = load ptr, ptr %0, align 8 - %157 = getelementptr inbounds nuw i8, ptr %156, i64 96 - %158 = load ptr, ptr %157, align 8 - %159 = tail call noundef i32 %158(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %160 = load i32, ptr %1, align 4 - %161 = mul nsw i32 %160, %159 - store i32 %161, ptr %1, align 4 - %162 = shl nuw nsw i32 %.sink.i70, 2 - br label %180 - -163: ; preds = %124 - %164 = getelementptr inbounds nuw i8, ptr %128, i64 224 - %165 = load ptr, ptr %164, align 8 - %166 = tail call noundef zeroext i1 %165(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %166, label %167, label %179 +153: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 + %154 = load ptr, ptr %0, align 8 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 96 + %156 = load ptr, ptr %155, align 8 + %157 = tail call noundef i32 %156(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %158 = load i32, ptr %1, align 4 + %159 = mul nsw i32 %158, %157 + store i32 %159, ptr %1, align 4 + %160 = shl nuw nsw i32 %.sink.i70, 2 + br label %178 + +161: ; preds = %123 + %162 = getelementptr inbounds nuw i8, ptr %127, i64 224 + %163 = load ptr, ptr %162, align 8 + %164 = tail call noundef zeroext i1 %163(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %164, label %165, label %177 -167: ; preds = %163 +165: ; preds = %161 call void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %9, ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef 0, i1 noundef zeroext %4) - %168 = call noundef i32 @_ZN7glslang13TIntermediate16getBaseAlignmentERKNS_5TTypeERiS4_NS_14TLayoutPackingEb(ptr noundef nonnull align 8 dereferenceable(152) %9, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef %3, i1 noundef zeroext %4) - %169 = call i32 @llvm.umax.i32(i32 %168, i32 16) - %.1 = select i1 %10, i32 %169, i32 %168 - %170 = load i32, ptr %1, align 4 - %171 = add i32 %170, -1 - %172 = add i32 %171, %.1 - %173 = sub nsw i32 0, %.1 - %174 = and i32 %172, %173 - store i32 %174, ptr %1, align 4 - store i32 %174, ptr %2, align 4 - %175 = load ptr, ptr %0, align 8 + %166 = call noundef i32 @_ZN7glslang13TIntermediate16getBaseAlignmentERKNS_5TTypeERiS4_NS_14TLayoutPackingEb(ptr noundef nonnull align 8 dereferenceable(152) %9, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %6, i32 noundef %3, i1 noundef zeroext %4) + %167 = call i32 @llvm.umax.i32(i32 %166, i32 16) + %.1 = select i1 %10, i32 %167, i32 %166 + %168 = load i32, ptr %1, align 4 + %169 = add i32 %168, -1 + %170 = add i32 %169, %.1 + %171 = sub nsw i32 0, %.1 + %172 = and i32 %170, %171 + store i32 %172, ptr %1, align 4 + store i32 %172, ptr %2, align 4 + %173 = load ptr, ptr %0, align 8 %. = select i1 %4, i64 112, i64 104 - %176 = getelementptr inbounds nuw i8, ptr %175, i64 %. - %177 = load ptr, ptr %176, align 8 - %178 = call noundef i32 %177(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %storemerge = mul nsw i32 %178, %174 + %174 = getelementptr inbounds nuw i8, ptr %173, i64 %. + %175 = load ptr, ptr %174, align 8 + %176 = call noundef i32 %175(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %storemerge = mul nsw i32 %176, %172 store i32 %storemerge, ptr %1, align 4 - br label %180 + br label %178 -179: ; preds = %163 +177: ; preds = %161 store i32 16, ptr %1, align 4 - br label %180 + br label %178 -180: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71, %179, %167, %155, %151, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit, %._crit_edge, %38 - %.0 = phi i32 [ %.097, %38 ], [ %.098.lcssa, %._crit_edge ], [ %.sink.i, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit ], [ %162, %155 ], [ %154, %151 ], [ %.1, %167 ], [ 16, %179 ], [ %.sink.i70, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 ] +178: ; preds = %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71, %177, %165, %153, %149, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit, %._crit_edge, %38 + %.0 = phi i32 [ %.097, %38 ], [ %.098.lcssa, %._crit_edge ], [ %.sink.i, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit ], [ %160, %153 ], [ %152, %149 ], [ %.1, %165 ], [ 16, %177 ], [ %.sink.i70, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit71 ] ret i32 %.0 } @@ -25565,136 +25556,130 @@ define noundef range(i32 0, 9) i32 @_ZN7glslang13TIntermediate18getScalarAlignme %77 = load ptr, ptr %76, align 8 %78 = tail call noundef zeroext i1 %77(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 %79 = load ptr, ptr %0, align 8 - br i1 %78, label %80, label %98 + br i1 %78, label %80, label %97 80: ; preds = %74 %81 = getelementptr inbounds nuw i8, ptr %79, i64 56 %82 = load ptr, ptr %81, align 8 %83 = tail call noundef i32 %82(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %83, label %97 [ + switch i32 %83, label %96 [ i32 10, label %.loopexit.sink.split i32 11, label %.loopexit.sink.split i32 2, label %.loopexit.sink.split i32 3, label %84 i32 4, label %85 i32 5, label %85 - i32 6, label %86 - i32 7, label %86 + i32 6, label %84 + i32 7, label %84 i32 18, label %.loopexit.sink.split - i32 14, label %87 + i32 14, label %86 ] -84: ; preds = %80 +84: ; preds = %80, %80, %80 br label %.loopexit.sink.split 85: ; preds = %80, %80 br label %.loopexit.sink.split -86: ; preds = %80, %80 - br label %.loopexit.sink.split - -87: ; preds = %80 - %88 = load ptr, ptr %0, align 8 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 368 - %90 = load ptr, ptr %89, align 8 - %91 = tail call noundef zeroext i1 %90(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %91, label %.loopexit.sink.split, label %92 +86: ; preds = %80 + %87 = load ptr, ptr %0, align 8 + %88 = getelementptr inbounds nuw i8, ptr %87, i64 368 + %89 = load ptr, ptr %88, align 8 + %90 = tail call noundef zeroext i1 %89(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %90, label %.loopexit.sink.split, label %91 -92: ; preds = %87 - %93 = load ptr, ptr %0, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 376 - %95 = load ptr, ptr %94, align 8 - %96 = tail call noundef zeroext i1 %95(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %spec.select.i = select i1 %96, i32 8, i32 4 +91: ; preds = %86 + %92 = load ptr, ptr %0, align 8 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 376 + %94 = load ptr, ptr %93, align 8 + %95 = tail call noundef zeroext i1 %94(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %spec.select.i = select i1 %95, i32 8, i32 4 br label %.loopexit.sink.split -97: ; preds = %80 +96: ; preds = %80 br label %.loopexit.sink.split -98: ; preds = %74 - %99 = getelementptr inbounds nuw i8, ptr %79, i64 216 - %100 = load ptr, ptr %99, align 8 - %101 = tail call noundef zeroext i1 %100(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %102 = load ptr, ptr %0, align 8 - br i1 %101, label %103, label %127 +97: ; preds = %74 + %98 = getelementptr inbounds nuw i8, ptr %79, i64 216 + %99 = load ptr, ptr %98, align 8 + %100 = tail call noundef zeroext i1 %99(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %101 = load ptr, ptr %0, align 8 + br i1 %100, label %102, label %125 -103: ; preds = %98 - %104 = getelementptr inbounds nuw i8, ptr %102, i64 56 - %105 = load ptr, ptr %104, align 8 - %106 = tail call noundef i32 %105(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - switch i32 %106, label %120 [ +102: ; preds = %97 + %103 = getelementptr inbounds nuw i8, ptr %101, i64 56 + %104 = load ptr, ptr %103, align 8 + %105 = tail call noundef i32 %104(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + switch i32 %105, label %118 [ i32 10, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 i32 11, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 i32 2, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 - i32 3, label %107 - i32 4, label %108 - i32 5, label %108 - i32 6, label %109 - i32 7, label %109 + i32 3, label %106 + i32 4, label %107 + i32 5, label %107 + i32 6, label %106 + i32 7, label %106 i32 18, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 - i32 14, label %110 + i32 14, label %108 ] -107: ; preds = %103 +106: ; preds = %102, %102, %102 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 -108: ; preds = %103, %103 +107: ; preds = %102, %102 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 -109: ; preds = %103, %103 - br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 - -110: ; preds = %103 - %111 = load ptr, ptr %0, align 8 - %112 = getelementptr inbounds nuw i8, ptr %111, i64 368 - %113 = load ptr, ptr %112, align 8 - %114 = tail call noundef zeroext i1 %113(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %114, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57, label %115 +108: ; preds = %102 + %109 = load ptr, ptr %0, align 8 + %110 = getelementptr inbounds nuw i8, ptr %109, i64 368 + %111 = load ptr, ptr %110, align 8 + %112 = tail call noundef zeroext i1 %111(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %112, label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57, label %113 -115: ; preds = %110 - %116 = load ptr, ptr %0, align 8 - %117 = getelementptr inbounds nuw i8, ptr %116, i64 376 - %118 = load ptr, ptr %117, align 8 - %119 = tail call noundef zeroext i1 %118(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %spec.select.i55 = select i1 %119, i32 8, i32 4 +113: ; preds = %108 + %114 = load ptr, ptr %0, align 8 + %115 = getelementptr inbounds nuw i8, ptr %114, i64 376 + %116 = load ptr, ptr %115, align 8 + %117 = tail call noundef zeroext i1 %116(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %spec.select.i55 = select i1 %117, i32 8, i32 4 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 -120: ; preds = %103 +118: ; preds = %102 br label %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 -_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57: ; preds = %103, %103, %103, %103, %107, %108, %109, %110, %115, %120 - %.sink.i56 = phi i32 [ 4, %120 ], [ 2, %109 ], [ 1, %108 ], [ 2, %107 ], [ 8, %103 ], [ 8, %103 ], [ 8, %103 ], [ 8, %103 ], [ 8, %110 ], [ %spec.select.i55, %115 ] +_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57: ; preds = %102, %102, %102, %102, %106, %107, %108, %113, %118 + %.sink.i56 = phi i32 [ 4, %118 ], [ 1, %107 ], [ 2, %106 ], [ 8, %102 ], [ 8, %102 ], [ 8, %102 ], [ 8, %102 ], [ 8, %108 ], [ %spec.select.i55, %113 ] store i32 %.sink.i56, ptr %1, align 4 - %121 = load ptr, ptr %0, align 8 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 96 - %123 = load ptr, ptr %122, align 8 - %124 = tail call noundef i32 %123(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %125 = load i32, ptr %1, align 4 - %126 = mul nsw i32 %125, %124 + %119 = load ptr, ptr %0, align 8 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 96 + %121 = load ptr, ptr %120, align 8 + %122 = tail call noundef i32 %121(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %123 = load i32, ptr %1, align 4 + %124 = mul nsw i32 %123, %122 br label %.loopexit.sink.split -127: ; preds = %98 - %128 = getelementptr inbounds nuw i8, ptr %102, i64 224 - %129 = load ptr, ptr %128, align 8 - %130 = tail call noundef zeroext i1 %129(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - br i1 %130, label %131, label %.loopexit.sink.split +125: ; preds = %97 + %126 = getelementptr inbounds nuw i8, ptr %101, i64 224 + %127 = load ptr, ptr %126, align 8 + %128 = tail call noundef zeroext i1 %127(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + br i1 %128, label %129, label %.loopexit.sink.split -131: ; preds = %127 +129: ; preds = %125 call void @_ZN7glslang5TTypeC2ERKS0_ib(ptr noundef nonnull align 8 dereferenceable(152) %8, ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef 0, i1 noundef zeroext %3) - %132 = call noundef i32 @_ZN7glslang13TIntermediate18getScalarAlignmentERKNS_5TTypeERiS4_b(ptr noundef nonnull align 8 dereferenceable(152) %8, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %5, i1 noundef zeroext %3) - %133 = load i32, ptr %1, align 4 - store i32 %133, ptr %2, align 4 - %134 = load ptr, ptr %0, align 8 + %130 = call noundef i32 @_ZN7glslang13TIntermediate18getScalarAlignmentERKNS_5TTypeERiS4_b(ptr noundef nonnull align 8 dereferenceable(152) %8, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %5, i1 noundef zeroext %3) + %131 = load i32, ptr %1, align 4 + store i32 %131, ptr %2, align 4 + %132 = load ptr, ptr %0, align 8 %. = select i1 %3, i64 112, i64 104 - %135 = getelementptr inbounds nuw i8, ptr %134, i64 %. - %136 = load ptr, ptr %135, align 8 - %137 = call noundef i32 %136(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 - %storemerge = mul nsw i32 %137, %133 + %133 = getelementptr inbounds nuw i8, ptr %132, i64 %. + %134 = load ptr, ptr %133, align 8 + %135 = call noundef i32 %134(ptr noundef nonnull align 8 dereferenceable(152) %0) #18 + %storemerge = mul nsw i32 %135, %131 br label %.loopexit.sink.split -.loopexit.sink.split: ; preds = %127, %97, %92, %87, %86, %85, %84, %80, %80, %80, %80, %13, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57, %131 - %.sink69 = phi i32 [ %storemerge, %131 ], [ %126, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 ], [ %27, %13 ], [ 4, %97 ], [ 2, %86 ], [ 1, %85 ], [ 2, %84 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %87 ], [ %spec.select.i, %92 ], [ 1, %127 ] - %.0.ph = phi i32 [ %132, %131 ], [ %.sink.i56, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 ], [ %14, %13 ], [ 4, %97 ], [ 2, %86 ], [ 1, %85 ], [ 2, %84 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %87 ], [ %spec.select.i, %92 ], [ 1, %127 ] +.loopexit.sink.split: ; preds = %125, %96, %91, %86, %85, %84, %80, %80, %80, %80, %13, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57, %129 + %.sink69 = phi i32 [ %storemerge, %129 ], [ %124, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 ], [ %27, %13 ], [ 4, %96 ], [ 1, %85 ], [ 2, %84 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %86 ], [ %spec.select.i, %91 ], [ 1, %125 ] + %.0.ph = phi i32 [ %130, %129 ], [ %.sink.i56, %_ZN7glslang13TIntermediate22getBaseAlignmentScalarERKNS_5TTypeERi.exit57 ], [ %14, %13 ], [ 4, %96 ], [ 1, %85 ], [ 2, %84 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %80 ], [ 8, %86 ], [ %spec.select.i, %91 ], [ 1, %125 ] store i32 %.sink69, ptr %1, align 4 br label %.loopexit diff --git a/bench/gromacs/optimized/atomdata.cpp.ll b/bench/gromacs/optimized/atomdata.cpp.ll index 0c46908c5c2..10e8eeabb07 100644 --- a/bench/gromacs/optimized/atomdata.cpp.ll +++ b/bench/gromacs/optimized/atomdata.cpp.ll @@ -161,7 +161,7 @@ $_ZNSt6vectorIiN3gmx9AllocatorIiNS0_20HostAllocationPolicyEEEE17_M_default_appen @__PRETTY_FUNCTION__._ZZN3gmx5RangeIiEC1EiiENKUlvE_clEv = private unnamed_addr constant [89 x i8] c"auto gmx::Range::Range(const int, const int)::(anonymous class)::operator()() const\00", align 1 @.str.27 = private unnamed_addr constant [136 x i8] c"generated/home/dtcxzyw/WorkSpace/Projects/compilers/llvm-opt-benchmark/bench/gromacs/gromacs/api/legacy/include/gromacs/utility/range.h\00", align 1 @.str.28 = private unnamed_addr constant [51 x i8] c"add_f_to_f called with nout>1 and locality!=eatAll\00", align 1 -@switch.table._ZN16nbnxn_atomdata_tC2EN3gmx13PinningPolicyERKNS0_8MDLoggerEN5Nbnxm10KernelTypeERKSt8optionalI17LJCombinationRuleES8_iNS0_8ArrayRefIKfEEii = private unnamed_addr constant [7 x i32] [i32 0, i32 4, i32 4, i32 4, i32 8, i32 8, i32 0], align 4 +@switch.table._ZN16nbnxn_atomdata_tC2EN3gmx13PinningPolicyERKNS0_8MDLoggerEN5Nbnxm10KernelTypeERKSt8optionalI17LJCombinationRuleES8_iNS0_8ArrayRefIKfEEii = private unnamed_addr constant [5 x i32] [i32 4, i32 4, i32 4, i32 8, i32 8], align 4 @_ZN23nbnxn_atomdata_output_tC1EN5Nbnxm10KernelTypeEiN3gmx13PinningPolicyE = unnamed_addr alias void (ptr, i32, i32, i32), ptr @_ZN23nbnxn_atomdata_output_tC2EN5Nbnxm10KernelTypeEiN3gmx13PinningPolicyE @_ZN23nbnxn_atomdata_output_tC1EOS_ = unnamed_addr alias void (ptr, ptr), ptr @_ZN23nbnxn_atomdata_output_tC2EOS_ @@ -1641,7 +1641,7 @@ _ZNSt6vectorIfN3gmx9AllocatorIfNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit: %exitcond.not = icmp eq i64 %indvars.iv.next, 8 br i1 %exitcond.not, label %14, label %_ZNSt6vectorIfN3gmx9AllocatorIfNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit, !llvm.loop !27 -11: ; preds = %57, %23, %2 +11: ; preds = %56, %23, %2 %12 = landingpad { ptr, i32 } cleanup %13 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -1706,59 +1706,54 @@ _ZNSt6vectorIfN3gmx9AllocatorIfNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit26 br i1 %exitcond43.not, label %43, label %_ZNSt6vectorIfN3gmx9AllocatorIfNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit26, !llvm.loop !28 43: ; preds = %_ZNSt6vectorIfN3gmx9AllocatorIfNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit26 - switch i32 %1, label %46 [ + switch i32 %1, label %45 [ i32 1, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 i32 2, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 i32 3, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 i32 4, label %44 i32 5, label %44 - i32 0, label %45 - i32 6, label %45 ] 44: ; preds = %43, %43 br label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 -45: ; preds = %43, %43 +45: ; preds = %43 br label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 -46: ; preds = %43 - br label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 - -_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28: ; preds = %43, %43, %43, %44, %45, %46 - %47 = phi i1 [ false, %46 ], [ false, %45 ], [ true, %44 ], [ true, %43 ], [ true, %43 ], [ true, %43 ] - %.0.i27 = phi i32 [ 0, %46 ], [ 0, %45 ], [ 64, %44 ], [ 32, %43 ], [ 32, %43 ], [ 32, %43 ] - %48 = zext nneg i32 %.0.i27 to i64 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %50 = load ptr, ptr %49, align 8 - %51 = load ptr, ptr %4, align 8 +_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28: ; preds = %43, %43, %43, %44, %45 + %46 = phi i1 [ false, %45 ], [ true, %44 ], [ true, %43 ], [ true, %43 ], [ true, %43 ] + %.0.i27 = phi i32 [ 0, %45 ], [ 64, %44 ], [ 32, %43 ], [ 32, %43 ], [ 32, %43 ] + %47 = zext nneg i32 %.0.i27 to i64 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %49 = load ptr, ptr %48, align 8 + %50 = load ptr, ptr %4, align 8 + %51 = ptrtoint ptr %49 to i64 %52 = ptrtoint ptr %50 to i64 - %53 = ptrtoint ptr %51 to i64 - %54 = sub i64 %52, %53 - %55 = ashr exact i64 %54, 2 - %56 = icmp ult i64 %55, %48 - br i1 %56, label %57, label %59 - -57: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 - %58 = sub nuw nsw i64 %48, %55 - invoke void @_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %58) + %53 = sub i64 %51, %52 + %54 = ashr exact i64 %53, 2 + %55 = icmp ult i64 %54, %47 + br i1 %55, label %56, label %58 + +56: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 + %57 = sub nuw nsw i64 %47, %54 + invoke void @_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %57) to label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit unwind label %11 -59: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 - %60 = icmp ugt i64 %55, %48 - br i1 %60, label %61, label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit +58: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit28 + %59 = icmp ugt i64 %54, %47 + br i1 %59, label %60, label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit -61: ; preds = %59 - %62 = getelementptr inbounds nuw i32, ptr %51, i64 %48 - %.not.i.i29 = icmp eq ptr %50, %62 - br i1 %.not.i.i29, label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit, label %63 +60: ; preds = %58 + %61 = getelementptr inbounds nuw i32, ptr %50, i64 %47 + %.not.i.i29 = icmp eq ptr %49, %61 + br i1 %.not.i.i29, label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit, label %62 -63: ; preds = %61 - store ptr %62, ptr %49, align 8 +62: ; preds = %60 + store ptr %61, ptr %48, align 8 br label %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit -_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit: ; preds = %57, %59, %61, %63 - br i1 %47, label %.lr.ph.preheader, label %._crit_edge +_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit: ; preds = %56, %58, %60, %62 + br i1 %46, label %.lr.ph.preheader, label %._crit_edge .lr.ph.preheader: ; preds = %_ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit %umax = tail call i32 @llvm.umax.i32(i32 %.0.i27, i32 1) @@ -1767,11 +1762,11 @@ _ZNSt6vectorIjN3gmx9AllocatorIjNS0_23AlignedAllocationPolicyEEEE6resizeEm.exit: .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv44 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next45, %.lr.ph ] - %64 = trunc nuw nsw i64 %indvars.iv44 to i32 - %65 = shl nuw i32 1, %64 - %66 = load ptr, ptr %4, align 8 - %67 = getelementptr inbounds nuw i32, ptr %66, i64 %indvars.iv44 - store i32 %65, ptr %67, align 4 + %63 = trunc nuw nsw i64 %indvars.iv44 to i32 + %64 = shl nuw i32 1, %63 + %65 = load ptr, ptr %4, align 8 + %66 = getelementptr inbounds nuw i32, ptr %65, i64 %indvars.iv44 + store i32 %64, ptr %66, align 4 %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 %exitcond47.not = icmp eq i64 %indvars.iv.next45, %wide.trip.count br i1 %exitcond47.not, label %._crit_edge, label %.lr.ph, !llvm.loop !29 @@ -3149,12 +3144,13 @@ _ZL21set_lj_parameter_dataPN16nbnxn_atomdata_t6ParamsEb.exit.i: ; preds = %461, br i1 %489, label %490, label %505 490: ; preds = %488 - %491 = icmp ult i32 %3, 7 + %switch.tableidx = add i32 %3, -1 + %491 = icmp ult i32 %switch.tableidx, 5 br i1 %491, label %switch.lookup, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i switch.lookup: ; preds = %490 - %492 = zext nneg i32 %3 to i64 - %switch.gep = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN16nbnxn_atomdata_tC2EN3gmx13PinningPolicyERKNS0_8MDLoggerEN5Nbnxm10KernelTypeERKSt8optionalI17LJCombinationRuleES8_iNS0_8ArrayRefIKfEEii, i64 0, i64 %492 + %492 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [5 x i32], ptr @switch.table._ZN16nbnxn_atomdata_tC2EN3gmx13PinningPolicyERKNS0_8MDLoggerEN5Nbnxm10KernelTypeERKSt8optionalI17LJCombinationRuleES8_iNS0_8ArrayRefIKfEEii, i64 0, i64 %492 %switch.load = load i32, ptr %switch.gep, align 4 br label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i diff --git a/bench/gromacs/optimized/calc_verletbuf.cpp.ll b/bench/gromacs/optimized/calc_verletbuf.cpp.ll index fd36497761b..0f4fd5848d4 100644 --- a/bench/gromacs/optimized/calc_verletbuf.cpp.ll +++ b/bench/gromacs/optimized/calc_verletbuf.cpp.ll @@ -149,8 +149,8 @@ $_ZNSt10_HashtableI33AtomNonbondedAndKineticPropertiesSt4pairIKS0_iESaIS3_ENSt8_ @.str.56 = private unnamed_addr constant [52 x i8] c"There should be at least one settle in this moltype\00", align 1 @"__PRETTY_FUNCTION__._ZZL31chanceOfUpdateGroupCrossingCellRK13gmx_moltype_tRK14gmx_ffparams_tRKN3gmx17RangePartitioningEffENK3$_0clEv" = private unnamed_addr constant [167 x i8] c"auto chanceOfUpdateGroupCrossingCell(const gmx_moltype_t &, const gmx_ffparams_t &, const gmx::RangePartitioning &, real, real)::(anonymous class)::operator()() const\00", align 1 @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_calc_verletbuf.cpp, ptr null }] -@switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE = private unnamed_addr constant [7 x i64] [i64 0, i64 4, i64 4, i64 4, i64 8, i64 8, i64 0], align 8 -@switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE.15 = private unnamed_addr constant [7 x i64] [i64 0, i64 17179869184, i64 34359738368, i64 17179869184, i64 17179869184, i64 17179869184, i64 0], align 8 +@switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE = private unnamed_addr constant [5 x i64] [i64 4, i64 4, i64 4, i64 8, i64 8], align 8 +@switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE.15 = private unnamed_addr constant [5 x i64] [i64 17179869184, i64 34359738368, i64 17179869184, i64 17179869184, i64 17179869184], align 8 ; Function Attrs: nounwind declare void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 @@ -326,28 +326,30 @@ declare void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnam ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define range(i64 0, 68719476736) i64 @_Z21verletbufGetListSetupN5Nbnxm10KernelTypeE(i32 noundef %0) local_unnamed_addr #9 { - %2 = icmp ult i32 %0, 7 + %switch.tableidx = add i32 %0, -1 + %2 = icmp ult i32 %switch.tableidx, 5 br i1 %2, label %switch.lookup, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit switch.lookup: ; preds = %1 - %3 = zext nneg i32 %0 to i64 - %switch.gep = getelementptr inbounds nuw [7 x i64], ptr @switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE, i64 0, i64 %3 + %3 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [5 x i64], ptr @switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE, i64 0, i64 %3 %switch.load = load i64, ptr %switch.gep, align 8 br label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit _ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit: ; preds = %1, %switch.lookup %.0.i = phi i64 [ %switch.load, %switch.lookup ], [ 0, %1 ] - %4 = icmp ult i32 %0, 7 + %switch.tableidx4 = add i32 %0, -1 + %4 = icmp ult i32 %switch.tableidx4, 5 br i1 %4, label %switch.lookup3, label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit switch.lookup3: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit - %5 = zext nneg i32 %0 to i64 - %switch.gep4 = getelementptr inbounds nuw [7 x i64], ptr @switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE.15, i64 0, i64 %5 - %switch.load5 = load i64, ptr %switch.gep4, align 8 + %5 = zext nneg i32 %switch.tableidx4 to i64 + %switch.gep5 = getelementptr inbounds nuw [5 x i64], ptr @switch.table._Z21verletbufGetListSetupN5Nbnxm10KernelTypeE.15, i64 0, i64 %5 + %switch.load6 = load i64, ptr %switch.gep5, align 8 br label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit _ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit, %switch.lookup3 - %.0.i2 = phi i64 [ %switch.load5, %switch.lookup3 ], [ 0, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit ] + %.0.i2 = phi i64 [ %switch.load6, %switch.lookup3 ], [ 0, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit ] %.sroa.0.0.insert.insert = or disjoint i64 %.0.i2, %.0.i ret i64 %.sroa.0.0.insert.insert } diff --git a/bench/gromacs/optimized/device_management_common.cpp.ll b/bench/gromacs/optimized/device_management_common.cpp.ll index 7fa3e5a8787..20daefdb7fd 100644 --- a/bench/gromacs/optimized/device_management_common.cpp.ll +++ b/bench/gromacs/optimized/device_management_common.cpp.ll @@ -107,7 +107,6 @@ $_ZTVN3gmx13ExceptionInfoINS_22ExceptionInfoLocation_ENS_13ThrowLocationEEE = co @.str.19 = private unnamed_addr constant [70 x i8] c"incompatible (please recompile with GMX_ACPP_ENABLE_AMD_RDNA_SUPPORT)\00", align 1 @.str.20 = private unnamed_addr constant [50 x i8] c"basic_string: construction from null is not valid\00", align 1 @.str.21 = private unnamed_addr constant [49 x i8] c"cannot create std::vector larger than max_size()\00", align 1 -@switch.table._Z26getDeviceComputeUnitFactorRK17DeviceInformation = private unnamed_addr constant [4 x i32] [i32 1, i32 1, i32 16, i32 1], align 4 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define noundef zeroext i1 @_Z25canPerformDeviceDetectionPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr nocapture noundef readnone %0) local_unnamed_addr #0 { @@ -164,19 +163,9 @@ declare noundef ptr @strstr(ptr noundef, ptr nocapture noundef) local_unnamed_ad define noundef range(i32 1, 17) i32 @_Z26getDeviceComputeUnitFactorRK17DeviceInformation(ptr nocapture noundef nonnull readonly align 8 dereferenceable(68) %0) local_unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i32, ptr %2, align 8 - %switch.tableidx = add i32 %3, -1 - %4 = icmp ult i32 %switch.tableidx, 4 - br i1 %4, label %switch.lookup, label %6 - -switch.lookup: ; preds = %1 - %5 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [4 x i32], ptr @switch.table._Z26getDeviceComputeUnitFactorRK17DeviceInformation, i64 0, i64 %5 - %switch.load = load i32, ptr %switch.gep, align 4 - br label %6 - -6: ; preds = %1, %switch.lookup - %.0 = phi i32 [ %switch.load, %switch.lookup ], [ 1, %1 ] - ret i32 %.0 + %cond = icmp eq i32 %3, 3 + %. = select i1 %cond, i32 16, i32 1 + ret i32 %. } ; Function Attrs: mustprogress uwtable diff --git a/bench/gromacs/optimized/nbnxm_setup.cpp.ll b/bench/gromacs/optimized/nbnxm_setup.cpp.ll index 1130e903e71..2bbaf8588f6 100644 --- a/bench/gromacs/optimized/nbnxm_setup.cpp.ll +++ b/bench/gromacs/optimized/nbnxm_setup.cpp.ll @@ -130,7 +130,8 @@ $_ZN3gmx17ThreadForceBufferINS_11BasicVectorIfEEED2Ev = comdat any @.str.36 = private unnamed_addr constant [27 x i8] c"Need valid atomdata object\00", align 1 @"__PRETTY_FUNCTION__._ZZN18nonbonded_verlet_tC1ESt10unique_ptrI12PairlistSetsSt14default_deleteIS1_EES0_I10PairSearchS2_IS5_EES0_I16nbnxn_atomdata_tS2_IS8_EERKN5Nbnxm11KernelSetupEP8NbnxmGpuENK3$_0clEv" = private unnamed_addr constant [218 x i8] c"auto nonbonded_verlet_t::nonbonded_verlet_t(std::unique_ptr, std::unique_ptr, std::unique_ptr, const Nbnxm::KernelSetup &, NbnxmGpu *)::(anonymous class)::operator()() const\00", align 1 @switch.table._ZN5Nbnxm18lookup_kernel_nameENS_10KernelTypeE = private unnamed_addr constant [6 x ptr] [ptr @.str, ptr @.str.1, ptr @.str.2, ptr @.str.3, ptr @.str.4, ptr @.str.1], align 8 -@switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle = private unnamed_addr constant [5 x ptr] [ptr @.str.1, ptr @.str.2, ptr @.str.3, ptr @.str.4, ptr @.str.1], align 8 +@switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle.26 = private unnamed_addr constant [5 x i32] [i32 4, i32 4, i32 4, i32 8, i32 8], align 4 +@switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle.27 = private unnamed_addr constant [5 x ptr] [ptr @.str.1, ptr @.str.2, ptr @.str.3, ptr @.str.4, ptr @.str.1], align 8 @_ZN12PairlistSetsC1ERK14PairlistParamsbi = unnamed_addr alias void (ptr, ptr, i1, i32), ptr @_ZN12PairlistSetsC2ERK14PairlistParamsbi @_ZN18nonbonded_verlet_tC1ESt10unique_ptrI12PairlistSetsSt14default_deleteIS1_EES0_I10PairSearchS2_IS5_EES0_I16nbnxn_atomdata_tS2_IS8_EERKN5Nbnxm11KernelSetupES0_I16ExclusionCheckerS2_ISF_EEP8NbnxmGpuP13gmx_wallcycle = unnamed_addr alias void (ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr), ptr @_ZN18nonbonded_verlet_tC2ESt10unique_ptrI12PairlistSetsSt14default_deleteIS1_EES0_I10PairSearchS2_IS5_EES0_I16nbnxn_atomdata_tS2_IS8_EERKN5Nbnxm11KernelSetupES0_I16ExclusionCheckerS2_ISF_EEP8NbnxmGpuP13gmx_wallcycle @@ -479,9 +480,9 @@ _ZN3gmx14LogWriteHelperaSERKNS_14LogEntryWriterE.exit.i: ; preds = %_ZN3gmx14Log %50 = load i8, ptr %49, align 1 %51 = trunc i8 %50 to i1 %52 = getelementptr inbounds nuw i8, ptr %2, i64 172 - %.val66123 = load i32, ptr %52, align 4 + %.val66124 = load i32, ptr %52, align 4 %53 = getelementptr inbounds nuw i8, ptr %2, i64 368 - %.val67124 = load i32, ptr %53, align 8 + %.val67125 = load i32, ptr %53, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %19) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %20) @@ -490,8 +491,8 @@ _ZN3gmx14LogWriteHelperaSERKNS_14LogEntryWriterE.exit.i: ; preds = %_ZN3gmx14Log 54: ; preds = %48 %.val.i = load ptr, ptr %1, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %17) - %55 = icmp ne i32 %.val67124, 5 - %56 = icmp ne i32 %.val66123, 1 + %55 = icmp ne i32 %.val67125, 5 + %56 = icmp ne i32 %.val66124, 1 %or.cond.not.i.i = select i1 %55, i1 true, i1 %56 %57 = icmp eq ptr %.val.i, null %or.cond.i.i = select i1 %or.cond.not.i.i, i1 true, i1 %57 @@ -562,47 +563,26 @@ _ZN5NbnxmL20nbnxn_simd_supportedERKN3gmx8MDLoggerERK10t_inputrec.exit.i: ; preds %80 = getelementptr inbounds nuw i8, ptr %1, i64 32 %81 = load ptr, ptr %80, align 8 %82 = icmp eq ptr %81, null - br i1 %82, label %92, label %83 + br i1 %82, label %92, label %switch.lookup -83: ; preds = %78 +switch.lookup: ; preds = %78 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %19, i8 0, i64 40, i1 false) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #18 - %84 = getelementptr inbounds nuw i8, ptr %19, i64 32 - store i8 1, ptr %84, align 8 - switch i32 %.sroa.06.0.i, label %default.unreachable [ - i32 5, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i - i32 1, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i - i32 2, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i - i32 3, label %85 - i32 4, label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i - ] - -85: ; preds = %83 - br label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i - -default.unreachable: ; preds = %83 - unreachable - -_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i: ; preds = %83, %83 - %.sroa.06.0.off.i = add nsw i32 %.sroa.06.0.i, -1 - %switch.i = icmp samesign ult i32 %.sroa.06.0.off.i, 3 - %spec.select.i = select i1 %switch.i, i32 4, i32 8 - %switch34.i = icmp eq i32 %.sroa.06.0.i, 2 - br i1 %switch34.i, label %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i, label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i - -_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i, %83 - %.0.i2232.i = phi i32 [ %spec.select.i, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i ], [ 4, %83 ] - %.0.i1431.i = phi ptr [ @.str.1, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i ], [ @.str.2, %83 ] - br label %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i - -_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i: ; preds = %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i, %85, %83 - %.0.i2227.i = phi i32 [ %.0.i2232.i, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i ], [ %spec.select.i, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i ], [ 4, %85 ], [ 8, %83 ] - %.0.i1426.i = phi ptr [ %.0.i1431.i, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i ], [ @.str.1, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i ], [ @.str.3, %85 ], [ @.str.4, %83 ] - %.0.i23.i = phi i32 [ 8, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.thread28.i ], [ 4, %_ZN5NbnxmL15sc_iClusterSizeENS_10KernelTypeE.exit.i ], [ 4, %85 ], [ %.sroa.06.0.i, %83 ] - %86 = invoke noundef nonnull align 8 dereferenceable(40) ptr (ptr, ptr, ...) @_ZN3gmx14LogEntryWriter19appendTextFormattedEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull @.str.11, ptr noundef nonnull %.0.i1426.i, i32 noundef %.0.i2227.i, i32 noundef %.0.i23.i) + %83 = getelementptr inbounds nuw i8, ptr %19, i64 32 + store i8 1, ptr %83, align 8 + %switch.tableidx = add nsw i32 %.sroa.06.0.i, -1 + %84 = sext i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds [5 x ptr], ptr @switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle.27, i64 0, i64 %84 + %switch.load = load ptr, ptr %switch.gep, align 8 + %85 = sext i32 %switch.tableidx to i64 + %switch.gep138 = getelementptr inbounds [5 x i32], ptr @switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle.26, i64 0, i64 %85 + %switch.load139 = load i32, ptr %switch.gep138, align 4 + %switch30.i = icmp eq i32 %.sroa.06.0.i, 2 + %spec.select.i = select i1 %switch30.i, i32 8, i32 4 + %86 = invoke noundef nonnull align 8 dereferenceable(40) ptr (ptr, ptr, ...) @_ZN3gmx14LogEntryWriter19appendTextFormattedEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef nonnull @.str.11, ptr noundef nonnull %switch.load, i32 noundef %switch.load139, i32 noundef %spec.select.i) to label %87 unwind label %.body.i -87: ; preds = %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i +87: ; preds = %switch.lookup %88 = load ptr, ptr %81, align 8 %89 = getelementptr inbounds nuw i8, ptr %88, i64 16 %90 = load ptr, ptr %89, align 8 @@ -613,7 +593,7 @@ _ZN3gmx14LogWriteHelperaSERKNS_14LogEntryWriterE.exit25.i: ; preds = %87 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #18 br label %92 -.body.i: ; preds = %87, %_ZN5NbnxmL15sc_jClusterSizeENS_10KernelTypeE.exit.i +.body.i: ; preds = %87, %switch.lookup %91 = landingpad { ptr, i32 } cleanup br label %common.resume.i @@ -626,21 +606,21 @@ _ZN3gmx14LogWriteHelperaSERKNS_14LogEntryWriterE.exit25.i: ; preds = %87 94: ; preds = %92 %95 = load ptr, ptr %1, align 8 %96 = icmp eq ptr %95, null - br i1 %96, label %_ZN5NbnxmL17pick_nbnxn_kernelERKN3gmx8MDLoggerEbRK13gmx_hw_info_tRKNS_17NonbondedResourceERK10t_inputrec.exit, label %switch.lookup + br i1 %96, label %_ZN5NbnxmL17pick_nbnxn_kernelERKN3gmx8MDLoggerEbRK13gmx_hw_info_tRKNS_17NonbondedResourceERK10t_inputrec.exit, label %switch.lookup140 -switch.lookup: ; preds = %94 +switch.lookup140: ; preds = %94 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %20, i8 0, i64 40, i1 false) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #18 %97 = getelementptr inbounds nuw i8, ptr %20, i64 32 store i8 1, ptr %97, align 8 - %switch.tableidx = add nsw i32 %.sroa.06.0.i, -1 - %98 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [5 x ptr], ptr @switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle, i64 0, i64 %98 - %switch.load = load ptr, ptr %switch.gep, align 8 - %99 = invoke noundef nonnull align 8 dereferenceable(40) ptr (ptr, ptr, ...) @_ZN3gmx14LogEntryWriter19appendTextFormattedEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull @.str.12, ptr noundef nonnull %switch.load) + %switch.tableidx141 = add nsw i32 %.sroa.06.0.i, -1 + %98 = zext nneg i32 %switch.tableidx141 to i64 + %switch.gep142 = getelementptr inbounds nuw [5 x ptr], ptr @switch.table._ZN5Nbnxm14init_nb_verletERKN3gmx8MDLoggerERK10t_inputrecRK10t_forcerecPK9t_commrecRK13gmx_hw_info_tbPKNS0_19DeviceStreamManagerERK10gmx_mtop_tPNS0_25ObservablesReducerBuilderENS0_8ArrayRefIKNS0_11BasicVectorIfEEEEPA3_fP13gmx_wallcycle.27, i64 0, i64 %98 + %switch.load143 = load ptr, ptr %switch.gep142, align 8 + %99 = invoke noundef nonnull align 8 dereferenceable(40) ptr (ptr, ptr, ...) @_ZN3gmx14LogEntryWriter19appendTextFormattedEPKcz(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef nonnull @.str.12, ptr noundef nonnull %switch.load143) to label %100 unwind label %.body28.i -100: ; preds = %switch.lookup +100: ; preds = %switch.lookup140 %101 = load ptr, ptr %95, align 8 %102 = getelementptr inbounds nuw i8, ptr %101, i64 16 %103 = load ptr, ptr %102, align 8 @@ -651,7 +631,7 @@ _ZN3gmx14LogWriteHelperaSERKNS_14LogEntryWriterE.exit32.i: ; preds = %100 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #18 br label %_ZN5NbnxmL17pick_nbnxn_kernelERKN3gmx8MDLoggerEbRK13gmx_hw_info_tRKNS_17NonbondedResourceERK10t_inputrec.exit -.body28.i: ; preds = %100, %switch.lookup +.body28.i: ; preds = %100, %switch.lookup140 %104 = landingpad { ptr, i32 } cleanup br label %common.resume.i @@ -746,18 +726,18 @@ _ZL25havePPDomainDecompositionPK9t_commrec.exit: ; preds = %_ZN5NbnxmL17pick_nb %156 = load i32, ptr %155, align 4 %.off.i = add i32 %156, -1 %switch.i75 = icmp ult i32 %.off.i, 2 - br i1 %switch.i75, label %157, label %.thread.i + br i1 %switch.i75, label %157, label %.thread.i76 157: ; preds = %154 %158 = call ptr @getenv(ptr noundef nonnull @.str.20) #18 %159 = icmp eq ptr %158, null - br i1 %159, label %_ZN5NbnxmL23chooseLJCombinationRuleERK10t_forcerec.exit, label %.thread.i + br i1 %159, label %_ZN5NbnxmL23chooseLJCombinationRuleERK10t_forcerec.exit, label %.thread.i76 -.thread.i: ; preds = %157, %154 +.thread.i76: ; preds = %157, %154 br label %_ZN5NbnxmL23chooseLJCombinationRuleERK10t_forcerec.exit -_ZN5NbnxmL23chooseLJCombinationRuleERK10t_forcerec.exit: ; preds = %144, %157, %.thread.i - %.sroa.3.0.i = phi i64 [ 2, %157 ], [ 4294967298, %.thread.i ], [ 4294967298, %144 ] +_ZN5NbnxmL23chooseLJCombinationRuleERK10t_forcerec.exit: ; preds = %144, %157, %.thread.i76 + %.sroa.3.0.i = phi i64 [ 2, %157 ], [ 4294967298, %.thread.i76 ], [ 4294967298, %144 ] store i64 %.sroa.3.0.i, ptr %25, align 8 %160 = getelementptr inbounds nuw i8, ptr %3, i64 312 %.val69.val = load i32, ptr %.val68, align 8 @@ -863,8 +843,8 @@ _ZSt11make_uniqueI16nbnxn_atomdata_tJRN3gmx13PinningPolicyERKNS1_8MDLoggerERN5Nb call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %15) %203 = call ptr @getenv(ptr noundef nonnull @.str.27) #18 - %.not.i77 = icmp eq ptr %203, null - br i1 %.not.i77, label %220, label %204 + %.not.i78 = icmp eq ptr %203, null + br i1 %.not.i78, label %220, label %204 204: ; preds = %202 store ptr null, ptr %14, align 8 @@ -878,21 +858,21 @@ _ZSt11make_uniqueI16nbnxn_atomdata_tJRN3gmx13PinningPolicyERKNS1_8MDLoggerERN5Nb %209 = load i8, ptr %207, align 1 %210 = icmp ne i8 %209, 0 %211 = icmp slt i32 %206, 0 - %or.cond.i78 = select i1 %210, i1 true, i1 %211 - br i1 %or.cond.i78, label %212, label %216 + %or.cond.i79 = select i1 %210, i1 true, i1 %211 + br i1 %or.cond.i79, label %212, label %216 212: ; preds = %208, %204 invoke void @_ZNSt10filesystem7__cxx114pathC2IA127_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef nonnull align 1 dereferenceable(127) @.str.5, i8 noundef zeroext 2) - to label %.noexc80 unwind label %195 + to label %.noexc81 unwind label %195 -.noexc80: ; preds = %212 +.noexc81: ; preds = %212 invoke void (i32, ptr, i32, ptr, ...) @_Z9gmx_fataliRKNSt10filesystem7__cxx114pathEiPKcz(i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(40) %15, i32 noundef 332, ptr noundef nonnull @.str.28, ptr noundef nonnull %203) #17 to label %213 unwind label %214 -213: ; preds = %.noexc80 +213: ; preds = %.noexc81 unreachable -214: ; preds = %.noexc80 +214: ; preds = %.noexc81 %215 = landingpad { ptr, i32 } cleanup call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #18 @@ -917,36 +897,36 @@ _ZSt11make_uniqueI16nbnxn_atomdata_tJRN3gmx13PinningPolicyERKNS1_8MDLoggerERN5Nb br label %224 224: ; preds = %222, %220, %218, %216 - %.0.i79 = phi i32 [ %206, %218 ], [ %206, %216 ], [ -1, %222 ], [ -1, %220 ] + %.0.i80 = phi i32 [ %206, %218 ], [ %206, %216 ], [ -1, %222 ], [ -1, %220 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %15) br label %225 225: ; preds = %224, %197 - %.0121 = phi i32 [ %.0.i79, %224 ], [ 0, %197 ] + %.0122 = phi i32 [ %.0.i80, %224 ], [ 0, %197 ] call void @llvm.experimental.noalias.scope.decl(metadata !14) %226 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - to label %.noexc81 unwind label %195 + to label %.noexc82 unwind label %195 -.noexc81: ; preds = %225 - invoke void @_ZN12PairlistSetsC1ERK14PairlistParamsbi(ptr noundef nonnull align 8 dereferenceable(64) %226, ptr noundef nonnull align 4 dereferenceable(36) %23, i1 noundef zeroext %115, i32 noundef %.0121) +.noexc82: ; preds = %225 + invoke void @_ZN12PairlistSetsC1ERK14PairlistParamsbi(ptr noundef nonnull align 8 dereferenceable(64) %226, ptr noundef nonnull align 4 dereferenceable(36) %23, i1 noundef zeroext %115, i32 noundef %.0122) to label %229 unwind label %227, !noalias !14 -227: ; preds = %.noexc81 +227: ; preds = %.noexc82 %228 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %226) #21, !noalias !14 br label %.body -229: ; preds = %.noexc81 +229: ; preds = %.noexc82 store ptr %226, ptr %27, align 8, !alias.scope !14 %230 = getelementptr inbounds nuw i8, ptr %2, i64 176 %231 = load i32, ptr %141, align 4 %232 = add i32 %231, -7 %narrow = icmp ult i32 %232, 2 %.val72 = load ptr, ptr %105, align 8 - %.not136 = icmp eq ptr %.val72, null - br i1 %.not136, label %236, label %233 + %.not137 = icmp eq ptr %.val72, null + br i1 %.not137, label %236, label %233 233: ; preds = %229 %234 = getelementptr inbounds nuw i8, ptr %.val72, i64 148 @@ -962,21 +942,21 @@ _ZSt11make_uniqueI16nbnxn_atomdata_tJRN3gmx13PinningPolicyERKNS1_8MDLoggerERN5Nb 240: ; preds = %236 call void @llvm.experimental.noalias.scope.decl(metadata !17) %241 = invoke noalias noundef nonnull dereferenceable(296) ptr @_Znwm(i64 noundef 296) #20 - to label %.noexc84 unwind label %257 + to label %.noexc85 unwind label %257 -.noexc84: ; preds = %240 +.noexc85: ; preds = %240 %242 = load i32, ptr %230, align 8, !noalias !17 %243 = load i32, ptr %23, align 4, !noalias !17 invoke void @_ZN10PairSearchC1E7PbcTypebPA3_KiPK18gmx_domdec_zones_t12PairlistTypebiN3gmx13PinningPolicyE(ptr noundef nonnull align 8 dereferenceable(296) %241, i32 noundef %242, i1 noundef zeroext %narrow, ptr noundef %237, ptr noundef %238, i32 noundef %243, i1 noundef zeroext %121, i32 noundef %239, i32 noundef %145) to label %246 unwind label %244, !noalias !17 -244: ; preds = %.noexc84 +244: ; preds = %.noexc85 %245 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %241) #21, !noalias !17 - br label %.body85 + br label %.body86 -246: ; preds = %.noexc84 +246: ; preds = %.noexc85 store ptr %241, ptr %28, align 8, !alias.scope !17 store ptr null, ptr %29, align 8 %247 = getelementptr inbounds nuw i8, ptr %2, i64 396 @@ -988,34 +968,34 @@ _ZSt11make_uniqueI16nbnxn_atomdata_tJRN3gmx13PinningPolicyERKNS1_8MDLoggerERN5Nb %250 = getelementptr inbounds nuw i8, ptr %2, i64 340 %.val73 = load i32, ptr %250, align 4 switch i32 %.val73, label %251 [ - i32 3, label %.thread133 - i32 14, label %.thread133 - i32 13, label %.thread133 - i32 15, label %.thread133 - i32 5, label %.thread133 - i32 4, label %.thread133 + i32 3, label %.thread134 + i32 14, label %.thread134 + i32 13, label %.thread134 + i32 15, label %.thread134 + i32 5, label %.thread134 + i32 4, label %.thread134 ] 251: ; preds = %249 %.val74 = load i32, ptr %79, align 4 %252 = icmp eq i32 %.val74, 5 - br i1 %252, label %.thread133, label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit + br i1 %252, label %.thread134, label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit -.thread133: ; preds = %249, %249, %249, %249, %249, %249, %251 +.thread134: ; preds = %249, %249, %249, %249, %249, %249, %251 %253 = invoke noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #20 - to label %.noexc87 unwind label %259 + to label %.noexc88 unwind label %259 -.noexc87: ; preds = %.thread133 +.noexc88: ; preds = %.thread134 invoke void @_ZN16ExclusionCheckerC1EPK9t_commrecRK10gmx_mtop_tPN3gmx25ObservablesReducerBuilderE(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull %4, ptr noundef nonnull align 1 %8, ptr noundef %9) to label %_ZSt11make_uniqueI16ExclusionCheckerJRPK9t_commrecRK10gmx_mtop_tRPN3gmx25ObservablesReducerBuilderEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit unwind label %254, !noalias !20 -254: ; preds = %.noexc87 +254: ; preds = %.noexc88 %255 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %253) #21, !noalias !20 - br label %.body88 + br label %.body89 -_ZSt11make_uniqueI16ExclusionCheckerJRPK9t_commrecRK10gmx_mtop_tRPN3gmx25ObservablesReducerBuilderEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit: ; preds = %.noexc87 +_ZSt11make_uniqueI16ExclusionCheckerJRPK9t_commrecRK10gmx_mtop_tRPN3gmx25ObservablesReducerBuilderEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit: ; preds = %.noexc88 %256 = load ptr, ptr %29, align 8 store ptr %253, ptr %29, align 8 %.not.i.i.i.i = icmp eq ptr %256, null @@ -1029,18 +1009,18 @@ _ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i.i.i.i: ; preds = %_ZSt1 257: ; preds = %240, %236, %233 %258 = landingpad { ptr, i32 } cleanup - br label %.body85 + br label %.body86 -259: ; preds = %.thread133, %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit +259: ; preds = %.thread134, %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit %260 = landingpad { ptr, i32 } cleanup - br label %.body88 + br label %.body89 -.body88: ; preds = %254, %259 - %eh.lpad-body89 = phi { ptr, i32 } [ %260, %259 ], [ %255, %254 ] +.body89: ; preds = %254, %259 + %eh.lpad-body90 = phi { ptr, i32 } [ %260, %259 ], [ %255, %254 ] call void @_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #18 call void @_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #18 - br label %.body85 + br label %.body86 _ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZSt11make_uniqueI16ExclusionCheckerJRPK9t_commrecRK10gmx_mtop_tRPN3gmx25ObservablesReducerBuilderEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit, %_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i.i.i.i, %251, %246 invoke void @_ZSt11make_uniqueI18nonbonded_verlet_tJSt10unique_ptrI12PairlistSetsSt14default_deleteIS2_EES1_I10PairSearchS3_IS6_EES1_I16nbnxn_atomdata_tS3_IS9_EERN5Nbnxm11KernelSetupES1_I16ExclusionCheckerS3_ISF_EERP8NbnxmGpuRP13gmx_wallcycleEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::unique_ptr.23") align 8 %0, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %21) @@ -1048,21 +1028,21 @@ _ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit: ; preds = 261: ; preds = %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit %262 = load ptr, ptr %29, align 8 - %.not.i91 = icmp eq ptr %262, null - br i1 %.not.i91, label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit93, label %_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i92 + %.not.i92 = icmp eq ptr %262, null + br i1 %.not.i92, label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit94, label %_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i93 -_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i92: ; preds = %261 +_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i93: ; preds = %261 call void @_ZN16ExclusionCheckerD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %262) #18 call void @_ZdlPv(ptr noundef nonnull %262) #21 - br label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit93 + br label %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit94 -_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit93: ; preds = %261, %_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i92 +_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit94: ; preds = %261, %_ZNKSt14default_deleteI16ExclusionCheckerEclEPS0_.exit.i93 store ptr null, ptr %29, align 8 %263 = load ptr, ptr %28, align 8 - %.not.i94 = icmp eq ptr %263, null - br i1 %.not.i94, label %_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit, label %264 + %.not.i95 = icmp eq ptr %263, null + br i1 %.not.i95, label %_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit, label %264 -264: ; preds = %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit93 +264: ; preds = %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit94 %265 = getelementptr inbounds nuw i8, ptr %263, i64 192 %266 = load ptr, ptr %265, align 8 %267 = getelementptr inbounds nuw i8, ptr %263, i64 200 @@ -1095,17 +1075,17 @@ _ZNKSt14default_deleteI10PairSearchEclEPS0_.exit.i: ; preds = %271, %_ZSt8_Destr call void @_ZdlPv(ptr noundef nonnull %263) #21 br label %_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit -_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit93, %_ZNKSt14default_deleteI10PairSearchEclEPS0_.exit.i +_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrI16ExclusionCheckerSt14default_deleteIS0_EED2Ev.exit94, %_ZNKSt14default_deleteI10PairSearchEclEPS0_.exit.i store ptr null, ptr %28, align 8 %272 = load ptr, ptr %27, align 8 - %.not.i95 = icmp eq ptr %272, null - br i1 %.not.i95, label %_ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev.exit, label %273 + %.not.i96 = icmp eq ptr %272, null + br i1 %.not.i96, label %_ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev.exit, label %273 273: ; preds = %_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit %274 = getelementptr inbounds nuw i8, ptr %272, i64 48 %275 = load ptr, ptr %274, align 8 - %.not.i.i.i.i96 = icmp eq ptr %275, null - br i1 %.not.i.i.i.i96, label %_ZNSt10unique_ptrI11PairlistSetSt14default_deleteIS0_EED2Ev.exit.i.i.i, label %_ZNKSt14default_deleteI11PairlistSetEclEPS0_.exit.i.i.i.i + %.not.i.i.i.i97 = icmp eq ptr %275, null + br i1 %.not.i.i.i.i97, label %_ZNSt10unique_ptrI11PairlistSetSt14default_deleteIS0_EED2Ev.exit.i.i.i, label %_ZNKSt14default_deleteI11PairlistSetEclEPS0_.exit.i.i.i.i _ZNKSt14default_deleteI11PairlistSetEclEPS0_.exit.i.i.i.i: ; preds = %273 call void @_ZN11PairlistSetD1Ev(ptr noundef nonnull align 8 dereferenceable(128) %275) #18 @@ -1131,8 +1111,8 @@ _ZNKSt14default_deleteI12PairlistSetsEclEPS0_.exit.i: ; preds = %_ZNKSt14default _ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrI10PairSearchSt14default_deleteIS0_EED2Ev.exit, %_ZNKSt14default_deleteI12PairlistSetsEclEPS0_.exit.i store ptr null, ptr %27, align 8 %278 = load ptr, ptr %24, align 8 - %.not.i97 = icmp eq ptr %278, null - br i1 %.not.i97, label %_ZNSt10unique_ptrI16nbnxn_atomdata_tSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteI16nbnxn_atomdata_tEclEPS0_.exit.i + %.not.i98 = icmp eq ptr %278, null + br i1 %.not.i98, label %_ZNSt10unique_ptrI16nbnxn_atomdata_tSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteI16nbnxn_atomdata_tEclEPS0_.exit.i _ZNKSt14default_deleteI16nbnxn_atomdata_tEclEPS0_.exit.i: ; preds = %_ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev.exit call void @_ZN16nbnxn_atomdata_tD1Ev(ptr noundef nonnull align 8 dereferenceable(464) %278) #18 @@ -1142,13 +1122,13 @@ _ZNKSt14default_deleteI16nbnxn_atomdata_tEclEPS0_.exit.i: ; preds = %_ZNSt10uniq _ZNSt10unique_ptrI16nbnxn_atomdata_tSt14default_deleteIS0_EED2Ev.exit: ; preds = %_ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev.exit, %_ZNKSt14default_deleteI16nbnxn_atomdata_tEclEPS0_.exit.i ret void -.body85: ; preds = %257, %244, %.body88 - %.pn = phi { ptr, i32 } [ %eh.lpad-body89, %.body88 ], [ %258, %257 ], [ %245, %244 ] +.body86: ; preds = %257, %244, %.body89 + %.pn = phi { ptr, i32 } [ %eh.lpad-body90, %.body89 ], [ %258, %257 ], [ %245, %244 ] call void @_ZNSt10unique_ptrI12PairlistSetsSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #18 br label %.body -.body: ; preds = %214, %227, %195, %.body85 - %.pn.pn = phi { ptr, i32 } [ %.pn, %.body85 ], [ %215, %214 ], [ %196, %195 ], [ %228, %227 ] +.body: ; preds = %214, %227, %195, %.body86 + %.pn.pn = phi { ptr, i32 } [ %.pn, %.body86 ], [ %215, %214 ], [ %196, %195 ], [ %228, %227 ] call void @_ZNSt10unique_ptrI16nbnxn_atomdata_tSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #18 br label %common.resume } diff --git a/bench/gromacs/optimized/stat.cpp.ll b/bench/gromacs/optimized/stat.cpp.ll index dbec1e5cdda..8e0eecdbfff 100644 --- a/bench/gromacs/optimized/stat.cpp.ll +++ b/bench/gromacs/optimized/stat.cpp.ll @@ -127,8 +127,8 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ 41: ; preds = %.sink.split.i, %35, %34, %.split.us.i, %.split.us.i %.223.us.i = phi i32 [ %.02126.us.i, %35 ], [ %.02126.us.i, %.split.us.i ], [ %.02126.us.i, %.split.us.i ], [ %.02126.us.i, %34 ], [ %38, %.sink.split.i ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond85.not.i = icmp eq i64 %indvars.iv.next, 94 - br i1 %exitcond85.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.us.i, !llvm.loop !5 + %exitcond86.not.i = icmp eq i64 %indvars.iv.next, 94 + br i1 %exitcond86.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.us.i, !llvm.loop !5 .split.i: ; preds = %26 br i1 %.not336, label %.split.split.i, label %.split.split.us.i @@ -140,14 +140,14 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ %indvars.iv363 = phi i64 [ %indvars.iv.next364, %48 ], [ 0, %.split.split.us.i ] %.02126.us31.us.i = phi i32 [ %.223.us35.us.i, %48 ], [ 0, %.split.split.us.i ] %42 = trunc nuw nsw i64 %indvars.iv363 to i32 - switch i32 %42, label %.sink.split94.i [ + switch i32 %42, label %.sink.split95.i [ i32 81, label %48 i32 80, label %48 i32 84, label %48 i32 85, label %48 ] -.sink.split94.i: ; preds = %.split.split.us.split.us.i +.sink.split95.i: ; preds = %.split.split.us.split.us.i %43 = getelementptr inbounds nuw float, ptr %2, i64 %indvars.iv363 %44 = load float, ptr %43, align 4 %45 = add nsw i32 %.02126.us31.us.i, 1 @@ -156,16 +156,16 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ store float %44, ptr %47, align 4 br label %48 -48: ; preds = %.sink.split94.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i - %.223.us35.us.i = phi i32 [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %45, %.sink.split94.i ] +48: ; preds = %.sink.split95.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i, %.split.split.us.split.us.i + %.223.us35.us.i = phi i32 [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %.02126.us31.us.i, %.split.split.us.split.us.i ], [ %45, %.sink.split95.i ] %indvars.iv.next364 = add nuw nsw i64 %indvars.iv363, 1 - %exitcond84.not.i = icmp eq i64 %indvars.iv.next364, 94 - br i1 %exitcond84.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.us.split.us.i, !llvm.loop !5 + %exitcond85.not.i = icmp eq i64 %indvars.iv.next364, 94 + br i1 %exitcond85.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.us.split.us.i, !llvm.loop !5 .split.split.us.split.split.us.i: ; preds = %.split.split.us.i, %56 - %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %56 ], [ 0, %.split.split.us.i ] + %indvars.iv81.i = phi i64 [ %indvars.iv.next82.i, %56 ], [ 0, %.split.split.us.i ] %.02126.us31.us57.i = phi i32 [ %.223.us35.us59.i, %56 ], [ 0, %.split.split.us.i ] - %49 = trunc nuw nsw i64 %indvars.iv80.i to i32 + %49 = trunc nuw nsw i64 %indvars.iv81.i to i32 switch i32 %49, label %56 [ i32 79, label %50 i32 82, label %50 @@ -173,7 +173,7 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ ] 50: ; preds = %.split.split.us.split.split.us.i, %.split.split.us.split.split.us.i, %.split.split.us.split.split.us.i - %51 = getelementptr inbounds nuw float, ptr %2, i64 %indvars.iv80.i + %51 = getelementptr inbounds nuw float, ptr %2, i64 %indvars.iv81.i %52 = load float, ptr %51, align 4 %53 = add nsw i32 %.02126.us31.us57.i, 1 %54 = sext i32 %.02126.us31.us57.i to i64 @@ -183,17 +183,17 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ 56: ; preds = %50, %.split.split.us.split.split.us.i %.223.us35.us59.i = phi i32 [ %53, %50 ], [ %.02126.us31.us57.i, %.split.split.us.split.split.us.i ] - %indvars.iv.next81.i = add nuw nsw i64 %indvars.iv80.i, 1 - %exitcond83.not.i = icmp eq i64 %indvars.iv.next81.i, 94 - br i1 %exitcond83.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.us.split.split.us.i, !llvm.loop !5 + %indvars.iv.next82.i = add nuw nsw i64 %indvars.iv81.i, 1 + %exitcond84.not.i = icmp eq i64 %indvars.iv.next82.i, 94 + br i1 %exitcond84.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.us.split.split.us.i, !llvm.loop !5 .split.split.i: ; preds = %.split.i br i1 %.not337, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.split.us.split.us.i .split.split.split.us.split.us.i: ; preds = %.split.split.i, %64 - %indvars.iv72.i = phi i64 [ %indvars.iv.next73.i, %64 ], [ 0, %.split.split.i ] + %indvars.iv73.i = phi i64 [ %indvars.iv.next74.i, %64 ], [ 0, %.split.split.i ] %.02126.us40.us.i = phi i32 [ %.223.us44.us.i, %64 ], [ 0, %.split.split.i ] - %57 = trunc nuw nsw i64 %indvars.iv72.i to i32 + %57 = trunc nuw nsw i64 %indvars.iv73.i to i32 switch i32 %57, label %58 [ i32 79, label %64 i32 82, label %64 @@ -205,7 +205,7 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ ] 58: ; preds = %.split.split.split.us.split.us.i - %59 = getelementptr inbounds nuw float, ptr %2, i64 %indvars.iv72.i + %59 = getelementptr inbounds nuw float, ptr %2, i64 %indvars.iv73.i %60 = load float, ptr %59, align 4 %61 = add nsw i32 %.02126.us40.us.i, 1 %62 = sext i32 %.02126.us40.us.i to i64 @@ -215,9 +215,9 @@ define void @_Z11global_statRK15gmx_global_statPK9t_commrecP14gmx_enerdata_tPA3_ 64: ; preds = %58, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i, %.split.split.split.us.split.us.i %.223.us44.us.i = phi i32 [ %61, %58 ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ], [ %.02126.us40.us.i, %.split.split.split.us.split.us.i ] - %indvars.iv.next73.i = add nuw nsw i64 %indvars.iv72.i, 1 - %exitcond75.not.i = icmp eq i64 %indvars.iv.next73.i, 94 - br i1 %exitcond75.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.split.us.split.us.i, !llvm.loop !5 + %indvars.iv.next74.i = add nuw nsw i64 %indvars.iv73.i, 1 + %exitcond76.not.i = icmp eq i64 %indvars.iv.next74.i, 94 + br i1 %exitcond76.not.i, label %_ZL16filter_enerdtermPKfbPfbbb.exit, label %.split.split.split.us.split.us.i, !llvm.loop !5 _ZL16filter_enerdtermPKfbPfbbb.exit: ; preds = %41, %48, %56, %64, %.split.split.i %.us-phi.i = phi i32 [ 0, %.split.split.i ], [ %.223.us44.us.i, %64 ], [ %.223.us35.us59.i, %56 ], [ %.223.us35.us.i, %48 ], [ %.223.us.i, %41 ] @@ -709,8 +709,8 @@ _ZL16filter_enerdtermPKfbPfbbb.exit: ; preds = %41, %48, %56, %64, 304: ; preds = %.split.us.i294, %.split.us.i294, %.sink.split.i301, %298 %.2.us.i299 = phi i32 [ %.027.us.i295, %.split.us.i294 ], [ %.027.us.i295, %.split.us.i294 ], [ %.027.us.i295, %298 ], [ %299, %.sink.split.i301 ] %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1 - %exitcond85.not.i300 = icmp eq i64 %indvars.iv.next379, 94 - br i1 %exitcond85.not.i300, label %_ZL16filter_enerdtermPKfbPfbbb.exit302, label %.split.us.i294, !llvm.loop !5 + %exitcond86.not.i300 = icmp eq i64 %indvars.iv.next379, 94 + br i1 %exitcond86.not.i300, label %_ZL16filter_enerdtermPKfbPfbbb.exit302, label %.split.us.i294, !llvm.loop !5 .split.i281: ; preds = %296 br i1 %.not336, label %.split.split.split.us.split.i, label %.split.split.us.split.us.i286 @@ -719,14 +719,14 @@ _ZL16filter_enerdtermPKfbPfbbb.exit: ; preds = %41, %48, %56, %64, %indvars.iv381 = phi i64 [ %indvars.iv.next382, %311 ], [ 0, %.split.i281 ] %.027.us30.us.i287 = phi i32 [ %.2.us36.us.i291, %311 ], [ 0, %.split.i281 ] %305 = trunc nuw nsw i64 %indvars.iv381 to i32 - switch i32 %305, label %.sink.split94.i293 [ + switch i32 %305, label %.sink.split95.i293 [ i32 81, label %311 i32 80, label %311 i32 84, label %311 i32 85, label %311 ] -.sink.split94.i293: ; preds = %.split.split.us.split.us.i286 +.sink.split95.i293: ; preds = %.split.split.us.split.us.i286 %306 = add nsw i32 %.027.us30.us.i287, 1 %307 = sext i32 %.027.us30.us.i287 to i64 %308 = getelementptr inbounds float, ptr %14, i64 %307 @@ -735,17 +735,17 @@ _ZL16filter_enerdtermPKfbPfbbb.exit: ; preds = %41, %48, %56, %64, store float %309, ptr %310, align 4 br label %311 -311: ; preds = %.sink.split94.i293, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286 - %.2.us36.us.i291 = phi i32 [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %306, %.sink.split94.i293 ] +311: ; preds = %.sink.split95.i293, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286, %.split.split.us.split.us.i286 + %.2.us36.us.i291 = phi i32 [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %.027.us30.us.i287, %.split.split.us.split.us.i286 ], [ %306, %.sink.split95.i293 ] %indvars.iv.next382 = add nuw nsw i64 %indvars.iv381, 1 - %exitcond84.not.i292 = icmp eq i64 %indvars.iv.next382, 94 - br i1 %exitcond84.not.i292, label %_ZL16filter_enerdtermPKfbPfbbb.exit302, label %.split.split.us.split.us.i286, !llvm.loop !5 + %exitcond85.not.i292 = icmp eq i64 %indvars.iv.next382, 94 + br i1 %exitcond85.not.i292, label %_ZL16filter_enerdtermPKfbPfbbb.exit302, label %.split.split.us.split.us.i286, !llvm.loop !5 .split.split.split.us.split.i: ; preds = %.split.i281, %318 %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %318 ], [ 0, %.split.i281 ] %.027.us39.i = phi i32 [ %.2.us45.i, %318 ], [ 0, %.split.i281 ] - %indvars71.i = trunc i64 %indvars.iv.i to i32 - switch i32 %indvars71.i, label %312 [ + %indvars72.i = trunc i64 %indvars.iv.i to i32 + switch i32 %indvars72.i, label %312 [ i32 79, label %318 i32 82, label %318 i32 88, label %318 diff --git a/bench/gromacs/optimized/toputil.cpp.ll b/bench/gromacs/optimized/toputil.cpp.ll index 97cee905c68..3cad5a95dcc 100644 --- a/bench/gromacs/optimized/toputil.cpp.ll +++ b/bench/gromacs/optimized/toputil.cpp.ll @@ -1107,17 +1107,17 @@ _ZN17InteractionOfTypeD2Ev.exit: ; preds = %23, %25 cleanup br label %_ZNSt10unique_ptrI6t_atomSt14default_deleteIS0_EED2Ev.exit32 -.loopexit: ; preds = %99 +.loopexit: ; preds = %98 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %._crit_edge16.us.i, %86, %79, %.lr.ph24.split.us.i +.loopexit.split-lp.loopexit: ; preds = %._crit_edge16.us.i, %85, %78, %.lr.ph24.split.us.i %lpad.loopexit40 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph24.split.i, %113, %118, %123 +.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph24.split.i, %112, %117, %122 %lpad.loopexit43 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -1127,7 +1127,7 @@ _ZN17InteractionOfTypeD2Ev.exit: ; preds = %23, %25 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %49 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %48 %lpad.loopexit.split-lp47 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -1171,9 +1171,9 @@ _ZN17InteractionOfTypeD2Ev.exit: ; preds = %23, %25 br i1 %41, label %_ZNSt10unique_ptrI6t_atomSt14default_deleteIS0_EED2Ev.exit, label %42 42: ; preds = %._crit_edge - switch i32 %3, label %48 [ - i32 11, label %49 - i32 1, label %49 + switch i32 %3, label %47 [ + i32 11, label %48 + i32 1, label %48 i32 2, label %43 i32 3, label %44 i32 4, label %45 @@ -1181,259 +1181,253 @@ _ZN17InteractionOfTypeD2Ev.exit: ; preds = %23, %25 i32 15, label %43 i32 14, label %44 i32 16, label %45 - i32 19, label %47 - i32 20, label %47 - i32 23, label %47 - i32 24, label %49 - i32 63, label %49 - i32 69, label %49 - i32 70, label %43 + i32 27, label %48 + i32 73, label %48 i32 71, label %44 - i32 73, label %49 - i32 27, label %49 + i32 24, label %48 + i32 63, label %48 + i32 69, label %48 + i32 70, label %43 ] 43: ; preds = %42, %42, %42 - br label %49 + br label %48 44: ; preds = %42, %42, %42 - br label %49 + br label %48 45: ; preds = %42, %42 - br label %49 + br label %48 46: ; preds = %42 - br label %49 - -47: ; preds = %42, %42, %42 - br label %49 + br label %48 -48: ; preds = %42 - br label %49 +47: ; preds = %42 + br label %48 -49: ; preds = %48, %47, %46, %45, %44, %43, %42, %42, %42, %42, %42, %42, %42 - %.068.i = phi i32 [ 0, %48 ], [ 0, %47 ], [ 5, %46 ], [ 4, %45 ], [ 3, %44 ], [ 2, %43 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ] +48: ; preds = %47, %46, %45, %44, %43, %42, %42, %42, %42, %42, %42, %42 + %.068.i = phi i32 [ 0, %47 ], [ 5, %46 ], [ 4, %45 ], [ 3, %44 ], [ 2, %43 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ], [ 1, %42 ] %.not.i = icmp eq i32 %4, 0 - %50 = add nsw i32 %4, -1 - %spec.select.i = select i1 %.not.i, i32 %.068.i, i32 %50 - %51 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 2 - %52 = load i32, ptr %51, align 16 - %.fr26.i = freeze i32 %52 - %53 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 3 - %54 = load i32, ptr %53, align 4 - %55 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 4 - %56 = load i32, ptr %55, align 8 - %57 = add i32 %56, %54 - %58 = invoke noundef ptr @_Z17enumValueToString9Directive(i32 noundef %2) + %49 = add nsw i32 %4, -1 + %spec.select.i = select i1 %.not.i, i32 %.068.i, i32 %49 + %50 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 2 + %51 = load i32, ptr %50, align 16 + %.fr26.i = freeze i32 %51 + %52 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 3 + %53 = load i32, ptr %52, align 4 + %54 = getelementptr inbounds [94 x %struct.t_interaction_function], ptr @interaction_function, i64 0, i64 %36, i32 4 + %55 = load i32, ptr %54, align 8 + %56 = add i32 %55, %53 + %57 = invoke noundef ptr @_Z17enumValueToString9Directive(i32 noundef %2) to label %.noexc19 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc19: ; preds = %49 - %59 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef %58) #22 - %60 = call i64 @fwrite(ptr nonnull @.str.33, i64 2, i64 1, ptr %0) - %61 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.36) #22 - %62 = icmp sgt i32 %.fr26.i, 2 - br i1 %62, label %.lr.ph.i, label %._crit_edge.i +.noexc19: ; preds = %48 + %58 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef %57) #22 + %59 = call i64 @fwrite(ptr nonnull @.str.33, i64 2, i64 1, ptr %0) + %60 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.36) #22 + %61 = icmp sgt i32 %.fr26.i, 2 + br i1 %61, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %.noexc19, %.lr.ph.i - %.0728.i = phi i32 [ %65, %.lr.ph.i ], [ 2, %.noexc19 ] - %63 = add nuw nsw i32 %.0728.i, 105 - %64 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.37, i32 noundef 97, i32 noundef %63) #22 - %65 = add nuw nsw i32 %.0728.i, 1 - %exitcond.not.i = icmp eq i32 %65, %.fr26.i + %.0728.i = phi i32 [ %64, %.lr.ph.i ], [ 2, %.noexc19 ] + %62 = add nuw nsw i32 %.0728.i, 105 + %63 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.37, i32 noundef 97, i32 noundef %62) #22 + %64 = add nuw nsw i32 %.0728.i, 1 + %exitcond.not.i = icmp eq i32 %64, %.fr26.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !28 ._crit_edge.i: ; preds = %.lr.ph.i, %.noexc19 - %66 = call i64 @fwrite(ptr nonnull @.str.39, i64 6, i64 1, ptr %0) - %67 = icmp sgt i32 %57, 0 - br i1 %67, label %.lr.ph11.i, label %._crit_edge12.i + %65 = call i64 @fwrite(ptr nonnull @.str.39, i64 6, i64 1, ptr %0) + %66 = icmp sgt i32 %56, 0 + br i1 %66, label %.lr.ph11.i, label %._crit_edge12.i .lr.ph11.i: ; preds = %._crit_edge.i, %.lr.ph11.i - %.0709.i = phi i32 [ %69, %.lr.ph11.i ], [ 0, %._crit_edge.i ] - %68 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.40, i32 noundef 99, i32 noundef %.0709.i) #22 - %69 = add nuw nsw i32 %.0709.i, 1 - %exitcond28.not.i = icmp eq i32 %69, %57 + %.0709.i = phi i32 [ %68, %.lr.ph11.i ], [ 0, %._crit_edge.i ] + %67 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.40, i32 noundef 99, i32 noundef %.0709.i) #22 + %68 = add nuw nsw i32 %.0709.i, 1 + %exitcond28.not.i = icmp eq i32 %68, %56 br i1 %exitcond28.not.i, label %._crit_edge12.i, label %.lr.ph11.i, !llvm.loop !29 ._crit_edge12.i: ; preds = %.lr.ph11.i, %._crit_edge.i %fputc.i = call i32 @fputc(i32 10, ptr %0) - %70 = load ptr, ptr %37, align 8 - %71 = load ptr, ptr %38, align 8 - %.not721.i = icmp eq ptr %70, %71 + %69 = load ptr, ptr %37, align 8 + %70 = load ptr, ptr %38, align 8 + %.not721.i = icmp eq ptr %69, %70 br i1 %.not721.i, label %._crit_edge25.i, label %.lr.ph24.i .lr.ph24.i: ; preds = %._crit_edge12.i - %72 = icmp sgt i32 %.fr26.i, 0 - %73 = getelementptr inbounds nuw i8, ptr %7, i64 32 - %74 = xor i32 %spec.select.i, -1 - %75 = add nuw nsw i32 %spec.select.i, 1 - br i1 %72, label %.lr.ph24.split.us.preheader.i, label %.lr.ph24.split.preheader.i + %71 = icmp sgt i32 %.fr26.i, 0 + %72 = getelementptr inbounds nuw i8, ptr %7, i64 32 + %73 = xor i32 %spec.select.i, -1 + %74 = add nuw nsw i32 %spec.select.i, 1 + br i1 %71, label %.lr.ph24.split.us.preheader.i, label %.lr.ph24.split.preheader.i .lr.ph24.split.preheader.i: ; preds = %.lr.ph24.i - %wide.trip.count.i = zext nneg i32 %57 to i64 + %wide.trip.count.i = zext nneg i32 %56 to i64 br label %.lr.ph24.split.i .lr.ph24.split.us.preheader.i: ; preds = %.lr.ph24.i %wide.trip.count34.i = zext nneg i32 %.fr26.i to i64 - %wide.trip.count39.i = zext nneg i32 %57 to i64 + %wide.trip.count39.i = zext nneg i32 %56 to i64 br label %.lr.ph24.split.us.i .lr.ph24.split.us.i: ; preds = %.critedge.us.i, %.lr.ph24.split.us.preheader.i - %.sroa.04.022.us.i = phi ptr [ %95, %.critedge.us.i ], [ %70, %.lr.ph24.split.us.preheader.i ] - %76 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c0Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) + %.sroa.04.022.us.i = phi ptr [ %94, %.critedge.us.i ], [ %69, %.lr.ph24.split.us.preheader.i ] + %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c0Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) to label %.noexc20 unwind label %.loopexit.split-lp.loopexit .noexc20: ; preds = %.lr.ph24.split.us.i - %77 = load float, ptr %76, align 4 - %78 = fcmp oeq float %77, -4.092030e+05 - br i1 %78, label %79, label %.lr.ph15.us.i + %76 = load float, ptr %75, align 4 + %77 = fcmp oeq float %76, -4.092030e+05 + br i1 %77, label %78, label %.lr.ph15.us.i -79: ; preds = %.noexc20 - %80 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c1Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) +78: ; preds = %.noexc20 + %79 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c1Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) to label %.noexc21 unwind label %.loopexit.split-lp.loopexit -.noexc21: ; preds = %79 - %81 = load float, ptr %80, align 4 - %82 = fcmp oeq float %81, -1.000000e+00 - %83 = select i1 %82, i32 %74, i32 %75 +.noexc21: ; preds = %78 + %80 = load float, ptr %79, align 4 + %81 = fcmp oeq float %80, -1.000000e+00 + %82 = select i1 %81, i32 %73, i32 %74 br label %.lr.ph15.us.i .lr.ph15.us.i: ; preds = %.noexc21, %.noexc20 - %84 = phi i32 [ %75, %.noexc20 ], [ %83, %.noexc21 ] - %85 = load ptr, ptr %.sroa.04.022.us.i, align 8 - br label %99 + %83 = phi i32 [ %74, %.noexc20 ], [ %82, %.noexc21 ] + %84 = load ptr, ptr %.sroa.04.022.us.i, align 8 + br label %98 -86: ; preds = %.noexc24 - %87 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) +85: ; preds = %.noexc24 + %86 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) to label %.noexc22 unwind label %.loopexit.split-lp.loopexit -.noexc22: ; preds = %86 - %88 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %87) #22 - %89 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.43, ptr noundef %88) #22 +.noexc22: ; preds = %85 + %87 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %86) #22 + %88 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.43, ptr noundef %87) #22 br label %.critedge.us.i -90: ; preds = %.noexc24 - %91 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.us.i, i64 24 - br i1 %67, label %.lr.ph19.us.i, label %.critedge.us.i +89: ; preds = %.noexc24 + %90 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.us.i, i64 24 + br i1 %66, label %.lr.ph19.us.i, label %.critedge.us.i -.lr.ph19.us.i: ; preds = %90, %96 - %indvars.iv36.i = phi i64 [ %indvars.iv.next37.i, %96 ], [ 0, %90 ] - %92 = getelementptr inbounds nuw float, ptr %91, i64 %indvars.iv36.i - %93 = load float, ptr %92, align 4 - %94 = fcmp une float %93, -4.092030e+05 - br i1 %94, label %96, label %.critedge.us.i +.lr.ph19.us.i: ; preds = %89, %95 + %indvars.iv36.i = phi i64 [ %indvars.iv.next37.i, %95 ], [ 0, %89 ] + %91 = getelementptr inbounds nuw float, ptr %90, i64 %indvars.iv36.i + %92 = load float, ptr %91, align 4 + %93 = fcmp une float %92, -4.092030e+05 + br i1 %93, label %95, label %.critedge.us.i -.critedge.us.i: ; preds = %96, %.lr.ph19.us.i, %90, %.noexc22 +.critedge.us.i: ; preds = %95, %.lr.ph19.us.i, %89, %.noexc22 %fputc76.us.i = call i32 @fputc(i32 10, ptr %0) - %95 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.us.i, i64 104 - %.not7.us.i = icmp eq ptr %95, %71 + %94 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.us.i, i64 104 + %.not7.us.i = icmp eq ptr %94, %70 br i1 %.not7.us.i, label %._crit_edge25.i, label %.lr.ph24.split.us.i -96: ; preds = %.lr.ph19.us.i - %97 = fpext float %93 to double - %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.44, double noundef %97) #22 +95: ; preds = %.lr.ph19.us.i + %96 = fpext float %92 to double + %97 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.44, double noundef %96) #22 %indvars.iv.next37.i = add nuw nsw i64 %indvars.iv36.i, 1 %exitcond40.not.i = icmp eq i64 %indvars.iv.next37.i, %wide.trip.count39.i br i1 %exitcond40.not.i, label %.critedge.us.i, label %.lr.ph19.us.i, !llvm.loop !30 -99: ; preds = %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i, %.lr.ph15.us.i +98: ; preds = %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i, %.lr.ph15.us.i %indvars.iv31.i = phi i64 [ 0, %.lr.ph15.us.i ], [ %indvars.iv.next32.i, %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i ] - %100 = getelementptr inbounds nuw i32, ptr %85, i64 %indvars.iv31.i - %101 = load i32, ptr %100, align 4 - invoke void @_ZNK22PreprocessingAtomTypes20atomNameFromAtomTypeB5cxx11Ei(ptr dead_on_unwind nonnull writable sret(%"class.std::optional") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %101) + %99 = getelementptr inbounds nuw i32, ptr %84, i64 %indvars.iv31.i + %100 = load i32, ptr %99, align 4 + invoke void @_ZNK22PreprocessingAtomTypes20atomNameFromAtomTypeB5cxx11Ei(ptr dead_on_unwind nonnull writable sret(%"class.std::optional") align 8 %7, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %100) to label %.noexc23 unwind label %.loopexit -.noexc23: ; preds = %99 - %102 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #22 - %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.41, ptr noundef %102) #22 - %104 = load i8, ptr %73, align 8 - %105 = trunc i8 %104 to i1 - br i1 %105, label %106, label %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i +.noexc23: ; preds = %98 + %101 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #22 + %102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.41, ptr noundef %101) #22 + %103 = load i8, ptr %72, align 8 + %104 = trunc i8 %103 to i1 + br i1 %104, label %105, label %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i -106: ; preds = %.noexc23 - store i8 0, ptr %73, align 8 +105: ; preds = %.noexc23 + store i8 0, ptr %72, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #22 br label %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i -_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i: ; preds = %106, %.noexc23 +_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i: ; preds = %105, %.noexc23 %indvars.iv.next32.i = add nuw nsw i64 %indvars.iv31.i, 1 %exitcond35.not.i = icmp eq i64 %indvars.iv.next32.i, %wide.trip.count34.i - br i1 %exitcond35.not.i, label %._crit_edge16.us.i, label %99, !llvm.loop !31 + br i1 %exitcond35.not.i, label %._crit_edge16.us.i, label %98, !llvm.loop !31 ._crit_edge16.us.i: ; preds = %_ZNSt8optionalIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev.exit.us.i - %107 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.42, i32 noundef %84) #22 - %108 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) + %106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.42, i32 noundef %83) #22 + %107 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.us.i) to label %.noexc24 unwind label %.loopexit.split-lp.loopexit .noexc24: ; preds = %._crit_edge16.us.i - %109 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %108) #22 - br i1 %109, label %90, label %86 + %108 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %107) #22 + br i1 %108, label %89, label %85 .lr.ph24.split.i: ; preds = %.critedge.i, %.lr.ph24.split.preheader.i - %.sroa.04.022.i = phi ptr [ %135, %.critedge.i ], [ %70, %.lr.ph24.split.preheader.i ] - %110 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c0Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) + %.sroa.04.022.i = phi ptr [ %134, %.critedge.i ], [ %69, %.lr.ph24.split.preheader.i ] + %109 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c0Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) to label %.noexc25 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit .noexc25: ; preds = %.lr.ph24.split.i - %111 = load float, ptr %110, align 4 - %112 = fcmp oeq float %111, -4.092030e+05 - br i1 %112, label %113, label %118 + %110 = load float, ptr %109, align 4 + %111 = fcmp oeq float %110, -4.092030e+05 + br i1 %111, label %112, label %117 -113: ; preds = %.noexc25 - %114 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c1Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) +112: ; preds = %.noexc25 + %113 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK17InteractionOfType2c1Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) to label %.noexc26 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc26: ; preds = %113 - %115 = load float, ptr %114, align 4 - %116 = fcmp oeq float %115, -1.000000e+00 - %117 = select i1 %116, i32 %74, i32 %75 - br label %118 - -118: ; preds = %.noexc26, %.noexc25 - %119 = phi i32 [ %75, %.noexc25 ], [ %117, %.noexc26 ] - %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.42, i32 noundef %119) #22 - %121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) +.noexc26: ; preds = %112 + %114 = load float, ptr %113, align 4 + %115 = fcmp oeq float %114, -1.000000e+00 + %116 = select i1 %115, i32 %73, i32 %74 + br label %117 + +117: ; preds = %.noexc26, %.noexc25 + %118 = phi i32 [ %74, %.noexc25 ], [ %116, %.noexc26 ] + %119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.42, i32 noundef %118) #22 + %120 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) to label %.noexc27 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc27: ; preds = %118 - %122 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %121) #22 - br i1 %122, label %127, label %123 +.noexc27: ; preds = %117 + %121 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %120) #22 + br i1 %121, label %126, label %122 -123: ; preds = %.noexc27 - %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) +122: ; preds = %.noexc27 + %123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17InteractionOfType19interactionTypeNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %.sroa.04.022.i) to label %.noexc28 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc28: ; preds = %123 - %125 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %124) #22 - %126 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.43, ptr noundef %125) #22 +.noexc28: ; preds = %122 + %124 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %123) #22 + %125 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.43, ptr noundef %124) #22 br label %.critedge.i -127: ; preds = %.noexc27 - %128 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.i, i64 24 - br i1 %67, label %.lr.ph19.i, label %.critedge.i +126: ; preds = %.noexc27 + %127 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.i, i64 24 + br i1 %66, label %.lr.ph19.i, label %.critedge.i -.lr.ph19.i: ; preds = %127, %132 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %132 ], [ 0, %127 ] - %129 = getelementptr inbounds nuw float, ptr %128, i64 %indvars.iv.i - %130 = load float, ptr %129, align 4 - %131 = fcmp une float %130, -4.092030e+05 - br i1 %131, label %132, label %.critedge.i +.lr.ph19.i: ; preds = %126, %131 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %131 ], [ 0, %126 ] + %128 = getelementptr inbounds nuw float, ptr %127, i64 %indvars.iv.i + %129 = load float, ptr %128, align 4 + %130 = fcmp une float %129, -4.092030e+05 + br i1 %130, label %131, label %.critedge.i -132: ; preds = %.lr.ph19.i - %133 = fpext float %130 to double - %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.44, double noundef %133) #22 +131: ; preds = %.lr.ph19.i + %132 = fpext float %129 to double + %133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.44, double noundef %132) #22 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond30.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond30.not.i, label %.critedge.i, label %.lr.ph19.i, !llvm.loop !30 -.critedge.i: ; preds = %132, %.lr.ph19.i, %127, %.noexc28 +.critedge.i: ; preds = %131, %.lr.ph19.i, %126, %.noexc28 %fputc76.i = call i32 @fputc(i32 10, ptr %0) - %135 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.i, i64 104 - %.not7.i = icmp eq ptr %135, %71 + %134 = getelementptr inbounds nuw i8, ptr %.sroa.04.022.i, i64 104 + %.not7.i = icmp eq ptr %134, %70 br i1 %.not7.i, label %._crit_edge25.i, label %.lr.ph24.split.i ._crit_edge25.i: ; preds = %.critedge.i, %.critedge.us.i, %._crit_edge12.i %fputc75.i = call i32 @fputc(i32 10, ptr %0) - %136 = call i32 @fflush(ptr noundef %0) + %135 = call i32 @fflush(ptr noundef %0) br label %_ZNSt10unique_ptrI6t_atomSt14default_deleteIS0_EED2Ev.exit _ZNSt10unique_ptrI6t_atomSt14default_deleteIS0_EED2Ev.exit: ; preds = %._crit_edge25.i, %._crit_edge diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index b3df7e14539..1b78e491c3b 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -55655,10 +55655,10 @@ if.end4: ; preds = %lor.lhs.false, %ent i32 1986815856, label %sw.bb11 i32 1751347827, label %sw.epilog.sink.split i32 1986228851, label %sw.epilog.sink.split - i32 1751347822, label %sw.bb14 - i32 1986228846, label %sw.bb14 - i32 1751347046, label %sw.bb15 - i32 1986228070, label %sw.bb15 + i32 1936750959, label %sw.bb54 + i32 1935833455, label %sw.bb54 + i32 1936750963, label %sw.bb49 + i32 1935833459, label %sw.bb49 i32 2020108148, label %sw.bb16 i32 1668311156, label %sw.bb24 i32 1937011315, label %sw.bb37 @@ -55667,12 +55667,6 @@ if.end4: ; preds = %lor.lhs.false, %ent i32 1970168943, label %sw.bb43 i32 1935833203, label %sw.bb46 i32 1936750707, label %sw.bb46 - i32 1935833459, label %sw.bb49 - i32 1936750963, label %sw.bb49 - i32 1935833199, label %sw.bb53 - i32 1936750703, label %sw.bb53 - i32 1935833455, label %sw.bb54 - i32 1936750959, label %sw.bb54 ] sw.bb: ; preds = %if.end4, %if.end4 @@ -55769,12 +55763,6 @@ sw.bb11: ; preds = %if.end4 %16 = load i32, ptr %line_gap12, align 4 br label %sw.epilog.sink.split -sw.bb14: ; preds = %if.end4, %if.end4 - br label %sw.epilog.sink.split - -sw.bb15: ; preds = %if.end4, %if.end4 - br label %sw.epilog.sink.split - sw.bb16: ; preds = %if.end4 store i32 0, ptr %glyph, align 4 %klass.i.i = getelementptr inbounds nuw i8, ptr %font, i64 144 @@ -55928,9 +55916,6 @@ sw.bb49: ; preds = %if.end4, %if.end4 %div52 = sdiv i32 %mul51, 12 br label %sw.epilog.sink.split -sw.bb53: ; preds = %if.end4, %if.end4 - br label %sw.epilog.sink.split - sw.bb54: ; preds = %if.end4, %if.end4 %y_scale55 = getelementptr inbounds nuw i8, ptr %font, i64 44 %49 = load i32, ptr %y_scale55, align 4 @@ -55940,8 +55925,8 @@ sw.bb54: ; preds = %if.end4, %if.end4 sw.default: ; preds = %if.end4 br label %sw.epilog.sink.split -sw.epilog.sink.split: ; preds = %if.end4, %if.end4, %if.then.i.i.i54, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i50.hb_font_get_extents_for_direction.exit62_crit_edge, %if.then.i.i.i, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i.hb_font_get_extents_for_direction.exit_crit_edge, %sw.bb5, %sw.bb8, %sw.bb10, %sw.bb11, %sw.bb14, %sw.bb15, %sw.bb37, %sw.bb40, %sw.bb43, %sw.bb46, %sw.bb49, %sw.bb53, %sw.bb54, %sw.default, %if.else, %if.then22, %if.else32, %if.then30 - %add.sink = phi i32 [ %add, %if.then30 ], [ %div35, %if.else32 ], [ %28, %if.then22 ], [ %div, %if.else ], [ 0, %sw.default ], [ %div56, %sw.bb54 ], [ 0, %sw.bb53 ], [ %div52, %sw.bb49 ], [ %div48, %sw.bb46 ], [ %div45, %sw.bb43 ], [ %div42, %sw.bb40 ], [ %div39, %sw.bb37 ], [ 0, %sw.bb15 ], [ 0, %sw.bb14 ], [ %16, %sw.bb11 ], [ %15, %sw.bb10 ], [ %14, %sw.bb8 ], [ %7, %sw.bb5 ], [ %.pre89, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i.hb_font_get_extents_for_direction.exit_crit_edge ], [ %conv2.i.i.i, %if.then.i.i.i ], [ %.pre, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i50.hb_font_get_extents_for_direction.exit62_crit_edge ], [ %sub.i.i.i59, %if.then.i.i.i54 ], [ 1, %if.end4 ], [ 1, %if.end4 ] +sw.epilog.sink.split: ; preds = %if.end4, %if.end4, %if.then.i.i.i54, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i50.hb_font_get_extents_for_direction.exit62_crit_edge, %if.then.i.i.i, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i.hb_font_get_extents_for_direction.exit_crit_edge, %sw.bb5, %sw.bb8, %sw.bb10, %sw.bb11, %sw.bb37, %sw.bb40, %sw.bb43, %sw.bb46, %sw.bb49, %sw.bb54, %sw.default, %if.else, %if.then22, %if.else32, %if.then30 + %add.sink = phi i32 [ %add, %if.then30 ], [ %div35, %if.else32 ], [ %28, %if.then22 ], [ %div, %if.else ], [ 0, %sw.default ], [ %div56, %sw.bb54 ], [ %div52, %sw.bb49 ], [ %div48, %sw.bb46 ], [ %div45, %sw.bb43 ], [ %div42, %sw.bb40 ], [ %div39, %sw.bb37 ], [ %16, %sw.bb11 ], [ %15, %sw.bb10 ], [ %14, %sw.bb8 ], [ %7, %sw.bb5 ], [ %.pre89, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i.hb_font_get_extents_for_direction.exit_crit_edge ], [ %conv2.i.i.i, %if.then.i.i.i ], [ %.pre, %_ZN9hb_font_t18get_font_h_extentsEP17hb_font_extents_t.exit.i.i.i50.hb_font_get_extents_for_direction.exit62_crit_edge ], [ %sub.i.i.i59, %if.then.i.i.i54 ], [ 1, %if.end4 ], [ 1, %if.end4 ] store i32 %add.sink, ptr %position, align 4 br label %sw.epilog diff --git a/bench/hdf5/optimized/H5C.c.ll b/bench/hdf5/optimized/H5C.c.ll index aea6ddcb3dd..b8fc1d11c30 100644 --- a/bench/hdf5/optimized/H5C.c.ll +++ b/bench/hdf5/optimized/H5C.c.ll @@ -1032,7 +1032,7 @@ define range(i32 -1, 1) i32 @H5C_flush_cache(ptr noundef %0, i32 noundef %1) loc %47 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5C_flush_cache, i32 noundef 702, i64 noundef %45, i64 noundef %46, ptr noundef nonnull @.str.15) #8 br label %.loopexit -48: ; preds = %23, %27, %24, %37, %34, %23, %23, %20 +48: ; preds = %23, %23, %23, %27, %24, %37, %34, %20 %49 = tail call i32 @H5C__flush_ring(ptr noundef %0, i32 noundef %.02526, i32 noundef %1) #8 %50 = icmp slt i32 %49, 0 br i1 %50, label %51, label %18 diff --git a/bench/icu/optimized/regexcmp.ll b/bench/icu/optimized/regexcmp.ll index ddb97e77533..77d5778a00a 100644 --- a/bench/icu/optimized/regexcmp.ll +++ b/bench/icu/optimized/regexcmp.ll @@ -5849,9 +5849,9 @@ if.end19: ; preds = %_ZNK6icu_759UVector i8 40, label %sw.bb294 i8 25, label %sw.bb325 i8 26, label %sw.bb325 - i8 28, label %sw.bb349 - i8 29, label %sw.bb349 - i8 51, label %sw.bb350 + i8 28, label %sw.bb252 + i8 29, label %sw.bb252 + i8 51, label %sw.bb252 i8 37, label %sw.bb351 i8 44, label %sw.bb351 i8 38, label %sw.bb395 @@ -6321,7 +6321,7 @@ if.then248: ; preds = %_ZNK6icu_759UVector invoke void @_ZN6icu_759UVector3212setElementAtEii(ptr noundef nonnull align 8 dereferenceable(32) %forwardedLength, i32 noundef %currentLen.1, i32 noundef %and238) to label %for.inc396 unwind label %lpad.loopexit.split-lp.loopexit.split-lp.loopexit -sw.bb252: ; preds = %if.end19, %if.end19 +sw.bb252: ; preds = %if.end19, %if.end19, %if.end19, %if.end19, %if.end19 br label %for.inc396 sw.bb253: ; preds = %if.end19 @@ -6535,12 +6535,6 @@ if.end347: ; preds = %_ZNK6icu_759UVector %add348 = add nsw i32 %loc.1395, 3 br label %for.inc396 -sw.bb349: ; preds = %if.end19, %if.end19 - br label %for.inc396 - -sw.bb350: ; preds = %if.end19 - br label %for.inc396 - sw.bb351: ; preds = %if.end19, %if.end19 %cmp352 = icmp eq i32 %shr, 37 %cond = select i1 %cmp352, i32 2, i32 1 @@ -6638,11 +6632,11 @@ sw.default: ; preds = %if.end19 call void @abort() #15 unreachable -for.inc396: ; preds = %if.then374, %cond.true.i222, %sw.bb253, %cond.true.i202, %if.then240, %invoke.cont319, %sw.bb294.split, %invoke.cont286, %sw.bb269.split, %sw.bb257, %if.then265, %_ZNK6icu_759UVector3210elementAtiEi.exit236, %if.then248, %_ZNK6icu_759UVector3210elementAtiEi.exit216, %invoke.cont229.split, %sw.bb220.split, %if.end215.split, %sw.bb195.split, %invoke.cont189, %sw.bb169.split, %invoke.cont163, %sw.bb144.split, %invoke.cont138, %sw.bb121.split, %invoke.cont115, %sw.bb99.split, %invoke.cont93.split, %sw.bb85.split, %sw.bb72, %invoke.cont81, %sw.bb56, %invoke.cont68, %invoke.cont50.split, %sw.bb41.split, %invoke.cont35.split, %sw.bb31.split, %sw.bb252, %if.end347, %sw.bb349, %sw.bb350, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.then22, %sw.bb20, %if.then27, %sw.bb25 - %atStart.1 = phi i8 [ 0, %sw.bb350 ], [ 0, %sw.bb349 ], [ 0, %if.end347 ], [ 0, %sw.bb252 ], [ 1, %if.then27 ], [ 0, %sw.bb25 ], [ 1, %if.then22 ], [ 0, %sw.bb20 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ 0, %sw.bb31.split ], [ 0, %invoke.cont35.split ], [ 0, %sw.bb41.split ], [ 0, %invoke.cont50.split ], [ 0, %invoke.cont68 ], [ 0, %sw.bb56 ], [ 0, %invoke.cont81 ], [ 0, %sw.bb72 ], [ 0, %sw.bb85.split ], [ 0, %invoke.cont93.split ], [ 0, %sw.bb99.split ], [ 0, %invoke.cont115 ], [ 0, %sw.bb121.split ], [ 0, %invoke.cont138 ], [ 0, %sw.bb144.split ], [ 0, %invoke.cont163 ], [ 0, %sw.bb169.split ], [ 0, %invoke.cont189 ], [ 0, %sw.bb195.split ], [ 0, %if.end215.split ], [ 0, %sw.bb220.split ], [ 0, %invoke.cont229.split ], [ 0, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ 0, %if.then248 ], [ 0, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ 0, %if.then265 ], [ 0, %sw.bb257 ], [ 0, %sw.bb269.split ], [ 0, %invoke.cont286 ], [ 0, %sw.bb294.split ], [ 0, %invoke.cont319 ], [ 0, %if.then240 ], [ 0, %cond.true.i202 ], [ 0, %sw.bb253 ], [ 0, %cond.true.i222 ], [ %atStart.0392, %if.then374 ] - %numInitialStrings.14 = phi i32 [ %numInitialStrings.0393, %sw.bb350 ], [ %numInitialStrings.0393, %sw.bb349 ], [ %numInitialStrings.0393, %if.end347 ], [ %numInitialStrings.0393, %sw.bb252 ], [ %numInitialStrings.0393, %if.then27 ], [ %numInitialStrings.0393, %sw.bb25 ], [ %numInitialStrings.0393, %if.then22 ], [ %numInitialStrings.0393, %sw.bb20 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %sw.bb31.split ], [ %add37, %invoke.cont35.split ], [ %numInitialStrings.0393, %sw.bb41.split ], [ %add52, %invoke.cont50.split ], [ %add70, %invoke.cont68 ], [ %numInitialStrings.0393, %sw.bb56 ], [ %add83, %invoke.cont81 ], [ %numInitialStrings.0393, %sw.bb72 ], [ %numInitialStrings.0393, %sw.bb85.split ], [ %add95, %invoke.cont93.split ], [ %numInitialStrings.0393, %sw.bb99.split ], [ %add117, %invoke.cont115 ], [ %numInitialStrings.0393, %sw.bb121.split ], [ %add140, %invoke.cont138 ], [ %numInitialStrings.0393, %sw.bb144.split ], [ %add165, %invoke.cont163 ], [ %numInitialStrings.0393, %sw.bb169.split ], [ %add191, %invoke.cont189 ], [ %numInitialStrings.0393, %sw.bb195.split ], [ %add216, %if.end215.split ], [ %numInitialStrings.0393, %sw.bb220.split ], [ %add231, %invoke.cont229.split ], [ %numInitialStrings.0393, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %numInitialStrings.0393, %if.then248 ], [ %numInitialStrings.0393, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %numInitialStrings.0393, %if.then265 ], [ %numInitialStrings.0393, %sw.bb257 ], [ %numInitialStrings.0393, %sw.bb269.split ], [ %inc288, %invoke.cont286 ], [ %numInitialStrings.0393, %sw.bb294.split ], [ %add321, %invoke.cont319 ], [ %numInitialStrings.0393, %if.then240 ], [ %numInitialStrings.0393, %cond.true.i202 ], [ %numInitialStrings.0393, %sw.bb253 ], [ %numInitialStrings.0393, %cond.true.i222 ], [ %numInitialStrings.0393, %if.then374 ] - %currentLen.3 = phi i32 [ %currentLen.1, %sw.bb350 ], [ %currentLen.1, %sw.bb349 ], [ %currentLen.1, %if.end347 ], [ %currentLen.1, %sw.bb252 ], [ %currentLen.1, %if.then27 ], [ %currentLen.1, %sw.bb25 ], [ %currentLen.1, %if.then22 ], [ %currentLen.1, %sw.bb20 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %retval.0.i, %sw.bb31.split ], [ 1, %invoke.cont35.split ], [ %retval.0.i168, %sw.bb41.split ], [ 1, %invoke.cont50.split ], [ 0, %invoke.cont68 ], [ %currentLen.1, %sw.bb56 ], [ 0, %invoke.cont81 ], [ %currentLen.1, %sw.bb72 ], [ %retval.0.i172, %sw.bb85.split ], [ 1, %invoke.cont93.split ], [ %retval.0.i176, %sw.bb99.split ], [ 1, %invoke.cont115 ], [ %retval.0.i180, %sw.bb121.split ], [ 1, %invoke.cont138 ], [ %retval.0.i184, %sw.bb144.split ], [ 1, %invoke.cont163 ], [ %retval.0.i188, %sw.bb169.split ], [ 1, %invoke.cont189 ], [ %retval.0.i192, %sw.bb195.split ], [ 1, %if.end215.split ], [ %retval.0.i196, %sw.bb220.split ], [ 1, %invoke.cont229.split ], [ %currentLen.1, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %currentLen.1, %if.then248 ], [ %currentLen.1, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %currentLen.1, %if.then265 ], [ %currentLen.1, %sw.bb257 ], [ %retval.0.i250, %sw.bb269.split ], [ %cond.i241, %invoke.cont286 ], [ %retval.0.i267, %sw.bb294.split ], [ %cond.i258, %invoke.cont319 ], [ 0, %if.then240 ], [ %58, %cond.true.i202 ], [ 0, %sw.bb253 ], [ %62, %cond.true.i222 ], [ %currentLen.1, %if.then374 ] - %loc.4 = phi i32 [ %loc.1395, %sw.bb350 ], [ %loc.1395, %sw.bb349 ], [ %add348, %if.end347 ], [ %loc.1395, %sw.bb252 ], [ %loc.1395, %if.then27 ], [ %loc.1395, %sw.bb25 ], [ %loc.1395, %if.then22 ], [ %loc.1395, %sw.bb20 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %sw.bb31.split ], [ %loc.1395, %invoke.cont35.split ], [ %loc.1395, %sw.bb41.split ], [ %loc.1395, %invoke.cont50.split ], [ %loc.1395, %invoke.cont68 ], [ %loc.1395, %sw.bb56 ], [ %loc.1395, %invoke.cont81 ], [ %loc.1395, %sw.bb72 ], [ %loc.1395, %sw.bb85.split ], [ %loc.1395, %invoke.cont93.split ], [ %loc.1395, %sw.bb99.split ], [ %loc.1395, %invoke.cont115 ], [ %loc.1395, %sw.bb121.split ], [ %loc.1395, %invoke.cont138 ], [ %loc.1395, %sw.bb144.split ], [ %loc.1395, %invoke.cont163 ], [ %loc.1395, %sw.bb169.split ], [ %loc.1395, %invoke.cont189 ], [ %loc.1395, %sw.bb195.split ], [ %loc.1395, %if.end215.split ], [ %loc.1395, %sw.bb220.split ], [ %loc.1395, %invoke.cont229.split ], [ %loc.2, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %loc.2, %if.then248 ], [ %loc.1395, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %loc.1395, %if.then265 ], [ %loc.1395, %sw.bb257 ], [ %inc270, %sw.bb269.split ], [ %inc270, %invoke.cont286 ], [ %inc295, %sw.bb294.split ], [ %inc295, %invoke.cont319 ], [ %loc.2, %if.then240 ], [ %loc.2, %cond.true.i202 ], [ %loc.1395, %sw.bb253 ], [ %loc.1395, %cond.true.i222 ], [ %inc354, %if.then374 ] +for.inc396: ; preds = %if.then374, %cond.true.i222, %sw.bb253, %cond.true.i202, %if.then240, %invoke.cont319, %sw.bb294.split, %invoke.cont286, %sw.bb269.split, %sw.bb257, %if.then265, %_ZNK6icu_759UVector3210elementAtiEi.exit236, %if.then248, %_ZNK6icu_759UVector3210elementAtiEi.exit216, %invoke.cont229.split, %sw.bb220.split, %if.end215.split, %sw.bb195.split, %invoke.cont189, %sw.bb169.split, %invoke.cont163, %sw.bb144.split, %invoke.cont138, %sw.bb121.split, %invoke.cont115, %sw.bb99.split, %invoke.cont93.split, %sw.bb85.split, %sw.bb72, %invoke.cont81, %sw.bb56, %invoke.cont68, %invoke.cont50.split, %sw.bb41.split, %invoke.cont35.split, %sw.bb31.split, %sw.bb252, %if.end347, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.end19, %if.then22, %sw.bb20, %if.then27, %sw.bb25 + %atStart.1 = phi i8 [ 0, %if.end347 ], [ 0, %sw.bb252 ], [ 1, %if.then27 ], [ 0, %sw.bb25 ], [ 1, %if.then22 ], [ 0, %sw.bb20 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ %atStart.0392, %if.end19 ], [ 0, %sw.bb31.split ], [ 0, %invoke.cont35.split ], [ 0, %sw.bb41.split ], [ 0, %invoke.cont50.split ], [ 0, %invoke.cont68 ], [ 0, %sw.bb56 ], [ 0, %invoke.cont81 ], [ 0, %sw.bb72 ], [ 0, %sw.bb85.split ], [ 0, %invoke.cont93.split ], [ 0, %sw.bb99.split ], [ 0, %invoke.cont115 ], [ 0, %sw.bb121.split ], [ 0, %invoke.cont138 ], [ 0, %sw.bb144.split ], [ 0, %invoke.cont163 ], [ 0, %sw.bb169.split ], [ 0, %invoke.cont189 ], [ 0, %sw.bb195.split ], [ 0, %if.end215.split ], [ 0, %sw.bb220.split ], [ 0, %invoke.cont229.split ], [ 0, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ 0, %if.then248 ], [ 0, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ 0, %if.then265 ], [ 0, %sw.bb257 ], [ 0, %sw.bb269.split ], [ 0, %invoke.cont286 ], [ 0, %sw.bb294.split ], [ 0, %invoke.cont319 ], [ 0, %if.then240 ], [ 0, %cond.true.i202 ], [ 0, %sw.bb253 ], [ 0, %cond.true.i222 ], [ %atStart.0392, %if.then374 ] + %numInitialStrings.14 = phi i32 [ %numInitialStrings.0393, %if.end347 ], [ %numInitialStrings.0393, %sw.bb252 ], [ %numInitialStrings.0393, %if.then27 ], [ %numInitialStrings.0393, %sw.bb25 ], [ %numInitialStrings.0393, %if.then22 ], [ %numInitialStrings.0393, %sw.bb20 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %if.end19 ], [ %numInitialStrings.0393, %sw.bb31.split ], [ %add37, %invoke.cont35.split ], [ %numInitialStrings.0393, %sw.bb41.split ], [ %add52, %invoke.cont50.split ], [ %add70, %invoke.cont68 ], [ %numInitialStrings.0393, %sw.bb56 ], [ %add83, %invoke.cont81 ], [ %numInitialStrings.0393, %sw.bb72 ], [ %numInitialStrings.0393, %sw.bb85.split ], [ %add95, %invoke.cont93.split ], [ %numInitialStrings.0393, %sw.bb99.split ], [ %add117, %invoke.cont115 ], [ %numInitialStrings.0393, %sw.bb121.split ], [ %add140, %invoke.cont138 ], [ %numInitialStrings.0393, %sw.bb144.split ], [ %add165, %invoke.cont163 ], [ %numInitialStrings.0393, %sw.bb169.split ], [ %add191, %invoke.cont189 ], [ %numInitialStrings.0393, %sw.bb195.split ], [ %add216, %if.end215.split ], [ %numInitialStrings.0393, %sw.bb220.split ], [ %add231, %invoke.cont229.split ], [ %numInitialStrings.0393, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %numInitialStrings.0393, %if.then248 ], [ %numInitialStrings.0393, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %numInitialStrings.0393, %if.then265 ], [ %numInitialStrings.0393, %sw.bb257 ], [ %numInitialStrings.0393, %sw.bb269.split ], [ %inc288, %invoke.cont286 ], [ %numInitialStrings.0393, %sw.bb294.split ], [ %add321, %invoke.cont319 ], [ %numInitialStrings.0393, %if.then240 ], [ %numInitialStrings.0393, %cond.true.i202 ], [ %numInitialStrings.0393, %sw.bb253 ], [ %numInitialStrings.0393, %cond.true.i222 ], [ %numInitialStrings.0393, %if.then374 ] + %currentLen.3 = phi i32 [ %currentLen.1, %if.end347 ], [ %currentLen.1, %sw.bb252 ], [ %currentLen.1, %if.then27 ], [ %currentLen.1, %sw.bb25 ], [ %currentLen.1, %if.then22 ], [ %currentLen.1, %sw.bb20 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %currentLen.1, %if.end19 ], [ %retval.0.i, %sw.bb31.split ], [ 1, %invoke.cont35.split ], [ %retval.0.i168, %sw.bb41.split ], [ 1, %invoke.cont50.split ], [ 0, %invoke.cont68 ], [ %currentLen.1, %sw.bb56 ], [ 0, %invoke.cont81 ], [ %currentLen.1, %sw.bb72 ], [ %retval.0.i172, %sw.bb85.split ], [ 1, %invoke.cont93.split ], [ %retval.0.i176, %sw.bb99.split ], [ 1, %invoke.cont115 ], [ %retval.0.i180, %sw.bb121.split ], [ 1, %invoke.cont138 ], [ %retval.0.i184, %sw.bb144.split ], [ 1, %invoke.cont163 ], [ %retval.0.i188, %sw.bb169.split ], [ 1, %invoke.cont189 ], [ %retval.0.i192, %sw.bb195.split ], [ 1, %if.end215.split ], [ %retval.0.i196, %sw.bb220.split ], [ 1, %invoke.cont229.split ], [ %currentLen.1, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %currentLen.1, %if.then248 ], [ %currentLen.1, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %currentLen.1, %if.then265 ], [ %currentLen.1, %sw.bb257 ], [ %retval.0.i250, %sw.bb269.split ], [ %cond.i241, %invoke.cont286 ], [ %retval.0.i267, %sw.bb294.split ], [ %cond.i258, %invoke.cont319 ], [ 0, %if.then240 ], [ %58, %cond.true.i202 ], [ 0, %sw.bb253 ], [ %62, %cond.true.i222 ], [ %currentLen.1, %if.then374 ] + %loc.4 = phi i32 [ %add348, %if.end347 ], [ %loc.1395, %sw.bb252 ], [ %loc.1395, %if.then27 ], [ %loc.1395, %sw.bb25 ], [ %loc.1395, %if.then22 ], [ %loc.1395, %sw.bb20 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %if.end19 ], [ %loc.1395, %sw.bb31.split ], [ %loc.1395, %invoke.cont35.split ], [ %loc.1395, %sw.bb41.split ], [ %loc.1395, %invoke.cont50.split ], [ %loc.1395, %invoke.cont68 ], [ %loc.1395, %sw.bb56 ], [ %loc.1395, %invoke.cont81 ], [ %loc.1395, %sw.bb72 ], [ %loc.1395, %sw.bb85.split ], [ %loc.1395, %invoke.cont93.split ], [ %loc.1395, %sw.bb99.split ], [ %loc.1395, %invoke.cont115 ], [ %loc.1395, %sw.bb121.split ], [ %loc.1395, %invoke.cont138 ], [ %loc.1395, %sw.bb144.split ], [ %loc.1395, %invoke.cont163 ], [ %loc.1395, %sw.bb169.split ], [ %loc.1395, %invoke.cont189 ], [ %loc.1395, %sw.bb195.split ], [ %loc.1395, %if.end215.split ], [ %loc.1395, %sw.bb220.split ], [ %loc.1395, %invoke.cont229.split ], [ %loc.2, %_ZNK6icu_759UVector3210elementAtiEi.exit216 ], [ %loc.2, %if.then248 ], [ %loc.1395, %_ZNK6icu_759UVector3210elementAtiEi.exit236 ], [ %loc.1395, %if.then265 ], [ %loc.1395, %sw.bb257 ], [ %inc270, %sw.bb269.split ], [ %inc270, %invoke.cont286 ], [ %inc295, %sw.bb294.split ], [ %inc295, %invoke.cont319 ], [ %loc.2, %if.then240 ], [ %loc.2, %cond.true.i202 ], [ %loc.1395, %sw.bb253 ], [ %loc.1395, %cond.true.i222 ], [ %inc354, %if.then374 ] %inc397 = add nsw i32 %loc.4, 1 %cmp7 = icmp slt i32 %inc397, %4 br i1 %cmp7, label %for.body8, label %for.end398.loopexit, !llvm.loop !19 diff --git a/bench/jq/optimized/regcomp.ll b/bench/jq/optimized/regcomp.ll index e0d70467de5..65322d91437 100644 --- a/bench/jq/optimized/regcomp.ll +++ b/bench/jq/optimized/regcomp.ll @@ -166,12 +166,12 @@ define dso_local void @onig_free_body(ptr noundef %0) local_unnamed_addr #5 { i32 7, label %23 i32 11, label %23 i32 12, label %23 - i32 50, label %31 - i32 48, label %31 - i32 47, label %31 - i32 49, label %31 i32 46, label %31 i32 45, label %31 + i32 49, label %31 + i32 47, label %31 + i32 48, label %31 + i32 50, label %31 i32 16, label %28 i32 19, label %28 i32 17, label %.sink.split.sink.split.i @@ -15010,14 +15010,14 @@ define internal fastcc i32 @compile_length_tree(ptr nocapture noundef readonly % tailrecurse: ; preds = %134, %3 %.tr = phi ptr [ %0, %3 ], [ %136, %134 ] %4 = load i32, ptr %.tr, align 8 - switch i32 %4, label %common.ret.loopexit142 [ + switch i32 %4, label %common.ret.loopexit141 [ i32 7, label %.preheader i32 8, label %.preheader94 i32 0, label %23 - i32 1, label %common.ret161 - i32 2, label %common.ret161 - i32 3, label %common.ret161 - i32 9, label %common.ret161 + i32 1, label %common.ret160 + i32 2, label %common.ret160 + i32 3, label %common.ret160 + i32 9, label %common.ret160 i32 4, label %51 i32 5, label %130 i32 6, label %217 @@ -15031,14 +15031,14 @@ tailrecurse: ; preds = %134, %3 %6 = load ptr, ptr %5, align 8 %7 = tail call fastcc i32 @compile_length_tree(ptr noundef %6, ptr noundef %1, ptr noundef %2) %8 = icmp slt i32 %7, 0 - br i1 %8, label %common.ret161, label %9 + br i1 %8, label %common.ret160, label %9 9: ; preds = %.preheader %10 = add nuw nsw i32 %7, %.038 %11 = getelementptr inbounds nuw i8, ptr %.040, i64 24 %12 = load ptr, ptr %11, align 8 %.not46 = icmp eq ptr %12, null - br i1 %.not46, label %common.ret161, label %.preheader, !llvm.loop !101 + br i1 %.not46, label %common.ret160, label %.preheader, !llvm.loop !101 .preheader94: ; preds = %tailrecurse, %.preheader94 %.141 = phi ptr [ %19, %.preheader94 ], [ %.tr, %tailrecurse ] @@ -15057,7 +15057,7 @@ tailrecurse: ; preds = %134, %3 20: ; preds = %.preheader94 %21 = shl nuw nsw i32 %.0, 1 %22 = add nsw i32 %16, %21 - br label %common.ret161 + br label %common.ret160 23: ; preds = %tailrecurse %24 = getelementptr inbounds nuw i8, ptr %.tr, i64 32 @@ -15073,7 +15073,7 @@ tailrecurse: ; preds = %134, %3 %.val = load ptr, ptr %30, align 8 %.not.i = icmp ugt ptr %28, %.val %spec.select.i = zext i1 %.not.i to i32 - br label %common.ret161 + br label %common.ret160 31: ; preds = %23 %32 = getelementptr i8, ptr %1, i64 96 @@ -15081,7 +15081,7 @@ tailrecurse: ; preds = %134, %3 %33 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 %34 = load ptr, ptr %33, align 8 %.not.i49 = icmp ugt ptr %28, %34 - br i1 %.not.i49, label %35, label %common.ret161 + br i1 %.not.i49, label %35, label %common.ret160 35: ; preds = %31 %36 = load ptr, ptr %.val48, align 8 @@ -15090,7 +15090,7 @@ tailrecurse: ; preds = %134, %3 %39 = getelementptr inbounds i8, ptr %34, i64 %38 %40 = load ptr, ptr %27, align 8 %41 = icmp ult ptr %39, %40 - br i1 %41, label %.lr.ph.i, label %common.ret161 + br i1 %41, label %.lr.ph.i, label %common.ret160 .lr.ph.i: ; preds = %35, %.lr.ph.i %.0334.i = phi i32 [ %.1.i, %.lr.ph.i ], [ 0, %35 ] @@ -15109,7 +15109,7 @@ tailrecurse: ; preds = %134, %3 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i %50 = add nuw nsw i32 %.1.i, 1 - br label %common.ret161 + br label %common.ret160 51: ; preds = %tailrecurse %52 = getelementptr inbounds nuw i8, ptr %.tr, i64 28 @@ -15121,11 +15121,11 @@ tailrecurse: ; preds = %134, %3 %58 = load ptr, ptr %57, align 8 %59 = tail call fastcc i32 @compile_length_tree(ptr noundef %58, ptr noundef %1, ptr noundef nonnull %2) %60 = icmp slt i32 %59, 0 - br i1 %60, label %common.ret161, label %61 + br i1 %60, label %common.ret160, label %61 61: ; preds = %51 %62 = icmp eq i32 %59, 0 - br i1 %62, label %common.ret161, label %63 + br i1 %62, label %common.ret160, label %63 63: ; preds = %61 %64 = getelementptr inbounds nuw i8, ptr %.tr, i64 32 @@ -15167,7 +15167,7 @@ is_anychar_infinite_greedy.exit: ; preds = %73 len_multiply_cmp.exit68: ; preds = %80, %is_anychar_infinite_greedy.exit %85 = mul nsw i32 %78, %59 %86 = add nsw i32 %85, 1 - br label %common.ret161 + br label %common.ret160 is_anychar_infinite_greedy.exit.thread: ; preds = %80, %73, %69, %66, %63 %.not67.i = icmp eq i32 %56, 0 @@ -15182,7 +15182,7 @@ is_anychar_infinite_greedy.exit.thread: ; preds = %80, %73, %69, %66, br i1 %91, label %.len_multiply_cmp.exit65_crit_edge, label %92 .len_multiply_cmp.exit65_crit_edge: ; preds = %88 - %.pre117 = mul nsw i32 %90, %59 + %.pre116 = mul nsw i32 %90, %59 br label %len_multiply_cmp.exit65 92: ; preds = %88 @@ -15194,14 +15194,14 @@ is_anychar_infinite_greedy.exit.thread: ; preds = %80, %73, %69, %66, br i1 %or.cond91, label %len_multiply_cmp.exit65.thread, label %len_multiply_cmp.exit65 len_multiply_cmp.exit65: ; preds = %.len_multiply_cmp.exit65_crit_edge, %92 - %.pre-phi = phi i32 [ %.pre117, %.len_multiply_cmp.exit65_crit_edge ], [ %95, %92 ] + %.pre-phi = phi i32 [ %.pre116, %.len_multiply_cmp.exit65_crit_edge ], [ %95, %92 ] %97 = icmp eq i32 %90, 1 %98 = icmp samesign ugt i32 %59, 10 %or.cond.i = and i1 %98, %97 %.060.i = select i1 %or.cond.i, i32 1, i32 %.pre-phi %99 = add nuw nsw i32 %spec.select.i51, 2 %100 = add nsw i32 %99, %.060.i - br label %common.ret161 + br label %common.ret160 len_multiply_cmp.exit65.thread: ; preds = %92 %101 = load i32, ptr %52, align 4 @@ -15219,20 +15219,20 @@ len_multiply_cmp.exit65.thread: ; preds = %92 %.not70.i = icmp eq i32 %107, 0 %108 = add nuw nsw i32 %59, 1 %spec.select75.i = select i1 %.not70.i, i32 0, i32 %108 - br label %common.ret161 + br label %common.ret160 .thread78: ; preds = %.thread br i1 %.not.i69, label %.thread81, label %109 109: ; preds = %.thread78 %110 = icmp eq i32 %103, 1 - %.pre118 = add nuw i32 %59, 1 + %.pre117 = add nuw i32 %59, 1 br i1 %110, label %len_multiply_cmp.exit, label %111 111: ; preds = %109 %112 = udiv i32 -1, %103 - %113 = icmp uge i32 %.pre118, %112 - %114 = mul i32 %103, %.pre118 + %113 = icmp uge i32 %.pre117, %112 + %114 = mul i32 %103, %.pre117 %115 = icmp ugt i32 %114, 10 %or.cond93 = or i1 %115, %113 br i1 %or.cond93, label %.thread80, label %len_multiply_cmp.exit @@ -15242,9 +15242,9 @@ len_multiply_cmp.exit: ; preds = %109, %111 %117 = load i32, ptr %116, align 8 %118 = mul nsw i32 %117, %59 %119 = sub nsw i32 %103, %117 - %120 = mul nsw i32 %119, %.pre118 + %120 = mul nsw i32 %119, %.pre117 %121 = add nsw i32 %120, %118 - br label %common.ret161 + br label %common.ret160 122: ; preds = %len_multiply_cmp.exit65.thread br i1 %.not.i69, label %.thread81, label %.thread80 @@ -15258,11 +15258,11 @@ len_multiply_cmp.exit: ; preds = %109, %111 %126 = getelementptr inbounds nuw i8, ptr %.tr, i64 24 %127 = load i32, ptr %126, align 8 %128 = icmp eq i32 %127, 0 - br i1 %128, label %common.ret161, label %.thread80 + br i1 %128, label %common.ret160, label %.thread80 .thread80: ; preds = %111, %125, %.thread81, %122 %129 = add nuw nsw i32 %spec.select.i51, 2 - br label %common.ret161 + br label %common.ret160 130: ; preds = %tailrecurse %131 = getelementptr inbounds nuw i8, ptr %.tr, i64 24 @@ -15285,7 +15285,7 @@ len_multiply_cmp.exit: ; preds = %109, %111 141: ; preds = %137 %142 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %140, ptr noundef %1, ptr noundef nonnull %2) %143 = icmp slt i32 %142, 0 - br i1 %143, label %common.ret161, label %._crit_edge + br i1 %143, label %common.ret160, label %._crit_edge ._crit_edge: ; preds = %141 %.pre = load i32, ptr %138, align 8 @@ -15294,7 +15294,7 @@ len_multiply_cmp.exit: ; preds = %109, %111 144: ; preds = %._crit_edge, %137 %145 = phi i32 [ %.pre, %._crit_edge ], [ %132, %137 ] %.087.i = phi i32 [ %142, %._crit_edge ], [ 0, %137 ] - switch i32 %145, label %common.ret161 [ + switch i32 %145, label %common.ret160 [ i32 0, label %146 i32 2, label %171 i32 3, label %195 @@ -15309,19 +15309,19 @@ len_multiply_cmp.exit: ; preds = %109, %111 %151 = load i32, ptr %150, align 4 %152 = and i32 %151, 128 %.not109.i = icmp eq i32 %152, 0 - %or.cond131 = select i1 %149, i1 true, i1 %.not109.i - br i1 %or.cond131, label %._crit_edge115, label %153 + %or.cond130 = select i1 %149, i1 true, i1 %.not109.i + br i1 %or.cond130, label %._crit_edge114, label %153 153: ; preds = %146 %154 = add nuw nsw i32 %.087.i, 3 - br label %common.ret161 + br label %common.ret160 -._crit_edge115: ; preds = %146 +._crit_edge114: ; preds = %146 %155 = and i32 %151, 128 %.not110.i = icmp eq i32 %155, 0 br i1 %.not110.i, label %169, label %156 -156: ; preds = %._crit_edge115 +156: ; preds = %._crit_edge114 %157 = add i32 %148, -1 %or.cond.i56 = icmp ult i32 %157, 31 %158 = getelementptr inbounds nuw i8, ptr %1, i64 72 @@ -15341,15 +15341,15 @@ len_multiply_cmp.exit: ; preds = %109, %111 165: ; preds = %163, %160 %166 = add nuw nsw i32 %.087.i, 5 - br label %common.ret161 + br label %common.ret160 167: ; preds = %163, %160 %168 = add nuw nsw i32 %.087.i, 5 - br label %common.ret161 + br label %common.ret160 -169: ; preds = %._crit_edge115 +169: ; preds = %._crit_edge114 %170 = add nuw nsw i32 %.087.i, 2 - br label %common.ret161 + br label %common.ret160 171: ; preds = %144 %172 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 @@ -15364,7 +15364,7 @@ len_multiply_cmp.exit: ; preds = %109, %111 %178 = load ptr, ptr %177, align 8 %179 = tail call fastcc i32 @compile_length_tree(ptr noundef %178, ptr noundef %1, ptr noundef nonnull %2) %180 = icmp slt i32 %179, 0 - br i1 %180, label %common.ret161, label %181 + br i1 %180, label %common.ret160, label %181 181: ; preds = %175 %182 = getelementptr inbounds nuw i8, ptr %176, i64 24 @@ -15380,17 +15380,17 @@ len_multiply_cmp.exit: ; preds = %109, %111 %189 = mul nsw i32 %183, %179 %190 = icmp slt i32 %189, 0 %or.cond = select i1 %188, i1 true, i1 %190 - br i1 %or.cond, label %common.ret161, label %onig_positive_int_multiply.exit.thread83 + br i1 %or.cond, label %common.ret160, label %onig_positive_int_multiply.exit.thread83 onig_positive_int_multiply.exit.thread83: ; preds = %186, %181 %.0.i7385 = phi i32 [ 0, %181 ], [ %189, %186 ] %191 = add nuw nsw i32 %179, 3 %192 = add nuw nsw i32 %191, %.0.i7385 - br label %common.ret161 + br label %common.ret160 193: ; preds = %171 %194 = add nuw nsw i32 %.087.i, 2 - br label %common.ret161 + br label %common.ret160 195: ; preds = %144 %196 = load ptr, ptr %139, align 8 @@ -15400,7 +15400,7 @@ onig_positive_int_multiply.exit.thread83: ; preds = %186, %181 %200 = load ptr, ptr %199, align 8 %201 = tail call fastcc i32 @compile_length_tree(ptr noundef %196, ptr noundef %1, ptr noundef nonnull %2) %202 = icmp slt i32 %201, 0 - br i1 %202, label %common.ret161, label %203 + br i1 %202, label %common.ret160, label %203 203: ; preds = %195 %204 = add nuw nsw i32 %201, 3 @@ -15410,7 +15410,7 @@ onig_positive_int_multiply.exit.thread83: ; preds = %186, %181 205: ; preds = %203 %206 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %198, ptr noundef %1, ptr noundef nonnull %2) %207 = icmp slt i32 %206, 0 - br i1 %207, label %common.ret161, label %208 + br i1 %207, label %common.ret160, label %208 208: ; preds = %205 %209 = add nuw nsw i32 %206, %204 @@ -15420,24 +15420,24 @@ onig_positive_int_multiply.exit.thread83: ; preds = %186, %181 %.2.i = phi i32 [ %209, %208 ], [ %204, %203 ] %211 = add nuw nsw i32 %.2.i, 2 %.not107.i = icmp eq ptr %200, null - br i1 %.not107.i, label %common.ret161, label %212 + br i1 %.not107.i, label %common.ret160, label %212 -common.ret.loopexit142: ; preds = %tailrecurse - br label %common.ret161 +common.ret.loopexit141: ; preds = %tailrecurse + br label %common.ret160 -common.ret161: ; preds = %186, %283, %279, %276, %271, %265, %259, %248, %242, %236, %228, %226, %223, %220, %216, %210, %205, %195, %193, %onig_positive_int_multiply.exit.thread83, %175, %167, %165, %153, %144, %141, %.thread80, %len_multiply_cmp.exit, %105, %61, %51, %125, %._crit_edge.loopexit.i, %35, %31, %20, %29, %len_multiply_cmp.exit68, %169, %len_multiply_cmp.exit65, %common.ret.loopexit142, %tailrecurse, %tailrecurse, %tailrecurse, %tailrecurse, %9, %.preheader, %212 - %common.ret161.op = phi i32 [ %spec.select.i55, %212 ], [ %spec.select.i, %29 ], [ %22, %20 ], [ 0, %31 ], [ 1, %35 ], [ %50, %._crit_edge.loopexit.i ], [ %59, %51 ], [ 0, %61 ], [ %129, %.thread80 ], [ %121, %len_multiply_cmp.exit ], [ %spec.select75.i, %105 ], [ %87, %125 ], [ %154, %153 ], [ %142, %141 ], [ %179, %175 ], [ %201, %195 ], [ %206, %205 ], [ -6, %144 ], [ %211, %210 ], [ %192, %onig_positive_int_multiply.exit.thread83 ], [ %194, %193 ], [ %166, %165 ], [ %168, %167 ], [ 0, %216 ], [ %221, %220 ], [ %243, %242 ], [ %266, %265 ], [ %260, %259 ], [ %237, %236 ], [ %229, %228 ], [ %227, %226 ], [ %spec.select.i61, %248 ], [ %spec.select53.i, %271 ], [ 1, %223 ], [ -6, %276 ], [ %282, %279 ], [ 1, %283 ], [ -201, %186 ], [ %86, %len_multiply_cmp.exit68 ], [ %170, %169 ], [ %100, %len_multiply_cmp.exit65 ], [ -6, %common.ret.loopexit142 ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ %10, %9 ], [ %7, %.preheader ] - ret i32 %common.ret161.op +common.ret160: ; preds = %186, %283, %279, %276, %271, %265, %259, %248, %242, %236, %228, %226, %223, %220, %216, %210, %205, %195, %193, %onig_positive_int_multiply.exit.thread83, %175, %167, %165, %153, %144, %141, %.thread80, %len_multiply_cmp.exit, %105, %61, %51, %125, %._crit_edge.loopexit.i, %35, %31, %20, %29, %len_multiply_cmp.exit68, %169, %len_multiply_cmp.exit65, %common.ret.loopexit141, %tailrecurse, %tailrecurse, %tailrecurse, %tailrecurse, %9, %.preheader, %212 + %common.ret160.op = phi i32 [ %spec.select.i55, %212 ], [ %spec.select.i, %29 ], [ %22, %20 ], [ 0, %31 ], [ 1, %35 ], [ %50, %._crit_edge.loopexit.i ], [ %59, %51 ], [ 0, %61 ], [ %129, %.thread80 ], [ %121, %len_multiply_cmp.exit ], [ %spec.select75.i, %105 ], [ %87, %125 ], [ %154, %153 ], [ %142, %141 ], [ %179, %175 ], [ %201, %195 ], [ %206, %205 ], [ -6, %144 ], [ %211, %210 ], [ %192, %onig_positive_int_multiply.exit.thread83 ], [ %194, %193 ], [ %166, %165 ], [ %168, %167 ], [ 0, %216 ], [ %221, %220 ], [ %243, %242 ], [ %266, %265 ], [ %260, %259 ], [ %237, %236 ], [ %229, %228 ], [ %227, %226 ], [ %spec.select.i61, %248 ], [ %spec.select53.i, %271 ], [ 1, %223 ], [ -6, %276 ], [ %282, %279 ], [ 1, %283 ], [ -201, %186 ], [ %86, %len_multiply_cmp.exit68 ], [ %170, %169 ], [ %100, %len_multiply_cmp.exit65 ], [ -6, %common.ret.loopexit141 ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ 1, %tailrecurse ], [ %10, %9 ], [ %7, %.preheader ] + ret i32 %common.ret160.op 212: ; preds = %210 %213 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %200, ptr noundef %1, ptr noundef nonnull %2) %214 = icmp slt i32 %213, 0 %215 = select i1 %214, i32 0, i32 %211 %spec.select.i55 = add nuw nsw i32 %215, %213 - br label %common.ret161 + br label %common.ret160 216: ; preds = %144 - br label %common.ret161 + br label %common.ret160 217: ; preds = %tailrecurse %218 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 @@ -15448,13 +15448,13 @@ common.ret161: ; preds = %186, %283, %279, %2 220: ; preds = %217 %221 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %219, ptr noundef %1, ptr noundef nonnull %2) %222 = icmp slt i32 %221, 0 - br i1 %222, label %common.ret161, label %223 + br i1 %222, label %common.ret160, label %223 223: ; preds = %220, %217 %.039.i = phi i32 [ %221, %220 ], [ 0, %217 ] %224 = getelementptr inbounds nuw i8, ptr %.tr, i64 24 %225 = load i32, ptr %224, align 8 - switch i32 %225, label %common.ret161 [ + switch i32 %225, label %common.ret160 [ i32 1, label %226 i32 2, label %228 i32 4, label %230 @@ -15463,11 +15463,11 @@ common.ret161: ; preds = %186, %283, %279, %2 226: ; preds = %223 %227 = add nuw nsw i32 %.039.i, 2 - br label %common.ret161 + br label %common.ret160 228: ; preds = %223 %229 = add nuw nsw i32 %.039.i, 5 - br label %common.ret161 + br label %common.ret160 230: ; preds = %223 %231 = getelementptr inbounds nuw i8, ptr %.tr, i64 28 @@ -15479,7 +15479,7 @@ common.ret161: ; preds = %186, %283, %279, %2 236: ; preds = %230 %237 = add nuw nsw i32 %.039.i, 3 - br label %common.ret161 + br label %common.ret160 238: ; preds = %230 %239 = add nuw nsw i32 %.039.i, 12 @@ -15491,7 +15491,7 @@ common.ret161: ; preds = %186, %283, %279, %2 242: ; preds = %238 %243 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %241, ptr noundef %1, ptr noundef nonnull %2) %244 = icmp slt i32 %243, 0 - br i1 %244, label %common.ret161, label %245 + br i1 %244, label %common.ret160, label %245 245: ; preds = %242 %246 = add nuw nsw i32 %.039.i, 13 @@ -15505,7 +15505,7 @@ common.ret161: ; preds = %186, %283, %279, %2 %251 = lshr i32 %250, 1 %252 = and i32 %251, 2 %spec.select.i61 = add nuw i32 %252, %.1.i60 - br label %common.ret161 + br label %common.ret160 253: ; preds = %223 %254 = getelementptr inbounds nuw i8, ptr %.tr, i64 28 @@ -15517,7 +15517,7 @@ common.ret161: ; preds = %186, %283, %279, %2 259: ; preds = %253 %260 = add nuw nsw i32 %.039.i, 6 - br label %common.ret161 + br label %common.ret160 261: ; preds = %253 %262 = add nuw nsw i32 %.039.i, 14 @@ -15529,7 +15529,7 @@ common.ret161: ; preds = %186, %283, %279, %2 265: ; preds = %261 %266 = tail call fastcc i32 @compile_length_tree(ptr noundef nonnull %264, ptr noundef %1, ptr noundef nonnull %2) %267 = icmp slt i32 %266, 0 - br i1 %267, label %common.ret161, label %268 + br i1 %267, label %common.ret160, label %268 268: ; preds = %265 %269 = add nuw nsw i32 %.039.i, 15 @@ -15543,12 +15543,12 @@ common.ret161: ; preds = %186, %283, %279, %2 %274 = lshr i32 %273, 1 %275 = and i32 %274, 2 %spec.select53.i = add nuw i32 %275, %.2.i58 - br label %common.ret161 + br label %common.ret160 276: ; preds = %tailrecurse %277 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 %278 = load i32, ptr %277, align 8 - switch i32 %278, label %common.ret161 [ + switch i32 %278, label %common.ret160 [ i32 0, label %283 i32 1, label %283 i32 2, label %283 @@ -15560,10 +15560,10 @@ common.ret161: ; preds = %186, %283, %279, %2 %281 = load i32, ptr %280, align 4 %switch.selectcmp.inv.i = icmp ugt i32 %281, 1 %282 = select i1 %switch.selectcmp.inv.i, i32 -6, i32 1 - br label %common.ret161 + br label %common.ret160 283: ; preds = %276, %276, %276 - br label %common.ret161 + br label %common.ret160 } ; Function Attrs: nounwind uwtable diff --git a/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll b/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll index 744ee2ec582..9204696a334 100644 --- a/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll +++ b/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll @@ -28518,15 +28518,15 @@ _ZN4just5color5Color6active17hcd18acd676d3d894E.llvm.11107275065492906757.exit.t call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %.sroa.0831) call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.11842) switch i8 %247, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit.thread [ - i8 0, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit - i8 2, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit - i8 11, label %1149 - i8 21, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit - i8 28, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit - i8 29, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit + i8 0, label %1149 + i8 2, label %1149 + i8 11, label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit + i8 21, label %1149 + i8 28, label %1149 + i8 29, label %1149 ] -1149: ; preds = %1148 +1149: ; preds = %1148, %1148, %1148, %1148, %1148 br label %_ZN4just5error5Error7context17hbad5eb4341891789E.exit 1150: ; preds = %1141 @@ -28666,10 +28666,10 @@ _ZN4just5color5Color6active17hcd18acd676d3d894E.llvm.11107275065492906757.exit.t call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) br label %.loopexit865 -_ZN4just5error5Error7context17hbad5eb4341891789E.exit: ; preds = %1148, %1148, %1148, %1148, %1148, %1149 - %.sink864 = phi i64 [ 16, %1149 ], [ 8, %1148 ], [ 8, %1148 ], [ 8, %1148 ], [ 8, %1148 ], [ 8, %1148 ] - %.sink863 = phi i64 [ 80, %1149 ], [ 72, %1148 ], [ 72, %1148 ], [ 72, %1148 ], [ 72, %1148 ], [ 72, %1148 ] - %.sink = phi i64 [ 81, %1149 ], [ 73, %1148 ], [ 73, %1148 ], [ 73, %1148 ], [ 73, %1148 ], [ 73, %1148 ] +_ZN4just5error5Error7context17hbad5eb4341891789E.exit: ; preds = %1148, %1149 + %.sink864 = phi i64 [ 8, %1149 ], [ 16, %1148 ] + %.sink863 = phi i64 [ 72, %1149 ], [ 80, %1148 ] + %.sink = phi i64 [ 73, %1149 ], [ 81, %1148 ] %.0.i = getelementptr inbounds nuw i8, ptr %0, i64 %.sink864 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.0831, ptr noundef nonnull align 8 dereferenceable(64) %.0.i, i64 64, i1 false), !alias.scope !3949 %.sroa.9832.0..0.i.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 %.sink863 diff --git a/bench/libquic/optimized/connect.c.ll b/bench/libquic/optimized/connect.c.ll index ea849a03d0a..3d6b80a8e5f 100644 --- a/bench/libquic/optimized/connect.c.ll +++ b/bench/libquic/optimized/connect.c.ll @@ -210,10 +210,8 @@ entry: i32 105, label %sw.bb35 i32 8, label %sw.bb47 i32 9, label %sw.bb49 - i32 10, label %sw.bb52 - i32 13, label %sw.bb52 - i32 11, label %sw.epilog i32 15, label %sw.bb55 + i32 11, label %sw.epilog ] sw.bb: ; preds = %entry @@ -325,9 +323,6 @@ sw.bb49: ; preds = %entry store i32 %conv50, ptr %shutdown51, align 4 br label %sw.epilog -sw.bb52: ; preds = %entry, %entry - br label %sw.epilog - sw.bb55: ; preds = %entry %info_callback = getelementptr inbounds nuw i8, ptr %0, i64 168 %10 = load ptr, ptr %info_callback, align 8 @@ -337,8 +332,8 @@ sw.bb55: ; preds = %entry sw.default: ; preds = %entry br label %sw.epilog -sw.epilog: ; preds = %if.then21, %if.then10, %sw.bb35, %if.then7, %sw.bb2, %entry, %if.end42, %sw.bb4, %if.then, %sw.default, %sw.bb55, %sw.bb52, %sw.bb49, %sw.bb47, %sw.bb33, %conn_close_socket.exit - %ret.0 = phi i64 [ 0, %sw.default ], [ 1, %sw.bb55 ], [ 1, %entry ], [ 0, %sw.bb52 ], [ 1, %sw.bb49 ], [ %conv48, %sw.bb47 ], [ %conv44, %if.end42 ], [ 1, %sw.bb33 ], [ 1, %sw.bb4 ], [ %conv, %if.then ], [ 0, %conn_close_socket.exit ], [ 1, %sw.bb2 ], [ %spec.select, %if.then10 ], [ %spec.select28, %if.then21 ], [ 0, %if.then7 ], [ -1, %sw.bb35 ] +sw.epilog: ; preds = %if.then21, %if.then10, %sw.bb35, %if.then7, %sw.bb2, %entry, %if.end42, %sw.bb4, %if.then, %sw.default, %sw.bb55, %sw.bb49, %sw.bb47, %sw.bb33, %conn_close_socket.exit + %ret.0 = phi i64 [ 0, %sw.default ], [ 1, %sw.bb55 ], [ 1, %entry ], [ 1, %sw.bb49 ], [ %conv48, %sw.bb47 ], [ %conv44, %if.end42 ], [ 1, %sw.bb33 ], [ 1, %sw.bb4 ], [ %conv, %if.then ], [ 0, %conn_close_socket.exit ], [ 1, %sw.bb2 ], [ %spec.select, %if.then10 ], [ %spec.select28, %if.then21 ], [ 0, %if.then7 ], [ -1, %sw.bb35 ] ret i64 %ret.0 } diff --git a/bench/libquic/optimized/fd.c.ll b/bench/libquic/optimized/fd.c.ll index 55e3aa08b2d..8be28c860b8 100644 --- a/bench/libquic/optimized/fd.c.ll +++ b/bench/libquic/optimized/fd.c.ll @@ -253,7 +253,7 @@ return: ; preds = %entry, %while.end ; Function Attrs: nounwind uwtable define internal i64 @fd_ctrl(ptr noundef %b, i32 noundef %cmd, i64 noundef %num, ptr noundef %ptr) #2 { entry: - switch i32 %cmd, label %return [ + switch i32 %cmd, label %sw.default [ i32 1, label %sw.bb i32 128, label %sw.bb1 i32 133, label %sw.bb3 @@ -262,7 +262,7 @@ entry: i32 105, label %sw.bb14 i32 8, label %sw.bb25 i32 9, label %sw.bb28 - i32 11, label %sw.bb32 + i32 11, label %return ] sw.bb: ; preds = %entry @@ -362,11 +362,11 @@ sw.bb28: ; preds = %entry store i32 %conv29, ptr %shutdown30, align 4 br label %return -sw.bb32: ; preds = %entry +sw.default: ; preds = %entry br label %return -return: ; preds = %fd_free.exit, %sw.bb25, %sw.bb28, %sw.bb32, %if.then, %sw.bb1, %if.then6, %sw.bb3, %sw.bb14, %entry, %if.end21 - %retval.0 = phi i64 [ %conv23, %if.end21 ], [ 1, %sw.bb32 ], [ 1, %sw.bb28 ], [ %conv27, %sw.bb25 ], [ 1, %fd_free.exit ], [ %call8, %if.then6 ], [ 0, %sw.bb3 ], [ %call, %if.then ], [ 0, %sw.bb1 ], [ -1, %sw.bb14 ], [ 0, %entry ] +return: ; preds = %fd_free.exit, %sw.bb25, %sw.bb28, %sw.default, %if.then, %sw.bb1, %if.then6, %sw.bb3, %sw.bb14, %entry, %if.end21 + %retval.0 = phi i64 [ %conv23, %if.end21 ], [ 0, %sw.default ], [ 1, %sw.bb28 ], [ %conv27, %sw.bb25 ], [ 1, %fd_free.exit ], [ %call8, %if.then6 ], [ 0, %sw.bb3 ], [ %call, %if.then ], [ 0, %sw.bb1 ], [ -1, %sw.bb14 ], [ 1, %entry ] ret i64 %retval.0 } diff --git a/bench/libquic/optimized/mul.c.ll b/bench/libquic/optimized/mul.c.ll index dfffcd964d0..1423079c37c 100644 --- a/bench/libquic/optimized/mul.c.ll +++ b/bench/libquic/optimized/mul.c.ll @@ -461,13 +461,13 @@ if.end17: ; preds = %if.end %add26 = add nsw i32 %mul25, %call24 switch i32 %add26, label %sw.epilog [ i32 -4, label %sw.bb - i32 -3, label %sw.bb37 + i32 -3, label %sw.epilog.thread i32 -2, label %sw.bb38 - i32 -1, label %sw.bb49 - i32 0, label %sw.bb49 - i32 1, label %sw.bb49 + i32 -1, label %sw.epilog.thread + i32 0, label %sw.epilog.thread + i32 1, label %sw.epilog.thread i32 2, label %sw.bb50 - i32 3, label %sw.bb37 + i32 3, label %sw.epilog.thread i32 4, label %sw.bb62 ] @@ -478,18 +478,12 @@ sw.bb: ; preds = %if.end17 tail call fastcc void @bn_sub_part_words(ptr noundef %arrayidx32, ptr noundef %b, ptr noundef %arrayidx22, i32 noundef %add1, i32 noundef %sub35) br label %sw.epilog -sw.bb37: ; preds = %if.end17, %if.end17 - br label %sw.epilog - sw.bb38: ; preds = %if.end17 tail call fastcc void @bn_sub_part_words(ptr noundef %t, ptr noundef %arrayidx19, ptr noundef %a, i32 noundef %add, i32 noundef %dna) %arrayidx44 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom18 tail call fastcc void @bn_sub_part_words(ptr noundef %arrayidx44, ptr noundef %arrayidx22, ptr noundef %b, i32 noundef %add1, i32 noundef %dnb) br label %sw.epilog -sw.bb49: ; preds = %if.end17, %if.end17, %if.end17 - br label %sw.epilog - sw.bb50: ; preds = %if.end17 tail call fastcc void @bn_sub_part_words(ptr noundef %t, ptr noundef %a, ptr noundef %arrayidx19, i32 noundef %add, i32 noundef %sub20) %arrayidx56 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom18 @@ -503,107 +497,129 @@ sw.bb62: ; preds = %if.end17 tail call fastcc void @bn_sub_part_words(ptr noundef %arrayidx68, ptr noundef %arrayidx22, ptr noundef %b, i32 noundef %add1, i32 noundef %dnb) br label %sw.epilog -sw.epilog: ; preds = %sw.bb62, %sw.bb50, %sw.bb49, %sw.bb38, %sw.bb37, %sw.bb, %if.end17 - %tobool150.not = phi i1 [ true, %if.end17 ], [ true, %sw.bb62 ], [ false, %sw.bb50 ], [ true, %sw.bb49 ], [ false, %sw.bb38 ], [ true, %sw.bb37 ], [ true, %sw.bb ] - %tobool126.not = phi i1 [ true, %if.end17 ], [ true, %sw.bb62 ], [ true, %sw.bb50 ], [ false, %sw.bb49 ], [ true, %sw.bb38 ], [ false, %sw.bb37 ], [ true, %sw.bb ] +sw.epilog: ; preds = %sw.bb62, %sw.bb50, %sw.bb38, %sw.bb, %if.end17 + %tobool150.not = phi i1 [ true, %if.end17 ], [ true, %sw.bb62 ], [ false, %sw.bb50 ], [ false, %sw.bb38 ], [ true, %sw.bb ] %2 = and i32 %n2, 2147483646 %cmp73 = icmp eq i32 %2, 8 %or.cond3 = and i1 %cmp73, %1 - br i1 %or.cond3, label %if.then81, label %if.else96 + br i1 %or.cond3, label %if.then82, label %if.else96 + +sw.epilog.thread: ; preds = %if.end17, %if.end17, %if.end17, %if.end17, %if.end17 + %3 = and i32 %n2, 2147483646 + %cmp73205 = icmp eq i32 %3, 8 + %or.cond3206 = and i1 %cmp73205, %1 + br i1 %or.cond3206, label %if.else, label %if.else96.thread -if.then81: ; preds = %sw.epilog +if.then82: ; preds = %sw.epilog %idxprom83 = zext nneg i32 %n2 to i64 %arrayidx84 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom83 - br i1 %tobool126.not, label %if.then82, label %if.else - -if.then82: ; preds = %if.then81 %arrayidx86 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom18 - tail call void @bn_mul_comba4(ptr noundef nonnull %arrayidx84, ptr noundef %t, ptr noundef nonnull %arrayidx86) #4 - br label %if.end89 - -if.else: ; preds = %if.then81 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %arrayidx84, i8 0, i64 64, i1 false) - br label %if.end89 + tail call void @bn_mul_comba4(ptr noundef %arrayidx84, ptr noundef %t, ptr noundef nonnull %arrayidx86) #4 + br label %if.end145 -if.end89: ; preds = %if.else, %if.then82 - tail call void @bn_mul_comba4(ptr noundef %r, ptr noundef %a, ptr noundef %b) #4 - %arrayidx91 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom83 - tail call void @bn_mul_comba4(ptr noundef nonnull %arrayidx91, ptr noundef nonnull %arrayidx19, ptr noundef nonnull %arrayidx22) #4 +if.else: ; preds = %sw.epilog.thread + %idxprom87 = zext nneg i32 %n2 to i64 + %arrayidx88 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom87 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %arrayidx88, i8 0, i64 64, i1 false) br label %if.end145 if.else96: ; preds = %sw.epilog %cmp97 = icmp eq i32 %2, 16 %or.cond5 = and i1 %cmp97, %1 - br i1 %or.cond5, label %if.then105, label %if.else122 + br i1 %or.cond5, label %if.then107, label %if.then127 -if.then105: ; preds = %if.else96 +if.else96.thread: ; preds = %sw.epilog.thread + %cmp97218 = icmp eq i32 %3, 16 + %or.cond5219 = and i1 %cmp97218, %1 + br i1 %or.cond5219, label %if.else112, label %if.else132 + +if.then107: ; preds = %if.else96 %idxprom108 = zext nneg i32 %n2 to i64 %arrayidx109 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom108 - br i1 %tobool126.not, label %if.then107, label %if.else112 - -if.then107: ; preds = %if.then105 %arrayidx111 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom18 - tail call void @bn_mul_comba8(ptr noundef nonnull %arrayidx109, ptr noundef %t, ptr noundef nonnull %arrayidx111) #4 + tail call void @bn_mul_comba8(ptr noundef %arrayidx109, ptr noundef %t, ptr noundef nonnull %arrayidx111) #4 br label %if.end115 -if.else112: ; preds = %if.then105 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %arrayidx109, i8 0, i64 128, i1 false) +if.else112: ; preds = %if.else96.thread + %idxprom113 = zext nneg i32 %n2 to i64 + %arrayidx114 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom113 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %arrayidx114, i8 0, i64 128, i1 false) br label %if.end115 if.end115: ; preds = %if.else112, %if.then107 + %idxprom116.pre-phi = phi i64 [ %idxprom113, %if.else112 ], [ %idxprom108, %if.then107 ] + %tobool150.not208222226 = phi i1 [ true, %if.else112 ], [ %tobool150.not, %if.then107 ] tail call void @bn_mul_comba8(ptr noundef %r, ptr noundef %a, ptr noundef %b) #4 - %arrayidx117 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom108 - tail call void @bn_mul_comba8(ptr noundef nonnull %arrayidx117, ptr noundef nonnull %arrayidx19, ptr noundef nonnull %arrayidx22) #4 - br label %if.end145 - -if.else122: ; preds = %if.else96 - %mul123 = shl nuw nsw i32 %n2, 1 - %idxprom124 = zext nneg i32 %mul123 to i64 - %arrayidx125 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom124 + %arrayidx117 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom116.pre-phi + tail call void @bn_mul_comba8(ptr noundef %arrayidx117, ptr noundef nonnull %arrayidx19, ptr noundef nonnull %arrayidx22) #4 + %call148239 = tail call i64 @bn_add_words(ptr noundef %t, ptr noundef %r, ptr noundef %arrayidx117, i32 noundef %n2) #4 + %conv149240 = trunc i64 %call148239 to i32 + br i1 %tobool150.not208222226, label %if.else159, label %if.then151 + +if.then127: ; preds = %if.else96 + %mul123230 = shl nuw nsw i32 %n2, 1 + %idxprom124231 = zext nneg i32 %mul123230 to i64 + %arrayidx125232 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom124231 %idxprom128 = zext nneg i32 %n2 to i64 %arrayidx129 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom128 - br i1 %tobool126.not, label %if.then127, label %if.else132 - -if.then127: ; preds = %if.else122 %arrayidx131 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom18 - tail call fastcc void @bn_mul_recursive(ptr noundef nonnull %arrayidx129, ptr noundef %t, ptr noundef %arrayidx131, i32 noundef %div, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %arrayidx125) + tail call fastcc void @bn_mul_recursive(ptr noundef %arrayidx129, ptr noundef %t, ptr noundef %arrayidx131, i32 noundef %div, i32 noundef 0, i32 noundef 0, ptr noundef %arrayidx125232) br label %if.end137 -if.else132: ; preds = %if.else122 - %mul136 = shl nuw nsw i64 %idxprom128, 3 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %arrayidx129, i8 0, i64 %mul136, i1 false) +if.else132: ; preds = %if.else96.thread + %mul123 = shl nuw nsw i32 %n2, 1 + %idxprom124 = zext nneg i32 %mul123 to i64 + %arrayidx125 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom124 + %idxprom133 = zext nneg i32 %n2 to i64 + %arrayidx134 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom133 + %mul136 = shl nuw nsw i64 %idxprom133, 3 + tail call void @llvm.memset.p0.i64(ptr align 8 %arrayidx134, i8 0, i64 %mul136, i1 false) br label %if.end137 if.end137: ; preds = %if.else132, %if.then127 - tail call fastcc void @bn_mul_recursive(ptr noundef %r, ptr noundef %a, ptr noundef %b, i32 noundef %div, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %arrayidx125) - %arrayidx139 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom128 - tail call fastcc void @bn_mul_recursive(ptr noundef nonnull %arrayidx139, ptr noundef %arrayidx19, ptr noundef %arrayidx22, i32 noundef %div, i32 noundef %dna, i32 noundef %dnb, ptr noundef nonnull %arrayidx125) - br label %if.end145 - -if.end145: ; preds = %if.end115, %if.end137, %if.end89 - %idxprom146.pre-phi = phi i64 [ %idxprom108, %if.end115 ], [ %idxprom128, %if.end137 ], [ %idxprom83, %if.end89 ] - %arrayidx147 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom146.pre-phi - %call148 = tail call i64 @bn_add_words(ptr noundef %t, ptr noundef %r, ptr noundef %arrayidx147, i32 noundef %n2) #4 + %idxprom138.pre-phi = phi i64 [ %idxprom133, %if.else132 ], [ %idxprom128, %if.then127 ] + %arrayidx125235 = phi ptr [ %arrayidx125, %if.else132 ], [ %arrayidx125232, %if.then127 ] + %tobool150.not208223233 = phi i1 [ true, %if.else132 ], [ %tobool150.not, %if.then127 ] + tail call fastcc void @bn_mul_recursive(ptr noundef %r, ptr noundef %a, ptr noundef %b, i32 noundef %div, i32 noundef 0, i32 noundef 0, ptr noundef %arrayidx125235) + %arrayidx139 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom138.pre-phi + tail call fastcc void @bn_mul_recursive(ptr noundef %arrayidx139, ptr noundef %arrayidx19, ptr noundef %arrayidx22, i32 noundef %div, i32 noundef %dna, i32 noundef %dnb, ptr noundef %arrayidx125235) + %call148248 = tail call i64 @bn_add_words(ptr noundef %t, ptr noundef %r, ptr noundef %arrayidx139, i32 noundef %n2) #4 + %conv149249 = trunc i64 %call148248 to i32 + br i1 %tobool150.not208223233, label %if.else159, label %if.then151 + +if.end145: ; preds = %if.then82, %if.else + %idxprom90.pre-phi = phi i64 [ %idxprom83, %if.then82 ], [ %idxprom87, %if.else ] + %tobool150.not209214 = phi i1 [ %tobool150.not, %if.then82 ], [ true, %if.else ] + tail call void @bn_mul_comba4(ptr noundef %r, ptr noundef %a, ptr noundef %b) #4 + %arrayidx91 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom90.pre-phi + tail call void @bn_mul_comba4(ptr noundef %arrayidx91, ptr noundef nonnull %arrayidx19, ptr noundef nonnull %arrayidx22) #4 + %call148 = tail call i64 @bn_add_words(ptr noundef %t, ptr noundef %r, ptr noundef %arrayidx91, i32 noundef %n2) #4 %conv149 = trunc i64 %call148 to i32 - %arrayidx161 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom146.pre-phi - br i1 %tobool150.not, label %if.else159, label %if.then151 + br i1 %tobool150.not209214, label %if.else159, label %if.then151 -if.then151: ; preds = %if.end145 - %call156 = tail call i64 @bn_sub_words(ptr noundef %arrayidx161, ptr noundef %t, ptr noundef %arrayidx161, i32 noundef %n2) #4 +if.then151: ; preds = %if.end137, %if.end115, %if.end145 + %conv149244 = phi i32 [ %conv149240, %if.end115 ], [ %conv149, %if.end145 ], [ %conv149249, %if.end137 ] + %idxprom146243 = phi i64 [ %idxprom116.pre-phi, %if.end115 ], [ %idxprom90.pre-phi, %if.end145 ], [ %idxprom138.pre-phi, %if.end137 ] + %arrayidx153 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom146243 + %call156 = tail call i64 @bn_sub_words(ptr noundef %arrayidx153, ptr noundef %t, ptr noundef %arrayidx153, i32 noundef %n2) #4 %conv157 = trunc i64 %call156 to i32 - %sub158 = sub nsw i32 %conv149, %conv157 + %sub158 = sub nsw i32 %conv149244, %conv157 br label %if.end167 -if.else159: ; preds = %if.end145 +if.else159: ; preds = %if.end137, %if.end115, %if.end145 + %conv149245 = phi i32 [ %conv149240, %if.end115 ], [ %conv149, %if.end145 ], [ %conv149249, %if.end137 ] + %idxprom146241 = phi i64 [ %idxprom116.pre-phi, %if.end115 ], [ %idxprom90.pre-phi, %if.end145 ], [ %idxprom138.pre-phi, %if.end137 ] + %arrayidx161 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom146241 %call164 = tail call i64 @bn_add_words(ptr noundef %arrayidx161, ptr noundef %arrayidx161, ptr noundef %t, i32 noundef %n2) #4 %conv165 = trunc i64 %call164 to i32 - %add166 = add nsw i32 %conv165, %conv149 + %add166 = add nsw i32 %conv149245, %conv165 br label %if.end167 if.end167: ; preds = %if.else159, %if.then151 + %idxprom146242 = phi i64 [ %idxprom146243, %if.then151 ], [ %idxprom146241, %if.else159 ] %c1.0 = phi i32 [ %sub158, %if.then151 ], [ %add166, %if.else159 ] %arrayidx169 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom18 - %arrayidx173 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom146.pre-phi + %arrayidx173 = getelementptr inbounds nuw i64, ptr %t, i64 %idxprom146242 %call174 = tail call i64 @bn_add_words(ptr noundef %arrayidx169, ptr noundef %arrayidx169, ptr noundef %arrayidx173, i32 noundef %n2) #4 %conv175 = trunc i64 %call174 to i32 %add176 = add nsw i32 %c1.0, %conv175 @@ -614,9 +630,9 @@ if.then178: ; preds = %if.end167 %add179 = add nuw nsw i32 %div, %n2 %idxprom180 = zext nneg i32 %add179 to i64 %arrayidx181 = getelementptr inbounds nuw i64, ptr %r, i64 %idxprom180 - %3 = load i64, ptr %arrayidx181, align 8 + %4 = load i64, ptr %arrayidx181, align 8 %conv182 = sext i32 %add176 to i64 - %add183 = add i64 %3, %conv182 + %add183 = add i64 %4, %conv182 store i64 %add183, ptr %arrayidx181, align 8 %cmp185 = icmp ult i64 %add183, %conv182 br i1 %cmp185, label %do.body, label %if.end193 @@ -624,8 +640,8 @@ if.then178: ; preds = %if.end167 do.body: ; preds = %if.then178, %do.body %p.0 = phi ptr [ %incdec.ptr, %do.body ], [ %arrayidx181, %if.then178 ] %incdec.ptr = getelementptr inbounds nuw i8, ptr %p.0, i64 8 - %4 = load i64, ptr %incdec.ptr, align 8 - %add188 = add i64 %4, 1 + %5 = load i64, ptr %incdec.ptr, align 8 + %add188 = add i64 %5, 1 store i64 %add188, ptr %incdec.ptr, align 8 %cmp190 = icmp eq i64 %add188, 0 br i1 %cmp190, label %do.body, label %if.end193, !llvm.loop !9 diff --git a/bench/lief/optimized/psa_crypto.c.ll b/bench/lief/optimized/psa_crypto.c.ll index d34ef6c6905..f4cd9f4d60c 100644 --- a/bench/lief/optimized/psa_crypto.c.ll +++ b/bench/lief/optimized/psa_crypto.c.ll @@ -45,8 +45,8 @@ define hidden range(i32 -151, 1) i32 @mbedtls_to_psa_error(i32 noundef %0) local %4 = sub nsw i32 0, %3 %.not = icmp eq i32 %3, 0 %5 = select i1 %.not, i32 %0, i32 %4 - switch i32 %5, label %29 [ - i32 0, label %30 + switch i32 %5, label %19 [ + i32 0, label %20 i32 -32, label %6 i32 -34, label %6 i32 -96, label %7 @@ -56,154 +56,124 @@ define hidden range(i32 -151, 1) i32 @mbedtls_to_psa_error(i32 noundef %0) local i32 -104, label %7 i32 -106, label %8 i32 -108, label %9 - i32 -36, label %10 - i32 -38, label %10 - i32 -13, label %11 - i32 -15, label %12 - i32 -81, label %11 - i32 -84, label %13 - i32 -86, label %12 - i32 -24704, label %14 - i32 -24832, label %11 + i32 -36, label %6 + i32 -38, label %6 + i32 -13, label %10 + i32 -15, label %11 + i32 -81, label %10 + i32 -84, label %12 + i32 -86, label %11 + i32 -24704, label %6 + i32 -24832, label %10 i32 -24960, label %8 - i32 -25088, label %15 - i32 -25216, label %11 - i32 -25344, label %12 - i32 -25472, label %16 - i32 -52, label %17 - i32 -54, label %18 - i32 -56, label %18 - i32 -58, label %17 - i32 -50, label %14 - i32 -64, label %19 - i32 -61, label %19 - i32 -60, label %19 - i32 -18, label %12 + i32 -25088, label %13 + i32 -25216, label %10 + i32 -25344, label %11 + i32 -25472, label %14 + i32 -52, label %15 + i32 -54, label %6 + i32 -56, label %6 + i32 -58, label %15 + i32 -50, label %6 + i32 -64, label %15 + i32 -61, label %15 + i32 -60, label %15 + i32 -18, label %11 i32 -22, label %9 - i32 -20, label %11 - i32 -20608, label %14 - i32 -20736, label %11 + i32 -20, label %10 + i32 -20608, label %6 + i32 -20736, label %10 i32 -20864, label %8 - i32 -20992, label %20 - i32 -2, label %20 - i32 -4, label %11 - i32 -6, label %11 + i32 -20992, label %16 + i32 -2, label %16 + i32 -4, label %10 + i32 -6, label %10 i32 -8, label %9 - i32 -10, label %11 - i32 -12, label %11 - i32 -14, label %11 + i32 -10, label %10 + i32 -12, label %10 + i32 -14, label %10 i32 -16, label %8 i32 -16256, label %8 - i32 -16128, label %21 - i32 -16000, label %21 - i32 -15872, label %20 - i32 -15744, label %22 - i32 -15616, label %22 - i32 -15488, label %14 - i32 -15360, label %23 - i32 -15232, label %23 - i32 -15104, label %11 - i32 -14976, label %24 - i32 -14848, label %24 - i32 -14720, label %24 - i32 -14592, label %12 + i32 -16128, label %10 + i32 -16000, label %10 + i32 -15872, label %16 + i32 -15744, label %10 + i32 -15616, label %10 + i32 -15488, label %6 + i32 -15360, label %17 + i32 -15232, label %17 + i32 -15104, label %10 + i32 -14976, label %6 + i32 -14848, label %6 + i32 -14720, label %6 + i32 -14592, label %11 i32 -14464, label %9 - i32 -112, label %25 - i32 -114, label %14 - i32 -16512, label %11 - i32 -16640, label %15 - i32 -16768, label %25 - i32 -16896, label %11 - i32 -17024, label %26 - i32 -17152, label %26 - i32 -17280, label %12 + i32 -112, label %18 + i32 -114, label %6 + i32 -16512, label %10 + i32 -16640, label %13 + i32 -16768, label %18 + i32 -16896, label %10 + i32 -17024, label %14 + i32 -17152, label %14 + i32 -17280, label %11 i32 -17408, label %9 - i32 -17536, label %17 - i32 -20352, label %27 - i32 -19584, label %27 + i32 -17536, label %15 + i32 -20352, label %10 + i32 -19584, label %10 i32 -20224, label %9 - i32 -20096, label %14 - i32 -19456, label %28 - i32 -19968, label %28 + i32 -20096, label %6 + i32 -19456, label %11 + i32 -19968, label %11 i32 -19840, label %8 - i32 -19712, label %17 - i32 -110, label %16 + i32 -19712, label %15 + i32 -110, label %14 ] -6: ; preds = %1, %1 - br label %30 +6: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 + br label %20 7: ; preds = %1, %1, %1, %1, %1 - br label %30 + br label %20 8: ; preds = %1, %1, %1, %1, %1, %1 - br label %30 + br label %20 9: ; preds = %1, %1, %1, %1, %1, %1 - br label %30 + br label %20 -10: ; preds = %1, %1 - br label %30 +10: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 + br label %20 -11: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 - br label %30 +11: ; preds = %1, %1, %1, %1, %1, %1, %1, %1 + br label %20 -12: ; preds = %1, %1, %1, %1, %1, %1 - br label %30 +12: ; preds = %1 + br label %20 -13: ; preds = %1 - br label %30 +13: ; preds = %1, %1 + br label %20 -14: ; preds = %1, %1, %1, %1, %1, %1 - br label %30 +14: ; preds = %1, %1, %1, %1 + br label %20 -15: ; preds = %1, %1 - br label %30 +15: ; preds = %1, %1, %1, %1, %1, %1, %1 + br label %20 -16: ; preds = %1, %1 - br label %30 +16: ; preds = %1, %1, %1 + br label %20 -17: ; preds = %1, %1, %1, %1 - br label %30 +17: ; preds = %1, %1 + br label %20 18: ; preds = %1, %1 - br label %30 - -19: ; preds = %1, %1, %1 - br label %30 - -20: ; preds = %1, %1, %1 - br label %30 - -21: ; preds = %1, %1 - br label %30 - -22: ; preds = %1, %1 - br label %30 - -23: ; preds = %1, %1 - br label %30 - -24: ; preds = %1, %1, %1 - br label %30 - -25: ; preds = %1, %1 - br label %30 - -26: ; preds = %1, %1 - br label %30 - -27: ; preds = %1, %1 - br label %30 - -28: ; preds = %1, %1 - br label %30 + br label %20 -29: ; preds = %1 - br label %30 +19: ; preds = %1 + br label %20 -30: ; preds = %1, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6 - %.0 = phi i32 [ -132, %29 ], [ -149, %28 ], [ -135, %27 ], [ -151, %26 ], [ -147, %25 ], [ -134, %24 ], [ -133, %23 ], [ -135, %22 ], [ -135, %21 ], [ -146, %20 ], [ -148, %19 ], [ -134, %18 ], [ -148, %17 ], [ -151, %16 ], [ -150, %15 ], [ -134, %14 ], [ -137, %13 ], [ -149, %12 ], [ -135, %11 ], [ -134, %10 ], [ -138, %9 ], [ -141, %8 ], [ -135, %7 ], [ -134, %6 ], [ %5, %1 ] +20: ; preds = %1, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6 + %.0 = phi i32 [ -132, %19 ], [ -147, %18 ], [ -133, %17 ], [ -146, %16 ], [ -148, %15 ], [ -151, %14 ], [ -150, %13 ], [ -137, %12 ], [ -149, %11 ], [ -135, %10 ], [ -138, %9 ], [ -141, %8 ], [ -135, %7 ], [ -134, %6 ], [ %5, %1 ] ret i32 %.0 } diff --git a/bench/llama.cpp/optimized/ggml.c.ll b/bench/llama.cpp/optimized/ggml.c.ll index e6866d15322..ab8180619b5 100644 --- a/bench/llama.cpp/optimized/ggml.c.ll +++ b/bench/llama.cpp/optimized/ggml.c.ll @@ -17558,8 +17558,8 @@ entry: i32 45, label %sw.epilog118 i32 46, label %sw.epilog118 i32 47, label %sw.epilog118 - i32 48, label %sw.bb37 - i32 49, label %sw.bb37 + i32 48, label %sw.bb13 + i32 49, label %sw.bb13 i32 50, label %sw.epilog118 i32 51, label %sw.epilog118 i32 52, label %sw.epilog118 @@ -17616,7 +17616,7 @@ do.body: ; preds = %sw.bb2 sw.bb11: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %sw.epilog118 -sw.bb13: ; preds = %entry, %entry, %entry +sw.bb13: ; preds = %entry, %entry, %entry, %entry, %entry br label %sw.epilog118 sw.bb15: ; preds = %entry @@ -17637,9 +17637,6 @@ sw.bb15: ; preds = %entry %spec.select = select i1 %cmp17, i32 %cond, i32 %7 br label %sw.epilog118 -sw.bb37: ; preds = %entry, %entry - br label %sw.epilog118 - sw.bb44: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %sw.epilog118 @@ -17710,8 +17707,8 @@ do.body114: ; preds = %if.then106, %if.els tail call void @abort() #47 unreachable -sw.epilog118: ; preds = %sw.bb15, %sw.bb75, %sw.bb57, %sw.bb45, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %entry, %entry, %entry, %entry, %entry, %if.else83, %if.else65, %if.else, %sw.bb4, %sw.bb44, %sw.bb37, %sw.bb13, %sw.bb11, %sw.bb1 - %n_tasks.0 = phi i32 [ %.n_threads50, %if.else83 ], [ %.n_threads49, %if.else65 ], [ %.n_threads, %if.else ], [ 1, %sw.bb44 ], [ 1, %sw.bb37 ], [ 1, %sw.bb13 ], [ 1, %sw.bb11 ], [ %n_threads, %sw.bb4 ], [ 1, %sw.bb1 ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %sw.bb45 ], [ %n_threads, %sw.bb57 ], [ %n_threads, %sw.bb75 ], [ %spec.select, %sw.bb15 ] +sw.epilog118: ; preds = %sw.bb15, %sw.bb75, %sw.bb57, %sw.bb45, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %sw.bb2, %entry, %entry, %entry, %entry, %entry, %if.else83, %if.else65, %if.else, %sw.bb4, %sw.bb44, %sw.bb13, %sw.bb11, %sw.bb1 + %n_tasks.0 = phi i32 [ %.n_threads50, %if.else83 ], [ %.n_threads49, %if.else65 ], [ %.n_threads, %if.else ], [ 1, %sw.bb44 ], [ 1, %sw.bb13 ], [ 1, %sw.bb11 ], [ %n_threads, %sw.bb4 ], [ 1, %sw.bb1 ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ 1, %sw.bb2 ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %entry ], [ %n_threads, %sw.bb45 ], [ %n_threads, %sw.bb57 ], [ %n_threads, %sw.bb75 ], [ %spec.select, %sw.bb15 ] ret i32 %n_tasks.0 } diff --git a/bench/llvm/optimized/ConstantFold.cpp.ll b/bench/llvm/optimized/ConstantFold.cpp.ll index 6359456c41a..5d835c7cbe9 100644 --- a/bench/llvm/optimized/ConstantFold.cpp.ll +++ b/bench/llvm/optimized/ConstantFold.cpp.ll @@ -3932,29 +3932,26 @@ _ZN4llvm11Instruction13isAssociativeEj.exit: ; preds = %673, %640, %670, %6 i32 25, label %681 i32 26, label %681 i32 27, label %681 - i32 20, label %682 - i32 19, label %682 - i32 22, label %683 - i32 23, label %683 + i32 20, label %681 + i32 19, label %681 + i32 22, label %682 + i32 23, label %682 ] 679: ; preds = %678, %678 %680 = call noundef ptr @_ZN4llvm12ConstantExpr6getXorEPNS_8ConstantES2_(ptr noundef nonnull %.tr426490, ptr noundef nonnull %.tr427472) #10 br label %_ZN4llvm5APIntD2Ev.exit254 -681: ; preds = %678, %678, %678 +681: ; preds = %678, %678, %678, %678, %678 br label %_ZN4llvm5APIntD2Ev.exit254 682: ; preds = %678, %678 + %683 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4llvm5Value10getContextEv(ptr noundef nonnull align 8 dereferenceable(24) %.tr426490) #10 + %684 = call noundef ptr @_ZN4llvm11ConstantInt8getFalseERNS_11LLVMContextE(ptr noundef nonnull align 8 dereferenceable(8) %683) #10 br label %_ZN4llvm5APIntD2Ev.exit254 -683: ; preds = %678, %678 - %684 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4llvm5Value10getContextEv(ptr noundef nonnull align 8 dereferenceable(24) %.tr426490) #10 - %685 = call noundef ptr @_ZN4llvm11ConstantInt8getFalseERNS_11LLVMContextE(ptr noundef nonnull align 8 dereferenceable(8) %684) #10 - br label %_ZN4llvm5APIntD2Ev.exit254 - -_ZN4llvm5APIntD2Ev.exit254: ; preds = %40, %38, %36, %67, %65, %69, %.split569.us, %.split554.us, %.split548.us, %.thread403, %_ZNK4llvm11ConstantInt6isZeroEv.exit276, %548, %538, %535, %529, %520, %517, %511, %502, %499, %493, %487, %484, %_ZN4llvm5APIntD2Ev.exit270, %464, %461, %_ZN4llvm5APIntD2Ev.exit267, %441, %438, %_ZN4llvm5APIntD2Ev.exit264, %418, %415, %409, %400, %397, %391, %390, %387, %381, %372, %369, %363, %362, %359, %353, %352, %349, %_ZN4llvm5APIntD2Ev.exit256, %326, %323, %_ZN4llvm5APIntD2Ev.exit253, %291, %_ZNK4llvm11ConstantInt6isZeroEv.exit244, %215, %_ZNK4llvm11ConstantInt6isZeroEv.exit, %172, %161, %155, %_ZN4llvm11Instruction13isAssociativeEj.exit, %678, %591, %.split607.us, %_ZN4llvm5APIntD2Ev.exit248, %683, %682, %681, %679, %674, %662, %.loopexit, %593, %582, %539, %521, %503, %405, %377, %206, %201, %187, %164, %150, %146, %143, %139, %136, %132, %129, %126, %122, %118, %114, %110, %107, %94, %.loopexit428, %90, %.split539.us - %.0 = phi ptr [ %80, %.split539.us ], [ %669, %662 ], [ %685, %683 ], [ %.tr426490, %682 ], [ %.tr426490, %681 ], [ %680, %679 ], [ %675, %674 ], [ %541, %539 ], [ %523, %521 ], [ %505, %503 ], [ %408, %405 ], [ %380, %377 ], [ %583, %582 ], [ %599, %593 ], [ %.4, %.loopexit ], [ %.1, %_ZN4llvm5APIntD2Ev.exit248 ], [ %204, %201 ], [ %209, %206 ], [ %190, %187 ], [ %166, %164 ], [ %149, %146 ], [ %151, %150 ], [ %142, %139 ], [ %144, %143 ], [ %135, %132 ], [ %137, %136 ], [ %130, %129 ], [ %125, %122 ], [ %128, %126 ], [ %117, %114 ], [ %120, %118 ], [ %109, %107 ], [ %112, %110 ], [ %95, %94 ], [ %93, %.loopexit428 ], [ %91, %90 ], [ %293, %.split607.us ], [ null, %591 ], [ null, %678 ], [ null, %_ZN4llvm11Instruction13isAssociativeEj.exit ], [ %.us-phi592, %155 ], [ %.tr426491, %161 ], [ %.us-phi601, %172 ], [ %.us-phi601, %_ZNK4llvm11ConstantInt6isZeroEv.exit ], [ %.us-phi601, %215 ], [ %.us-phi601, %_ZNK4llvm11ConstantInt6isZeroEv.exit244 ], [ %.us-phi601, %291 ], [ %314, %_ZN4llvm5APIntD2Ev.exit253 ], [ %314, %323 ], [ %314, %326 ], [ %340, %_ZN4llvm5APIntD2Ev.exit256 ], [ %340, %349 ], [ %340, %352 ], [ %355, %353 ], [ %355, %359 ], [ %355, %362 ], [ %365, %363 ], [ %365, %369 ], [ %365, %372 ], [ %383, %381 ], [ %383, %387 ], [ %383, %390 ], [ %393, %391 ], [ %393, %397 ], [ %393, %400 ], [ %411, %409 ], [ %411, %415 ], [ %411, %418 ], [ %428, %_ZN4llvm5APIntD2Ev.exit264 ], [ %428, %438 ], [ %428, %441 ], [ %451, %_ZN4llvm5APIntD2Ev.exit267 ], [ %451, %461 ], [ %451, %464 ], [ %474, %_ZN4llvm5APIntD2Ev.exit270 ], [ %474, %484 ], [ %474, %487 ], [ %495, %493 ], [ %495, %499 ], [ %495, %502 ], [ %513, %511 ], [ %513, %517 ], [ %513, %520 ], [ %531, %529 ], [ %531, %535 ], [ %531, %538 ], [ %.tr426490, %548 ], [ %.tr426490, %_ZNK4llvm11ConstantInt6isZeroEv.exit276 ], [ %569, %.thread403 ], [ %.us-phi551, %.split548.us ], [ %.us-phi556, %.split554.us ], [ %.us-phi572, %.split569.us ], [ %1, %69 ], [ %2, %65 ], [ %1, %67 ], [ %.tr426.us, %40 ], [ %.tr427.us, %36 ], [ %.tr426.us, %38 ] +_ZN4llvm5APIntD2Ev.exit254: ; preds = %40, %38, %36, %67, %65, %69, %.split569.us, %.split554.us, %.split548.us, %.thread403, %_ZNK4llvm11ConstantInt6isZeroEv.exit276, %548, %538, %535, %529, %520, %517, %511, %502, %499, %493, %487, %484, %_ZN4llvm5APIntD2Ev.exit270, %464, %461, %_ZN4llvm5APIntD2Ev.exit267, %441, %438, %_ZN4llvm5APIntD2Ev.exit264, %418, %415, %409, %400, %397, %391, %390, %387, %381, %372, %369, %363, %362, %359, %353, %352, %349, %_ZN4llvm5APIntD2Ev.exit256, %326, %323, %_ZN4llvm5APIntD2Ev.exit253, %291, %_ZNK4llvm11ConstantInt6isZeroEv.exit244, %215, %_ZNK4llvm11ConstantInt6isZeroEv.exit, %172, %161, %155, %_ZN4llvm11Instruction13isAssociativeEj.exit, %678, %591, %.split607.us, %_ZN4llvm5APIntD2Ev.exit248, %682, %681, %679, %674, %662, %.loopexit, %593, %582, %539, %521, %503, %405, %377, %206, %201, %187, %164, %150, %146, %143, %139, %136, %132, %129, %126, %122, %118, %114, %110, %107, %94, %.loopexit428, %90, %.split539.us + %.0 = phi ptr [ %80, %.split539.us ], [ %669, %662 ], [ %684, %682 ], [ %.tr426490, %681 ], [ %680, %679 ], [ %675, %674 ], [ %541, %539 ], [ %523, %521 ], [ %505, %503 ], [ %408, %405 ], [ %380, %377 ], [ %583, %582 ], [ %599, %593 ], [ %.4, %.loopexit ], [ %.1, %_ZN4llvm5APIntD2Ev.exit248 ], [ %204, %201 ], [ %209, %206 ], [ %190, %187 ], [ %166, %164 ], [ %149, %146 ], [ %151, %150 ], [ %142, %139 ], [ %144, %143 ], [ %135, %132 ], [ %137, %136 ], [ %130, %129 ], [ %125, %122 ], [ %128, %126 ], [ %117, %114 ], [ %120, %118 ], [ %109, %107 ], [ %112, %110 ], [ %95, %94 ], [ %93, %.loopexit428 ], [ %91, %90 ], [ %293, %.split607.us ], [ null, %591 ], [ null, %678 ], [ null, %_ZN4llvm11Instruction13isAssociativeEj.exit ], [ %.us-phi592, %155 ], [ %.tr426491, %161 ], [ %.us-phi601, %172 ], [ %.us-phi601, %_ZNK4llvm11ConstantInt6isZeroEv.exit ], [ %.us-phi601, %215 ], [ %.us-phi601, %_ZNK4llvm11ConstantInt6isZeroEv.exit244 ], [ %.us-phi601, %291 ], [ %314, %_ZN4llvm5APIntD2Ev.exit253 ], [ %314, %323 ], [ %314, %326 ], [ %340, %_ZN4llvm5APIntD2Ev.exit256 ], [ %340, %349 ], [ %340, %352 ], [ %355, %353 ], [ %355, %359 ], [ %355, %362 ], [ %365, %363 ], [ %365, %369 ], [ %365, %372 ], [ %383, %381 ], [ %383, %387 ], [ %383, %390 ], [ %393, %391 ], [ %393, %397 ], [ %393, %400 ], [ %411, %409 ], [ %411, %415 ], [ %411, %418 ], [ %428, %_ZN4llvm5APIntD2Ev.exit264 ], [ %428, %438 ], [ %428, %441 ], [ %451, %_ZN4llvm5APIntD2Ev.exit267 ], [ %451, %461 ], [ %451, %464 ], [ %474, %_ZN4llvm5APIntD2Ev.exit270 ], [ %474, %484 ], [ %474, %487 ], [ %495, %493 ], [ %495, %499 ], [ %495, %502 ], [ %513, %511 ], [ %513, %517 ], [ %513, %520 ], [ %531, %529 ], [ %531, %535 ], [ %531, %538 ], [ %.tr426490, %548 ], [ %.tr426490, %_ZNK4llvm11ConstantInt6isZeroEv.exit276 ], [ %569, %.thread403 ], [ %.us-phi551, %.split548.us ], [ %.us-phi556, %.split554.us ], [ %.us-phi572, %.split569.us ], [ %1, %69 ], [ %2, %65 ], [ %1, %67 ], [ %.tr426.us, %40 ], [ %.tr427.us, %36 ], [ %.tr426.us, %38 ] ret ptr %.0 } diff --git a/bench/llvm/optimized/Decl.cpp.ll b/bench/llvm/optimized/Decl.cpp.ll index e1335e4bfa2..dae3a6a6529 100644 --- a/bench/llvm/optimized/Decl.cpp.ll +++ b/bench/llvm/optimized/Decl.cpp.ll @@ -7581,13 +7581,9 @@ define internal fastcc noundef zeroext i1 @_ZL14isRedeclarableN5clang4Decl4KindE ; Function Attrs: mustprogress nounwind uwtable define dso_local noundef zeroext i1 @_ZNK5clang9NamedDecl10hasLinkageEv(ptr noundef nonnull align 8 dereferenceable(48) %0) local_unnamed_addr #2 align 2 { -switch.lookup: - %1 = tail call noundef zeroext i8 @_ZNK5clang9NamedDecl16getFormalLinkageEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %switch.tableidx = add nuw nsw i8 %1, 63 - %switch.cast = trunc i8 %switch.tableidx to i6 - %switch.downshift = lshr i6 -2, %switch.cast - %switch.masked = trunc i6 %switch.downshift to i1 - ret i1 %switch.masked + %2 = tail call noundef zeroext i8 @_ZNK5clang9NamedDecl16getFormalLinkageEv(ptr noundef nonnull align 8 dereferenceable(48) %0) + %switch = icmp ne i8 %2, 1 + ret i1 %switch } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable diff --git a/bench/llvm/optimized/ExprConstant.cpp.ll b/bench/llvm/optimized/ExprConstant.cpp.ll index 6b37ede7f89..56866531c6d 100644 --- a/bench/llvm/optimized/ExprConstant.cpp.ll +++ b/bench/llvm/optimized/ExprConstant.cpp.ll @@ -10630,10 +10630,10 @@ define internal fastcc noundef zeroext i1 @_ZL14IsGlobalLValueN5clang7APValue10L i8 37, label %46 i8 39, label %47 i8 89, label %54 - i8 127, label %56 - i8 117, label %57 - i8 12, label %56 - i8 54, label %56 + i8 127, label %46 + i8 117, label %56 + i8 12, label %46 + i8 54, label %46 ] 29: ; preds = %27 @@ -10664,7 +10664,7 @@ define internal fastcc noundef zeroext i1 @_ZL14IsGlobalLValueN5clang7APValue10L %45 = icmp eq i32 %44, 3 br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit -46: ; preds = %27, %27, %27, %27 +46: ; preds = %27, %27, %27, %27, %27, %27, %27 br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit 47: ; preds = %27 @@ -10681,20 +10681,17 @@ define internal fastcc noundef zeroext i1 @_ZL14IsGlobalLValueN5clang7APValue10L %55 = call fastcc noundef zeroext i1 @_ZL10IsNoOpCallPKN5clang8CallExprE(ptr noundef %10) br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit -56: ; preds = %27, %27, %27 - br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit - -57: ; preds = %27 - %58 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %59 = load ptr, ptr %58, align 8 - %60 = getelementptr inbounds nuw i8, ptr %59, i64 112 - %61 = load i32, ptr %60, align 8 - %.not.i18 = icmp eq i32 %61, 0 - %62 = getelementptr inbounds nuw i8, ptr %59, i64 48 - %63 = load i16, ptr %62, align 8 - %64 = and i16 %63, 16384 - %65 = icmp eq i16 %64, 0 - %.not24 = select i1 %.not.i18, i1 %65, i1 false +56: ; preds = %27 + %57 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %58 = load ptr, ptr %57, align 8 + %59 = getelementptr inbounds nuw i8, ptr %58, i64 112 + %60 = load i32, ptr %59, align 8 + %.not.i18 = icmp eq i32 %60, 0 + %61 = getelementptr inbounds nuw i8, ptr %58, i64 48 + %62 = load i16, ptr %61, align 8 + %63 = and i16 %62, 16384 + %64 = icmp eq i16 %63, 0 + %.not24 = select i1 %.not.i18, i1 %64, i1 false br label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit switch.hole_check: ; preds = %20 @@ -10703,8 +10700,8 @@ switch.hole_check: ; preds = %20 %switch.lobit = trunc i16 %switch.shifted to i1 br i1 %switch.lobit, label %_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit, label %22 -_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit: ; preds = %switch.hole_check, %41, %37, %25, %22, %29, %32, %27, %2, %57, %56, %54, %47, %46, %17 - %.0 = phi i1 [ %19, %17 ], [ %.not24, %57 ], [ true, %56 ], [ %55, %54 ], [ %53, %47 ], [ true, %46 ], [ true, %2 ], [ false, %27 ], [ false, %29 ], [ %36, %32 ], [ %spec.select.i.i14, %22 ], [ true, %25 ], [ %45, %41 ], [ false, %37 ], [ true, %switch.hole_check ] +_ZN4llvm3isaIN5clang12FunctionDeclENS1_10MSGuidDeclEJNS1_25UnnamedGlobalConstantDeclEEPKNS1_9ValueDeclEEEbRKT2_.exit: ; preds = %switch.hole_check, %41, %37, %25, %22, %29, %32, %27, %2, %56, %54, %47, %46, %17 + %.0 = phi i1 [ %19, %17 ], [ %.not24, %56 ], [ %55, %54 ], [ %53, %47 ], [ true, %46 ], [ true, %2 ], [ false, %27 ], [ false, %29 ], [ %36, %32 ], [ %spec.select.i.i14, %22 ], [ true, %25 ], [ %45, %41 ], [ false, %37 ], [ true, %switch.hole_check ] ret i1 %.0 } diff --git a/bench/llvm/optimized/Instruction.cpp.ll b/bench/llvm/optimized/Instruction.cpp.ll index e513afb12ab..64c23630609 100644 --- a/bench/llvm/optimized/Instruction.cpp.ll +++ b/bench/llvm/optimized/Instruction.cpp.ll @@ -1346,25 +1346,23 @@ _ZN4llvm4User8operandsEv.exit: ; preds = %5, %8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define dso_local void @_ZN4llvm11Instruction20setHasNoUnsignedWrapEb(ptr nocapture noundef nonnull align 8 dereferenceable(72) %0, i1 noundef zeroext %1) local_unnamed_addr #6 align 2 { -_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit: - %2 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %3 = load i8, ptr %2, align 1 - %4 = select i1 %1, i8 2, i8 0 - %5 = and i8 %3, -3 - %6 = or disjoint i8 %5, %4 - store i8 %6, ptr %2, align 1 + %3 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %4 = load i8, ptr %3, align 1 + %5 = select i1 %1, i8 2, i8 0 + %6 = and i8 %4, -3 + %7 = or disjoint i8 %6, %5 + store i8 %7, ptr %3, align 1 ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable define dso_local void @_ZN4llvm11Instruction18setHasNoSignedWrapEb(ptr nocapture noundef nonnull align 8 dereferenceable(72) %0, i1 noundef zeroext %1) local_unnamed_addr #6 align 2 { -_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorENS_11InstructionEEEDcPT0_.exit: - %2 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %3 = load i8, ptr %2, align 1 - %4 = select i1 %1, i8 4, i8 0 - %5 = and i8 %3, -5 - %6 = or disjoint i8 %5, %4 - store i8 %6, ptr %2, align 1 + %3 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %4 = load i8, ptr %3, align 1 + %5 = select i1 %1, i8 4, i8 0 + %6 = and i8 %4, -5 + %7 = or disjoint i8 %6, %5 + store i8 %7, ptr %3, align 1 ret void } @@ -1392,7 +1390,6 @@ define dso_local void @_ZN4llvm11Instruction9setNonNegEb(ptr nocapture noundef n ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define dso_local noundef zeroext i1 @_ZNK4llvm11Instruction17hasNoUnsignedWrapEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(72) %0) local_unnamed_addr #7 align 2 { -_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorEKNS_11InstructionEEEDcPT0_.exit: %.0.in.in.in = getelementptr inbounds nuw i8, ptr %0, i64 1 %.0.in.in = load i8, ptr %.0.in.in.in, align 1 %.0.in = and i8 %.0.in.in, 2 @@ -1402,7 +1399,6 @@ _ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorEKNS_11InstructionEEEDcPT0_.exit ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable define dso_local noundef zeroext i1 @_ZNK4llvm11Instruction15hasNoSignedWrapEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(72) %0) local_unnamed_addr #7 align 2 { -_ZN4llvm8dyn_castINS_25OverflowingBinaryOperatorEKNS_11InstructionEEEDcPT0_.exit: %.0.in.in.in = getelementptr inbounds nuw i8, ptr %0, i64 1 %.0.in.in = load i8, ptr %.0.in.in.in, align 1 %.0.in = and i8 %.0.in.in, 4 @@ -1441,12 +1437,12 @@ define dso_local void @_ZN4llvm11Instruction25dropPoisonGeneratingFlagsEv(ptr no i8 55, label %3 i8 58, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split i8 63, label %4 - i8 72, label %5 - i8 68, label %5 - i8 67, label %6 + i8 72, label %3 + i8 68, label %3 + i8 67, label %5 ] -3: ; preds = %1, %1, %1, %1 +3: ; preds = %1, %1, %1, %1, %1, %1 br label %thread-pre-split.thread.sink.split 4: ; preds = %1 @@ -1454,28 +1450,25 @@ define dso_local void @_ZN4llvm11Instruction25dropPoisonGeneratingFlagsEv(ptr no %.pr.pre = load i8, ptr %0, align 8 br label %thread-pre-split -5: ; preds = %1, %1 - br label %thread-pre-split.thread.sink.split - -6: ; preds = %1 +5: ; preds = %1 br label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split thread-pre-split: ; preds = %4, %1 - %7 = phi i8 [ %2, %1 ], [ %.pr.pre, %4 ] - %8 = icmp ult i8 %7, 29 - br i1 %8, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3, label %thread-pre-split.thread - -thread-pre-split.thread.sink.split: ; preds = %1, %1, %1, %1, %3, %5 - %.sink11 = phi i8 [ -3, %5 ], [ -3, %3 ], [ -7, %1 ], [ -7, %1 ], [ -7, %1 ], [ -7, %1 ] - %9 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %10 = load i8, ptr %9, align 1 - %11 = and i8 %10, %.sink11 - store i8 %11, ptr %9, align 1 + %6 = phi i8 [ %2, %1 ], [ %.pr.pre, %4 ] + %7 = icmp ult i8 %6, 29 + br i1 %7, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3, label %thread-pre-split.thread + +thread-pre-split.thread.sink.split: ; preds = %1, %1, %1, %1, %3 + %.sink11 = phi i8 [ -3, %3 ], [ -7, %1 ], [ -7, %1 ], [ -7, %1 ], [ -7, %1 ] + %8 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %9 = load i8, ptr %8, align 1 + %10 = and i8 %9, %.sink11 + store i8 %10, ptr %8, align 1 br label %thread-pre-split.thread thread-pre-split.thread: ; preds = %thread-pre-split.thread.sink.split, %thread-pre-split - %12 = phi i8 [ %7, %thread-pre-split ], [ %2, %thread-pre-split.thread.sink.split ] - switch i8 %12, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3 [ + %11 = phi i8 [ %6, %thread-pre-split ], [ %2, %thread-pre-split.thread.sink.split ] + switch i8 %11, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3 [ i8 41, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split i8 43, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split i8 45, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split @@ -1483,65 +1476,65 @@ thread-pre-split.thread: ; preds = %thread-pre-split.th i8 50, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split i8 53, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split i8 83, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split - i8 84, label %13 - i8 86, label %13 - i8 85, label %13 + i8 84, label %12 + i8 86, label %12 + i8 85, label %12 ] -13: ; preds = %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %15 +12: ; preds = %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread + %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %14 -15: ; preds = %15, %13 - %.09.in.i.i.i.i.i.i.i.i = phi ptr [ %14, %13 ], [ %20, %15 ] +14: ; preds = %14, %12 + %.09.in.i.i.i.i.i.i.i.i = phi ptr [ %13, %12 ], [ %19, %14 ] %.09.i.i.i.i.i.i.i.i = load ptr, ptr %.09.in.i.i.i.i.i.i.i.i, align 8 - %16 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 8 - %17 = load i32, ptr %16, align 8 - %18 = and i32 %17, 255 - %19 = icmp ne i32 %18, 16 + %15 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 8 + %16 = load i32, ptr %15, align 8 + %17 = and i32 %16, 255 + %18 = icmp ne i32 %17, 16 %.not1216.i.i.i.i.i.i.i.i = icmp eq ptr %.09.i.i.i.i.i.i.i.i, null - %.not12.i.i.i.i.i.i.i.i = or i1 %.not1216.i.i.i.i.i.i.i.i, %19 - %20 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 24 - br i1 %.not12.i.i.i.i.i.i.i.i, label %21, label %15, !llvm.loop !6 + %.not12.i.i.i.i.i.i.i.i = or i1 %.not1216.i.i.i.i.i.i.i.i, %18 + %19 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 24 + br i1 %.not12.i.i.i.i.i.i.i.i, label %20, label %14, !llvm.loop !6 -21: ; preds = %15 - %22 = add nsw i32 %18, -17 - %spec.select.i.i.i.i.i.i.i.i.i.i.i = icmp ult i32 %22, 2 - br i1 %spec.select.i.i.i.i.i.i.i.i.i.i.i, label %23, label %_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i +20: ; preds = %14 + %21 = add nsw i32 %17, -17 + %spec.select.i.i.i.i.i.i.i.i.i.i.i = icmp ult i32 %21, 2 + br i1 %spec.select.i.i.i.i.i.i.i.i.i.i.i, label %22, label %_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i -23: ; preds = %21 - %24 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 16 +22: ; preds = %20 + %23 = getelementptr inbounds nuw i8, ptr %.09.i.i.i.i.i.i.i.i, i64 16 + %24 = load ptr, ptr %23, align 8 %25 = load ptr, ptr %24, align 8 - %26 = load ptr, ptr %25, align 8 - %.phi.trans.insert.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %26, i64 8 + %.phi.trans.insert.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %25, i64 8 %.pre.i.i.i.i.i.i.i.i.i = load i32, ptr %.phi.trans.insert.i.i.i.i.i.i.i.i.i, align 8 br label %_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i -_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %23, %21 - %27 = phi i32 [ %.pre.i.i.i.i.i.i.i.i.i, %23 ], [ %17, %21 ] - %trunc.i.i.i.i.i.i.i.i.i.i.i = trunc i32 %27 to i8 - %28 = icmp ult i8 %trunc.i.i.i.i.i.i.i.i.i.i.i, 6 - br i1 %28, label %switch.hole_check, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit +_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i: ; preds = %22, %20 + %26 = phi i32 [ %.pre.i.i.i.i.i.i.i.i.i, %22 ], [ %16, %20 ] + %trunc.i.i.i.i.i.i.i.i.i.i.i = trunc i32 %26 to i8 + %27 = icmp ult i8 %trunc.i.i.i.i.i.i.i.i.i.i.i, 6 + br i1 %27, label %switch.hole_check, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit _ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i - %.old = and i32 %27, 253 + %.old = and i32 %26, 253 %spec.select.i.i14.i.i.i.i.i.i.i.i.old = icmp eq i32 %.old, 4 br i1 %spec.select.i.i14.i.i.i.i.i.i.i.i.old, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3 switch.hole_check: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit.i.i.i.i.i.i.i.i.i %switch.shifted = lshr i8 47, %trunc.i.i.i.i.i.i.i.i.i.i.i %switch.lobit = trunc i8 %switch.shifted to i1 - %29 = and i32 %27, 5 - %spec.select.i.i14.i.i.i.i.i.i.i.i = icmp eq i32 %29, 4 + %28 = and i32 %26, 5 + %spec.select.i.i14.i.i.i.i.i.i.i.i = icmp eq i32 %28, 4 %or.cond = or i1 %spec.select.i.i14.i.i.i.i.i.i.i.i, %switch.lobit br i1 %or.cond, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split, label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3 -_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split: ; preds = %switch.hole_check, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %1, %6 - %.sink14 = phi i8 [ -7, %6 ], [ -3, %1 ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit ], [ -13, %switch.hole_check ] - %30 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %31 = load i8, ptr %30, align 1 - %32 = and i8 %31, %.sink14 - store i8 %32, ptr %30, align 1 +_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split: ; preds = %switch.hole_check, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %thread-pre-split.thread, %1, %5 + %.sink14 = phi i8 [ -7, %5 ], [ -3, %1 ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %thread-pre-split.thread ], [ -13, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit ], [ -13, %switch.hole_check ] + %29 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %30 = load i8, ptr %29, align 1 + %31 = and i8 %30, %.sink14 + store i8 %31, ptr %29, align 1 br label %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3 _ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3: ; preds = %switch.hole_check, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit.thread3.sink.split, %thread-pre-split.thread, %thread-pre-split, %_ZN4llvm3isaINS_14FPMathOperatorEPNS_11InstructionEEEbRKT0_.exit diff --git a/bench/llvm/optimized/LowerTypeTests.cpp.ll b/bench/llvm/optimized/LowerTypeTests.cpp.ll index c6705eac34a..c2f802c4636 100644 --- a/bench/llvm/optimized/LowerTypeTests.cpp.ll +++ b/bench/llvm/optimized/LowerTypeTests.cpp.ll @@ -40872,15 +40872,15 @@ _ZNSt8optionalIN4llvm13ConstantRangeEED2Ev.exit: ; preds = %_ZNSt8optionalIN4ll define internal fastcc noundef range(i32 4, 17) i32 @_ZN12_GLOBAL__N_120LowerTypeTestsModule21getJumpTableEntrySizeEv(ptr nocapture noundef nonnull align 8 dereferenceable(216) %0) unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 48 %3 = load i32, ptr %2, align 8 - switch i32 %3, label %57 [ + switch i32 %3, label %56 [ i32 37, label %4 i32 38, label %4 - i32 1, label %58 + i32 1, label %57 i32 35, label %15 i32 3, label %37 i32 27, label %55 i32 28, label %55 - i32 14, label %56 + i32 14, label %55 ] 4: ; preds = %1, %1 @@ -40904,16 +40904,16 @@ _ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_if %.0.in.i.i = select i1 %13, ptr %10, ptr %14 %.0.i.i = load i64, ptr %.0.in.i.i, align 8 %.not4 = icmp eq i64 %.0.i.i, 0 - br i1 %.not4, label %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread, label %58 + br i1 %.not4, label %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread, label %57 _ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread: ; preds = %4, %9, %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit - br label %58 + br label %57 15: ; preds = %1 %16 = getelementptr inbounds nuw i8, ptr %0, i64 41 %17 = load i8, ptr %16, align 1 %18 = trunc i8 %17 to i1 - br i1 %18, label %19, label %58 + br i1 %18, label %19, label %57 19: ; preds = %15 %20 = getelementptr inbounds nuw i8, ptr %0, i64 44 @@ -40954,7 +40954,7 @@ _ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit: ; pr %36 = phi i32 [ %21, %19 ], [ %.sink.i, %.sink.split.i ] %.not18 = icmp eq i32 %36, 0 %. = select i1 %.not18, i32 4, i32 8 - br label %58 + br label %57 37: ; preds = %1 %38 = getelementptr inbounds nuw i8, ptr %0, i64 44 @@ -40995,20 +40995,17 @@ _ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit14: ; %54 = phi i32 [ %39, %37 ], [ %.sink.i13, %.sink.split.i12 ] %.not17 = icmp eq i32 %54, 0 %.5 = select i1 %.not17, i32 4, i32 8 - br label %58 + br label %57 -55: ; preds = %1, %1 - br label %58 +55: ; preds = %1, %1, %1 + br label %57 56: ; preds = %1 - br label %58 - -57: ; preds = %1 tail call void @_ZN4llvm18report_fatal_errorEPKcb(ptr noundef nonnull @.str.163, i1 noundef zeroext true) #26 unreachable -58: ; preds = %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit14, %15, %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit, %1, %9, %56, %55, %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread - %.0 = phi i32 [ 8, %56 ], [ 8, %55 ], [ 8, %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread ], [ 16, %9 ], [ 4, %1 ], [ %., %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit ], [ 16, %15 ], [ %.5, %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit14 ] +57: ; preds = %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit14, %15, %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit, %1, %9, %55, %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread + %.0 = phi i32 [ 8, %55 ], [ 8, %_ZN4llvm7mdconst15extract_or_nullINS_11ConstantIntEPNS_8MetadataEEENSt9enable_ifIXsr6detail14IsValidPointerIT_T0_EE5valueEPS6_E4typeEOS7_.exit.thread ], [ 16, %9 ], [ 4, %1 ], [ %., %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit ], [ 16, %15 ], [ %.5, %_ZN12_GLOBAL__N_120LowerTypeTestsModule26hasBranchTargetEnforcementEv.exit14 ] ret i32 %.0 } diff --git a/bench/llvm/optimized/MasmParser.cpp.ll b/bench/llvm/optimized/MasmParser.cpp.ll index 73ab72e34d5..1ae71307b41 100644 --- a/bench/llvm/optimized/MasmParser.cpp.ll +++ b/bench/llvm/optimized/MasmParser.cpp.ll @@ -47141,7 +47141,7 @@ define internal fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser13parseB %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %15 -15: ; preds = %137, %4 +15: ; preds = %136, %4 %16 = load ptr, ptr %9, align 8 %17 = load i32, ptr %16, align 8 %18 = icmp eq i32 %17, 2 @@ -47477,76 +47477,73 @@ _ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1 i32 34, label %.sink.split.i.i55 i32 31, label %125 i32 29, label %126 - i32 36, label %127 - i32 42, label %127 + i32 36, label %126 + i32 42, label %126 i32 39, label %126 i32 40, label %126 - i32 43, label %128 + i32 43, label %127 i32 44, label %126 - i32 12, label %129 - i32 13, label %129 - i32 30, label %130 - i32 32, label %130 - i32 33, label %130 - i32 24, label %131 - i32 15, label %131 - i32 37, label %131 - i32 41, label %131 - i32 45, label %132 + i32 12, label %128 + i32 13, label %128 + i32 30, label %129 + i32 32, label %129 + i32 33, label %129 + i32 24, label %130 + i32 15, label %130 + i32 37, label %130 + i32 41, label %130 + i32 45, label %131 ] 125: ; preds = %122 br label %.sink.split.i.i55 -126: ; preds = %122, %122, %122, %122 +126: ; preds = %122, %122, %122, %122, %122, %122 br label %.sink.split.i.i55 -127: ; preds = %122, %122 - br label %.sink.split.i.i55 - -128: ; preds = %122 +127: ; preds = %122 br i1 %.not.i53, label %.sink.split.i.i55, label %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 -129: ; preds = %122, %122 +128: ; preds = %122, %122 br label %.sink.split.i.i55 -130: ; preds = %122, %122, %122 +129: ; preds = %122, %122, %122 br label %.sink.split.i.i55 -131: ; preds = %122, %122, %122, %122 +130: ; preds = %122, %122, %122, %122 br label %.sink.split.i.i55 -132: ; preds = %122 +131: ; preds = %122 br i1 %.not.i53, label %.sink.split.i.i55, label %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 -.sink.split.i.i55: ; preds = %132, %131, %130, %129, %128, %127, %126, %125, %122 - %.0.ph.i.i57 = phi i32 [ 6, %131 ], [ 5, %130 ], [ 4, %129 ], [ 3, %127 ], [ 3, %126 ], [ 1, %125 ], [ 2, %122 ], [ 3, %128 ], [ 6, %132 ] +.sink.split.i.i55: ; preds = %131, %130, %129, %128, %127, %126, %125, %122 + %.0.ph.i.i57 = phi i32 [ 6, %130 ], [ 5, %129 ], [ 4, %128 ], [ 3, %126 ], [ 1, %125 ], [ 2, %122 ], [ 3, %127 ], [ 6, %131 ] br label %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 -_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58: ; preds = %122, %128, %132, %.sink.split.i.i55 - %.0.i.i54 = phi i32 [ 0, %122 ], [ 0, %128 ], [ 0, %132 ], [ %.0.ph.i.i57, %.sink.split.i.i55 ] - %133 = icmp samesign ult i32 %.0.ph.i.i94, %.0.i.i54 - br i1 %133, label %134, label %137 - -134: ; preds = %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 - %135 = add nuw nsw i32 %.0.ph.i.i94, 1 - %136 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser13parseBinOpRHSEjRPKN4llvm6MCExprERNS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, i32 noundef %135, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) - br i1 %136, label %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread, label %137 - -137: ; preds = %134, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 - %138 = load ptr, ptr %2, align 8 - %139 = load ptr, ptr %6, align 8 - %140 = load ptr, ptr %0, align 8 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 48 - %142 = load ptr, ptr %141, align 8 - %143 = call noundef nonnull align 8 dereferenceable(2432) ptr %142(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 - %144 = call noundef ptr @_ZN4llvm12MCBinaryExpr6createENS0_6OpcodeEPKNS_6MCExprES4_RNS_9MCContextENS_5SMLocE(i32 noundef %.sink.i.i93, ptr noundef %138, ptr noundef %139, ptr noundef nonnull align 8 dereferenceable(2432) %143, ptr %8) #24 - store ptr %144, ptr %2, align 8 +_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58: ; preds = %122, %127, %131, %.sink.split.i.i55 + %.0.i.i54 = phi i32 [ 0, %122 ], [ 0, %127 ], [ 0, %131 ], [ %.0.ph.i.i57, %.sink.split.i.i55 ] + %132 = icmp samesign ult i32 %.0.ph.i.i94, %.0.i.i54 + br i1 %132, label %133, label %136 + +133: ; preds = %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 + %134 = add nuw nsw i32 %.0.ph.i.i94, 1 + %135 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_110MasmParser13parseBinOpRHSEjRPKN4llvm6MCExprERNS1_5SMLocE(ptr noundef nonnull align 8 dereferenceable(1144) %0, i32 noundef %134, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %3) + br i1 %135, label %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread, label %136 + +136: ; preds = %133, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit58 + %137 = load ptr, ptr %2, align 8 + %138 = load ptr, ptr %6, align 8 + %139 = load ptr, ptr %0, align 8 + %140 = getelementptr inbounds nuw i8, ptr %139, i64 48 + %141 = load ptr, ptr %140, align 8 + %142 = call noundef nonnull align 8 dereferenceable(2432) ptr %141(ptr noundef nonnull align 8 dereferenceable(1144) %0) #24 + %143 = call noundef ptr @_ZN4llvm12MCBinaryExpr6createENS0_6OpcodeEPKNS_6MCExprES4_RNS_9MCContextENS_5SMLocE(i32 noundef %.sink.i.i93, ptr noundef %137, ptr noundef %138, ptr noundef nonnull align 8 dereferenceable(2432) %142, ptr %8) #24 + store ptr %143, ptr %2, align 8 br label %15, !llvm.loop !1055 -_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread: ; preds = %_ZN4llvm12StringSwitchINS_8AsmToken9TokenKindES2_E9CaseLowerENS_13StringLiteralES2_.exit52, %110, %100, %select.unfold, %134, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread90, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit - %145 = phi i1 [ true, %134 ], [ true, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread90 ], [ false, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit ], [ false, %select.unfold ], [ false, %100 ], [ false, %110 ], [ false, %_ZN4llvm12StringSwitchINS_8AsmToken9TokenKindES2_E9CaseLowerENS_13StringLiteralES2_.exit52 ] - ret i1 %145 +_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread: ; preds = %_ZN4llvm12StringSwitchINS_8AsmToken9TokenKindES2_E9CaseLowerENS_13StringLiteralES2_.exit52, %110, %100, %select.unfold, %133, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread90, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit + %144 = phi i1 [ true, %133 ], [ true, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit.thread90 ], [ false, %_ZN12_GLOBAL__N_110MasmParser18getBinOpPrecedenceEN4llvm8AsmToken9TokenKindERNS1_12MCBinaryExpr6OpcodeE.exit ], [ false, %select.unfold ], [ false, %100 ], [ false, %110 ], [ false, %_ZN4llvm12StringSwitchINS_8AsmToken9TokenKindES2_E9CaseLowerENS_13StringLiteralES2_.exit52 ] + ret i1 %144 } declare noundef zeroext i1 @_ZNK4llvm6MCExpr18evaluateAsAbsoluteERl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 diff --git a/bench/llvm/optimized/SemaSystemZ.cpp.ll b/bench/llvm/optimized/SemaSystemZ.cpp.ll index b2d64b27522..278acd8531f 100644 --- a/bench/llvm/optimized/SemaSystemZ.cpp.ll +++ b/bench/llvm/optimized/SemaSystemZ.cpp.ll @@ -76,7 +76,7 @@ define dso_local noundef zeroext i1 @_ZN5clang11SemaSystemZ31CheckSystemZBuiltin %6 = alloca %"class.clang::SourceRange", align 8 switch i32 %1, label %.thread27 [ i32 1411, label %7 - i32 1416, label %69 + i32 1416, label %68 i32 1483, label %55 i32 1484, label %55 i32 1485, label %55 @@ -97,7 +97,7 @@ define dso_local noundef zeroext i1 @_ZN5clang11SemaSystemZ31CheckSystemZBuiltin i32 1622, label %57 i32 1650, label %63 i32 1628, label %63 - i32 1417, label %69 + i32 1417, label %68 i32 1421, label %64 i32 1553, label %64 i32 1607, label %65 @@ -113,16 +113,16 @@ define dso_local noundef zeroext i1 @_ZN5clang11SemaSystemZ31CheckSystemZBuiltin i32 1616, label %65 i32 1618, label %65 i32 1632, label %66 - i32 1642, label %67 - i32 1641, label %67 - i32 1634, label %67 - i32 1633, label %67 - i32 1651, label %68 - i32 1652, label %68 - i32 1662, label %69 - i32 1663, label %69 - i32 1665, label %69 - i32 1666, label %69 + i32 1642, label %64 + i32 1641, label %64 + i32 1634, label %64 + i32 1633, label %64 + i32 1651, label %67 + i32 1652, label %67 + i32 1662, label %68 + i32 1663, label %68 + i32 1665, label %68 + i32 1666, label %68 i32 1664, label %64 ] @@ -213,10 +213,10 @@ _ZNK4llvm5APInt12getSExtValueEv.exit20.thread: ; preds = %26, %_ZNK4llvm5APIn br label %.thread27 55: ; preds = %3, %3, %3, %3 - br label %69 + br label %68 56: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3 - br label %69 + br label %68 57: ; preds = %3, %3 %58 = load ptr, ptr %0, align 8 @@ -229,32 +229,29 @@ _ZNK4llvm5APInt12getSExtValueEv.exit20.thread: ; preds = %26, %_ZNK4llvm5APIn br label %.thread27 63: ; preds = %3, %3 - br label %69 + br label %68 -64: ; preds = %3, %3, %3 - br label %69 +64: ; preds = %3, %3, %3, %3, %3, %3, %3 + br label %68 65: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3 - br label %69 + br label %68 66: ; preds = %3 - br label %69 + br label %68 -67: ; preds = %3, %3, %3, %3 - br label %69 +67: ; preds = %3, %3 + br label %68 -68: ; preds = %3, %3 - br label %69 - -69: ; preds = %3, %3, %3, %3, %3, %3, %68, %67, %66, %65, %64, %63, %56, %55 - %.015 = phi i32 [ 2, %68 ], [ 2, %67 ], [ 3, %66 ], [ 3, %65 ], [ 2, %64 ], [ 1, %63 ], [ 2, %56 ], [ 3, %55 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ] - %.0 = phi i32 [ 7, %68 ], [ 15, %67 ], [ 15, %66 ], [ 15, %65 ], [ 15, %64 ], [ 4095, %63 ], [ 15, %56 ], [ 255, %55 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ] - %70 = load ptr, ptr %0, align 8 - %71 = tail call noundef zeroext i1 @_ZN5clang4Sema23BuiltinConstantArgRangeEPNS_8CallExprEiiib(ptr noundef nonnull align 8 dereferenceable(17560) %70, ptr noundef %2, i32 noundef %.015, i32 noundef 0, i32 noundef %.0, i1 noundef zeroext true) #11 +68: ; preds = %3, %3, %3, %3, %3, %3, %67, %66, %65, %64, %63, %56, %55 + %.015 = phi i32 [ 2, %67 ], [ 3, %66 ], [ 3, %65 ], [ 2, %64 ], [ 1, %63 ], [ 2, %56 ], [ 3, %55 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ] + %.0 = phi i32 [ 7, %67 ], [ 15, %66 ], [ 15, %65 ], [ 15, %64 ], [ 4095, %63 ], [ 15, %56 ], [ 255, %55 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ], [ 15, %3 ] + %69 = load ptr, ptr %0, align 8 + %70 = tail call noundef zeroext i1 @_ZN5clang4Sema23BuiltinConstantArgRangeEPNS_8CallExprEiiib(ptr noundef nonnull align 8 dereferenceable(17560) %69, ptr noundef %2, i32 noundef %.015, i32 noundef 0, i32 noundef %.0, i1 noundef zeroext true) #11 br label %.thread27 -.thread27: ; preds = %54, %51, %47, %44, %3, %57, %60, %69 - %.1 = phi i1 [ %71, %69 ], [ true, %57 ], [ %62, %60 ], [ false, %3 ], [ %not.switch, %44 ], [ %not.switch, %47 ], [ %not.switch, %51 ], [ %not.switch, %54 ] +.thread27: ; preds = %54, %51, %47, %44, %3, %57, %60, %68 + %.1 = phi i1 [ %70, %68 ], [ true, %57 ], [ %62, %60 ], [ false, %3 ], [ %not.switch, %44 ], [ %not.switch, %47 ], [ %not.switch, %51 ], [ %not.switch, %54 ] ret i1 %.1 } diff --git a/bench/llvm/optimized/TypeRecordHelpers.cpp.ll b/bench/llvm/optimized/TypeRecordHelpers.cpp.ll index 8c288e2e757..770add8f0cc 100644 --- a/bench/llvm/optimized/TypeRecordHelpers.cpp.ll +++ b/bench/llvm/optimized/TypeRecordHelpers.cpp.ll @@ -378,7 +378,7 @@ declare void @_ZN4llvm8codeview19discoverTypeIndicesERKNS0_8CVRecordINS0_12TypeL ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local noundef range(i64 0, 33) i64 @_ZN4llvm8codeview26getSizeInBytesForTypeIndexENS0_9TypeIndexE(i32 %0) local_unnamed_addr #2 { %2 = icmp ult i32 %0, 4096 - br i1 %2, label %3, label %27 + br i1 %2, label %3, label %20 3: ; preds = %1 %4 = and i32 %0, 1792 @@ -392,108 +392,87 @@ define dso_local noundef range(i64 0, 33) i64 @_ZN4llvm8codeview26getSizeInBytes 8: ; preds = %5, %3 %trunc = trunc i32 %0 to i8 - switch i8 %trunc, label %27 [ - i8 83, label %24 - i8 82, label %23 - i8 8, label %9 - i8 104, label %10 - i8 105, label %10 - i8 17, label %11 - i8 33, label %11 - i8 114, label %11 - i8 115, label %11 - i8 18, label %12 - i8 34, label %12 - i8 116, label %12 - i8 117, label %12 - i8 19, label %13 - i8 35, label %13 - i8 118, label %13 - i8 119, label %13 - i8 20, label %14 - i8 36, label %14 - i8 120, label %14 - i8 121, label %14 - i8 124, label %15 - i8 16, label %15 - i8 32, label %15 - i8 112, label %15 - i8 113, label %16 - i8 122, label %16 - i8 123, label %9 - i8 70, label %17 - i8 64, label %9 - i8 68, label %18 - i8 65, label %19 - i8 66, label %20 - i8 67, label %21 - i8 48, label %22 - i8 49, label %17 - i8 50, label %9 - i8 51, label %19 - i8 52, label %21 - i8 86, label %9 - i8 80, label %19 - i8 81, label %21 + switch i8 %trunc, label %17 [ + i8 83, label %16 + i8 82, label %15 + i8 8, label %20 + i8 104, label %9 + i8 105, label %9 + i8 17, label %10 + i8 33, label %10 + i8 114, label %10 + i8 115, label %10 + i8 18, label %20 + i8 34, label %20 + i8 116, label %20 + i8 117, label %20 + i8 19, label %11 + i8 35, label %11 + i8 118, label %11 + i8 119, label %11 + i8 20, label %12 + i8 36, label %12 + i8 120, label %12 + i8 121, label %12 + i8 124, label %9 + i8 16, label %9 + i8 32, label %9 + i8 112, label %9 + i8 113, label %10 + i8 122, label %10 + i8 123, label %20 + i8 70, label %10 + i8 64, label %20 + i8 68, label %13 + i8 65, label %11 + i8 66, label %14 + i8 67, label %12 + i8 48, label %9 + i8 49, label %10 + i8 50, label %20 + i8 51, label %11 + i8 52, label %12 + i8 86, label %20 + i8 80, label %11 + i8 81, label %12 ] -9: ; preds = %8, %8, %8, %8, %8 - br label %27 - -10: ; preds = %8, %8 - br label %27 - -11: ; preds = %8, %8, %8, %8 - br label %27 - -12: ; preds = %8, %8, %8, %8 - br label %27 - -13: ; preds = %8, %8, %8, %8 - br label %27 - -14: ; preds = %8, %8, %8, %8 - br label %27 - -15: ; preds = %8, %8, %8, %8 - br label %27 - -16: ; preds = %8, %8 - br label %27 +9: ; preds = %8, %8, %8, %8, %8, %8, %8 + br label %20 -17: ; preds = %8, %8 - br label %27 +10: ; preds = %8, %8, %8, %8, %8, %8, %8, %8 + br label %20 -18: ; preds = %8 - br label %27 +11: ; preds = %8, %8, %8, %8, %8, %8, %8 + br label %20 -19: ; preds = %8, %8, %8 - br label %27 +12: ; preds = %8, %8, %8, %8, %8, %8, %8 + br label %20 -20: ; preds = %8 - br label %27 +13: ; preds = %8 + br label %20 -21: ; preds = %8, %8, %8 - br label %27 +14: ; preds = %8 + br label %20 -22: ; preds = %8 - br label %27 +15: ; preds = %8 + br label %20 -23: ; preds = %8 - br label %27 +16: ; preds = %8 + br label %20 -24: ; preds = %8 - br label %27 +17: ; preds = %8 + br label %20 switch.lookup: ; preds = %5 - %25 = lshr exact i32 %6, 8 - %26 = zext nneg i32 %25 to i64 - %switch.gep = getelementptr inbounds nuw [7 x i64], ptr @switch.table._ZN4llvm8codeview26getSizeInBytesForTypeIndexENS0_9TypeIndexE, i64 0, i64 %26 + %18 = lshr exact i32 %6, 8 + %19 = zext nneg i32 %18 to i64 + %switch.gep = getelementptr inbounds nuw [7 x i64], ptr @switch.table._ZN4llvm8codeview26getSizeInBytesForTypeIndexENS0_9TypeIndexE, i64 0, i64 %19 %switch.load = load i64, ptr %switch.gep, align 8 - br label %27 + br label %20 -27: ; preds = %switch.lookup, %8, %1, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9 - %.0 = phi i64 [ 32, %24 ], [ 20, %23 ], [ 1, %22 ], [ 16, %21 ], [ 10, %20 ], [ 8, %19 ], [ 6, %18 ], [ 2, %17 ], [ 2, %16 ], [ 1, %15 ], [ 16, %14 ], [ 8, %13 ], [ 4, %12 ], [ 2, %11 ], [ 1, %10 ], [ 4, %9 ], [ 0, %1 ], [ 0, %8 ], [ %switch.load, %switch.lookup ] +20: ; preds = %switch.lookup, %8, %8, %8, %8, %8, %8, %8, %8, %8, %1, %17, %16, %15, %14, %13, %12, %11, %10, %9 + %.0 = phi i64 [ 0, %17 ], [ 32, %16 ], [ 20, %15 ], [ 10, %14 ], [ 6, %13 ], [ 16, %12 ], [ 8, %11 ], [ 2, %10 ], [ 1, %9 ], [ 0, %1 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ 4, %8 ], [ %switch.load, %switch.lookup ] ret i64 %.0 } diff --git a/bench/llvm/optimized/VPlanRecipes.cpp.ll b/bench/llvm/optimized/VPlanRecipes.cpp.ll index 57be024504b..e0dff01c984 100644 --- a/bench/llvm/optimized/VPlanRecipes.cpp.ll +++ b/bench/llvm/optimized/VPlanRecipes.cpp.ll @@ -970,25 +970,25 @@ $_ZTVN4llvm17VPHeaderPHIRecipeE = comdat any define dso_local noundef zeroext i1 @_ZNK4llvm12VPRecipeBase16mayWriteToMemoryEv(ptr noundef nonnull align 8 dereferenceable(104) %0) local_unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i8, ptr %2, align 8 - switch i8 %3, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit [ + switch i8 %3, label %37 [ i8 4, label %4 - i8 20, label %38 - i8 19, label %38 + i8 20, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 19, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit i8 7, label %13 i8 11, label %25 - i8 0, label %37 - i8 9, label %37 - i8 23, label %37 - i8 21, label %38 - i8 5, label %38 - i8 6, label %38 - i8 12, label %38 - i8 13, label %38 - i8 14, label %38 - i8 28, label %38 - i8 15, label %38 - i8 16, label %38 - i8 22, label %38 + i8 0, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 9, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 23, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 21, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 5, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 6, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 12, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 13, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 14, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 28, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 15, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 16, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 22, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit ] 4: ; preds = %1 @@ -1038,14 +1038,11 @@ _ZNK4llvm5VPDef16getVPSingleValueEv.exit: ; preds = %13, %19 %36 = xor i1 %35, true br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit -37: ; preds = %1, %1, %1 +37: ; preds = %1 br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit -38: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 - br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit - -_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit: ; preds = %38, %1, %37, %25, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %4 - %.0 = phi i1 [ false, %37 ], [ %36, %25 ], [ %24, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ %12, %4 ], [ true, %1 ], [ false, %38 ] +_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %37, %25, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit, %4 + %.0 = phi i1 [ true, %37 ], [ %36, %25 ], [ %24, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ %12, %4 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ] ret i1 %.0 } @@ -1058,24 +1055,24 @@ declare noundef zeroext i1 @_ZNK4llvm8Function15onlyReadsMemoryEv(ptr noundef no define dso_local noundef zeroext i1 @_ZNK4llvm12VPRecipeBase17mayReadFromMemoryEv(ptr noundef nonnull align 8 dereferenceable(104) %0) local_unnamed_addr #0 align 2 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i8, ptr %2, align 8 - switch i8 %3, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit [ - i8 20, label %29 - i8 19, label %29 + switch i8 %3, label %28 [ + i8 20, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 19, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit i8 7, label %4 i8 11, label %16 - i8 0, label %28 - i8 23, label %28 - i8 9, label %28 - i8 17, label %28 - i8 18, label %28 - i8 21, label %29 - i8 5, label %29 - i8 6, label %29 - i8 12, label %29 - i8 13, label %29 - i8 14, label %29 - i8 28, label %29 - i8 22, label %29 + i8 0, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 23, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 9, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 17, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 18, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 21, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 5, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 6, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 12, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 13, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 14, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 28, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit + i8 22, label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit ] 4: ; preds = %1 @@ -1113,14 +1110,11 @@ _ZNK4llvm5VPDef16getVPSingleValueEv.exit: ; preds = %4, %10 %27 = xor i1 %26, true br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit -28: ; preds = %1, %1, %1, %1, %1 - br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit - -29: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 +28: ; preds = %1 br label %_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit -_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit: ; preds = %29, %1, %28, %16, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit - %.0 = phi i1 [ false, %28 ], [ %27, %16 ], [ %15, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ true, %1 ], [ false, %29 ] +_ZN4llvm16dyn_cast_or_nullINS_11InstructionENS_5ValueEEEDaPT0_.exit: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %28, %16, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit + %.0 = phi i1 [ true, %28 ], [ %27, %16 ], [ %15, %_ZNK4llvm5VPDef16getVPSingleValueEv.exit ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ], [ false, %1 ] ret i1 %.0 } diff --git a/bench/meshlab/optimized/filter_unsharp.cpp.ll b/bench/meshlab/optimized/filter_unsharp.cpp.ll index ead4d8a60e5..323caeeb448 100644 --- a/bench/meshlab/optimized/filter_unsharp.cpp.ll +++ b/bench/meshlab/optimized/filter_unsharp.cpp.ll @@ -1457,7 +1457,7 @@ $_ZZN5Eigen6numext4log2EiE5table = comdat any @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_filter_unsharp.cpp, ptr null }] @switch.table._ZThn16_NK13FilterUnsharp8getClassEPK7QAction = private unnamed_addr constant [22 x i32] [i32 2052, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 128, i32 2048, i32 2048, i32 128, i32 128, i32 128, i32 128, i32 144, i32 0, i32 2048, i32 2048, i32 2048, i32 128, i32 4], align 4 @switch.table._ZThn16_NK13FilterUnsharp16getPreConditionsEPK7QAction = private unnamed_addr constant [22 x i32] [i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288, i32 0, i32 524304, i32 524288, i32 524288, i32 524304, i32 524296, i32 0, i32 524288, i32 524288, i32 524288, i32 524288, i32 524288], align 4 -@switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction = private unnamed_addr constant [22 x i32] [i32 -1, i32 8195, i32 -1, i32 8195, i32 8195, i32 8195, i32 8195, i32 8195, i32 8192, i32 8192, i32 2, i32 -1, i32 8195, i32 8195, i32 -1, i32 8, i32 -1, i32 2, i32 8192, i32 8192, i32 8195, i32 16], align 4 +@switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction = private unnamed_addr constant [21 x i32] [i32 8195, i32 -1, i32 8195, i32 8195, i32 8195, i32 8195, i32 8195, i32 8192, i32 8192, i32 2, i32 -1, i32 8195, i32 8195, i32 -1, i32 8, i32 -1, i32 2, i32 8192, i32 8192, i32 8195, i32 16], align 4 @switch.table._ZThn16_N13FilterUnsharp15getRequirementsEPK7QAction = private unnamed_addr constant [22 x i32] [i32 262144, i32 0, i32 0, i32 0, i32 0, i32 0, i32 64, i32 0, i32 262144, i32 0, i32 0, i32 0, i32 262144, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 262144, i32 0, i32 0], align 4 @switch.table._ZThn16_NK13FilterUnsharp11filterArityEPK7QAction = private unnamed_addr constant [22 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 1, i32 1, i32 1, i32 2, i32 1], align 4 @@ -3212,12 +3212,13 @@ define noundef range(i32 -1, 8196) i32 @_ZNK13FilterUnsharp13postConditionEPK7QA %5 = getelementptr inbounds nuw i8, ptr %4, i64 144 %6 = load ptr, ptr %5, align 8 %7 = tail call noundef i32 %6(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef %1) - %8 = icmp ult i32 %7, 22 + %switch.tableidx = add i32 %7, -1 + %8 = icmp ult i32 %switch.tableidx, 21 br i1 %8, label %switch.lookup, label %10 switch.lookup: ; preds = %2 - %9 = zext nneg i32 %7 to i64 - %switch.gep = getelementptr inbounds nuw [22 x i32], ptr @switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction, i64 0, i64 %9 + %9 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [21 x i32], ptr @switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction, i64 0, i64 %9 %switch.load = load i32, ptr %switch.gep, align 4 br label %10 @@ -3232,12 +3233,13 @@ define noundef range(i32 -1, 8196) i32 @_ZThn16_NK13FilterUnsharp13postCondition %4 = getelementptr inbounds nuw i8, ptr %3, i64 144 %5 = load ptr, ptr %4, align 8 %6 = tail call noundef i32 %5(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef %1) - %7 = icmp ult i32 %6, 22 + %switch.tableidx = add i32 %6, -1 + %7 = icmp ult i32 %switch.tableidx, 21 br i1 %7, label %switch.lookup, label %_ZNK13FilterUnsharp13postConditionEPK7QAction.exit switch.lookup: ; preds = %2 - %8 = zext nneg i32 %6 to i64 - %switch.gep = getelementptr inbounds nuw [22 x i32], ptr @switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction, i64 0, i64 %8 + %8 = zext nneg i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [21 x i32], ptr @switch.table._ZThn16_NK13FilterUnsharp13postConditionEPK7QAction, i64 0, i64 %8 %switch.load = load i32, ptr %switch.gep, align 4 br label %_ZNK13FilterUnsharp13postConditionEPK7QAction.exit diff --git a/bench/ocio/optimized/CTFReaderUtils.cpp.ll b/bench/ocio/optimized/CTFReaderUtils.cpp.ll index 65e7fb0705e..7af36863fc7 100644 --- a/bench/ocio/optimized/CTFReaderUtils.cpp.ll +++ b/bench/ocio/optimized/CTFReaderUtils.cpp.ll @@ -308,23 +308,16 @@ entry: i32 2, label %return i32 3, label %sw.bb1 i32 255, label %sw.bb1 - i32 254, label %sw.bb2 - i32 1, label %sw.bb2 - i32 4, label %sw.bb2 - i32 0, label %sw.bb2 ] sw.bb1: ; preds = %entry, %entry br label %return -sw.bb2: ; preds = %entry, %entry, %entry, %entry - br label %return - sw.epilog: ; preds = %entry br label %return -return: ; preds = %entry, %sw.epilog, %sw.bb2, %sw.bb1 - %retval.0 = phi ptr [ null, %sw.epilog ], [ null, %sw.bb2 ], [ @_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_128INTERPOLATION_3D_TETRAHEDRALE, %sw.bb1 ], [ @_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_123INTERPOLATION_3D_LINEARE, %entry ] +return: ; preds = %entry, %sw.epilog, %sw.bb1 + %retval.0 = phi ptr [ null, %sw.epilog ], [ @_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_128INTERPOLATION_3D_TETRAHEDRALE, %sw.bb1 ], [ @_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_123INTERPOLATION_3D_LINEARE, %entry ] ret ptr %retval.0 } diff --git a/bench/ocio/optimized/ExposureContrastOpData.cpp.ll b/bench/ocio/optimized/ExposureContrastOpData.cpp.ll index 3e3531a4cac..f541350f111 100644 --- a/bench/ocio/optimized/ExposureContrastOpData.cpp.ll +++ b/bench/ocio/optimized/ExposureContrastOpData.cpp.ll @@ -2743,8 +2743,8 @@ switch.lookup: ; preds = %entry %switch.load = load i32, ptr %switch.gep, align 4 br label %return -return: ; preds = %switch.lookup, %entry - %retval.0 = phi i32 [ 0, %entry ], [ %switch.load, %switch.lookup ] +return: ; preds = %entry, %switch.lookup + %retval.0 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %entry ] ret i32 %retval.0 } @@ -2763,23 +2763,23 @@ switch.lookup: ; preds = %entry %switch.load = load i32, ptr %switch.gep, align 4 br label %_ZNK19OpenColorIO_v2_4dev22ExposureContrastOpData12getDirectionEv.exit -_ZNK19OpenColorIO_v2_4dev22ExposureContrastOpData12getDirectionEv.exit: ; preds = %switch.lookup, %entry - %retval.0.i = phi i32 [ 0, %entry ], [ %switch.load, %switch.lookup ] +_ZNK19OpenColorIO_v2_4dev22ExposureContrastOpData12getDirectionEv.exit: ; preds = %entry, %switch.lookup + %retval.0.i = phi i32 [ %switch.load, %switch.lookup ], [ 0, %entry ] %cmp.not = icmp eq i32 %retval.0.i, %dir br i1 %cmp.not, label %if.end, label %if.then if.then: ; preds = %_ZNK19OpenColorIO_v2_4dev22ExposureContrastOpData12getDirectionEv.exit %3 = icmp ult i32 %0, 6 - br i1 %3, label %switch.lookup1, label %_ZN19OpenColorIO_v2_4dev22ExposureContrastOpData6invertEv.exit + br i1 %3, label %switch.lookup2, label %_ZN19OpenColorIO_v2_4dev22ExposureContrastOpData6invertEv.exit -switch.lookup1: ; preds = %if.then +switch.lookup2: ; preds = %if.then %4 = zext nneg i32 %0 to i64 - %switch.gep2 = getelementptr inbounds nuw [6 x i32], ptr @switch.table._ZN19OpenColorIO_v2_4dev22ExposureContrastOpData12setDirectionENS_18TransformDirectionE.1, i64 0, i64 %4 - %switch.load3 = load i32, ptr %switch.gep2, align 4 + %switch.gep3 = getelementptr inbounds nuw [6 x i32], ptr @switch.table._ZN19OpenColorIO_v2_4dev22ExposureContrastOpData12setDirectionENS_18TransformDirectionE.1, i64 0, i64 %4 + %switch.load4 = load i32, ptr %switch.gep3, align 4 br label %_ZN19OpenColorIO_v2_4dev22ExposureContrastOpData6invertEv.exit -_ZN19OpenColorIO_v2_4dev22ExposureContrastOpData6invertEv.exit: ; preds = %switch.lookup1, %if.then - %invStyle.0.i = phi i32 [ 0, %if.then ], [ %switch.load3, %switch.lookup1 ] +_ZN19OpenColorIO_v2_4dev22ExposureContrastOpData6invertEv.exit: ; preds = %switch.lookup2, %if.then + %invStyle.0.i = phi i32 [ 0, %if.then ], [ %switch.load4, %switch.lookup2 ] store i32 %invStyle.0.i, ptr %m_style.i, align 8 br label %if.end diff --git a/bench/openjdk/optimized/constantPool.ll b/bench/openjdk/optimized/constantPool.ll index 4069cad4763..b92bd8b2911 100644 --- a/bench/openjdk/optimized/constantPool.ll +++ b/bench/openjdk/optimized/constantPool.ll @@ -7258,29 +7258,29 @@ define hidden noundef range(i32 1, 65539) i32 @_ZN12ConstantPool16cpool_entry_si %7 = getelementptr inbounds i8, ptr %5, i64 %6 %8 = load volatile i8, ptr %7, align 1 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #17, !srcloc !6 - switch i8 %8, label %22 [ - i8 6, label %21 - i8 5, label %21 + switch i8 %8, label %21 [ + i8 6, label %20 + i8 5, label %20 i8 1, label %9 - i8 7, label %17 - i8 8, label %17 - i8 101, label %17 - i8 100, label %17 - i8 103, label %17 - i8 102, label %17 - i8 16, label %17 - i8 105, label %17 - i8 15, label %18 - i8 104, label %18 - i8 3, label %19 - i8 4, label %19 - i8 9, label %19 - i8 10, label %19 - i8 11, label %19 - i8 12, label %19 - i8 17, label %20 - i8 106, label %20 - i8 18, label %20 + i8 7, label %22 + i8 8, label %22 + i8 101, label %22 + i8 100, label %22 + i8 103, label %22 + i8 102, label %22 + i8 16, label %22 + i8 105, label %22 + i8 15, label %17 + i8 104, label %17 + i8 3, label %18 + i8 4, label %18 + i8 9, label %18 + i8 10, label %18 + i8 11, label %18 + i8 12, label %18 + i8 17, label %19 + i8 106, label %19 + i8 18, label %19 ] 9: ; preds = %2 @@ -7293,23 +7293,23 @@ define hidden noundef range(i32 1, 65539) i32 @_ZN12ConstantPool16cpool_entry_si %16 = add nuw nsw i32 %15, 3 br label %22 -17: ; preds = %2, %2, %2, %2, %2, %2, %2, %2 +17: ; preds = %2, %2 br label %22 -18: ; preds = %2, %2 +18: ; preds = %2, %2, %2, %2, %2, %2 br label %22 -19: ; preds = %2, %2, %2, %2, %2, %2 +19: ; preds = %2, %2, %2 br label %22 -20: ; preds = %2, %2, %2 +20: ; preds = %2, %2 br label %22 -21: ; preds = %2, %2 +21: ; preds = %2 br label %22 -22: ; preds = %2, %21, %20, %19, %18, %17, %9 - %.0 = phi i32 [ 9, %21 ], [ 5, %20 ], [ 5, %19 ], [ 4, %18 ], [ 3, %17 ], [ %16, %9 ], [ 1, %2 ] +22: ; preds = %2, %2, %2, %2, %2, %2, %2, %2, %21, %20, %19, %18, %17, %9 + %.0 = phi i32 [ 1, %21 ], [ 9, %20 ], [ 5, %19 ], [ 5, %18 ], [ 4, %17 ], [ %16, %9 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ], [ 3, %2 ] ret i32 %.0 } diff --git a/bench/openjdk/optimized/hb-ot-metrics.ll b/bench/openjdk/optimized/hb-ot-metrics.ll index 4c3bac5ecd8..c06794b109c 100644 --- a/bench/openjdk/optimized/hb-ot-metrics.ll +++ b/bench/openjdk/optimized/hb-ot-metrics.ll @@ -3261,7 +3261,7 @@ define hidden void @hb_ot_metrics_get_position_with_fallback(ptr noundef %0, i32 br i1 %.not, label %12, label %9 9: ; preds = %3 - switch i32 %1, label %86 [ + switch i32 %1, label %83 [ i32 1970168947, label %10 i32 1937011315, label %10 ] @@ -3269,10 +3269,10 @@ define hidden void @hb_ot_metrics_get_position_with_fallback(ptr noundef %0, i32 10: ; preds = %9, %9 %11 = load i32, ptr %2, align 4 %.not46 = icmp eq i32 %11, 0 - br i1 %.not46, label %12, label %86 + br i1 %.not46, label %12, label %83 12: ; preds = %10, %3 - switch i32 %1, label %85 [ + switch i32 %1, label %82 [ i32 1751216995, label %13 i32 1751346273, label %13 i32 1986098019, label %15 @@ -3283,24 +3283,18 @@ define hidden void @hb_ot_metrics_get_position_with_fallback(ptr noundef %0, i32 i32 1986815856, label %25 i32 1751347827, label %.sink.split i32 1986228851, label %.sink.split - i32 1751347822, label %28 - i32 1986228846, label %28 - i32 1751347046, label %29 - i32 1986228070, label %29 - i32 2020108148, label %30 - i32 1668311156, label %42 - i32 1937011315, label %59 - i32 1970168947, label %59 - i32 1937011311, label %63 - i32 1970168943, label %66 - i32 1935833203, label %70 - i32 1936750707, label %70 - i32 1935833459, label %75 - i32 1936750963, label %75 - i32 1935833199, label %80 - i32 1936750703, label %80 - i32 1935833455, label %81 - i32 1936750959, label %81 + i32 1936750959, label %78 + i32 1935833455, label %78 + i32 1936750963, label %73 + i32 1935833459, label %73 + i32 2020108148, label %28 + i32 1668311156, label %40 + i32 1937011315, label %57 + i32 1970168947, label %57 + i32 1937011311, label %61 + i32 1970168943, label %64 + i32 1935833203, label %68 + i32 1936750707, label %68 ] 13: ; preds = %12, %12 @@ -3336,111 +3330,102 @@ define hidden void @hb_ot_metrics_get_position_with_fallback(ptr noundef %0, i32 %27 = load i32, ptr %26, align 4 br label %.sink.split -28: ; preds = %12, %12 - br label %.sink.split - -29: ; preds = %12, %12 - br label %.sink.split +28: ; preds = %12 + %29 = call i32 @hb_font_get_nominal_glyph(ptr noundef %0, i32 noundef 120, ptr noundef nonnull %5) + %.not49 = icmp eq i32 %29, 0 + br i1 %.not49, label %36, label %30 -30: ; preds = %12 - %31 = call i32 @hb_font_get_nominal_glyph(ptr noundef %0, i32 noundef 120, ptr noundef nonnull %5) - %.not49 = icmp eq i32 %31, 0 - br i1 %.not49, label %38, label %32 +30: ; preds = %28 + %31 = load i32, ptr %5, align 4 + %32 = call i32 @hb_font_get_glyph_extents(ptr noundef %0, i32 noundef %31, ptr noundef nonnull %6) + %.not50 = icmp eq i32 %32, 0 + br i1 %.not50, label %36, label %33 -32: ; preds = %30 - %33 = load i32, ptr %5, align 4 - %34 = call i32 @hb_font_get_glyph_extents(ptr noundef %0, i32 noundef %33, ptr noundef nonnull %6) - %.not50 = icmp eq i32 %34, 0 - br i1 %.not50, label %38, label %35 - -35: ; preds = %32 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 4 - %37 = load i32, ptr %36, align 4 +33: ; preds = %30 + %34 = getelementptr inbounds nuw i8, ptr %6, i64 4 + %35 = load i32, ptr %34, align 4 br label %.sink.split -38: ; preds = %32, %30 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %40 = load i32, ptr %39, align 4 - %41 = sdiv i32 %40, 2 +36: ; preds = %30, %28 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %38 = load i32, ptr %37, align 4 + %39 = sdiv i32 %38, 2 br label %.sink.split -42: ; preds = %12 - %43 = call i32 @hb_font_get_nominal_glyph(ptr noundef %0, i32 noundef 79, ptr noundef nonnull %5) - %.not47 = icmp eq i32 %43, 0 - br i1 %.not47, label %54, label %44 - -44: ; preds = %42 - %45 = load i32, ptr %5, align 4 - %46 = call i32 @hb_font_get_glyph_extents(ptr noundef %0, i32 noundef %45, ptr noundef nonnull %6) - %.not48 = icmp eq i32 %46, 0 - br i1 %.not48, label %54, label %47 - -47: ; preds = %44 - %48 = getelementptr inbounds nuw i8, ptr %6, i64 12 +40: ; preds = %12 + %41 = call i32 @hb_font_get_nominal_glyph(ptr noundef %0, i32 noundef 79, ptr noundef nonnull %5) + %.not47 = icmp eq i32 %41, 0 + br i1 %.not47, label %52, label %42 + +42: ; preds = %40 + %43 = load i32, ptr %5, align 4 + %44 = call i32 @hb_font_get_glyph_extents(ptr noundef %0, i32 noundef %43, ptr noundef nonnull %6) + %.not48 = icmp eq i32 %44, 0 + br i1 %.not48, label %52, label %45 + +45: ; preds = %42 + %46 = getelementptr inbounds nuw i8, ptr %6, i64 12 + %47 = load i32, ptr %46, align 4 + %48 = getelementptr inbounds nuw i8, ptr %6, i64 4 %49 = load i32, ptr %48, align 4 - %50 = getelementptr inbounds nuw i8, ptr %6, i64 4 - %51 = load i32, ptr %50, align 4 - %52 = shl nsw i32 %51, 1 - %53 = add nsw i32 %52, %49 + %50 = shl nsw i32 %49, 1 + %51 = add nsw i32 %50, %47 br label %.sink.split -54: ; preds = %44, %42 - %55 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %56 = load i32, ptr %55, align 4 - %57 = shl nsw i32 %56, 1 - %58 = sdiv i32 %57, 3 +52: ; preds = %42, %40 + %53 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %54 = load i32, ptr %53, align 4 + %55 = shl nsw i32 %54, 1 + %56 = sdiv i32 %55, 3 br label %.sink.split -59: ; preds = %12, %12 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %61 = load i32, ptr %60, align 4 - %62 = sdiv i32 %61, 18 +57: ; preds = %12, %12 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %59 = load i32, ptr %58, align 4 + %60 = sdiv i32 %59, 18 br label %.sink.split -63: ; preds = %12 +61: ; preds = %12 call void @hb_ot_metrics_get_position_with_fallback(ptr noundef %0, i32 noundef 1751216995, ptr noundef nonnull %7) - %64 = load i32, ptr %7, align 4 - %65 = sdiv i32 %64, 2 + %62 = load i32, ptr %7, align 4 + %63 = sdiv i32 %62, 2 br label %.sink.split -66: ; preds = %12 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %68 = load i32, ptr %67, align 4 - %69 = sdiv i32 %68, -18 +64: ; preds = %12 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %66 = load i32, ptr %65, align 4 + %67 = sdiv i32 %66, -18 br label %.sink.split -70: ; preds = %12, %12 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %72 = load i32, ptr %71, align 8 - %73 = mul nsw i32 %72, 10 - %74 = sdiv i32 %73, 12 +68: ; preds = %12, %12 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %70 = load i32, ptr %69, align 8 + %71 = mul nsw i32 %70, 10 + %72 = sdiv i32 %71, 12 br label %.sink.split -75: ; preds = %12, %12 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %77 = load i32, ptr %76, align 4 - %78 = mul nsw i32 %77, 10 - %79 = sdiv i32 %78, 12 +73: ; preds = %12, %12 + %74 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %75 = load i32, ptr %74, align 4 + %76 = mul nsw i32 %75, 10 + %77 = sdiv i32 %76, 12 br label %.sink.split -80: ; preds = %12, %12 +78: ; preds = %12, %12 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 44 + %80 = load i32, ptr %79, align 4 + %81 = sdiv i32 %80, 5 br label %.sink.split -81: ; preds = %12, %12 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 44 - %83 = load i32, ptr %82, align 4 - %84 = sdiv i32 %83, 5 +82: ; preds = %12 br label %.sink.split -85: ; preds = %12 - br label %.sink.split - -.sink.split: ; preds = %12, %12, %13, %15, %17, %20, %22, %25, %28, %29, %59, %63, %66, %70, %75, %80, %81, %85, %38, %35, %54, %47 - %.sink = phi i32 [ %53, %47 ], [ %58, %54 ], [ %37, %35 ], [ %41, %38 ], [ 0, %85 ], [ %84, %81 ], [ 0, %80 ], [ %79, %75 ], [ %74, %70 ], [ %69, %66 ], [ %65, %63 ], [ %62, %59 ], [ 0, %29 ], [ 0, %28 ], [ %27, %25 ], [ %24, %22 ], [ %21, %20 ], [ %19, %17 ], [ %16, %15 ], [ %14, %13 ], [ 1, %12 ], [ 1, %12 ] +.sink.split: ; preds = %12, %12, %13, %15, %17, %20, %22, %25, %57, %61, %64, %68, %73, %78, %82, %36, %33, %52, %45 + %.sink = phi i32 [ %51, %45 ], [ %56, %52 ], [ %35, %33 ], [ %39, %36 ], [ 0, %82 ], [ %81, %78 ], [ %77, %73 ], [ %72, %68 ], [ %67, %64 ], [ %63, %61 ], [ %60, %57 ], [ %27, %25 ], [ %24, %22 ], [ %21, %20 ], [ %19, %17 ], [ %16, %15 ], [ %14, %13 ], [ 1, %12 ], [ 1, %12 ] store i32 %.sink, ptr %2, align 4 - br label %86 + br label %83 -86: ; preds = %.sink.split, %9, %10 +83: ; preds = %.sink.split, %9, %10 ret void } diff --git a/bench/openjdk/optimized/util.ll b/bench/openjdk/optimized/util.ll index 3169c201536..00df14fba5b 100644 --- a/bench/openjdk/optimized/util.ll +++ b/bench/openjdk/optimized/util.ll @@ -2634,262 +2634,256 @@ declare i32 @inStream_id(ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define hidden zeroext range(i16 0, 513) i16 @map2jdwpError(i32 noundef %0) local_unnamed_addr #2 { - switch i32 %0, label %60 [ - i32 0, label %61 + switch i32 %0, label %58 [ + i32 0, label %59 i32 203, label %2 i32 10, label %2 i32 11, label %3 i32 12, label %4 i32 13, label %5 i32 14, label %6 - i32 15, label %7 - i32 205, label %8 - i32 20, label %8 - i32 21, label %9 - i32 22, label %10 - i32 23, label %11 - i32 24, label %12 - i32 25, label %13 - i32 206, label %14 - i32 31, label %14 - i32 32, label %15 - i32 34, label %16 - i32 35, label %17 - i32 40, label %18 - i32 41, label %19 - i32 50, label %20 - i32 51, label %21 - i32 52, label %22 - i32 60, label %23 - i32 61, label %24 - i32 62, label %25 - i32 65, label %26 - i32 68, label %27 - i32 69, label %28 - i32 201, label %29 - i32 100, label %29 - i32 101, label %30 - i32 204, label %31 - i32 102, label %31 - i32 202, label %32 - i32 103, label %32 - i32 110, label %33 - i32 188, label %33 - i32 111, label %34 - i32 112, label %35 - i32 182, label %35 - i32 183, label %35 - i32 184, label %36 - i32 115, label %36 - i32 98, label %37 - i32 99, label %37 - i32 66, label %38 - i32 67, label %39 - i32 63, label %40 - i32 64, label %41 - i32 70, label %42 - i32 71, label %43 - i32 72, label %44 - i32 73, label %45 - i32 187, label %46 - i32 189, label %47 - i32 190, label %48 - i32 191, label %49 - i32 192, label %50 - i32 193, label %51 - i32 194, label %52 - i32 195, label %53 - i32 196, label %54 - i32 197, label %55 - i32 198, label %56 - i32 199, label %57 - i32 200, label %58 - i32 113, label %59 - i32 116, label %59 - i32 181, label %59 - i32 185, label %59 - i32 186, label %59 + i32 15, label %2 + i32 205, label %7 + i32 20, label %7 + i32 21, label %8 + i32 22, label %9 + i32 23, label %10 + i32 24, label %11 + i32 25, label %12 + i32 206, label %13 + i32 31, label %13 + i32 32, label %14 + i32 34, label %15 + i32 35, label %16 + i32 40, label %17 + i32 41, label %18 + i32 50, label %19 + i32 51, label %20 + i32 52, label %21 + i32 60, label %22 + i32 61, label %23 + i32 62, label %24 + i32 65, label %25 + i32 68, label %26 + i32 69, label %27 + i32 201, label %28 + i32 100, label %28 + i32 101, label %29 + i32 204, label %30 + i32 102, label %30 + i32 202, label %31 + i32 103, label %31 + i32 110, label %32 + i32 188, label %32 + i32 111, label %33 + i32 112, label %34 + i32 182, label %34 + i32 183, label %34 + i32 184, label %35 + i32 115, label %35 + i32 98, label %36 + i32 99, label %36 + i32 66, label %37 + i32 67, label %38 + i32 63, label %39 + i32 64, label %40 + i32 70, label %41 + i32 71, label %42 + i32 72, label %43 + i32 73, label %36 + i32 187, label %44 + i32 189, label %45 + i32 190, label %46 + i32 191, label %47 + i32 192, label %48 + i32 193, label %49 + i32 194, label %50 + i32 195, label %51 + i32 196, label %52 + i32 197, label %53 + i32 198, label %54 + i32 199, label %55 + i32 200, label %56 + i32 113, label %57 + i32 116, label %57 + i32 181, label %57 + i32 185, label %57 + i32 186, label %57 ] -2: ; preds = %1, %1 - br label %61 +2: ; preds = %1, %1, %1 + br label %59 3: ; preds = %1 - br label %61 + br label %59 4: ; preds = %1 - br label %61 + br label %59 5: ; preds = %1 - br label %61 + br label %59 6: ; preds = %1 - br label %61 + br label %59 -7: ; preds = %1 - br label %61 +7: ; preds = %1, %1 + br label %59 -8: ; preds = %1, %1 - br label %61 +8: ; preds = %1 + br label %59 9: ; preds = %1 - br label %61 + br label %59 10: ; preds = %1 - br label %61 + br label %59 11: ; preds = %1 - br label %61 + br label %59 12: ; preds = %1 - br label %61 + br label %59 -13: ; preds = %1 - br label %61 +13: ; preds = %1, %1 + br label %59 -14: ; preds = %1, %1 - br label %61 +14: ; preds = %1 + br label %59 15: ; preds = %1 - br label %61 + br label %59 16: ; preds = %1 - br label %61 + br label %59 17: ; preds = %1 - br label %61 + br label %59 18: ; preds = %1 - br label %61 + br label %59 19: ; preds = %1 - br label %61 + br label %59 20: ; preds = %1 - br label %61 + br label %59 21: ; preds = %1 - br label %61 + br label %59 22: ; preds = %1 - br label %61 + br label %59 23: ; preds = %1 - br label %61 + br label %59 24: ; preds = %1 - br label %61 + br label %59 25: ; preds = %1 - br label %61 + br label %59 26: ; preds = %1 - br label %61 + br label %59 27: ; preds = %1 - br label %61 + br label %59 -28: ; preds = %1 - br label %61 +28: ; preds = %1, %1 + br label %59 -29: ; preds = %1, %1 - br label %61 +29: ; preds = %1 + br label %59 -30: ; preds = %1 - br label %61 +30: ; preds = %1, %1 + br label %59 31: ; preds = %1, %1 - br label %61 + br label %59 32: ; preds = %1, %1 - br label %61 + br label %59 -33: ; preds = %1, %1 - br label %61 +33: ; preds = %1 + br label %59 -34: ; preds = %1 - br label %61 +34: ; preds = %1, %1, %1 + br label %59 -35: ; preds = %1, %1, %1 - br label %61 +35: ; preds = %1, %1 + br label %59 -36: ; preds = %1, %1 - br label %61 +36: ; preds = %1, %1, %1 + br label %59 -37: ; preds = %1, %1 - br label %61 +37: ; preds = %1 + br label %59 38: ; preds = %1 - br label %61 + br label %59 39: ; preds = %1 - br label %61 + br label %59 40: ; preds = %1 - br label %61 + br label %59 41: ; preds = %1 - br label %61 + br label %59 42: ; preds = %1 - br label %61 + br label %59 43: ; preds = %1 - br label %61 + br label %59 44: ; preds = %1 - br label %61 + br label %59 45: ; preds = %1 - br label %61 + br label %59 46: ; preds = %1 - br label %61 + br label %59 47: ; preds = %1 - br label %61 + br label %59 48: ; preds = %1 - br label %61 + br label %59 49: ; preds = %1 - br label %61 + br label %59 50: ; preds = %1 - br label %61 + br label %59 51: ; preds = %1 - br label %61 + br label %59 52: ; preds = %1 - br label %61 + br label %59 53: ; preds = %1 - br label %61 + br label %59 54: ; preds = %1 - br label %61 + br label %59 55: ; preds = %1 - br label %61 + br label %59 56: ; preds = %1 - br label %61 + br label %59 -57: ; preds = %1 - br label %61 +57: ; preds = %1, %1, %1, %1, %1 + br label %59 58: ; preds = %1 - br label %61 - -59: ; preds = %1, %1, %1, %1, %1 - br label %61 - -60: ; preds = %1 - br label %61 + br label %59 -61: ; preds = %1, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2 - %.0 = phi i16 [ 113, %60 ], [ 113, %59 ], [ 30, %58 ], [ 512, %57 ], [ 511, %56 ], [ 510, %55 ], [ 509, %54 ], [ 508, %53 ], [ 507, %52 ], [ 506, %51 ], [ 504, %50 ], [ 503, %49 ], [ 502, %48 ], [ 500, %47 ], [ 33, %46 ], [ 99, %45 ], [ 72, %44 ], [ 71, %43 ], [ 70, %42 ], [ 64, %41 ], [ 63, %40 ], [ 67, %39 ], [ 66, %38 ], [ 99, %37 ], [ 115, %36 ], [ 112, %35 ], [ 111, %34 ], [ 110, %33 ], [ 103, %32 ], [ 102, %31 ], [ 101, %30 ], [ 100, %29 ], [ 69, %28 ], [ 68, %27 ], [ 65, %26 ], [ 62, %25 ], [ 61, %24 ], [ 60, %23 ], [ 52, %22 ], [ 51, %21 ], [ 50, %20 ], [ 41, %19 ], [ 40, %18 ], [ 35, %17 ], [ 34, %16 ], [ 32, %15 ], [ 31, %14 ], [ 25, %13 ], [ 24, %12 ], [ 23, %11 ], [ 22, %10 ], [ 21, %9 ], [ 20, %8 ], [ 10, %7 ], [ 14, %6 ], [ 13, %5 ], [ 12, %4 ], [ 11, %3 ], [ 10, %2 ], [ 0, %1 ] +59: ; preds = %1, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %3, %2 + %.0 = phi i16 [ 113, %58 ], [ 113, %57 ], [ 30, %56 ], [ 512, %55 ], [ 511, %54 ], [ 510, %53 ], [ 509, %52 ], [ 508, %51 ], [ 507, %50 ], [ 506, %49 ], [ 504, %48 ], [ 503, %47 ], [ 502, %46 ], [ 500, %45 ], [ 33, %44 ], [ 72, %43 ], [ 71, %42 ], [ 70, %41 ], [ 64, %40 ], [ 63, %39 ], [ 67, %38 ], [ 66, %37 ], [ 99, %36 ], [ 115, %35 ], [ 112, %34 ], [ 111, %33 ], [ 110, %32 ], [ 103, %31 ], [ 102, %30 ], [ 101, %29 ], [ 100, %28 ], [ 69, %27 ], [ 68, %26 ], [ 65, %25 ], [ 62, %24 ], [ 61, %23 ], [ 60, %22 ], [ 52, %21 ], [ 51, %20 ], [ 50, %19 ], [ 41, %18 ], [ 40, %17 ], [ 35, %16 ], [ 34, %15 ], [ 32, %14 ], [ 31, %13 ], [ 25, %12 ], [ 24, %11 ], [ 23, %10 ], [ 22, %9 ], [ 21, %8 ], [ 20, %7 ], [ 14, %6 ], [ 13, %5 ], [ 12, %4 ], [ 11, %3 ], [ 10, %2 ], [ 0, %1 ] ret i16 %.0 } diff --git a/bench/openjdk/optimized/vectornode.ll b/bench/openjdk/optimized/vectornode.ll index 1a6412b7406..1efa59716f0 100644 --- a/bench/openjdk/optimized/vectornode.ll +++ b/bench/openjdk/optimized/vectornode.ll @@ -491,9 +491,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 14: ; preds = %2 - %switch.tableidx73 = add i8 %1, -4 - %15 = icmp ult i8 %switch.tableidx73, 7 - br i1 %15, label %switch.lookup72, label %185 + %switch.tableidx74 = add i8 %1, -4 + %15 = icmp ult i8 %switch.tableidx74, 7 + br i1 %15, label %switch.lookup73, label %185 16: ; preds = %2 %17 = icmp eq i8 %1, 11 @@ -511,9 +511,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 25: ; preds = %2 - %switch.tableidx77 = add i8 %1, -5 - %26 = icmp ult i8 %switch.tableidx77, 6 - br i1 %26, label %switch.lookup76, label %185 + %switch.tableidx78 = add i8 %1, -5 + %26 = icmp ult i8 %switch.tableidx78, 6 + br i1 %26, label %switch.lookup77, label %185 27: ; preds = %2 %28 = icmp eq i8 %1, 11 @@ -561,9 +561,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 54: ; preds = %2 - %switch.tableidx81 = add i8 %1, -8 - %55 = icmp ult i8 %switch.tableidx81, 3 - br i1 %55, label %switch.lookup80, label %185 + %switch.tableidx82 = add i8 %1, -8 + %55 = icmp ult i8 %switch.tableidx82, 3 + br i1 %55, label %switch.lookup81, label %185 56: ; preds = %2 %57 = icmp eq i8 %1, 11 @@ -571,9 +571,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 59: ; preds = %2 - %.off61 = add i8 %1, -8 - %switch62 = icmp ult i8 %.off61, 3 - %spec.select = select i1 %switch62, i32 419, i32 0 + %.off = add i8 %1, -8 + %switch = icmp ult i8 %.off, 3 + %. = select i1 %switch, i32 419, i32 0 br label %185 60: ; preds = %2 @@ -592,9 +592,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 69: ; preds = %2 - %.off63 = add i8 %1, -8 - %switch64 = icmp ult i8 %.off63, 3 - %spec.select65 = select i1 %switch64, i32 420, i32 0 + %.off61 = add i8 %1, -8 + %switch62 = icmp ult i8 %.off61, 3 + %.63 = select i1 %switch62, i32 420, i32 0 br label %185 70: ; preds = %2 @@ -623,9 +623,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 85: ; preds = %2 - %.off = add i8 %1, -8 - %switch = icmp ult i8 %.off, 3 - %. = select i1 %switch, i32 393, i32 0 + %.off64 = add i8 %1, -8 + %switch65 = icmp ult i8 %.off64, 3 + %.66 = select i1 %switch65, i32 393, i32 0 br label %185 86: ; preds = %2 @@ -660,12 +660,12 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( 103: ; preds = %2 %104 = add i8 %1, -4 - %switch.and.i.i66 = and i8 %104, -6 - %switch.selectcmp.i.i67 = icmp eq i8 %switch.and.i.i66, 0 + %switch.and.i.i67 = and i8 %104, -6 + %switch.selectcmp.i.i68 = icmp eq i8 %switch.and.i.i67, 0 %105 = and i8 %1, -2 %106 = icmp eq i8 %105, 10 - %spec.select.i68 = or i1 %106, %switch.selectcmp.i.i67 - %107 = select i1 %spec.select.i68, i32 299, i32 0 + %spec.select.i69 = or i1 %106, %switch.selectcmp.i.i68 + %107 = select i1 %spec.select.i69, i32 299, i32 0 br label %185 108: ; preds = %2 @@ -696,12 +696,12 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( 122: ; preds = %2, %2 %123 = add i8 %1, -4 - %switch.and.i.i69 = and i8 %123, -6 - %switch.selectcmp.i.i70 = icmp eq i8 %switch.and.i.i69, 0 + %switch.and.i.i70 = and i8 %123, -6 + %switch.selectcmp.i.i71 = icmp eq i8 %switch.and.i.i70, 0 %124 = and i8 %1, -2 %125 = icmp eq i8 %124, 10 - %spec.select.i71 = or i1 %125, %switch.selectcmp.i.i70 - %126 = select i1 %spec.select.i71, i32 290, i32 0 + %spec.select.i72 = or i1 %125, %switch.selectcmp.i.i71 + %126 = select i1 %spec.select.i72, i32 290, i32 0 br label %185 127: ; preds = %2, %2 @@ -735,9 +735,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 147: ; preds = %2 - %switch.tableidx83 = add i8 %1, -4 - %148 = icmp ult i8 %switch.tableidx83, 7 - br i1 %148, label %switch.lookup82, label %185 + %switch.tableidx84 = add i8 %1, -4 + %148 = icmp ult i8 %switch.tableidx84, 7 + br i1 %148, label %switch.lookup83, label %185 149: ; preds = %2 %150 = icmp eq i8 %1, 11 @@ -745,9 +745,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 152: ; preds = %2 - %switch.tableidx87 = add i8 %1, -4 - %153 = icmp ult i8 %switch.tableidx87, 7 - br i1 %153, label %switch.lookup86, label %185 + %switch.tableidx88 = add i8 %1, -4 + %153 = icmp ult i8 %switch.tableidx88, 7 + br i1 %153, label %switch.lookup87, label %185 154: ; preds = %2 %155 = icmp eq i8 %1, 11 @@ -765,9 +765,9 @@ define hidden noundef range(i32 0, 476) i32 @_ZN10VectorNode6opcodeEi9BasicType( br label %185 163: ; preds = %2 - %switch.tableidx91 = add i8 %1, -4 - %164 = icmp ult i8 %switch.tableidx91, 7 - br i1 %164, label %switch.lookup90, label %185 + %switch.tableidx92 = add i8 %1, -4 + %164 = icmp ult i8 %switch.tableidx92, 7 + br i1 %164, label %switch.lookup91, label %185 165: ; preds = %2 %166 = icmp eq i8 %1, 11 @@ -813,43 +813,43 @@ switch.lookup: ; preds = %3 %switch.load = load i32, ptr %switch.gep, align 4 br label %185 -switch.lookup72: ; preds = %14 - %180 = zext nneg i8 %switch.tableidx73 to i64 - %switch.gep74 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.2, i64 0, i64 %180 - %switch.load75 = load i32, ptr %switch.gep74, align 4 +switch.lookup73: ; preds = %14 + %180 = zext nneg i8 %switch.tableidx74 to i64 + %switch.gep75 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.2, i64 0, i64 %180 + %switch.load76 = load i32, ptr %switch.gep75, align 4 br label %185 -switch.lookup76: ; preds = %25 - %181 = zext nneg i8 %switch.tableidx77 to i64 - %switch.gep78 = getelementptr inbounds nuw [6 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.3, i64 0, i64 %181 - %switch.load79 = load i32, ptr %switch.gep78, align 4 +switch.lookup77: ; preds = %25 + %181 = zext nneg i8 %switch.tableidx78 to i64 + %switch.gep79 = getelementptr inbounds nuw [6 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.3, i64 0, i64 %181 + %switch.load80 = load i32, ptr %switch.gep79, align 4 br label %185 -switch.lookup80: ; preds = %54 - %switch.idx.cast = zext nneg i8 %switch.tableidx81 to i32 +switch.lookup81: ; preds = %54 + %switch.idx.cast = zext nneg i8 %switch.tableidx82 to i32 %switch.offset = add nuw nsw i32 %switch.idx.cast, 387 br label %185 -switch.lookup82: ; preds = %147 - %182 = zext nneg i8 %switch.tableidx83 to i64 - %switch.gep84 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.4, i64 0, i64 %182 - %switch.load85 = load i32, ptr %switch.gep84, align 4 +switch.lookup83: ; preds = %147 + %182 = zext nneg i8 %switch.tableidx84 to i64 + %switch.gep85 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.4, i64 0, i64 %182 + %switch.load86 = load i32, ptr %switch.gep85, align 4 br label %185 -switch.lookup86: ; preds = %152 - %183 = zext nneg i8 %switch.tableidx87 to i64 - %switch.gep88 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.5, i64 0, i64 %183 - %switch.load89 = load i32, ptr %switch.gep88, align 4 +switch.lookup87: ; preds = %152 + %183 = zext nneg i8 %switch.tableidx88 to i64 + %switch.gep89 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.5, i64 0, i64 %183 + %switch.load90 = load i32, ptr %switch.gep89, align 4 br label %185 -switch.lookup90: ; preds = %163 - %184 = zext nneg i8 %switch.tableidx91 to i64 - %switch.gep92 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.6, i64 0, i64 %184 - %switch.load93 = load i32, ptr %switch.gep92, align 4 +switch.lookup91: ; preds = %163 + %184 = zext nneg i8 %switch.tableidx92 to i64 + %switch.gep93 = getelementptr inbounds nuw [7 x i32], ptr @switch.table._ZN10VectorNode6opcodeEi9BasicType.6, i64 0, i64 %184 + %switch.load94 = load i32, ptr %switch.gep93, align 4 br label %185 -185: ; preds = %163, %switch.lookup90, %152, %switch.lookup86, %147, %switch.lookup82, %switch.lookup80, %54, %25, %switch.lookup76, %14, %switch.lookup72, %3, %switch.lookup, %69, %59, %85, %2, %178, %177, %176, %175, %174, %173, %172, %171, %170, %169, %168, %165, %160, %157, %154, %149, %143, %139, %136, %132, %127, %122, %121, %120, %117, %114, %111, %108, %103, %98, %95, %92, %89, %86, %82, %79, %76, %73, %70, %66, %63, %60, %56, %51, %48, %45, %42, %39, %36, %33, %30, %27, %22, %19, %16, %11, %8, %5 - %.0 = phi i32 [ 0, %178 ], [ 317, %177 ], [ 316, %176 ], [ 152, %175 ], [ 149, %174 ], [ 382, %173 ], [ 429, %172 ], [ 426, %171 ], [ 417, %170 ], [ 415, %169 ], [ 413, %168 ], [ %167, %165 ], [ %162, %160 ], [ %159, %157 ], [ %156, %154 ], [ %151, %149 ], [ %146, %143 ], [ %142, %139 ], [ %138, %136 ], [ %135, %132 ], [ %131, %127 ], [ %126, %122 ], [ 279, %121 ], [ 278, %120 ], [ %119, %117 ], [ %116, %114 ], [ %113, %111 ], [ %110, %108 ], [ %107, %103 ], [ %102, %98 ], [ %97, %95 ], [ %94, %92 ], [ %91, %89 ], [ %88, %86 ], [ %84, %82 ], [ %81, %79 ], [ %78, %76 ], [ %75, %73 ], [ %72, %70 ], [ %68, %66 ], [ %65, %63 ], [ %62, %60 ], [ %58, %56 ], [ %53, %51 ], [ %50, %48 ], [ %47, %45 ], [ %44, %42 ], [ %41, %39 ], [ %38, %36 ], [ %35, %33 ], [ %32, %30 ], [ %29, %27 ], [ %24, %22 ], [ %21, %19 ], [ %18, %16 ], [ %13, %11 ], [ %10, %8 ], [ %7, %5 ], [ 472, %2 ], [ 0, %54 ], [ %., %85 ], [ %spec.select, %59 ], [ %spec.select65, %69 ], [ %switch.load, %switch.lookup ], [ 0, %3 ], [ %switch.load75, %switch.lookup72 ], [ 0, %14 ], [ %switch.load79, %switch.lookup76 ], [ 0, %25 ], [ %switch.offset, %switch.lookup80 ], [ %switch.load85, %switch.lookup82 ], [ 0, %147 ], [ %switch.load89, %switch.lookup86 ], [ 0, %152 ], [ %switch.load93, %switch.lookup90 ], [ 0, %163 ] +185: ; preds = %163, %switch.lookup91, %152, %switch.lookup87, %147, %switch.lookup83, %54, %switch.lookup81, %25, %switch.lookup77, %14, %switch.lookup73, %3, %switch.lookup, %85, %69, %59, %2, %178, %177, %176, %175, %174, %173, %172, %171, %170, %169, %168, %165, %160, %157, %154, %149, %143, %139, %136, %132, %127, %122, %121, %120, %117, %114, %111, %108, %103, %98, %95, %92, %89, %86, %82, %79, %76, %73, %70, %66, %63, %60, %56, %51, %48, %45, %42, %39, %36, %33, %30, %27, %22, %19, %16, %11, %8, %5 + %.0 = phi i32 [ 0, %178 ], [ 317, %177 ], [ 316, %176 ], [ 152, %175 ], [ 149, %174 ], [ 382, %173 ], [ 429, %172 ], [ 426, %171 ], [ 417, %170 ], [ 415, %169 ], [ 413, %168 ], [ %167, %165 ], [ %162, %160 ], [ %159, %157 ], [ %156, %154 ], [ %151, %149 ], [ %146, %143 ], [ %142, %139 ], [ %138, %136 ], [ %135, %132 ], [ %131, %127 ], [ %126, %122 ], [ 279, %121 ], [ 278, %120 ], [ %119, %117 ], [ %116, %114 ], [ %113, %111 ], [ %110, %108 ], [ %107, %103 ], [ %102, %98 ], [ %97, %95 ], [ %94, %92 ], [ %91, %89 ], [ %88, %86 ], [ %84, %82 ], [ %81, %79 ], [ %78, %76 ], [ %75, %73 ], [ %72, %70 ], [ %68, %66 ], [ %65, %63 ], [ %62, %60 ], [ %58, %56 ], [ %53, %51 ], [ %50, %48 ], [ %47, %45 ], [ %44, %42 ], [ %41, %39 ], [ %38, %36 ], [ %35, %33 ], [ %32, %30 ], [ %29, %27 ], [ %24, %22 ], [ %21, %19 ], [ %18, %16 ], [ %13, %11 ], [ %10, %8 ], [ %7, %5 ], [ 472, %2 ], [ %., %59 ], [ %.63, %69 ], [ %.66, %85 ], [ %switch.load, %switch.lookup ], [ 0, %3 ], [ %switch.load76, %switch.lookup73 ], [ 0, %14 ], [ %switch.load80, %switch.lookup77 ], [ 0, %25 ], [ %switch.offset, %switch.lookup81 ], [ 0, %54 ], [ %switch.load86, %switch.lookup83 ], [ 0, %147 ], [ %switch.load90, %switch.lookup87 ], [ 0, %152 ], [ %switch.load94, %switch.lookup91 ], [ 0, %163 ] ret i32 %.0 } @@ -943,8 +943,8 @@ switch.lookup19: ; preds = %14 %switch.load22 = load i32, ptr %switch.gep21, align 4 br label %22 -22: ; preds = %switch.lookup19, %14, %switch.lookup15, %12, %10, %switch.lookup11, %8, %switch.lookup7, %6, %switch.lookup, %2, %2, %16, %5, %4, %3 - %.0 = phi i32 [ 0, %16 ], [ 247, %5 ], [ 246, %4 ], [ 24, %3 ], [ 23, %2 ], [ 23, %2 ], [ 0, %12 ], [ 0, %14 ], [ %switch.load, %switch.lookup ], [ 0, %6 ], [ %switch.load10, %switch.lookup7 ], [ 0, %8 ], [ %switch.load14, %switch.lookup11 ], [ 0, %10 ], [ %switch.load18, %switch.lookup15 ], [ %switch.load22, %switch.lookup19 ] +22: ; preds = %14, %switch.lookup19, %12, %switch.lookup15, %10, %switch.lookup11, %8, %switch.lookup7, %6, %switch.lookup, %2, %2, %16, %5, %4, %3 + %.0 = phi i32 [ 0, %16 ], [ 247, %5 ], [ 246, %4 ], [ 24, %3 ], [ 23, %2 ], [ 23, %2 ], [ %switch.load, %switch.lookup ], [ 0, %6 ], [ %switch.load10, %switch.lookup7 ], [ 0, %8 ], [ %switch.load14, %switch.lookup11 ], [ 0, %10 ], [ %switch.load18, %switch.lookup15 ], [ 0, %12 ], [ %switch.load22, %switch.lookup19 ], [ 0, %14 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/bfrop_base_copy.ll b/bench/openmpi/optimized/bfrop_base_copy.ll index 6c3ad7d67ac..554cd909329 100644 --- a/bench/openmpi/optimized/bfrop_base_copy.ll +++ b/bench/openmpi/optimized/bfrop_base_copy.ll @@ -261,80 +261,74 @@ pmix_bfrops_base_tma_buffer_extend.exit.thread: ; preds = %68, %pmix_bfrops_ba ; Function Attrs: mustprogress nofree nounwind willreturn uwtable define range(i32 -29, 1) i32 @pmix_bfrops_base_std_copy(ptr nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, i16 noundef zeroext %2) local_unnamed_addr #2 { - switch i16 %2, label %15 [ - i16 1, label %11 + switch i16 %2, label %13 [ + i16 1, label %9 i16 6, label %4 i16 11, label %4 i16 4, label %5 - i16 5, label %6 - i16 2, label %11 - i16 7, label %11 - i16 12, label %11 - i16 51, label %11 - i16 8, label %7 - i16 13, label %7 - i16 45, label %7 - i16 58, label %7 - i16 69, label %7 - i16 9, label %8 - i16 14, label %8 - i16 10, label %9 - i16 15, label %9 - i16 57, label %9 - i16 66, label %9 - i16 67, label %9 - i16 68, label %9 - i16 16, label %6 - i16 18, label %10 + i16 5, label %4 + i16 2, label %9 + i16 7, label %9 + i16 12, label %9 + i16 51, label %9 + i16 8, label %6 + i16 13, label %6 + i16 45, label %6 + i16 58, label %6 + i16 69, label %6 + i16 9, label %4 + i16 14, label %4 + i16 10, label %7 + i16 15, label %7 + i16 57, label %7 + i16 66, label %7 + i16 67, label %7 + i16 68, label %7 + i16 16, label %4 + i16 18, label %8 i16 19, label %5 - i16 20, label %6 - i16 40, label %6 - i16 30, label %11 + i16 20, label %4 + i16 40, label %4 + i16 30, label %9 i16 31, label %5 - i16 32, label %11 - i16 33, label %11 - i16 34, label %11 - i16 35, label %6 - i16 37, label %11 - i16 43, label %11 - i16 71, label %11 - i16 50, label %11 + i16 32, label %9 + i16 33, label %9 + i16 34, label %9 + i16 35, label %4 + i16 37, label %9 + i16 43, label %9 + i16 71, label %9 + i16 50, label %9 ] -4: ; preds = %3, %3 - br label %11 +4: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3 + br label %9 5: ; preds = %3, %3, %3 - br label %11 + br label %9 6: ; preds = %3, %3, %3, %3, %3 - br label %11 - -7: ; preds = %3, %3, %3, %3, %3 - br label %11 - -8: ; preds = %3, %3 - br label %11 + br label %9 -9: ; preds = %3, %3, %3, %3, %3, %3 - br label %11 +7: ; preds = %3, %3, %3, %3, %3, %3 + br label %9 -10: ; preds = %3 - br label %11 +8: ; preds = %3 + br label %9 -11: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %10, %9, %8, %7, %6, %5, %4 - %.0 = phi i64 [ 16, %10 ], [ 8, %9 ], [ 4, %8 ], [ 2, %7 ], [ 4, %6 ], [ 8, %5 ], [ 4, %4 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ] - %12 = tail call noalias ptr @malloc(i64 noundef %.0) #19 - %13 = icmp eq ptr %12, null - br i1 %13, label %15, label %14 +9: ; preds = %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %3, %8, %7, %6, %5, %4 + %.0 = phi i64 [ 16, %8 ], [ 8, %7 ], [ 2, %6 ], [ 8, %5 ], [ 4, %4 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ], [ 1, %3 ] + %10 = tail call noalias ptr @malloc(i64 noundef %.0) #19 + %11 = icmp eq ptr %10, null + br i1 %11, label %13, label %12 -14: ; preds = %11 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %.0, i1 false) - store ptr %12, ptr %0, align 8 - br label %15 +12: ; preds = %9 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %.0, i1 false) + store ptr %10, ptr %0, align 8 + br label %13 -15: ; preds = %11, %3, %14 - %.08 = phi i32 [ 0, %14 ], [ -16, %3 ], [ -29, %11 ] +13: ; preds = %9, %3, %12 + %.08 = phi i32 [ 0, %12 ], [ -16, %3 ], [ -29, %9 ] ret i32 %.08 } diff --git a/bench/openmpi/optimized/psquash_native.ll b/bench/openmpi/optimized/psquash_native.ll index a3fb28dd4cf..cdaa1df03b8 100644 --- a/bench/openmpi/optimized/psquash_native.ll +++ b/bench/openmpi/optimized/psquash_native.ll @@ -34,7 +34,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.2 = private unnamed_addr constant [25 x i8] c"psquash: native finalize\00", align 1 @.str.3 = private unnamed_addr constant [37 x i8] c"PMIX ERROR: %s in file %s at line %d\00", align 1 @.str.4 = private unnamed_addr constant [17 x i8] c"psquash_native.c\00", align 1 -@switch.table.native_get_max_size = private unnamed_addr constant [12 x i64] [i64 8, i64 2, i64 4, i64 2, i64 2, i64 4, i64 8, i64 4, i64 2, i64 2, i64 4, i64 8], align 8 +@switch.table.native_decode_int = private unnamed_addr constant [12 x i64] [i64 8, i64 2, i64 4, i64 2, i64 2, i64 4, i64 8, i64 4, i64 2, i64 2, i64 4, i64 8], align 8 ; Function Attrs: nounwind uwtable define internal noundef i32 @native_init() #0 { @@ -91,7 +91,7 @@ switch.hole_check: ; preds = %2 switch.lookup: ; preds = %switch.hole_check %4 = zext nneg i16 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [12 x i64], ptr @switch.table.native_get_max_size, i64 0, i64 %4 + %switch.gep = getelementptr inbounds nuw [12 x i64], ptr @switch.table.native_decode_int, i64 0, i64 %4 %switch.load = load i64, ptr %switch.gep, align 8 store i64 %switch.load, ptr %1, align 8 br label %5 @@ -105,96 +105,83 @@ switch.lookup: ; preds = %switch.hole_check define internal range(i32 -27, 1) i32 @native_encode_int(i16 noundef zeroext %0, ptr nocapture noundef readonly %1, ptr nocapture noundef writeonly %2, ptr nocapture noundef writeonly %3) #0 { %5 = alloca i64, align 8 store i64 0, ptr %5, align 8 - switch i16 %0, label %9 [ - i16 8, label %11 - i16 13, label %11 - i16 6, label %6 - i16 9, label %6 - i16 11, label %6 - i16 14, label %6 - i16 10, label %7 - i16 15, label %7 - i16 4, label %.thread29 - ] + %switch.tableidx = add i16 %0, -4 + %6 = icmp ult i16 %switch.tableidx, 12 + br i1 %6, label %switch.hole_check, label %7 + +7: ; preds = %switch.hole_check, %4 + %8 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 + tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %8, ptr noundef nonnull @.str.4, i32 noundef 139) #5 + br label %26 -6: ; preds = %4, %4, %4, %4 - br label %11 - -7: ; preds = %4, %4 - br label %11 - -.thread29: ; preds = %4 - %8 = load i64, ptr %1, align 1 - store i64 %8, ptr %5, align 8 - br label %20 - -9: ; preds = %4 - %10 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 - tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %10, ptr noundef nonnull @.str.4, i32 noundef 139) #5 - br label %28 - -11: ; preds = %7, %6, %4, %4 - %.023.ph = phi i64 [ 2, %4 ], [ 2, %4 ], [ 4, %6 ], [ 8, %7 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %.023.ph, i1 false) - switch i16 %0, label %26 [ - i16 8, label %12 - i16 13, label %12 - i16 6, label %16 - i16 11, label %16 - i16 9, label %16 - i16 14, label %16 - i16 15, label %20 - i16 10, label %20 +switch.hole_check: ; preds = %4 + %switch.shifted = lshr i16 3829, %switch.tableidx + %switch.lobit = trunc i16 %switch.shifted to i1 + br i1 %switch.lobit, label %switch.lookup, label %7 + +switch.lookup: ; preds = %switch.hole_check + %9 = zext nneg i16 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [12 x i64], ptr @switch.table.native_decode_int, i64 0, i64 %9 + %switch.load = load i64, ptr %switch.gep, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %switch.load, i1 false) + switch i16 %0, label %24 [ + i16 8, label %10 + i16 13, label %10 + i16 6, label %14 + i16 11, label %14 + i16 9, label %14 + i16 14, label %14 + i16 4, label %18 + i16 10, label %18 + i16 15, label %18 ] -12: ; preds = %11, %11 +10: ; preds = %switch.lookup, %switch.lookup %.0..0..0..0. = load i64, ptr %5, align 8 - %13 = trunc i64 %.0..0..0..0. to i16 - %14 = tail call zeroext i16 @htons(i16 noundef zeroext %13) #6 - %15 = zext i16 %14 to i64 + %11 = trunc i64 %.0..0..0..0. to i16 + %12 = tail call zeroext i16 @htons(i16 noundef zeroext %11) #6 + %13 = zext i16 %12 to i64 br label %pmix_hton64.exit -16: ; preds = %11, %11, %11, %11 +14: ; preds = %switch.lookup, %switch.lookup, %switch.lookup, %switch.lookup %.0..0..0..0.6 = load i64, ptr %5, align 8 - %17 = trunc i64 %.0..0..0..0.6 to i32 - %18 = tail call i32 @htonl(i32 noundef %17) #6 - %19 = zext i32 %18 to i64 + %15 = trunc i64 %.0..0..0..0.6 to i32 + %16 = tail call i32 @htonl(i32 noundef %15) #6 + %17 = zext i32 %16 to i64 br label %pmix_hton64.exit -20: ; preds = %11, %.thread29, %11 - %.023.ph31 = phi i64 [ 8, %.thread29 ], [ %.023.ph, %11 ], [ %.023.ph, %11 ] +18: ; preds = %switch.lookup, %switch.lookup, %switch.lookup %.0..0..0..0.7 = load i64, ptr %5, align 8 - %21 = tail call i32 @htonl(i32 noundef 1) #6 - %22 = icmp eq i32 %21, 1 - br i1 %22, label %pmix_hton64.exit, label %23 + %19 = tail call i32 @htonl(i32 noundef 1) #6 + %20 = icmp eq i32 %19, 1 + br i1 %20, label %pmix_hton64.exit, label %21 -23: ; preds = %20 +21: ; preds = %18 %.sroa.01.0.extract.trunc.i = trunc i64 %.0..0..0..0.7 to i32 %.sroa.22.0.extract.shift.i = lshr i64 %.0..0..0..0.7, 32 %.sroa.22.0.extract.trunc.i = trunc nuw i64 %.sroa.22.0.extract.shift.i to i32 - %24 = tail call i32 @htonl(i32 noundef %.sroa.22.0.extract.trunc.i) #6 - %25 = tail call i32 @htonl(i32 noundef %.sroa.01.0.extract.trunc.i) #6 - %.sroa.2.0.insert.ext.i = zext i32 %25 to i64 + %22 = tail call i32 @htonl(i32 noundef %.sroa.22.0.extract.trunc.i) #6 + %23 = tail call i32 @htonl(i32 noundef %.sroa.01.0.extract.trunc.i) #6 + %.sroa.2.0.insert.ext.i = zext i32 %23 to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %24 to i64 + %.sroa.0.0.insert.ext.i = zext i32 %22 to i64 %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.2.0.insert.shift.i, %.sroa.0.0.insert.ext.i br label %pmix_hton64.exit -26: ; preds = %11 - %27 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 - tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %27, ptr noundef nonnull @.str.4, i32 noundef 145) #5 - br label %28 +24: ; preds = %switch.lookup + %25 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 + tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %25, ptr noundef nonnull @.str.4, i32 noundef 145) #5 + br label %26 -pmix_hton64.exit: ; preds = %23, %20, %16, %12 - %.0.i.sink = phi i64 [ %19, %16 ], [ %15, %12 ], [ %.sroa.0.0.insert.insert.i, %23 ], [ %.0..0..0..0.7, %20 ] - %.023.ph32.ph = phi i64 [ %.023.ph, %16 ], [ %.023.ph, %12 ], [ %.023.ph31, %23 ], [ %.023.ph31, %20 ] +pmix_hton64.exit: ; preds = %21, %18, %14, %10 + %.0.i.sink = phi i64 [ %17, %14 ], [ %13, %10 ], [ %.sroa.0.0.insert.insert.i, %21 ], [ %.0..0..0..0.7, %18 ] store i64 %.0.i.sink, ptr %5, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr nonnull align 8 %5, i64 %.023.ph32.ph, i1 false) - store i64 %.023.ph32.ph, ptr %3, align 8 - br label %28 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(1) %5, i64 %switch.load, i1 false) + store i64 %switch.load, ptr %3, align 8 + br label %26 -28: ; preds = %pmix_hton64.exit, %26, %9 - %.0 = phi i32 [ -27, %9 ], [ -27, %26 ], [ 0, %pmix_hton64.exit ] +26: ; preds = %pmix_hton64.exit, %24, %7 + %.0 = phi i32 [ -27, %7 ], [ -27, %24 ], [ 0, %pmix_hton64.exit ] ret i32 %.0 } @@ -202,96 +189,83 @@ pmix_hton64.exit: ; preds = %23, %20, %16, %12 define internal range(i32 -27, 1) i32 @native_decode_int(i16 noundef zeroext %0, ptr nocapture noundef readonly %1, i64 %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef writeonly %4) #0 { %6 = alloca i64, align 8 store i64 0, ptr %6, align 8 - switch i16 %0, label %10 [ - i16 8, label %12 - i16 13, label %12 - i16 6, label %7 - i16 9, label %7 - i16 11, label %7 - i16 14, label %7 - i16 10, label %8 - i16 15, label %8 - i16 4, label %.thread32 - ] + %switch.tableidx = add i16 %0, -4 + %7 = icmp ult i16 %switch.tableidx, 12 + br i1 %7, label %switch.hole_check, label %8 + +8: ; preds = %switch.hole_check, %5 + %9 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 + tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %9, ptr noundef nonnull @.str.4, i32 noundef 163) #5 + br label %27 + +switch.hole_check: ; preds = %5 + %switch.shifted = lshr i16 3829, %switch.tableidx + %switch.lobit = trunc i16 %switch.shifted to i1 + br i1 %switch.lobit, label %switch.lookup, label %8 -7: ; preds = %5, %5, %5, %5 - br label %12 - -8: ; preds = %5, %5 - br label %12 - -.thread32: ; preds = %5 - %9 = load i64, ptr %1, align 1 - store i64 %9, ptr %6, align 8 - br label %21 - -10: ; preds = %5 - %11 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 - tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %11, ptr noundef nonnull @.str.4, i32 noundef 163) #5 - br label %29 - -12: ; preds = %8, %7, %5, %5 - %.025.ph = phi i64 [ 2, %5 ], [ 2, %5 ], [ 4, %7 ], [ 8, %8 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %6, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %.025.ph, i1 false) - switch i16 %0, label %27 [ - i16 8, label %13 - i16 13, label %13 - i16 6, label %17 - i16 11, label %17 - i16 9, label %17 - i16 14, label %17 - i16 10, label %21 - i16 15, label %21 +switch.lookup: ; preds = %switch.hole_check + %10 = zext nneg i16 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [12 x i64], ptr @switch.table.native_decode_int, i64 0, i64 %10 + %switch.load = load i64, ptr %switch.gep, align 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %6, ptr noundef nonnull align 1 dereferenceable(1) %1, i64 %switch.load, i1 false) + switch i16 %0, label %25 [ + i16 8, label %11 + i16 13, label %11 + i16 6, label %15 + i16 11, label %15 + i16 9, label %15 + i16 14, label %15 + i16 10, label %19 + i16 4, label %19 + i16 15, label %19 ] -13: ; preds = %12, %12 +11: ; preds = %switch.lookup, %switch.lookup %.0..0..0..0. = load i64, ptr %6, align 8 - %14 = trunc i64 %.0..0..0..0. to i16 - %15 = tail call zeroext i16 @ntohs(i16 noundef zeroext %14) #6 - %16 = zext i16 %15 to i64 + %12 = trunc i64 %.0..0..0..0. to i16 + %13 = tail call zeroext i16 @ntohs(i16 noundef zeroext %12) #6 + %14 = zext i16 %13 to i64 br label %pmix_ntoh64.exit -17: ; preds = %12, %12, %12, %12 +15: ; preds = %switch.lookup, %switch.lookup, %switch.lookup, %switch.lookup %.0..0..0..0.7 = load i64, ptr %6, align 8 - %18 = trunc i64 %.0..0..0..0.7 to i32 - %19 = tail call i32 @ntohl(i32 noundef %18) #6 - %20 = zext i32 %19 to i64 + %16 = trunc i64 %.0..0..0..0.7 to i32 + %17 = tail call i32 @ntohl(i32 noundef %16) #6 + %18 = zext i32 %17 to i64 br label %pmix_ntoh64.exit -21: ; preds = %12, %.thread32, %12 - %.025.ph34 = phi i64 [ 8, %.thread32 ], [ %.025.ph, %12 ], [ %.025.ph, %12 ] +19: ; preds = %switch.lookup, %switch.lookup, %switch.lookup %.0..0..0..0.8 = load i64, ptr %6, align 8 - %22 = tail call i32 @htonl(i32 noundef 1) #6 - %23 = icmp eq i32 %22, 1 - br i1 %23, label %pmix_ntoh64.exit, label %24 + %20 = tail call i32 @htonl(i32 noundef 1) #6 + %21 = icmp eq i32 %20, 1 + br i1 %21, label %pmix_ntoh64.exit, label %22 -24: ; preds = %21 +22: ; preds = %19 %.sroa.01.0.extract.trunc.i = trunc i64 %.0..0..0..0.8 to i32 %.sroa.22.0.extract.shift.i = lshr i64 %.0..0..0..0.8, 32 %.sroa.22.0.extract.trunc.i = trunc nuw i64 %.sroa.22.0.extract.shift.i to i32 - %25 = tail call i32 @ntohl(i32 noundef %.sroa.22.0.extract.trunc.i) #6 - %26 = tail call i32 @ntohl(i32 noundef %.sroa.01.0.extract.trunc.i) #6 - %.sroa.2.0.insert.ext.i = zext i32 %26 to i64 + %23 = tail call i32 @ntohl(i32 noundef %.sroa.22.0.extract.trunc.i) #6 + %24 = tail call i32 @ntohl(i32 noundef %.sroa.01.0.extract.trunc.i) #6 + %.sroa.2.0.insert.ext.i = zext i32 %24 to i64 %.sroa.2.0.insert.shift.i = shl nuw i64 %.sroa.2.0.insert.ext.i, 32 - %.sroa.0.0.insert.ext.i = zext i32 %25 to i64 + %.sroa.0.0.insert.ext.i = zext i32 %23 to i64 %.sroa.0.0.insert.insert.i = or disjoint i64 %.sroa.2.0.insert.shift.i, %.sroa.0.0.insert.ext.i br label %pmix_ntoh64.exit -27: ; preds = %12 - %28 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 - tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %28, ptr noundef nonnull @.str.4, i32 noundef 174) #5 - br label %29 +25: ; preds = %switch.lookup + %26 = tail call ptr @PMIx_Error_string(i32 noundef -27) #5 + tail call void (i32, ptr, ...) @pmix_output(i32 noundef 0, ptr noundef nonnull @.str.3, ptr noundef %26, ptr noundef nonnull @.str.4, i32 noundef 174) #5 + br label %27 -pmix_ntoh64.exit: ; preds = %24, %21, %17, %13 - %.0.i.sink = phi i64 [ %20, %17 ], [ %16, %13 ], [ %.sroa.0.0.insert.insert.i, %24 ], [ %.0..0..0..0.8, %21 ] - %.025.ph35.ph = phi i64 [ %.025.ph, %17 ], [ %.025.ph, %13 ], [ %.025.ph34, %24 ], [ %.025.ph34, %21 ] +pmix_ntoh64.exit: ; preds = %22, %19, %15, %11 + %.0.i.sink = phi i64 [ %18, %15 ], [ %14, %11 ], [ %.sroa.0.0.insert.insert.i, %22 ], [ %.0..0..0..0.8, %19 ] store i64 %.0.i.sink, ptr %6, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %3, ptr nonnull align 8 %6, i64 %.025.ph35.ph, i1 false) - store i64 %.025.ph35.ph, ptr %4, align 8 - br label %29 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %switch.load, i1 false) + store i64 %switch.load, ptr %4, align 8 + br label %27 -29: ; preds = %pmix_ntoh64.exit, %27, %10 - %.0 = phi i32 [ -27, %10 ], [ -27, %27 ], [ 0, %pmix_ntoh64.exit ] +27: ; preds = %pmix_ntoh64.exit, %25, %8 + %.0 = phi i32 [ -27, %8 ], [ -27, %25 ], [ 0, %pmix_ntoh64.exit ] ret i32 %.0 } diff --git a/bench/openssl/optimized/libcrypto-lib-bss_acpt.ll b/bench/openssl/optimized/libcrypto-lib-bss_acpt.ll index 514a6c969c9..a2e0e3c9551 100644 --- a/bench/openssl/optimized/libcrypto-lib-bss_acpt.ll +++ b/bench/openssl/optimized/libcrypto-lib-bss_acpt.ll @@ -154,13 +154,11 @@ entry: i32 124, label %sw.bb97 i32 8, label %sw.bb145 i32 9, label %sw.bb148 - i32 10, label %sw.bb151 - i32 13, label %sw.bb151 + i32 2, label %sw.bb160 + i32 12, label %sw.epilog169 i32 11, label %sw.epilog169 i32 131, label %sw.bb153 i32 132, label %sw.bb156 - i32 12, label %sw.epilog169 - i32 2, label %sw.bb160 ] sw.bb: ; preds = %entry @@ -430,9 +428,6 @@ sw.bb148: ; preds = %entry store i32 %conv149, ptr %shutdown150, align 4 br label %sw.epilog169 -sw.bb151: ; preds = %entry, %entry - br label %sw.epilog169 - sw.bb153: ; preds = %entry %conv154 = trunc i64 %num to i32 %bind_mode155 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -458,8 +453,8 @@ if.else164: ; preds = %sw.bb160 sw.default168: ; preds = %entry br label %sw.epilog169 -sw.epilog169: ; preds = %sw.bb160, %sw.bb97, %if.else127, %if.then130, %sw.bb85, %if.else56, %if.then, %if.then20, %if.else164, %entry, %entry, %if.then112, %if.then126, %sw.bb133, %sw.bb134, %sw.default, %if.then119, %if.then105, %if.end92, %if.then73, %if.else75, %if.else27, %if.then37, %if.then47, %if.then43, %if.then33, %if.end, %if.then64, %if.then59, %sw.default168, %sw.bb156, %sw.bb153, %sw.bb151, %sw.bb148, %sw.bb145, %sw.bb79, %sw.bb3, %acpt_close_socket.exit - %ret.0 = phi i64 [ 0, %sw.default168 ], [ %call166, %if.else164 ], [ %conv158, %sw.bb156 ], [ 1, %sw.bb153 ], [ 1, %entry ], [ 1, %entry ], [ 0, %sw.bb151 ], [ 1, %sw.bb148 ], [ %conv147, %sw.bb145 ], [ 1, %if.then105 ], [ 1, %if.then112 ], [ 1, %if.then119 ], [ 1, %if.then126 ], [ -1, %sw.default ], [ %conv136, %sw.bb134 ], [ 4, %sw.bb133 ], [ %conv94, %if.end92 ], [ 1, %sw.bb79 ], [ 1, %if.then73 ], [ 1, %if.else75 ], [ %conv13, %if.end ], [ 1, %if.else27 ], [ 1, %if.then33 ], [ 1, %if.then37 ], [ 1, %if.then43 ], [ 1, %if.then47 ], [ 1, %if.then59 ], [ 1, %if.then64 ], [ %conv, %sw.bb3 ], [ 0, %acpt_close_socket.exit ], [ 0, %if.then20 ], [ 1, %if.then ], [ 1, %if.else56 ], [ -1, %sw.bb85 ], [ 6, %if.then130 ], [ -1, %if.else127 ], [ -1, %sw.bb97 ], [ 0, %sw.bb160 ] +sw.epilog169: ; preds = %sw.bb160, %sw.bb97, %if.else127, %if.then130, %sw.bb85, %if.else56, %if.then, %if.then20, %entry, %if.else164, %entry, %if.then112, %if.then126, %sw.bb133, %sw.bb134, %sw.default, %if.then119, %if.then105, %if.end92, %if.then73, %if.else75, %if.else27, %if.then37, %if.then47, %if.then43, %if.then33, %if.end, %if.then64, %if.then59, %sw.default168, %sw.bb156, %sw.bb153, %sw.bb148, %sw.bb145, %sw.bb79, %sw.bb3, %acpt_close_socket.exit + %ret.0 = phi i64 [ 0, %sw.default168 ], [ %call166, %if.else164 ], [ %conv158, %sw.bb156 ], [ 1, %sw.bb153 ], [ 1, %entry ], [ 1, %entry ], [ 1, %sw.bb148 ], [ %conv147, %sw.bb145 ], [ 1, %if.then105 ], [ 1, %if.then112 ], [ 1, %if.then119 ], [ 1, %if.then126 ], [ -1, %sw.default ], [ %conv136, %sw.bb134 ], [ 4, %sw.bb133 ], [ %conv94, %if.end92 ], [ 1, %sw.bb79 ], [ 1, %if.then73 ], [ 1, %if.else75 ], [ %conv13, %if.end ], [ 1, %if.else27 ], [ 1, %if.then33 ], [ 1, %if.then37 ], [ 1, %if.then43 ], [ 1, %if.then47 ], [ 1, %if.then59 ], [ 1, %if.then64 ], [ %conv, %sw.bb3 ], [ 0, %acpt_close_socket.exit ], [ 0, %if.then20 ], [ 1, %if.then ], [ 1, %if.else56 ], [ -1, %sw.bb85 ], [ 6, %if.then130 ], [ -1, %if.else127 ], [ -1, %sw.bb97 ], [ 0, %sw.bb160 ] ret i64 %ret.0 } diff --git a/bench/openssl/optimized/libcrypto-lib-bss_fd.ll b/bench/openssl/optimized/libcrypto-lib-bss_fd.ll index 89c7f307d0c..58b8d89fe62 100644 --- a/bench/openssl/optimized/libcrypto-lib-bss_fd.ll +++ b/bench/openssl/optimized/libcrypto-lib-bss_fd.ll @@ -252,7 +252,7 @@ if.end12: ; preds = %if.then9, %while.en ; Function Attrs: nounwind uwtable define internal i64 @fd_ctrl(ptr noundef %b, i32 noundef %cmd, i64 noundef %num, ptr noundef %ptr) #1 { entry: - switch i32 %cmd, label %sw.epilog [ + switch i32 %cmd, label %sw.default [ i32 1, label %sw.bb i32 128, label %sw.bb1 i32 133, label %sw.bb3 @@ -262,8 +262,8 @@ entry: i32 8, label %sw.bb17 i32 9, label %sw.bb20 i32 2, label %sw.bb25 - i32 11, label %sw.bb24 - i32 12, label %sw.bb24 + i32 11, label %sw.epilog + i32 12, label %sw.epilog ] sw.bb: ; preds = %entry @@ -353,9 +353,6 @@ sw.bb20: ; preds = %entry store i32 %conv21, ptr %shutdown22, align 4 br label %sw.epilog -sw.bb24: ; preds = %entry, %entry - br label %sw.epilog - sw.bb25: ; preds = %entry %flags = getelementptr inbounds nuw i8, ptr %b, i64 48 %8 = load i32, ptr %flags, align 8 @@ -364,8 +361,11 @@ sw.bb25: ; preds = %entry %conv28 = zext nneg i32 %and.lobit to i64 br label %sw.epilog -sw.epilog: ; preds = %entry, %sw.bb9, %if.end, %sw.bb25, %sw.bb24, %sw.bb20, %sw.bb17, %fd_free.exit, %sw.bb3, %sw.bb1 - %ret.0 = phi i64 [ %conv28, %sw.bb25 ], [ 1, %sw.bb24 ], [ 1, %sw.bb20 ], [ %conv19, %sw.bb17 ], [ %conv15, %if.end ], [ 1, %fd_free.exit ], [ %call5, %sw.bb3 ], [ %call, %sw.bb1 ], [ -1, %sw.bb9 ], [ 0, %entry ] +sw.default: ; preds = %entry + br label %sw.epilog + +sw.epilog: ; preds = %entry, %entry, %sw.bb9, %if.end, %sw.default, %sw.bb25, %sw.bb20, %sw.bb17, %fd_free.exit, %sw.bb3, %sw.bb1 + %ret.0 = phi i64 [ 0, %sw.default ], [ %conv28, %sw.bb25 ], [ 1, %sw.bb20 ], [ %conv19, %sw.bb17 ], [ %conv15, %if.end ], [ 1, %fd_free.exit ], [ %call5, %sw.bb3 ], [ %call, %sw.bb1 ], [ -1, %sw.bb9 ], [ 1, %entry ], [ 1, %entry ] ret i64 %ret.0 } diff --git a/bench/openusd/optimized/aom_image.c.ll b/bench/openusd/optimized/aom_image.c.ll index 6373cba3aed..5b7489bf47b 100644 --- a/bench/openusd/optimized/aom_image.c.ll +++ b/bench/openusd/optimized/aom_image.c.ll @@ -15,310 +15,300 @@ define internal fastcc noundef ptr @img_alloc_helper(ptr noundef %0, i32 noundef %12 = add i32 %spec.store.select, -1 %13 = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %spec.store.select) %.not = icmp samesign ult i32 %13, 2 - br i1 %.not, label %14, label %150 + br i1 %.not, label %14, label %146 14: ; preds = %11 %spec.store.select1 = tail call i32 @llvm.umax.i32(i32 %5, i32 1) %15 = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %spec.store.select1) %.not106 = icmp samesign ult i32 %15, 2 - br i1 %.not106, label %16, label %150 + br i1 %.not106, label %16, label %146 16: ; preds = %14 %spec.store.select2 = tail call i32 @llvm.umax.i32(i32 %6, i32 1) %17 = tail call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %spec.store.select2) %.not108 = icmp samesign ult i32 %17, 2 - br i1 %.not108, label %18, label %150 + br i1 %.not108, label %18, label %146 18: ; preds = %16 - switch i32 %1, label %21 [ - i32 258, label %24 - i32 769, label %24 - i32 260, label %24 - i32 771, label %24 - i32 2310, label %20 - i32 262, label %.thread + switch i32 %1, label %20 [ + i32 258, label %21 + i32 769, label %21 + i32 260, label %21 + i32 771, label %21 + i32 2310, label %.thread + i32 262, label %19 i32 2817, label %19 i32 2306, label %19 i32 2309, label %.thread127 ] -19: ; preds = %18, %18 - br label %24 +19: ; preds = %18, %18, %18 + br label %21 20: ; preds = %18 - br label %.thread + br label %21 -21: ; preds = %18 - br label %24 - -.thread: ; preds = %20, %18 - %.097.ph = phi i32 [ 48, %20 ], [ 24, %18 ] +21: ; preds = %18, %18, %18, %18, %20, %19 + %.097 = phi i32 [ 16, %20 ], [ 24, %19 ], [ 12, %18 ], [ 12, %18 ], [ 12, %18 ], [ 12, %18 ] %22 = and i32 %1, 2048 - %.not109119 = icmp eq i32 %22, 0 - %23 = select i1 %.not109119, i32 8, i32 16 - br label %27 - -24: ; preds = %18, %18, %18, %18, %21, %19 - %.097 = phi i32 [ 16, %21 ], [ 24, %19 ], [ 12, %18 ], [ 12, %18 ], [ 12, %18 ], [ 12, %18 ] - %25 = and i32 %1, 2048 - %.not109 = icmp eq i32 %25, 0 - %26 = select i1 %.not109, i32 8, i32 16 - switch i32 %1, label %27 [ - i32 258, label %29 - i32 769, label %29 - i32 260, label %29 - i32 771, label %29 - i32 261, label %29 - i32 2306, label %29 - i32 2817, label %29 - i32 2309, label %29 + %.not109 = icmp eq i32 %22, 0 + %23 = select i1 %.not109, i32 8, i32 16 + switch i32 %1, label %.thread [ + i32 258, label %25 + i32 769, label %25 + i32 260, label %25 + i32 771, label %25 + i32 261, label %25 + i32 2306, label %25 + i32 2817, label %25 + i32 2309, label %25 ] -27: ; preds = %.thread, %24 - %28 = phi i32 [ %23, %.thread ], [ %26, %24 ] - %.not109123 = phi i1 [ %.not109119, %.thread ], [ %.not109, %24 ] - %.097121 = phi i32 [ %.097.ph, %.thread ], [ %.097, %24 ] - br label %29 - -29: ; preds = %24, %24, %24, %24, %24, %24, %24, %24, %27 - %30 = phi i32 [ %28, %27 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ], [ %26, %24 ] - %.not109122 = phi i1 [ %.not109123, %27 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ], [ %.not109, %24 ] - %.097120 = phi i32 [ %.097121, %27 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ], [ %.097, %24 ] - %.099 = phi i32 [ 0, %27 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ], [ 1, %24 ] +.thread: ; preds = %18, %21 + %24 = phi i32 [ %23, %21 ], [ 16, %18 ] + %.not109123 = phi i1 [ %.not109, %21 ], [ false, %18 ] + %.097121 = phi i32 [ %.097, %21 ], [ 48, %18 ] + br label %25 + +25: ; preds = %21, %21, %21, %21, %21, %21, %21, %21, %.thread + %26 = phi i32 [ %24, %.thread ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ], [ %23, %21 ] + %.not109122 = phi i1 [ %.not109123, %.thread ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ], [ %.not109, %21 ] + %.097120 = phi i32 [ %.097121, %.thread ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ], [ %.097, %21 ] + %.099 = phi i32 [ 0, %.thread ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ], [ 1, %21 ] switch i32 %1, label %.thread127 [ - i32 258, label %32 - i32 769, label %32 - i32 260, label %32 - i32 771, label %32 - i32 2817, label %32 - i32 2306, label %32 + i32 258, label %28 + i32 769, label %28 + i32 260, label %28 + i32 771, label %28 + i32 2817, label %28 + i32 2306, label %28 ] -.thread127: ; preds = %18, %29 - %.099137 = phi i32 [ %.099, %29 ], [ 1, %18 ] - %.097120134 = phi i32 [ %.097120, %29 ], [ 32, %18 ] - %.not109122132 = phi i1 [ %.not109122, %29 ], [ false, %18 ] - %31 = phi i32 [ %30, %29 ], [ 16, %18 ] - br label %32 +.thread127: ; preds = %18, %25 + %.099137 = phi i32 [ %.099, %25 ], [ 1, %18 ] + %.097120134 = phi i32 [ %.097120, %25 ], [ 32, %18 ] + %.not109122132 = phi i1 [ %.not109122, %25 ], [ false, %18 ] + %27 = phi i32 [ %26, %25 ], [ 16, %18 ] + br label %28 -32: ; preds = %29, %29, %29, %29, %29, %29, %.thread127 - %.099138 = phi i32 [ %.099137, %.thread127 ], [ %.099, %29 ], [ %.099, %29 ], [ %.099, %29 ], [ %.099, %29 ], [ %.099, %29 ], [ %.099, %29 ] - %.097120135 = phi i32 [ %.097120134, %.thread127 ], [ %.097120, %29 ], [ %.097120, %29 ], [ %.097120, %29 ], [ %.097120, %29 ], [ %.097120, %29 ], [ %.097120, %29 ] - %.not109122131 = phi i1 [ %.not109122132, %.thread127 ], [ %.not109122, %29 ], [ %.not109122, %29 ], [ %.not109122, %29 ], [ %.not109122, %29 ], [ %.not109122, %29 ], [ %.not109122, %29 ] - %33 = phi i32 [ %31, %.thread127 ], [ %30, %29 ], [ %30, %29 ], [ %30, %29 ], [ %30, %29 ], [ %30, %29 ], [ %30, %29 ] - %.098 = phi i32 [ 0, %.thread127 ], [ 1, %29 ], [ 1, %29 ], [ 1, %29 ], [ 1, %29 ], [ 1, %29 ], [ 1, %29 ] +28: ; preds = %25, %25, %25, %25, %25, %25, %.thread127 + %.099138 = phi i32 [ %.099137, %.thread127 ], [ %.099, %25 ], [ %.099, %25 ], [ %.099, %25 ], [ %.099, %25 ], [ %.099, %25 ], [ %.099, %25 ] + %.097120135 = phi i32 [ %.097120134, %.thread127 ], [ %.097120, %25 ], [ %.097120, %25 ], [ %.097120, %25 ], [ %.097120, %25 ], [ %.097120, %25 ], [ %.097120, %25 ] + %.not109122131 = phi i1 [ %.not109122132, %.thread127 ], [ %.not109122, %25 ], [ %.not109122, %25 ], [ %.not109122, %25 ], [ %.not109122, %25 ], [ %.not109122, %25 ], [ %.not109122, %25 ] + %29 = phi i32 [ %27, %.thread127 ], [ %26, %25 ], [ %26, %25 ], [ %26, %25 ], [ %26, %25 ], [ %26, %25 ], [ %26, %25 ] + %.098 = phi i32 [ 0, %.thread127 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ], [ 1, %25 ] %notmask.i = shl nsw i32 -1, %.099138 - %34 = sub i32 0, %spec.store.select2 - %35 = tail call i32 @llvm.umin.i32(i32 %notmask.i, i32 %34) + %30 = sub i32 0, %spec.store.select2 + %31 = tail call i32 @llvm.umin.i32(i32 %notmask.i, i32 %30) + %32 = xor i32 %31, -1 + %33 = add i32 %2, %32 + %34 = and i32 %33, %31 + %notmask.i117 = shl nsw i32 -1, %.098 + %35 = tail call i32 @llvm.umin.i32(i32 %notmask.i117, i32 %30) %36 = xor i32 %35, -1 - %37 = add i32 %2, %36 + %37 = add i32 %3, %36 %38 = and i32 %37, %35 - %notmask.i117 = shl nsw i32 -1, %.098 - %39 = tail call i32 @llvm.umin.i32(i32 %notmask.i117, i32 %34) - %40 = xor i32 %39, -1 - %41 = add i32 %3, %40 - %42 = and i32 %41, %39 - %43 = and i32 %1, 256 - %.not110 = icmp eq i32 %43, 0 - %44 = mul i32 %38, %.097120135 - %45 = select i1 %.not109122131, i32 3, i32 4 - %46 = lshr i32 %44, %45 - %47 = select i1 %.not110, i32 %46, i32 %38 - %48 = shl i32 %7, 1 - %49 = add i32 %spec.store.select1, -1 - %50 = add i32 %49, %48 - %51 = add i32 %50, %47 - %52 = sub i32 0, %spec.store.select1 - %53 = and i32 %51, %52 - %54 = shl i32 %53, %45 - %55 = lshr i32 %54, 3 + %39 = and i32 %1, 256 + %.not110 = icmp eq i32 %39, 0 + %40 = mul i32 %34, %.097120135 + %41 = select i1 %.not109122131, i32 3, i32 4 + %42 = lshr i32 %40, %41 + %43 = select i1 %.not110, i32 %42, i32 %34 + %44 = shl i32 %7, 1 + %45 = add i32 %spec.store.select1, -1 + %46 = add i32 %45, %44 + %47 = add i32 %46, %43 + %48 = sub i32 0, %spec.store.select1 + %49 = and i32 %47, %48 + %50 = shl i32 %49, %41 + %51 = lshr i32 %50, 3 %.not111 = icmp eq ptr %0, null - br i1 %.not111, label %56, label %60 + br i1 %.not111, label %52, label %56 -56: ; preds = %32 - %57 = tail call noalias dereferenceable_or_null(168) ptr @calloc(i64 noundef 1, i64 noundef 168) #14 - %.not112 = icmp eq ptr %57, null - br i1 %.not112, label %150, label %58 +52: ; preds = %28 + %53 = tail call noalias dereferenceable_or_null(168) ptr @calloc(i64 noundef 1, i64 noundef 168) #14 + %.not112 = icmp eq ptr %53, null + br i1 %.not112, label %146, label %54 -58: ; preds = %56 - %59 = getelementptr inbounds nuw i8, ptr %57, i64 148 - store i32 1, ptr %59, align 4 - br label %61 +54: ; preds = %52 + %55 = getelementptr inbounds nuw i8, ptr %53, i64 148 + store i32 1, ptr %55, align 4 + br label %57 -60: ; preds = %32 +56: ; preds = %28 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(168) %0, i8 0, i64 168, i1 false) - br label %61 + br label %57 -61: ; preds = %60, %58 - %.1 = phi ptr [ %0, %60 ], [ %57, %58 ] - %62 = getelementptr inbounds nuw i8, ptr %.1, i64 136 - store ptr %8, ptr %62, align 8 +57: ; preds = %56, %54 + %.1 = phi ptr [ %0, %56 ], [ %53, %54 ] + %58 = getelementptr inbounds nuw i8, ptr %.1, i64 136 + store ptr %8, ptr %58, align 8 %.not113 = icmp eq ptr %8, null - br i1 %.not113, label %63, label %.thread139 - -63: ; preds = %61 - %64 = add i32 %42, %48 - %65 = zext i32 %64 to i64 - %66 = zext nneg i32 %55 to i64 - br i1 %.not110, label %73, label %67 - -67: ; preds = %63 - %68 = zext nneg i32 %.097120135 to i64 - %69 = mul nuw nsw i64 %65, %68 - %70 = mul i64 %69, %66 - %71 = select i1 %.not109122131, i64 3, i64 4 - %72 = lshr i64 %70, %71 - br label %75 - -73: ; preds = %63 - %74 = mul nuw nsw i64 %66, %65 - br label %75 - -75: ; preds = %67, %73 - %76 = phi i64 [ %72, %67 ], [ %74, %73 ] + br i1 %.not113, label %59, label %.thread139 + +59: ; preds = %57 + %60 = add i32 %38, %44 + %61 = zext i32 %60 to i64 + %62 = zext nneg i32 %51 to i64 + br i1 %.not110, label %69, label %63 + +63: ; preds = %59 + %64 = zext nneg i32 %.097120135 to i64 + %65 = mul nuw nsw i64 %61, %64 + %66 = mul i64 %65, %62 + %67 = select i1 %.not109122131, i64 3, i64 4 + %68 = lshr i64 %66, %67 + br label %71 + +69: ; preds = %59 + %70 = mul nuw nsw i64 %62, %61 + br label %71 + +71: ; preds = %63, %69 + %72 = phi i64 [ %68, %63 ], [ %70, %69 ] %.not114 = icmp eq ptr %9, null - %77 = zext i32 %spec.store.select to i64 - br i1 %.not114, label %88, label %78 - -78: ; preds = %75 - %79 = add nsw i64 %77, -1 - %80 = add nuw nsw i64 %79, %76 - %81 = tail call ptr %9(ptr noundef %10, i64 noundef %80) #15 - %.not115 = icmp eq ptr %81, null - %82 = ptrtoint ptr %81 to i64 - %83 = zext i32 %12 to i64 - %84 = add i64 %82, %83 - %85 = xor i64 %83, -1 - %86 = and i64 %84, %85 - %87 = inttoptr i64 %86 to ptr - br i1 %.not115, label %.thread141, label %92 - -88: ; preds = %75 - %89 = tail call ptr @aom_memalign(i64 noundef %77, i64 noundef %76) #15 - br label %92 - -.thread141: ; preds = %78 - store ptr null, ptr %62, align 8 - %90 = getelementptr inbounds nuw i8, ptr %.1, i64 144 - store i32 0, ptr %90, align 8 - %91 = getelementptr inbounds nuw i8, ptr %.1, i64 104 - store i64 %76, ptr %91, align 8 - br label %150 - -92: ; preds = %78, %88 - %storemerge.sink = phi ptr [ %89, %88 ], [ %87, %78 ] - %.sink = phi i32 [ 1, %88 ], [ 0, %78 ] - store ptr %storemerge.sink, ptr %62, align 8 - %93 = getelementptr inbounds nuw i8, ptr %.1, i64 144 - store i32 %.sink, ptr %93, align 8 - %94 = getelementptr inbounds nuw i8, ptr %.1, i64 104 - store i64 %76, ptr %94, align 8 + %73 = zext i32 %spec.store.select to i64 + br i1 %.not114, label %84, label %74 + +74: ; preds = %71 + %75 = add nsw i64 %73, -1 + %76 = add nuw nsw i64 %75, %72 + %77 = tail call ptr %9(ptr noundef %10, i64 noundef %76) #15 + %.not115 = icmp eq ptr %77, null + %78 = ptrtoint ptr %77 to i64 + %79 = zext i32 %12 to i64 + %80 = add i64 %78, %79 + %81 = xor i64 %79, -1 + %82 = and i64 %80, %81 + %83 = inttoptr i64 %82 to ptr + br i1 %.not115, label %.thread141, label %88 + +84: ; preds = %71 + %85 = tail call ptr @aom_memalign(i64 noundef %73, i64 noundef %72) #15 + br label %88 + +.thread141: ; preds = %74 + store ptr null, ptr %58, align 8 + %86 = getelementptr inbounds nuw i8, ptr %.1, i64 144 + store i32 0, ptr %86, align 8 + %87 = getelementptr inbounds nuw i8, ptr %.1, i64 104 + store i64 %72, ptr %87, align 8 + br label %146 + +88: ; preds = %74, %84 + %storemerge.sink = phi ptr [ %85, %84 ], [ %83, %74 ] + %.sink = phi i32 [ 1, %84 ], [ 0, %74 ] + store ptr %storemerge.sink, ptr %58, align 8 + %89 = getelementptr inbounds nuw i8, ptr %.1, i64 144 + store i32 %.sink, ptr %89, align 8 + %90 = getelementptr inbounds nuw i8, ptr %.1, i64 104 + store i64 %72, ptr %90, align 8 %.not116 = icmp eq ptr %storemerge.sink, null - br i1 %.not116, label %150, label %.thread139 + br i1 %.not116, label %146, label %.thread139 -.thread139: ; preds = %61, %92 - %95 = phi ptr [ %storemerge.sink, %92 ], [ %8, %61 ] +.thread139: ; preds = %57, %88 + %91 = phi ptr [ %storemerge.sink, %88 ], [ %8, %57 ] store i32 %1, ptr %.1, align 8 - %96 = getelementptr inbounds nuw i8, ptr %.1, i64 36 - store i32 %33, ptr %96, align 4 - %97 = getelementptr inbounds nuw i8, ptr %.1, i64 28 - store i32 %38, ptr %97, align 4 - %98 = getelementptr inbounds nuw i8, ptr %.1, i64 32 - store i32 %42, ptr %98, align 8 - %99 = getelementptr inbounds nuw i8, ptr %.1, i64 56 - store i32 %.099138, ptr %99, align 8 - %100 = getelementptr inbounds nuw i8, ptr %.1, i64 60 - store i32 %.098, ptr %100, align 4 - %101 = getelementptr inbounds nuw i8, ptr %.1, i64 112 - store i32 %.097120135, ptr %101, align 8 - %102 = getelementptr inbounds nuw i8, ptr %.1, i64 88 - store i32 %55, ptr %102, align 8 - %103 = lshr i32 %55, %.099138 - %104 = getelementptr inbounds nuw i8, ptr %.1, i64 96 - store i32 %103, ptr %104, align 8 - %105 = getelementptr inbounds nuw i8, ptr %.1, i64 92 - store i32 %103, ptr %105, align 4 - %.not.i = icmp ugt i32 %2, %38 - %.not74.i = icmp ugt i32 %3, %42 + %92 = getelementptr inbounds nuw i8, ptr %.1, i64 36 + store i32 %29, ptr %92, align 4 + %93 = getelementptr inbounds nuw i8, ptr %.1, i64 28 + store i32 %34, ptr %93, align 4 + %94 = getelementptr inbounds nuw i8, ptr %.1, i64 32 + store i32 %38, ptr %94, align 8 + %95 = getelementptr inbounds nuw i8, ptr %.1, i64 56 + store i32 %.099138, ptr %95, align 8 + %96 = getelementptr inbounds nuw i8, ptr %.1, i64 60 + store i32 %.098, ptr %96, align 4 + %97 = getelementptr inbounds nuw i8, ptr %.1, i64 112 + store i32 %.097120135, ptr %97, align 8 + %98 = getelementptr inbounds nuw i8, ptr %.1, i64 88 + store i32 %51, ptr %98, align 8 + %99 = lshr i32 %51, %.099138 + %100 = getelementptr inbounds nuw i8, ptr %.1, i64 96 + store i32 %99, ptr %100, align 8 + %101 = getelementptr inbounds nuw i8, ptr %.1, i64 92 + store i32 %99, ptr %101, align 4 + %.not.i = icmp ugt i32 %2, %34 + %.not74.i = icmp ugt i32 %3, %38 %or.cond = select i1 %.not.i, i1 true, i1 %.not74.i - br i1 %or.cond, label %aom_img_set_rect.exit, label %106 - -106: ; preds = %.thread139 - %107 = getelementptr inbounds nuw i8, ptr %.1, i64 40 - store i32 %2, ptr %107, align 8 - %108 = getelementptr inbounds nuw i8, ptr %.1, i64 44 - store i32 %3, ptr %108, align 4 - br i1 %.not110, label %109, label %115 - -109: ; preds = %106 - %110 = mul i32 %.097120135, %7 - %111 = lshr i32 %110, 3 - %112 = zext nneg i32 %111 to i64 - %113 = getelementptr inbounds nuw i8, ptr %95, i64 %112 - %114 = mul i32 %55, %7 - %.pre = zext i32 %114 to i64 + br i1 %or.cond, label %aom_img_set_rect.exit, label %102 + +102: ; preds = %.thread139 + %103 = getelementptr inbounds nuw i8, ptr %.1, i64 40 + store i32 %2, ptr %103, align 8 + %104 = getelementptr inbounds nuw i8, ptr %.1, i64 44 + store i32 %3, ptr %104, align 4 + br i1 %.not110, label %105, label %111 + +105: ; preds = %102 + %106 = mul i32 %.097120135, %7 + %107 = lshr i32 %106, 3 + %108 = zext nneg i32 %107 to i64 + %109 = getelementptr inbounds nuw i8, ptr %91, i64 %108 + %110 = mul i32 %51, %7 + %.pre = zext i32 %110 to i64 br label %.sink.split.i -115: ; preds = %106 - %116 = lshr i32 %1, 11 - %.lobit.i = and i32 %116, 1 - %117 = shl i32 %7, %.lobit.i - %118 = zext i32 %117 to i64 - %119 = getelementptr inbounds nuw i8, ptr %95, i64 %118 - %120 = mul i32 %55, %7 - %121 = zext i32 %120 to i64 - %122 = getelementptr inbounds nuw i8, ptr %119, i64 %121 - %123 = getelementptr inbounds nuw i8, ptr %.1, i64 64 - store ptr %122, ptr %123, align 8 - %124 = add i32 %42, %48 - %125 = mul i32 %55, %124 - %126 = zext i32 %125 to i64 - %127 = getelementptr inbounds nuw i8, ptr %95, i64 %126 - %128 = lshr i32 %7, %.098 - %129 = lshr i32 %7, %.099138 - %130 = and i32 %1, 512 - %.not77.i = icmp eq i32 %130, 0 - %131 = shl i32 %129, %.lobit.i - %132 = zext i32 %131 to i64 - %133 = getelementptr inbounds nuw i8, ptr %127, i64 %132 - %134 = lshr i32 %42, %.098 - %135 = shl i32 %128, 1 - %136 = add i32 %134, %135 - %137 = mul i32 %103, %128 - %138 = zext i32 %137 to i64 - %139 = getelementptr inbounds nuw i8, ptr %133, i64 %138 - %140 = mul i32 %103, %136 - %141 = zext i32 %140 to i64 - %142 = getelementptr inbounds nuw i8, ptr %127, i64 %141 - %143 = getelementptr inbounds nuw i8, ptr %142, i64 %132 - br i1 %.not77.i, label %144, label %146 - -144: ; preds = %115 - %145 = getelementptr inbounds nuw i8, ptr %.1, i64 72 - store ptr %139, ptr %145, align 8 +111: ; preds = %102 + %112 = lshr i32 %1, 11 + %.lobit.i = and i32 %112, 1 + %113 = shl i32 %7, %.lobit.i + %114 = zext i32 %113 to i64 + %115 = getelementptr inbounds nuw i8, ptr %91, i64 %114 + %116 = mul i32 %51, %7 + %117 = zext i32 %116 to i64 + %118 = getelementptr inbounds nuw i8, ptr %115, i64 %117 + %119 = getelementptr inbounds nuw i8, ptr %.1, i64 64 + store ptr %118, ptr %119, align 8 + %120 = add i32 %38, %44 + %121 = mul i32 %51, %120 + %122 = zext i32 %121 to i64 + %123 = getelementptr inbounds nuw i8, ptr %91, i64 %122 + %124 = lshr i32 %7, %.098 + %125 = lshr i32 %7, %.099138 + %126 = and i32 %1, 512 + %.not77.i = icmp eq i32 %126, 0 + %127 = shl i32 %125, %.lobit.i + %128 = zext i32 %127 to i64 + %129 = getelementptr inbounds nuw i8, ptr %123, i64 %128 + %130 = lshr i32 %38, %.098 + %131 = shl i32 %124, 1 + %132 = add i32 %130, %131 + %133 = mul i32 %99, %124 + %134 = zext i32 %133 to i64 + %135 = getelementptr inbounds nuw i8, ptr %129, i64 %134 + %136 = mul i32 %99, %132 + %137 = zext i32 %136 to i64 + %138 = getelementptr inbounds nuw i8, ptr %123, i64 %137 + %139 = getelementptr inbounds nuw i8, ptr %138, i64 %128 + br i1 %.not77.i, label %140, label %142 + +140: ; preds = %111 + %141 = getelementptr inbounds nuw i8, ptr %.1, i64 72 + store ptr %135, ptr %141, align 8 br label %.sink.split.i -146: ; preds = %115 - %147 = getelementptr inbounds nuw i8, ptr %.1, i64 80 - store ptr %139, ptr %147, align 8 +142: ; preds = %111 + %143 = getelementptr inbounds nuw i8, ptr %.1, i64 80 + store ptr %135, ptr %143, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %146, %144, %109 - %.pre-phi = phi i64 [ %138, %146 ], [ %138, %144 ], [ %.pre, %109 ] - %.sink82.i = phi ptr [ %143, %146 ], [ %143, %144 ], [ %113, %109 ] - %.sink81.i = phi i64 [ 72, %146 ], [ 80, %144 ], [ 64, %109 ] - %148 = getelementptr inbounds nuw i8, ptr %.sink82.i, i64 %.pre-phi - %149 = getelementptr inbounds nuw i8, ptr %.1, i64 %.sink81.i - store ptr %148, ptr %149, align 8 +.sink.split.i: ; preds = %142, %140, %105 + %.pre-phi = phi i64 [ %134, %142 ], [ %134, %140 ], [ %.pre, %105 ] + %.sink82.i = phi ptr [ %139, %142 ], [ %139, %140 ], [ %109, %105 ] + %.sink81.i = phi i64 [ 72, %142 ], [ 80, %140 ], [ 64, %105 ] + %144 = getelementptr inbounds nuw i8, ptr %.sink82.i, i64 %.pre-phi + %145 = getelementptr inbounds nuw i8, ptr %.1, i64 %.sink81.i + store ptr %144, ptr %145, align 8 br label %aom_img_set_rect.exit -150: ; preds = %.thread141, %92, %56, %16, %14, %11 - %.096 = phi ptr [ %0, %11 ], [ %0, %14 ], [ %0, %16 ], [ %.1, %92 ], [ null, %56 ], [ %.1, %.thread141 ] +146: ; preds = %.thread141, %88, %52, %16, %14, %11 + %.096 = phi ptr [ %0, %11 ], [ %0, %14 ], [ %0, %16 ], [ %.1, %88 ], [ null, %52 ], [ %.1, %.thread141 ] tail call void @aom_img_free(ptr noundef %.096) br label %aom_img_set_rect.exit -aom_img_set_rect.exit: ; preds = %.sink.split.i, %.thread139, %150 - %.0 = phi ptr [ null, %150 ], [ %.1, %.thread139 ], [ %.1, %.sink.split.i ] +aom_img_set_rect.exit: ; preds = %.sink.split.i, %.thread139, %146 + %.0 = phi ptr [ null, %146 ], [ %.1, %.thread139 ], [ %.1, %.sink.split.i ] ret ptr %.0 } diff --git a/bench/openusd/optimized/patchMap.cpp.ll b/bench/openusd/optimized/patchMap.cpp.ll index 919d38af333..4f00bae8a1c 100644 --- a/bench/openusd/optimized/patchMap.cpp.ll +++ b/bench/openusd/optimized/patchMap.cpp.ll @@ -48,9 +48,9 @@ define void @_ZN10OpenSubdiv6v3_6_03Far8PatchMapC2ERKNS1_10PatchTableE(ptr nound _ZNK10OpenSubdiv6v3_6_03Far15PatchDescriptor21GetNumControlVerticesEv.exit: ; preds = %2 %9 = load i32, ptr %3, align 4 - %cond = icmp eq i32 %9, 4 - %spec.select = zext i1 %cond to i8 - store i8 %spec.select, ptr %0, align 8 + %switch.selectcmp7 = icmp eq i32 %9, 4 + %switch.select8 = zext i1 %switch.selectcmp7 to i8 + store i8 %switch.select8, ptr %0, align 8 %10 = invoke noundef i32 @_ZNK10OpenSubdiv6v3_6_03Far10PatchTable18GetNumPatchesTotalEv(ptr noundef nonnull align 8 dereferenceable(273) %1) to label %11 unwind label %15 diff --git a/bench/openusd/optimized/types.cpp.ll b/bench/openusd/optimized/types.cpp.ll index f371332d41b..c4fd8fd5757 100644 --- a/bench/openusd/optimized/types.cpp.ll +++ b/bench/openusd/optimized/types.cpp.ll @@ -346,10 +346,10 @@ define noundef range(i64 0, 33) i64 @_ZN32pxrInternal_v0_24__pxrReserved__22HioG br label %9 9: ; preds = %8, %7 - switch i32 %0, label %34 [ - i32 0, label %39 - i32 4, label %39 - i32 36, label %39 + switch i32 %0, label %28 [ + i32 0, label %33 + i32 4, label %33 + i32 36, label %33 i32 1, label %10 i32 5, label %10 i32 37, label %10 @@ -359,131 +359,113 @@ define noundef range(i64 0, 33) i64 @_ZN32pxrInternal_v0_24__pxrReserved__22HioG i32 3, label %12 i32 7, label %12 i32 39, label %12 - i32 8, label %13 - i32 20, label %13 - i32 24, label %13 - i32 9, label %14 - i32 21, label %14 - i32 25, label %14 - i32 10, label %15 - i32 22, label %15 - i32 26, label %15 - i32 11, label %16 - i32 23, label %16 - i32 27, label %16 - i32 12, label %17 - i32 28, label %17 - i32 32, label %17 - i32 13, label %18 - i32 29, label %18 - i32 33, label %18 - i32 14, label %19 - i32 30, label %19 - i32 34, label %19 - i32 15, label %20 - i32 31, label %20 - i32 35, label %20 - i32 16, label %21 - i32 17, label %22 - i32 18, label %23 - i32 19, label %24 - i32 40, label %25 - i32 41, label %25 - i32 42, label %25 - i32 43, label %25 - i32 44, label %25 - i32 45, label %25 - i32 -1, label %29 - i32 46, label %29 + i32 8, label %10 + i32 20, label %10 + i32 24, label %10 + i32 9, label %12 + i32 21, label %12 + i32 25, label %12 + i32 10, label %13 + i32 22, label %13 + i32 26, label %13 + i32 11, label %14 + i32 23, label %14 + i32 27, label %14 + i32 12, label %12 + i32 28, label %12 + i32 32, label %12 + i32 13, label %14 + i32 29, label %14 + i32 33, label %14 + i32 14, label %15 + i32 30, label %15 + i32 34, label %15 + i32 15, label %16 + i32 31, label %16 + i32 35, label %16 + i32 16, label %14 + i32 17, label %16 + i32 18, label %17 + i32 19, label %18 + i32 40, label %19 + i32 41, label %19 + i32 42, label %19 + i32 43, label %19 + i32 44, label %19 + i32 45, label %19 + i32 -1, label %23 + i32 46, label %23 ] -10: ; preds = %9, %9, %9 - br label %39 +10: ; preds = %9, %9, %9, %9, %9, %9 + br label %33 11: ; preds = %9, %9, %9 - br label %39 + br label %33 -12: ; preds = %9, %9, %9 - br label %39 +12: ; preds = %9, %9, %9, %9, %9, %9, %9, %9, %9 + br label %33 13: ; preds = %9, %9, %9 - br label %39 + br label %33 -14: ; preds = %9, %9, %9 - br label %39 +14: ; preds = %9, %9, %9, %9, %9, %9, %9 + br label %33 15: ; preds = %9, %9, %9 - br label %39 - -16: ; preds = %9, %9, %9 - br label %39 - -17: ; preds = %9, %9, %9 - br label %39 + br label %33 -18: ; preds = %9, %9, %9 - br label %39 +16: ; preds = %9, %9, %9, %9 + br label %33 -19: ; preds = %9, %9, %9 - br label %39 +17: ; preds = %9 + br label %33 -20: ; preds = %9, %9, %9 - br label %39 +18: ; preds = %9 + br label %33 -21: ; preds = %9 - br label %39 +19: ; preds = %9, %9, %9, %9, %9, %9 + br i1 %.not, label %21, label %20 -22: ; preds = %9 - br label %39 - -23: ; preds = %9 - br label %39 - -24: ; preds = %9 - br label %39 - -25: ; preds = %9, %9, %9, %9, %9, %9 - br i1 %.not, label %27, label %26 - -26: ; preds = %25 +20: ; preds = %19 store i64 4, ptr %1, align 8 - br label %27 + br label %21 -27: ; preds = %26, %25 - br i1 %.not12, label %39, label %28 +21: ; preds = %20, %19 + br i1 %.not12, label %33, label %22 -28: ; preds = %27 +22: ; preds = %21 store i64 4, ptr %2, align 8 - br label %39 + br label %33 -29: ; preds = %9, %9 +23: ; preds = %9, %9 store ptr @.str, ptr %4, align 8 - %30 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr @__func__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store i64 344, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store ptr @__PRETTY_FUNCTION__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %32, align 8 - %33 = getelementptr inbounds nuw i8, ptr %4, i64 32 - store i8 0, ptr %33, align 8 + %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr @__func__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %24, align 8 + %25 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store i64 344, ptr %25, align 8 + %26 = getelementptr inbounds nuw i8, ptr %4, i64 24 + store ptr @__PRETTY_FUNCTION__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %26, align 8 + %27 = getelementptr inbounds nuw i8, ptr %4, i64 32 + store i8 0, ptr %27, align 8 call void (ptr, i32, ptr, ...) @_ZN32pxrInternal_v0_24__pxrReserved__18Tf_PostErrorHelperERKNS_13TfCallContextENS_16TfDiagnosticTypeEPKcz(ptr noundef nonnull align 8 dereferenceable(33) %4, i32 noundef 1, ptr noundef nonnull @.str.5) - br label %39 + br label %33 -34: ; preds = %9 +28: ; preds = %9 store ptr @.str, ptr %5, align 8 - %35 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store ptr @__func__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %35, align 8 - %36 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 347, ptr %36, align 8 - %37 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store ptr @__PRETTY_FUNCTION__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %37, align 8 - %38 = getelementptr inbounds nuw i8, ptr %5, i64 32 - store i8 0, ptr %38, align 8 + %29 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store ptr @__func__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %29, align 8 + %30 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store i64 347, ptr %30, align 8 + %31 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store ptr @__PRETTY_FUNCTION__._ZN32pxrInternal_v0_24__pxrReserved__22HioGetDataSizeOfFormatENS_9HioFormatEPmS1_, ptr %31, align 8 + %32 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store i8 0, ptr %32, align 8 call void (ptr, i32, ptr, ...) @_ZN32pxrInternal_v0_24__pxrReserved__18Tf_PostErrorHelperERKNS_13TfCallContextENS_16TfDiagnosticTypeEPKcz(ptr noundef nonnull align 8 dereferenceable(33) %5, i32 noundef 1, ptr noundef nonnull @.str.4) - br label %39 + br label %33 -39: ; preds = %27, %28, %9, %9, %9, %34, %29, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10 - %.0 = phi i64 [ 0, %34 ], [ 0, %29 ], [ 32, %24 ], [ 24, %23 ], [ 16, %22 ], [ 8, %21 ], [ 16, %20 ], [ 12, %19 ], [ 8, %18 ], [ 4, %17 ], [ 8, %16 ], [ 6, %15 ], [ 4, %14 ], [ 2, %13 ], [ 4, %12 ], [ 3, %11 ], [ 2, %10 ], [ 1, %9 ], [ 1, %9 ], [ 1, %9 ], [ 16, %28 ], [ 16, %27 ] +33: ; preds = %21, %22, %9, %9, %9, %28, %23, %18, %17, %16, %15, %14, %13, %12, %11, %10 + %.0 = phi i64 [ 0, %28 ], [ 0, %23 ], [ 32, %18 ], [ 24, %17 ], [ 16, %16 ], [ 12, %15 ], [ 8, %14 ], [ 6, %13 ], [ 4, %12 ], [ 3, %11 ], [ 2, %10 ], [ 1, %9 ], [ 1, %9 ], [ 1, %9 ], [ 16, %22 ], [ 16, %21 ] ret i64 %.0 } diff --git a/bench/php/optimized/dce.ll b/bench/php/optimized/dce.ll index c1e59c2759c..d1d9204e24e 100644 --- a/bench/php/optimized/dce.ll +++ b/bench/php/optimized/dce.ll @@ -317,10 +317,10 @@ define hidden i32 @dce_optimize_op_array(ptr noundef %0, ptr nocapture noundef % %174 = getelementptr inbounds nuw i8, ptr %0, i64 88 %175 = getelementptr inbounds nuw i8, ptr %2, i64 56 %176 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %177 = getelementptr inbounds nuw i8, ptr %2, i64 64 - %178 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %179 = getelementptr inbounds nuw i8, ptr %0, i64 176 - %180 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %177 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %178 = getelementptr inbounds nuw i8, ptr %0, i64 176 + %179 = getelementptr inbounds nuw i8, ptr %0, i64 104 + %180 = getelementptr inbounds nuw i8, ptr %2, i64 64 %181 = getelementptr inbounds nuw i8, ptr %0, i64 32 %182 = zext nneg i32 %253 to i64 br label %260 @@ -1099,8 +1099,6 @@ add_to_phi_worklist_no_val.exit1616: ; preds = %add_to_phi_worklist i8 -62, label %may_have_side_effects.exit.thread1698 i8 72, label %606 i8 125, label %802 - i8 -73, label %750 - i8 -121, label %734 i8 -122, label %734 i8 -123, label %734 i8 -124, label %734 @@ -1112,8 +1110,10 @@ add_to_phi_worklist_no_val.exit1616: ; preds = %add_to_phi_worklist i8 36, label %684 i8 34, label %684 i8 -103, label %643 - i8 49, label %761 + i8 -121, label %734 i8 22, label %614 + i8 -73, label %750 + i8 49, label %761 i8 77, label %802 ] @@ -1171,7 +1171,7 @@ is_bad_mod.exit.i: ; preds = %614 br i1 %637, label %may_have_side_effects.exit.thread1698, label %.critedge.i .critedge.i: ; preds = %632, %628 - %638 = load ptr, ptr %177, align 8 + %638 = load ptr, ptr %180, align 8 %639 = sext i32 %630 to i64 %640 = getelementptr inbounds %struct._zend_ssa_var, ptr %638, i64 %639, i32 7 %641 = load i8, ptr %640, align 8 @@ -1186,7 +1186,7 @@ is_bad_mod.exit.i: ; preds = %614 br i1 %646, label %647, label %674 647: ; preds = %643 - %648 = load i32, ptr %178, align 4 + %648 = load i32, ptr %177, align 4 %649 = and i32 %648, 33554432 %.not261.i = icmp eq i32 %649, 0 br i1 %.not261.i, label %655, label %650 @@ -1199,7 +1199,7 @@ is_bad_mod.exit.i: ; preds = %614 br label %661 655: ; preds = %647 - %656 = load ptr, ptr %179, align 8 + %656 = load ptr, ptr %178, align 8 %657 = getelementptr inbounds nuw i8, ptr %601, i64 8 %658 = load i32, ptr %657, align 8 %659 = zext i32 %658 to i64 @@ -1277,7 +1277,7 @@ is_bad_mod.exit280.i: ; preds = %688 br i1 %.not.i278.not.i, label %698, label %may_have_side_effects.exit.thread 698: ; preds = %is_bad_mod.exit280.i - %699 = load ptr, ptr %177, align 8 + %699 = load ptr, ptr %180, align 8 %700 = zext nneg i32 %690 to i64 %701 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %699, i64 %700, i32 7 %702 = load i8, ptr %701, align 8 @@ -1302,7 +1302,7 @@ is_bad_mod.exit283.i: ; preds = %704 br i1 %.not.i281.not.i, label %714, label %may_have_side_effects.exit.thread 714: ; preds = %is_bad_mod.exit283.i - %715 = load ptr, ptr %177, align 8 + %715 = load ptr, ptr %180, align 8 %716 = zext nneg i32 %706 to i64 %717 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %715, i64 %716, i32 7 %718 = load i8, ptr %717, align 8 @@ -1350,7 +1350,7 @@ is_bad_mod.exit286.i: ; preds = %734 br i1 %.not.i284.not.i, label %744, label %may_have_side_effects.exit.thread 744: ; preds = %is_bad_mod.exit286.i - %745 = load ptr, ptr %177, align 8 + %745 = load ptr, ptr %180, align 8 %746 = zext nneg i32 %736 to i64 %747 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %745, i64 %746, i32 7 %748 = load i8, ptr %747, align 8 @@ -1359,7 +1359,7 @@ is_bad_mod.exit286.i: ; preds = %734 br i1 %.not255.i.not, label %may_have_side_effects.exit.thread1698, label %may_have_side_effects.exit.thread 750: ; preds = %600 - %751 = load ptr, ptr %180, align 8 + %751 = load ptr, ptr %179, align 8 %.not251.i = icmp eq ptr %751, null br i1 %.not251.i, label %may_have_side_effects.exit.thread1698, label %752 @@ -1388,7 +1388,7 @@ is_bad_mod.exit286.i: ; preds = %734 br i1 %764, label %765, label %792 765: ; preds = %761 - %766 = load i32, ptr %178, align 4 + %766 = load i32, ptr %177, align 4 %767 = and i32 %766, 33554432 %.not249.i = icmp eq i32 %767, 0 br i1 %.not249.i, label %773, label %768 @@ -1401,7 +1401,7 @@ is_bad_mod.exit286.i: ; preds = %734 br label %779 773: ; preds = %765 - %774 = load ptr, ptr %179, align 8 + %774 = load ptr, ptr %178, align 8 %775 = getelementptr inbounds nuw i8, ptr %601, i64 8 %776 = load i32, ptr %775, align 8 %777 = zext i32 %776 to i64 @@ -1463,7 +1463,7 @@ is_bad_mod.exit286.i: ; preds = %734 br i1 %805, label %806, label %833 806: ; preds = %802 - %807 = load i32, ptr %178, align 4 + %807 = load i32, ptr %177, align 4 %808 = and i32 %807, 33554432 %.not246.i = icmp eq i32 %808, 0 br i1 %.not246.i, label %814, label %809 @@ -1476,7 +1476,7 @@ is_bad_mod.exit286.i: ; preds = %734 br label %820 814: ; preds = %806 - %815 = load ptr, ptr %179, align 8 + %815 = load ptr, ptr %178, align 8 %816 = getelementptr inbounds nuw i8, ptr %601, i64 8 %817 = load i32, ptr %816, align 8 %818 = zext i32 %817 to i64 @@ -1575,7 +1575,7 @@ may_throw_dce_exception.exit: ; preds = %854 br i1 %869, label %870, label %877 870: ; preds = %864 - %871 = load ptr, ptr %177, align 8 + %871 = load ptr, ptr %180, align 8 %872 = zext nneg i32 %868 to i64 %873 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %871, i64 %872 %874 = load i32, ptr %873, align 8 @@ -1590,7 +1590,7 @@ may_throw_dce_exception.exit: ; preds = %854 br i1 %880, label %881, label %888 881: ; preds = %877 - %882 = load ptr, ptr %177, align 8 + %882 = load ptr, ptr %180, align 8 %883 = zext nneg i32 %879 to i64 %884 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %882, i64 %883 %885 = load i32, ptr %884, align 8 @@ -1605,7 +1605,7 @@ may_throw_dce_exception.exit: ; preds = %854 br i1 %891, label %892, label %may_break_varargs.exit 892: ; preds = %888 - %893 = load ptr, ptr %177, align 8 + %893 = load ptr, ptr %180, align 8 %894 = zext nneg i32 %890 to i64 %895 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %893, i64 %894 %896 = load i32, ptr %895, align 8 @@ -1638,7 +1638,7 @@ may_have_side_effects.exit.thread._crit_edge: ; preds = %may_have_side_effec br i1 %910, label %911, label %935 911: ; preds = %907 - %912 = load ptr, ptr %177, align 8 + %912 = load ptr, ptr %180, align 8 %913 = zext nneg i32 %909 to i64 %914 = getelementptr inbounds nuw %struct._zend_ssa_var, ptr %912, i64 %913, i32 7 %915 = load i8, ptr %914, align 8 diff --git a/bench/php/optimized/ir_emit.ll b/bench/php/optimized/ir_emit.ll index f332d0bf59c..9bcc41cf984 100644 --- a/bench/php/optimized/ir_emit.ll +++ b/bench/php/optimized/ir_emit.ll @@ -2013,13 +2013,13 @@ define hidden range(i32 0, 10243) i32 @ir_get_target_constraints(ptr noundef %0, i8 -82, label %350 i8 86, label %350 i8 87, label %350 - i8 103, label %351 - i8 77, label %352 - i8 -80, label %353 - i8 -79, label %355 - i8 88, label %357 - i8 82, label %358 - i8 85, label %360 + i8 103, label %350 + i8 77, label %351 + i8 -80, label %352 + i8 -79, label %354 + i8 88, label %356 + i8 82, label %357 + i8 85, label %359 ] 10: ; preds = %3 @@ -2744,33 +2744,30 @@ ir_may_fuse_imm.exit.thread10.i: ; preds = %ir_may_fuse_imm.exi store i8 0, ptr %2, align 1 br label %ir_add_const_tmp_reg.exit -350: ; preds = %3, %3, %3 +350: ; preds = %3, %3, %3, %3 br label %ir_add_const_tmp_reg.exit 351: ; preds = %3 br label %ir_add_const_tmp_reg.exit 352: ; preds = %3 - br label %ir_add_const_tmp_reg.exit - -353: ; preds = %3 - %354 = getelementptr inbounds nuw i8, ptr %2, i64 17 - store i8 0, ptr %354, align 1 + %353 = getelementptr inbounds nuw i8, ptr %2, i64 17 + store i8 0, ptr %353, align 1 store i8 3, ptr %9, align 1 br label %ir_add_const_tmp_reg.exit -355: ; preds = %3 - %356 = getelementptr inbounds nuw i8, ptr %2, i64 17 - store i8 16, ptr %356, align 1 +354: ; preds = %3 + %355 = getelementptr inbounds nuw i8, ptr %2, i64 17 + store i8 16, ptr %355, align 1 store i8 3, ptr %9, align 1 br label %ir_add_const_tmp_reg.exit -357: ; preds = %3 +356: ; preds = %3 br label %ir_add_const_tmp_reg.exit -358: ; preds = %3 - %359 = getelementptr inbounds nuw i8, ptr %2, i64 3 - store i8 3, ptr %359, align 1 +357: ; preds = %3 + %358 = getelementptr inbounds nuw i8, ptr %2, i64 3 + store i8 3, ptr %358, align 1 %.sroa.27.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 4 store i8 6, ptr %.sroa.27.0..sroa_idx, align 1 %.sroa.38.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 5 @@ -2779,9 +2776,9 @@ ir_may_fuse_imm.exit.thread10.i: ; preds = %ir_may_fuse_imm.exi store i8 2, ptr %.sroa.49.0..sroa_idx, align 1 br label %ir_add_const_tmp_reg.exit -360: ; preds = %3 - %361 = getelementptr inbounds nuw i8, ptr %2, i64 3 - store i8 3, ptr %361, align 1 +359: ; preds = %3 + %360 = getelementptr inbounds nuw i8, ptr %2, i64 3 + store i8 3, ptr %360, align 1 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 4 store i8 6, ptr %.sroa.2.0..sroa_idx, align 1 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 5 @@ -2790,12 +2787,12 @@ ir_may_fuse_imm.exit.thread10.i: ; preds = %ir_may_fuse_imm.exi store i8 3, ptr %.sroa.4.0..sroa_idx, align 1 br label %ir_add_const_tmp_reg.exit -ir_add_const_tmp_reg.exit: ; preds = %ir_may_fuse_imm.exit.thread10.i, %ir_may_fuse_imm.exit.i, %177, %174, %170, %231, %245, %237, %326, %337, %312, %324, %294, %303, %310, %252, %261, %268, %194, %198, %144, %132, %138, %126, %130, %111, %117, %101, %107, %87, %91, %75, %79, %81, %42, %48, %51, %20, %24, %27, %360, %358, %357, %355, %353, %352, %351, %350, %349, %344, %343, %341, %340, %339, %288, %251, %250, %219, %34, %30, %29, %3 - %.0331 = phi i32 [ 5377, %3 ], [ 257, %360 ], [ 256, %358 ], [ 0, %357 ], [ 2048, %355 ], [ 2048, %353 ], [ 8192, %352 ], [ 2048, %351 ], [ 2048, %350 ], [ 1, %349 ], [ 2, %344 ], [ 2, %343 ], [ 0, %341 ], [ 265, %340 ], [ 517, %339 ], [ 513, %337 ], [ 513, %326 ], [ %.359, %324 ], [ %.359, %312 ], [ 265, %303 ], [ 265, %310 ], [ 265, %294 ], [ 517, %288 ], [ 517, %261 ], [ 517, %268 ], [ 517, %252 ], [ 517, %251 ], [ 2565, %250 ], [ 1024, %219 ], [ 5120, %198 ], [ 5120, %194 ], [ 1025, %144 ], [ 4096, %138 ], [ 4096, %132 ], [ 5120, %130 ], [ 5120, %126 ], [ 4096, %117 ], [ 4096, %111 ], [ 2305, %107 ], [ 2305, %101 ], [ 2305, %91 ], [ 2305, %87 ], [ 513, %81 ], [ %.4335, %79 ], [ %.4335, %75 ], [ %.3334, %51 ], [ %.3334, %48 ], [ %.3334, %42 ], [ 2562, %34 ], [ %.357, %30 ], [ 513, %29 ], [ %.1332, %27 ], [ %.1332, %24 ], [ %.1332, %20 ], [ 10242, %237 ], [ 10242, %245 ], [ 10242, %231 ], [ 1025, %170 ], [ 1025, %174 ], [ 1025, %177 ], [ 1025, %ir_may_fuse_imm.exit.i ], [ 1025, %ir_may_fuse_imm.exit.thread10.i ] - %.0 = phi i32 [ 0, %3 ], [ 1, %360 ], [ 1, %358 ], [ 0, %357 ], [ 0, %355 ], [ 0, %353 ], [ 0, %352 ], [ 0, %351 ], [ 0, %350 ], [ 0, %349 ], [ 0, %344 ], [ 0, %343 ], [ 0, %341 ], [ 0, %340 ], [ 0, %339 ], [ 2, %337 ], [ 1, %326 ], [ 1, %324 ], [ 0, %312 ], [ 0, %303 ], [ 1, %310 ], [ 0, %294 ], [ %293, %288 ], [ 0, %261 ], [ 1, %268 ], [ 0, %252 ], [ 0, %251 ], [ 0, %250 ], [ %223, %219 ], [ %207, %198 ], [ %.6, %194 ], [ 0, %144 ], [ 1, %138 ], [ 0, %132 ], [ %131, %130 ], [ %.5, %126 ], [ %118, %117 ], [ 0, %111 ], [ 1, %107 ], [ 0, %101 ], [ %100, %91 ], [ %.4, %87 ], [ %82, %81 ], [ %.3, %79 ], [ %.3, %75 ], [ %57, %51 ], [ %.2, %48 ], [ %.2, %42 ], [ 2, %34 ], [ 1, %30 ], [ 0, %29 ], [ %28, %27 ], [ 0, %24 ], [ 0, %20 ], [ %.1, %237 ], [ %249, %245 ], [ %.1, %231 ], [ 0, %170 ], [ 0, %174 ], [ 0, %177 ], [ 0, %ir_may_fuse_imm.exit.i ], [ 1, %ir_may_fuse_imm.exit.thread10.i ] - %362 = trunc i32 %.0 to i8 - %363 = getelementptr inbounds nuw i8, ptr %2, i64 1 - store i8 %362, ptr %363, align 1 +ir_add_const_tmp_reg.exit: ; preds = %ir_may_fuse_imm.exit.thread10.i, %ir_may_fuse_imm.exit.i, %177, %174, %170, %231, %245, %237, %326, %337, %312, %324, %294, %303, %310, %252, %261, %268, %194, %198, %144, %132, %138, %126, %130, %111, %117, %101, %107, %87, %91, %75, %79, %81, %42, %48, %51, %20, %24, %27, %359, %357, %356, %354, %352, %351, %350, %349, %344, %343, %341, %340, %339, %288, %251, %250, %219, %34, %30, %29, %3 + %.0331 = phi i32 [ 5377, %3 ], [ 257, %359 ], [ 256, %357 ], [ 0, %356 ], [ 2048, %354 ], [ 2048, %352 ], [ 8192, %351 ], [ 2048, %350 ], [ 1, %349 ], [ 2, %344 ], [ 2, %343 ], [ 0, %341 ], [ 265, %340 ], [ 517, %339 ], [ 513, %337 ], [ 513, %326 ], [ %.359, %324 ], [ %.359, %312 ], [ 265, %303 ], [ 265, %310 ], [ 265, %294 ], [ 517, %288 ], [ 517, %261 ], [ 517, %268 ], [ 517, %252 ], [ 517, %251 ], [ 2565, %250 ], [ 1024, %219 ], [ 5120, %198 ], [ 5120, %194 ], [ 1025, %144 ], [ 4096, %138 ], [ 4096, %132 ], [ 5120, %130 ], [ 5120, %126 ], [ 4096, %117 ], [ 4096, %111 ], [ 2305, %107 ], [ 2305, %101 ], [ 2305, %91 ], [ 2305, %87 ], [ 513, %81 ], [ %.4335, %79 ], [ %.4335, %75 ], [ %.3334, %51 ], [ %.3334, %48 ], [ %.3334, %42 ], [ 2562, %34 ], [ %.357, %30 ], [ 513, %29 ], [ %.1332, %27 ], [ %.1332, %24 ], [ %.1332, %20 ], [ 10242, %237 ], [ 10242, %245 ], [ 10242, %231 ], [ 1025, %170 ], [ 1025, %174 ], [ 1025, %177 ], [ 1025, %ir_may_fuse_imm.exit.i ], [ 1025, %ir_may_fuse_imm.exit.thread10.i ] + %.0 = phi i32 [ 0, %3 ], [ 1, %359 ], [ 1, %357 ], [ 0, %356 ], [ 0, %354 ], [ 0, %352 ], [ 0, %351 ], [ 0, %350 ], [ 0, %349 ], [ 0, %344 ], [ 0, %343 ], [ 0, %341 ], [ 0, %340 ], [ 0, %339 ], [ 2, %337 ], [ 1, %326 ], [ 1, %324 ], [ 0, %312 ], [ 0, %303 ], [ 1, %310 ], [ 0, %294 ], [ %293, %288 ], [ 0, %261 ], [ 1, %268 ], [ 0, %252 ], [ 0, %251 ], [ 0, %250 ], [ %223, %219 ], [ %207, %198 ], [ %.6, %194 ], [ 0, %144 ], [ 1, %138 ], [ 0, %132 ], [ %131, %130 ], [ %.5, %126 ], [ %118, %117 ], [ 0, %111 ], [ 1, %107 ], [ 0, %101 ], [ %100, %91 ], [ %.4, %87 ], [ %82, %81 ], [ %.3, %79 ], [ %.3, %75 ], [ %57, %51 ], [ %.2, %48 ], [ %.2, %42 ], [ 2, %34 ], [ 1, %30 ], [ 0, %29 ], [ %28, %27 ], [ 0, %24 ], [ 0, %20 ], [ %.1, %237 ], [ %249, %245 ], [ %.1, %231 ], [ 0, %170 ], [ 0, %174 ], [ 0, %177 ], [ 0, %ir_may_fuse_imm.exit.i ], [ 1, %ir_may_fuse_imm.exit.thread10.i ] + %361 = trunc i32 %.0 to i8 + %362 = getelementptr inbounds nuw i8, ptr %2, i64 1 + store i8 %361, ptr %362, align 1 ret i32 %.0331 } diff --git a/bench/postgres/optimized/acl.ll b/bench/postgres/optimized/acl.ll index d241a38c542..57914fb66fe 100644 --- a/bench/postgres/optimized/acl.ll +++ b/bench/postgres/optimized/acl.ll @@ -1909,8 +1909,8 @@ define dso_local i64 @hash_aclitem_extended(ptr nocapture noundef readonly %0) l ; Function Attrs: nounwind uwtable define dso_local noundef ptr @acldefault(i32 noundef %0, i32 noundef %1) local_unnamed_addr #0 { - switch i32 %0, label %13 [ - i32 6, label %16 + switch i32 %0, label %12 [ + i32 6, label %15 i32 41, label %.thread44 i32 37, label %3 i32 9, label %4 @@ -1921,9 +1921,9 @@ define dso_local noundef ptr @acldefault(i32 noundef %0, i32 noundef %1) local_u i32 42, label %9 i32 16, label %10 i32 17, label %10 - i32 12, label %11 - i32 49, label %11 - i32 27, label %12 + i32 12, label %6 + i32 49, label %6 + i32 27, label %11 ] 3: ; preds = %2 @@ -1935,7 +1935,7 @@ define dso_local noundef ptr @acldefault(i32 noundef %0, i32 noundef %1) local_u 5: ; preds = %2 br label %.thread44 -6: ; preds = %2 +6: ; preds = %2, %2, %2 br label %.thread44 7: ; preds = %2 @@ -1950,70 +1950,67 @@ define dso_local noundef ptr @acldefault(i32 noundef %0, i32 noundef %1) local_u 10: ; preds = %2, %2 br label %.thread44 -11: ; preds = %2, %2 +11: ; preds = %2 br label %.thread44 12: ; preds = %2 - br label %.thread44 - -13: ; preds = %2 - %14 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #15 - tail call void @llvm.assume(i1 %14) - %15 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.4, i32 noundef %0) #14 + %13 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #15 + tail call void @llvm.assume(i1 %13) + %14 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.4, i32 noundef %0) #14 tail call void @errfinish(ptr noundef nonnull @.str.1, i32 noundef 845, ptr noundef nonnull @__func__.acldefault) #14 unreachable -16: ; preds = %2 +15: ; preds = %2 br label %.thread44 -.thread44: ; preds = %2, %12, %10, %9, %8, %7, %3, %4, %5, %6, %11, %16 - %.not293552 = phi i1 [ true, %16 ], [ false, %11 ], [ false, %6 ], [ false, %5 ], [ false, %4 ], [ false, %3 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %12 ], [ false, %2 ] - %.0273751 = phi i64 [ 0, %16 ], [ 256, %11 ], [ 256, %6 ], [ 128, %5 ], [ 3584, %4 ], [ 262, %3 ], [ 6, %7 ], [ 768, %8 ], [ 512, %9 ], [ 256, %10 ], [ 12288, %12 ], [ 127, %2 ] - %.not3950 = phi i1 [ true, %16 ], [ false, %11 ], [ false, %6 ], [ false, %5 ], [ false, %4 ], [ true, %3 ], [ true, %7 ], [ true, %8 ], [ true, %9 ], [ true, %10 ], [ true, %12 ], [ true, %2 ] - %.0254149 = phi i64 [ 0, %16 ], [ 256, %11 ], [ 256, %6 ], [ 128, %5 ], [ 3072, %4 ], [ 0, %3 ], [ 0, %7 ], [ 0, %8 ], [ 0, %9 ], [ 0, %10 ], [ 0, %12 ], [ 0, %2 ] - %17 = phi i32 [ 0, %16 ], [ 2, %11 ], [ 2, %6 ], [ 2, %5 ], [ 2, %4 ], [ 1, %3 ], [ 1, %7 ], [ 1, %8 ], [ 1, %9 ], [ 1, %10 ], [ 1, %12 ], [ 1, %2 ] - %18 = shl nuw nsw i32 %17, 4 - %narrow = add nuw nsw i32 %18, 24 - %19 = zext nneg i32 %narrow to i64 - %20 = tail call ptr @palloc0(i64 noundef %19) #14 - %21 = shl nuw nsw i32 %narrow, 2 - store i32 %21, ptr %20, align 4 - %22 = getelementptr inbounds nuw i8, ptr %20, i64 4 - store i32 1, ptr %22, align 4 - %23 = getelementptr inbounds nuw i8, ptr %20, i64 8 - store i32 0, ptr %23, align 4 - %24 = getelementptr inbounds nuw i8, ptr %20, i64 12 - store i32 1033, ptr %24, align 4 - %25 = getelementptr i8, ptr %20, i64 16 - %26 = getelementptr i8, ptr %20, i64 20 - store i32 1, ptr %26, align 4 - store i32 %17, ptr %25, align 4 - %27 = getelementptr i8, ptr %20, i64 24 - br i1 %.not3950, label %32, label %28 - -28: ; preds = %.thread44 - store i32 0, ptr %27, align 8 - %29 = getelementptr i8, ptr %20, i64 28 - store i32 %1, ptr %29, align 4 - %30 = getelementptr i8, ptr %20, i64 32 - store i64 %.0254149, ptr %30, align 8 - %31 = getelementptr i8, ptr %20, i64 40 - br label %32 +.thread44: ; preds = %2, %11, %10, %9, %8, %7, %3, %4, %5, %6, %15 + %.not293552 = phi i1 [ true, %15 ], [ false, %6 ], [ false, %5 ], [ false, %4 ], [ false, %3 ], [ false, %7 ], [ false, %8 ], [ false, %9 ], [ false, %10 ], [ false, %11 ], [ false, %2 ] + %.0273751 = phi i64 [ 0, %15 ], [ 256, %6 ], [ 128, %5 ], [ 3584, %4 ], [ 262, %3 ], [ 6, %7 ], [ 768, %8 ], [ 512, %9 ], [ 256, %10 ], [ 12288, %11 ], [ 127, %2 ] + %.not3950 = phi i1 [ true, %15 ], [ false, %6 ], [ false, %5 ], [ false, %4 ], [ true, %3 ], [ true, %7 ], [ true, %8 ], [ true, %9 ], [ true, %10 ], [ true, %11 ], [ true, %2 ] + %.0254149 = phi i64 [ 0, %15 ], [ 256, %6 ], [ 128, %5 ], [ 3072, %4 ], [ 0, %3 ], [ 0, %7 ], [ 0, %8 ], [ 0, %9 ], [ 0, %10 ], [ 0, %11 ], [ 0, %2 ] + %16 = phi i32 [ 0, %15 ], [ 2, %6 ], [ 2, %5 ], [ 2, %4 ], [ 1, %3 ], [ 1, %7 ], [ 1, %8 ], [ 1, %9 ], [ 1, %10 ], [ 1, %11 ], [ 1, %2 ] + %17 = shl nuw nsw i32 %16, 4 + %narrow = add nuw nsw i32 %17, 24 + %18 = zext nneg i32 %narrow to i64 + %19 = tail call ptr @palloc0(i64 noundef %18) #14 + %20 = shl nuw nsw i32 %narrow, 2 + store i32 %20, ptr %19, align 4 + %21 = getelementptr inbounds nuw i8, ptr %19, i64 4 + store i32 1, ptr %21, align 4 + %22 = getelementptr inbounds nuw i8, ptr %19, i64 8 + store i32 0, ptr %22, align 4 + %23 = getelementptr inbounds nuw i8, ptr %19, i64 12 + store i32 1033, ptr %23, align 4 + %24 = getelementptr i8, ptr %19, i64 16 + %25 = getelementptr i8, ptr %19, i64 20 + store i32 1, ptr %25, align 4 + store i32 %16, ptr %24, align 4 + %26 = getelementptr i8, ptr %19, i64 24 + br i1 %.not3950, label %31, label %27 + +27: ; preds = %.thread44 + store i32 0, ptr %26, align 8 + %28 = getelementptr i8, ptr %19, i64 28 + store i32 %1, ptr %28, align 4 + %29 = getelementptr i8, ptr %19, i64 32 + store i64 %.0254149, ptr %29, align 8 + %30 = getelementptr i8, ptr %19, i64 40 + br label %31 -32: ; preds = %28, %.thread44 - %.0 = phi ptr [ %31, %28 ], [ %27, %.thread44 ] - br i1 %.not293552, label %36, label %33 +31: ; preds = %27, %.thread44 + %.0 = phi ptr [ %30, %27 ], [ %26, %.thread44 ] + br i1 %.not293552, label %35, label %32 -33: ; preds = %32 +32: ; preds = %31 store i32 %1, ptr %.0, align 8 - %34 = getelementptr inbounds nuw i8, ptr %.0, i64 4 - store i32 %1, ptr %34, align 4 - %35 = getelementptr inbounds nuw i8, ptr %.0, i64 8 - store i64 %.0273751, ptr %35, align 8 - br label %36 + %33 = getelementptr inbounds nuw i8, ptr %.0, i64 4 + store i32 %1, ptr %33, align 4 + %34 = getelementptr inbounds nuw i8, ptr %.0, i64 8 + store i64 %.0273751, ptr %34, align 8 + br label %35 -36: ; preds = %33, %32 - ret ptr %20 +35: ; preds = %32, %31 + ret ptr %19 } ; Function Attrs: cold diff --git a/bench/postgres/optimized/arrayfuncs.ll b/bench/postgres/optimized/arrayfuncs.ll index cbcf70b4075..3ce95b027a6 100644 --- a/bench/postgres/optimized/arrayfuncs.ll +++ b/bench/postgres/optimized/arrayfuncs.ll @@ -9115,63 +9115,60 @@ define dso_local noundef ptr @construct_array(ptr nocapture noundef %0, i32 noun define dso_local noundef ptr @construct_array_builtin(ptr nocapture noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #0 { %4 = alloca [1 x i32], align 4 %5 = alloca [1 x i32], align 4 - switch i32 %2, label %14 [ - i32 18, label %17 + switch i32 %2, label %13 [ + i32 18, label %16 i32 2275, label %6 i32 700, label %7 i32 21, label %8 i32 23, label %7 i32 20, label %9 i32 19, label %10 - i32 26, label %11 - i32 2206, label %11 - i32 25, label %12 - i32 27, label %13 + i32 26, label %7 + i32 2206, label %7 + i32 25, label %11 + i32 27, label %12 ] 6: ; preds = %3 - br label %17 + br label %16 -7: ; preds = %3, %3 - br label %17 +7: ; preds = %3, %3, %3, %3 + br label %16 8: ; preds = %3 - br label %17 + br label %16 9: ; preds = %3 - br label %17 + br label %16 10: ; preds = %3 - br label %17 + br label %16 -11: ; preds = %3, %3 - br label %17 +11: ; preds = %3 + br label %16 12: ; preds = %3 - br label %17 + br label %16 13: ; preds = %3 - br label %17 - -14: ; preds = %3 - %15 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #19 - tail call void @llvm.assume(i1 %15) - %16 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.27, i32 noundef %2) #17 + %14 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #19 + tail call void @llvm.assume(i1 %14) + %15 = tail call i32 (ptr, ...) @errmsg_internal(ptr noundef nonnull @.str.27, i32 noundef %2) #17 tail call void @errfinish(ptr noundef nonnull @.str.2, i32 noundef 3445, ptr noundef nonnull @__func__.construct_array_builtin) #17 unreachable -17: ; preds = %3, %13, %12, %11, %10, %9, %8, %7, %6 - %.08 = phi i32 [ 6, %13 ], [ -1, %12 ], [ 4, %11 ], [ 64, %10 ], [ 8, %9 ], [ 2, %8 ], [ 4, %7 ], [ -2, %6 ], [ 1, %3 ] - %.07 = phi i1 [ false, %13 ], [ false, %12 ], [ true, %11 ], [ false, %10 ], [ true, %9 ], [ true, %8 ], [ true, %7 ], [ false, %6 ], [ true, %3 ] - %.0 = phi i8 [ 115, %13 ], [ 105, %12 ], [ 105, %11 ], [ 99, %10 ], [ 100, %9 ], [ 115, %8 ], [ 105, %7 ], [ 99, %6 ], [ 99, %3 ] +16: ; preds = %3, %12, %11, %10, %9, %8, %7, %6 + %.08 = phi i32 [ 6, %12 ], [ -1, %11 ], [ 64, %10 ], [ 8, %9 ], [ 2, %8 ], [ 4, %7 ], [ -2, %6 ], [ 1, %3 ] + %.07 = phi i1 [ false, %12 ], [ false, %11 ], [ false, %10 ], [ true, %9 ], [ true, %8 ], [ true, %7 ], [ false, %6 ], [ true, %3 ] + %.0 = phi i8 [ 115, %12 ], [ 105, %11 ], [ 99, %10 ], [ 100, %9 ], [ 115, %8 ], [ 105, %7 ], [ 99, %6 ], [ 99, %3 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) store i32 %1, ptr %4, align 4 store i32 1, ptr %5, align 4 - %18 = call noundef ptr @construct_md_array(ptr noundef %0, ptr noundef null, i32 noundef 1, ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %2, i32 noundef %.08, i1 noundef zeroext %.07, i8 noundef signext %.0) + %17 = call noundef ptr @construct_md_array(ptr noundef %0, ptr noundef null, i32 noundef 1, ptr noundef nonnull %4, ptr noundef nonnull %5, i32 noundef %2, i32 noundef %.08, i1 noundef zeroext %.07, i8 noundef signext %.0) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) - ret ptr %18 + ret ptr %17 } ; Function Attrs: nounwind uwtable diff --git a/bench/postgres/optimized/json.ll b/bench/postgres/optimized/json.ll index eb0933ea54b..c181d937f04 100644 --- a/bench/postgres/optimized/json.ll +++ b/bench/postgres/optimized/json.ll @@ -737,33 +737,27 @@ define dso_local zeroext i1 @to_json_is_immutable(i32 noundef %0) local_unnamed_ %3 = alloca i32, align 4 call void @json_categorize_type(i32 noundef %0, i1 noundef zeroext false, ptr noundef nonnull %2, ptr noundef nonnull %3) #9 %4 = load i32, ptr %2, align 4 - switch i32 %4, label %10 [ - i32 1, label %11 - i32 6, label %11 - i32 7, label %11 - i32 0, label %11 - i32 3, label %5 - i32 4, label %5 - i32 5, label %5 - i32 11, label %6 - i32 10, label %6 - i32 2, label %6 + switch i32 %4, label %9 [ + i32 1, label %10 + i32 6, label %10 + i32 7, label %10 + i32 0, label %10 + i32 11, label %5 + i32 10, label %5 + i32 2, label %5 ] 5: ; preds = %1, %1, %1 - br label %11 - -6: ; preds = %1, %1, %1 - %7 = load i32, ptr %3, align 4 - %8 = call signext i8 @func_volatile(i32 noundef %7) #9 - %9 = icmp eq i8 %8, 105 - br label %11 + %6 = load i32, ptr %3, align 4 + %7 = call signext i8 @func_volatile(i32 noundef %6) #9 + %8 = icmp eq i8 %7, 105 + br label %10 -10: ; preds = %1 - br label %11 +9: ; preds = %1 + br label %10 -11: ; preds = %1, %1, %1, %1, %10, %6, %5 - %.0 = phi i1 [ false, %10 ], [ %9, %6 ], [ false, %5 ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ] +10: ; preds = %1, %1, %1, %1, %9, %5 + %.0 = phi i1 [ false, %9 ], [ %8, %5 ], [ true, %1 ], [ true, %1 ], [ true, %1 ], [ true, %1 ] ret i1 %.0 } diff --git a/bench/postgres/optimized/multirangetypes_selfuncs.ll b/bench/postgres/optimized/multirangetypes_selfuncs.ll index da81c572d53..0ba0f6872fd 100644 --- a/bench/postgres/optimized/multirangetypes_selfuncs.ll +++ b/bench/postgres/optimized/multirangetypes_selfuncs.ll @@ -633,44 +633,41 @@ declare zeroext i1 @get_restriction_variable(ptr noundef, ptr noundef, i32 nound ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define internal fastcc noundef double @default_multirange_selectivity(i32 noundef %0) unnamed_addr #2 { - switch i32 %0, label %5 [ - i32 4142, label %4 - i32 3585, label %4 - i32 4035, label %4 - i32 4539, label %2 - i32 4540, label %2 - i32 2870, label %2 - i32 2871, label %2 - i32 2873, label %2 - i32 2874, label %2 - i32 2869, label %3 - i32 2872, label %3 - i32 2862, label %4 - i32 2863, label %4 - i32 2865, label %4 - i32 2864, label %4 - i32 4396, label %4 - i32 4397, label %4 - i32 4395, label %4 - i32 4399, label %4 - i32 4400, label %4 - i32 4398, label %4 - i32 2876, label %4 - i32 2875, label %4 - i32 2877, label %4 + switch i32 %0, label %3 [ + i32 4142, label %2 + i32 3585, label %2 + i32 4035, label %2 + i32 4539, label %4 + i32 4540, label %4 + i32 2870, label %4 + i32 2871, label %4 + i32 2873, label %4 + i32 2874, label %4 + i32 2869, label %4 + i32 2872, label %4 + i32 2862, label %2 + i32 2863, label %2 + i32 2865, label %2 + i32 2864, label %2 + i32 4396, label %2 + i32 4397, label %2 + i32 4395, label %2 + i32 4399, label %2 + i32 4400, label %2 + i32 4398, label %2 + i32 2876, label %2 + i32 2875, label %2 + i32 2877, label %2 ] -2: ; preds = %1, %1, %1, %1, %1, %1 - br label %5 +2: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 + br label %4 -3: ; preds = %1, %1 - br label %5 +3: ; preds = %1 + br label %4 -4: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1 - br label %5 - -5: ; preds = %1, %4, %3, %2 - %.0 = phi double [ 0x3FD5555555555555, %4 ], [ 5.000000e-03, %3 ], [ 5.000000e-03, %2 ], [ 1.000000e-02, %1 ] +4: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %3, %2 + %.0 = phi double [ 1.000000e-02, %3 ], [ 0x3FD5555555555555, %2 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ], [ 5.000000e-03, %1 ] ret double %.0 } diff --git a/bench/postgres/optimized/objectaddress.ll b/bench/postgres/optimized/objectaddress.ll index 6fa71aed7a6..77eb9421770 100644 --- a/bench/postgres/optimized/objectaddress.ll +++ b/bench/postgres/optimized/objectaddress.ll @@ -3153,16 +3153,16 @@ get_object_property_data.exit: ; preds = %4, %14 21: ; preds = %get_object_property_data.exit %22 = tail call signext i8 @get_rel_relkind(i32 noundef %1) #9 - switch i8 %22, label %get_relkind_objtype.exit [ - i8 102, label %27 - i8 109, label %26 - i8 105, label %23 - i8 73, label %23 - i8 83, label %24 - i8 118, label %25 + switch i8 %22, label %27 [ + i8 102, label %26 + i8 109, label %25 + i8 105, label %get_relkind_objtype.exit + i8 73, label %get_relkind_objtype.exit + i8 83, label %23 + i8 118, label %24 ] -23: ; preds = %21, %21 +23: ; preds = %21 br label %get_relkind_objtype.exit 24: ; preds = %21 @@ -3177,23 +3177,23 @@ get_object_property_data.exit: ; preds = %4, %14 27: ; preds = %21 br label %get_relkind_objtype.exit -get_relkind_objtype.exit: ; preds = %27, %26, %25, %24, %23, %21, %get_object_property_data.exit - %.0 = phi i32 [ %19, %get_object_property_data.exit ], [ 18, %27 ], [ 23, %26 ], [ 51, %25 ], [ 37, %24 ], [ 20, %23 ], [ 41, %21 ] +get_relkind_objtype.exit: ; preds = %27, %26, %25, %24, %23, %21, %21, %get_object_property_data.exit + %.0 = phi i32 [ %19, %get_object_property_data.exit ], [ 41, %27 ], [ 18, %26 ], [ 23, %25 ], [ 51, %24 ], [ 37, %23 ], [ 20, %21 ], [ 20, %21 ] ret i32 %.0 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local range(i32 18, 52) i32 @get_relkind_objtype(i8 noundef signext %0) local_unnamed_addr #4 { - switch i8 %0, label %7 [ - i8 102, label %6 - i8 109, label %5 - i8 105, label %2 - i8 73, label %2 - i8 83, label %3 - i8 118, label %4 + switch i8 %0, label %6 [ + i8 102, label %5 + i8 109, label %4 + i8 105, label %7 + i8 73, label %7 + i8 83, label %2 + i8 118, label %3 ] -2: ; preds = %1, %1 +2: ; preds = %1 br label %7 3: ; preds = %1 @@ -3208,8 +3208,8 @@ define dso_local range(i32 18, 52) i32 @get_relkind_objtype(i8 noundef signext % 6: ; preds = %1 br label %7 -7: ; preds = %1, %6, %5, %4, %3, %2 - %.0 = phi i32 [ 18, %6 ], [ 23, %5 ], [ 51, %4 ], [ 37, %3 ], [ 20, %2 ], [ 41, %1 ] +7: ; preds = %1, %1, %6, %5, %4, %3, %2 + %.0 = phi i32 [ 41, %6 ], [ 18, %5 ], [ 23, %4 ], [ 51, %3 ], [ 37, %2 ], [ 20, %1 ], [ 20, %1 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/parse_agg.ll b/bench/postgres/optimized/parse_agg.ll index 2df0c3d57a6..017ed6e4157 100644 --- a/bench/postgres/optimized/parse_agg.ll +++ b/bench/postgres/optimized/parse_agg.ll @@ -426,12 +426,12 @@ define internal fastcc void @check_agglevels_and_constraints(ptr noundef %0, ptr br label %14 14: ; preds = %12, %6 - %.sink70 = phi i64 [ 36, %12 ], [ 92, %6 ] + %.sink69 = phi i64 [ 36, %12 ], [ 92, %6 ] %.sink = phi i64 [ 32, %12 ], [ 76, %6 ] %.059 = phi ptr [ null, %12 ], [ %11, %6 ] %.053.in = phi ptr [ %13, %12 ], [ %9, %6 ] %.052 = phi ptr [ null, %12 ], [ %8, %6 ] - %15 = getelementptr inbounds nuw i8, ptr %1, i64 %.sink70 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 %.sink69 %16 = getelementptr inbounds nuw i8, ptr %1, i64 %.sink %.053 = load ptr, ptr %.053.in, align 8 %.057 = load i32, ptr %15, align 4 @@ -536,11 +536,11 @@ check_agg_arguments.exit: ; preds = %42, %55 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %check_agg_arguments.exit, %.lr.ph - %.069 = phi ptr [ %66, %.lr.ph ], [ %0, %check_agg_arguments.exit ] - %.05868 = phi i32 [ %65, %.lr.ph ], [ %.019.i, %check_agg_arguments.exit ] - %65 = add nsw i32 %.05868, -1 - %66 = load ptr, ptr %.069, align 8 - %67 = icmp samesign ugt i32 %.05868, 1 + %.068 = phi ptr [ %66, %.lr.ph ], [ %0, %check_agg_arguments.exit ] + %.05867 = phi i32 [ %65, %.lr.ph ], [ %.019.i, %check_agg_arguments.exit ] + %65 = add nsw i32 %.05867, -1 + %66 = load ptr, ptr %.068, align 8 + %67 = icmp samesign ugt i32 %.05867, 1 br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !7 ._crit_edge: ; preds = %.lr.ph, %check_agg_arguments.exit @@ -894,22 +894,22 @@ define dso_local void @transformWindowFuncCall(ptr noundef %0, ptr nocapture nou br i1 %.not73, label %81, label %59 59: ; preds = %54 - br i1 %.not74, label %.thread96, label %.lr.ph + br i1 %.not74, label %.thread95, label %.lr.ph .lr.ph: ; preds = %59 %60 = getelementptr inbounds nuw i8, ptr %58, i64 4 %61 = load i32, ptr %60, align 4 %62 = icmp sgt i32 %61, 0 - br i1 %62, label %.lr.ph113, label %.thread96 + br i1 %62, label %.lr.ph112, label %.thread95 -.lr.ph113: ; preds = %.lr.ph +.lr.ph112: ; preds = %.lr.ph %63 = getelementptr inbounds nuw i8, ptr %58, i64 16 %64 = load ptr, ptr %63, align 8 %wide.trip.count = zext nneg i32 %61 to i64 br label %65 -65: ; preds = %.lr.ph113, %73 - %indvars.iv = phi i64 [ 0, %.lr.ph113 ], [ %indvars.iv.next, %73 ] +65: ; preds = %.lr.ph112, %73 + %indvars.iv = phi i64 [ 0, %.lr.ph112 ], [ %indvars.iv.next, %73 ] %66 = getelementptr %union.ListCell, ptr %64, i64 %indvars.iv %67 = load ptr, ptr %66, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -925,13 +925,13 @@ define dso_local void @transformWindowFuncCall(ptr noundef %0, ptr nocapture nou 73: ; preds = %65, %70 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.thread96, label %65 + br i1 %exitcond.not, label %.thread95, label %65 .split: ; preds = %70 - %indvars121.le = trunc i64 %indvars.iv.next to i32 + %indvars120.le = trunc i64 %indvars.iv.next to i32 br label %list_length.exit -.thread96: ; preds = %73, %.lr.ph, %59 +.thread95: ; preds = %73, %.lr.ph, %59 %74 = tail call zeroext i1 @errstart_cold(i32 noundef 21, ptr noundef null) #11 tail call void @llvm.assume(i1 %74) %75 = tail call i32 @errcode(i32 noundef 67137668) #10 @@ -944,9 +944,9 @@ define dso_local void @transformWindowFuncCall(ptr noundef %0, ptr nocapture nou unreachable 81: ; preds = %54 - br i1 %.not74, label %.thread105, label %.lr.ph116 + br i1 %.not74, label %.thread104, label %.lr.ph115 -.lr.ph116: ; preds = %81 +.lr.ph115: ; preds = %81 %82 = getelementptr inbounds nuw i8, ptr %58, i64 4 %83 = getelementptr inbounds nuw i8, ptr %58, i64 16 %84 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -957,14 +957,14 @@ define dso_local void @transformWindowFuncCall(ptr noundef %0, ptr nocapture nou %89 = getelementptr inbounds nuw i8, ptr %2, i64 56 %90 = load i32, ptr %82, align 4 %91 = icmp sgt i32 %90, 0 - br i1 %91, label %.lr.ph131, label %.thread105.loopexit + br i1 %91, label %.lr.ph130, label %.thread104.loopexit -.lr.ph131: ; preds = %.lr.ph116, %.thread104 - %indvars.iv123130 = phi i64 [ %indvars.iv.next124, %.thread104 ], [ 0, %.lr.ph116 ] +.lr.ph130: ; preds = %.lr.ph115, %.thread103 + %indvars.iv122129 = phi i64 [ %indvars.iv.next123, %.thread103 ], [ 0, %.lr.ph115 ] %92 = load ptr, ptr %83, align 8 - %93 = getelementptr %union.ListCell, ptr %92, i64 %indvars.iv123130 + %93 = getelementptr %union.ListCell, ptr %92, i64 %indvars.iv122129 %94 = load ptr, ptr %93, align 8 - %indvars.iv.next124 = add nuw nsw i64 %indvars.iv123130, 1 + %indvars.iv.next123 = add nuw nsw i64 %indvars.iv122129, 1 %95 = getelementptr inbounds nuw i8, ptr %94, i64 16 %96 = load ptr, ptr %95, align 8 %.not76 = icmp eq ptr %96, null @@ -972,82 +972,82 @@ define dso_local void @transformWindowFuncCall(ptr noundef %0, ptr nocapture nou %.not79 = icmp eq ptr %97, null br i1 %.not76, label %102, label %98 -98: ; preds = %.lr.ph131 - br i1 %.not79, label %.thread104, label %99 +98: ; preds = %.lr.ph130 + br i1 %.not79, label %.thread103, label %99 99: ; preds = %98 %100 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %96, ptr noundef nonnull dereferenceable(1) %97) #12 %101 = icmp eq i32 %100, 0 - br i1 %101, label %103, label %.thread104 + br i1 %101, label %103, label %.thread103 -102: ; preds = %.lr.ph131 - br i1 %.not79, label %103, label %.thread104 +102: ; preds = %.lr.ph130 + br i1 %.not79, label %103, label %.thread103 103: ; preds = %102, %99 %104 = getelementptr inbounds nuw i8, ptr %94, i64 24 %105 = load ptr, ptr %104, align 8 %106 = load ptr, ptr %85, align 8 %107 = tail call zeroext i1 @equal(ptr noundef %105, ptr noundef %106) #10 - br i1 %107, label %108, label %.thread104 + br i1 %107, label %108, label %.thread103 108: ; preds = %103 %109 = getelementptr inbounds nuw i8, ptr %94, i64 32 %110 = load ptr, ptr %109, align 8 %111 = load ptr, ptr %86, align 8 %112 = tail call zeroext i1 @equal(ptr noundef %110, ptr noundef %111) #10 - br i1 %112, label %113, label %.thread104 + br i1 %112, label %113, label %.thread103 113: ; preds = %108 %114 = getelementptr inbounds nuw i8, ptr %94, i64 40 %115 = load i32, ptr %114, align 8 %116 = load i32, ptr %87, align 8 %117 = icmp eq i32 %115, %116 - br i1 %117, label %118, label %.thread104 + br i1 %117, label %118, label %.thread103 118: ; preds = %113 %119 = getelementptr inbounds nuw i8, ptr %94, i64 48 %120 = load ptr, ptr %119, align 8 %121 = load ptr, ptr %88, align 8 %122 = tail call zeroext i1 @equal(ptr noundef %120, ptr noundef %121) #10 - br i1 %122, label %123, label %.thread104 + br i1 %122, label %123, label %.thread103 123: ; preds = %118 %124 = getelementptr inbounds nuw i8, ptr %94, i64 56 %125 = load ptr, ptr %124, align 8 %126 = load ptr, ptr %89, align 8 %127 = tail call zeroext i1 @equal(ptr noundef %125, ptr noundef %126) #10 - br i1 %127, label %131, label %.thread104 + br i1 %127, label %131, label %.thread103 -.thread104: ; preds = %98, %99, %103, %108, %113, %118, %123, %102 +.thread103: ; preds = %98, %99, %103, %108, %113, %118, %123, %102 %128 = load i32, ptr %82, align 4 %129 = sext i32 %128 to i64 - %130 = icmp slt i64 %indvars.iv.next124, %129 - br i1 %130, label %.lr.ph131, label %.thread105.loopexit + %130 = icmp slt i64 %indvars.iv.next123, %129 + br i1 %130, label %.lr.ph130, label %.thread104.loopexit 131: ; preds = %123 - %indvars126.le = trunc i64 %indvars.iv.next124 to i32 + %indvars125.le = trunc i64 %indvars.iv.next123 to i32 br label %list_length.exit -.thread105.loopexit: ; preds = %.thread104, %.lr.ph116 +.thread104.loopexit: ; preds = %.thread103, %.lr.ph115 %.pre = load ptr, ptr %57, align 8 - br label %.thread105 + br label %.thread104 -.thread105: ; preds = %.thread105.loopexit, %81 - %132 = phi ptr [ %.pre, %.thread105.loopexit ], [ null, %81 ] +.thread104: ; preds = %.thread104.loopexit, %81 + %132 = phi ptr [ %.pre, %.thread104.loopexit ], [ null, %81 ] %133 = tail call ptr @lappend(ptr noundef %132, ptr noundef nonnull %2) #10 store ptr %133, ptr %57, align 8 %.not.i = icmp eq ptr %133, null br i1 %.not.i, label %list_length.exit, label %134 -134: ; preds = %.thread105 +134: ; preds = %.thread104 %135 = getelementptr inbounds nuw i8, ptr %133, i64 4 %136 = load i32, ptr %135, align 4 br label %list_length.exit -list_length.exit: ; preds = %134, %.thread105, %131, %.split - %indvars126.le.sink = phi i32 [ %indvars126.le, %131 ], [ %indvars121.le, %.split ], [ %136, %134 ], [ 0, %.thread105 ] +list_length.exit: ; preds = %134, %.thread104, %131, %.split + %indvars125.le.sink = phi i32 [ %indvars125.le, %131 ], [ %indvars120.le, %.split ], [ %136, %134 ], [ 0, %.thread104 ] %137 = getelementptr inbounds nuw i8, ptr %1, i64 40 - store i32 %indvars126.le.sink, ptr %137, align 8 + store i32 %indvars125.le.sink, ptr %137, align 8 store i8 1, ptr %4, align 1 ret void } diff --git a/bench/postgres/optimized/typename.ll b/bench/postgres/optimized/typename.ll index 60889179ff7..cd1543df679 100644 --- a/bench/postgres/optimized/typename.ll +++ b/bench/postgres/optimized/typename.ll @@ -102,17 +102,17 @@ define dso_local range(i32 0, 17) i32 @ecpg_dynamic_type(i32 noundef %0) local_u ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable define dso_local range(i32 1, 21) i32 @sqlda_dynamic_type(i32 noundef %0, i32 noundef %1) local_unnamed_addr #2 { - switch i32 %0, label %15 [ - i32 20, label %14 - i32 1186, label %13 - i32 1184, label %12 - i32 1114, label %12 - i32 21, label %3 - i32 23, label %4 - i32 701, label %5 - i32 700, label %6 - i32 1700, label %7 - i32 1082, label %11 + switch i32 %0, label %14 [ + i32 20, label %13 + i32 1186, label %12 + i32 1184, label %11 + i32 1114, label %11 + i32 21, label %15 + i32 23, label %3 + i32 701, label %4 + i32 700, label %5 + i32 1700, label %6 + i32 1082, label %10 ] 3: ; preds = %2 @@ -125,18 +125,18 @@ define dso_local range(i32 1, 21) i32 @sqlda_dynamic_type(i32 noundef %0, i32 no br label %15 6: ; preds = %2 + %7 = add i32 %1, -1 + %8 = icmp ult i32 %7, 2 + %9 = select i1 %8, i32 17, i32 16 br label %15 -7: ; preds = %2 - %8 = add i32 %1, -1 - %9 = icmp ult i32 %8, 2 - %10 = select i1 %9, i32 17, i32 16 +10: ; preds = %2 br label %15 -11: ; preds = %2 +11: ; preds = %2, %2 br label %15 -12: ; preds = %2, %2 +12: ; preds = %2 br label %15 13: ; preds = %2 @@ -145,8 +145,8 @@ define dso_local range(i32 1, 21) i32 @sqlda_dynamic_type(i32 noundef %0, i32 no 14: ; preds = %2 br label %15 -15: ; preds = %2, %14, %13, %12, %11, %7, %6, %5, %4, %3 - %.0 = phi i32 [ 7, %14 ], [ 20, %13 ], [ 19, %12 ], [ 18, %11 ], [ %10, %7 ], [ 12, %6 ], [ 13, %5 ], [ 5, %4 ], [ 3, %3 ], [ 1, %2 ] +15: ; preds = %2, %14, %13, %12, %11, %10, %6, %5, %4, %3 + %.0 = phi i32 [ 1, %14 ], [ 7, %13 ], [ 20, %12 ], [ 19, %11 ], [ 18, %10 ], [ %9, %6 ], [ 12, %5 ], [ 13, %4 ], [ 5, %3 ], [ 3, %2 ] ret i32 %.0 } diff --git a/bench/proxygen/optimized/HTTP2Codec.cpp.ll b/bench/proxygen/optimized/HTTP2Codec.cpp.ll index 1c0e8e0f83b..8690284f0aa 100644 --- a/bench/proxygen/optimized/HTTP2Codec.cpp.ll +++ b/bench/proxygen/optimized/HTTP2Codec.cpp.ll @@ -11382,7 +11382,7 @@ lpad299: ; preds = %invoke.cont300, %in call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp296) #30 br label %ehcleanup -sw.epilog: ; preds = %_ZN8proxygen10HPACKCodec25setEncoderHeaderTableSizeEj.exit, %cleanup.done218, %for.body, %for.body, %sw.bb269, %if.end170, %sw.bb78, %for.body, %for.body, %for.body, %lor.lhs.false +sw.epilog: ; preds = %_ZN8proxygen10HPACKCodec25setEncoderHeaderTableSizeEj.exit, %cleanup.done218, %sw.bb269, %if.end170, %sw.bb78, %for.body, %for.body, %for.body, %for.body, %for.body, %lor.lhs.false %44 = load i64, ptr %__begin1.sroa.0.084, align 8 %second318 = getelementptr inbounds nuw i8, ptr %__begin1.sroa.0.084, i64 8 %45 = load i32, ptr %second318, align 8 @@ -15777,7 +15777,7 @@ lpad113: ; preds = %invoke.cont121, %in call void @_ZN6google10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp111) #30 br label %ehcleanup -sw.epilog: ; preds = %cond.false78, %sw.bb39, %_ZN5folly8OptionalIjEaSIRKmEERS1_OT_.exit, %cond.end80, %if.else19, %for.body, %for.body, %sw.bb105, %cleanup.action99, %for.body, %for.body, %for.body +sw.epilog: ; preds = %cond.false78, %sw.bb39, %_ZN5folly8OptionalIjEaSIRKmEERS1_OT_.exit, %cond.end80, %if.else19, %sw.bb105, %cleanup.action99, %for.body, %for.body, %for.body, %for.body, %for.body %value128 = getelementptr inbounds nuw i8, ptr %__begin1.sroa.0.038, i64 8 %20 = load i64, ptr %__begin1.sroa.0.038, align 8 store i64 %20, ptr %ref.tmp126, align 8 diff --git a/bench/qemu/optimized/linux-user_strace.c.ll b/bench/qemu/optimized/linux-user_strace.c.ll index 7eaeaed64bb..5bee95558c1 100644 --- a/bench/qemu/optimized/linux-user_strace.c.ll +++ b/bench/qemu/optimized/linux-user_strace.c.ll @@ -4308,10 +4308,10 @@ sw.bb19: ; preds = %sw.bb17, %sw.bb17 i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i34 - i32 5, label %if.else.i34 - i32 6, label %if.else.i34 - i32 9, label %if.else.i34 + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -4323,10 +4323,7 @@ sw.bb1.i: ; preds = %sw.bb19, %sw.bb19 sw.bb2.i: ; preds = %sw.bb19 br label %thunk_type_size.exit -sw.bb3.i: ; preds = %sw.bb19, %sw.bb19 - br label %thunk_type_size.exit - -if.else.i34: ; preds = %sw.bb19, %sw.bb19, %sw.bb19, %sw.bb19 +sw.bb3.i: ; preds = %sw.bb19, %sw.bb19, %sw.bb19, %sw.bb19, %sw.bb19, %sw.bb19 br label %thunk_type_size.exit sw.bb9.i: ; preds = %sw.bb19 @@ -4350,8 +4347,8 @@ do.body.i: ; preds = %sw.bb19 call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.598, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #10 unreachable -thunk_type_size.exit: ; preds = %sw.bb19, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i34, %sw.bb9.i, %sw.bb10.i - %retval.0.i = phi i32 [ %10, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i34 ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %6, %sw.bb19 ] +thunk_type_size.exit: ; preds = %sw.bb19, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i = phi i32 [ %10, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %6, %sw.bb19 ] %conv21 = sext i32 %retval.0.i to i64 %call22 = call ptr @lock_user(i32 noundef 1, i64 noundef %arg2, i64 noundef %conv21, i1 noundef zeroext true) #9 %tobool.not = icmp eq ptr %call22, null @@ -4427,10 +4424,10 @@ if.then14: ; preds = %land.lhs.true, %lan i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -4442,10 +4439,7 @@ sw.bb1.i: ; preds = %if.then14, %if.then sw.bb2.i: ; preds = %if.then14 br label %thunk_type_size.exit -sw.bb3.i: ; preds = %if.then14, %if.then14 - br label %thunk_type_size.exit - -if.else.i: ; preds = %if.then14, %if.then14, %if.then14, %if.then14 +sw.bb3.i: ; preds = %if.then14, %if.then14, %if.then14, %if.then14, %if.then14, %if.then14 br label %thunk_type_size.exit sw.bb9.i: ; preds = %if.then14 @@ -4469,8 +4463,8 @@ do.body.i: ; preds = %if.then14 tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.598, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #10 unreachable -thunk_type_size.exit: ; preds = %if.then14, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %retval.0.i17 = phi i32 [ %7, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %3, %if.then14 ] +thunk_type_size.exit: ; preds = %if.then14, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i17 = phi i32 [ %7, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %3, %if.then14 ] %conv18 = sext i32 %retval.0.i17 to i64 %call19 = tail call ptr @lock_user(i32 noundef 1, i64 noundef %arg2, i64 noundef %conv18, i1 noundef zeroext true) #9 %tobool.not = icmp eq ptr %call19, null @@ -4482,17 +4476,17 @@ if.then20: ; preds = %thunk_type_size.exi if.else: ; preds = %thunk_type_size.exit %cmp.i = icmp eq i64 %arg2, 0 - br i1 %cmp.i, label %if.then.i19, label %if.else.i18 + br i1 %cmp.i, label %if.then.i18, label %if.else.i -if.then.i19: ; preds = %if.else +if.then.i18: ; preds = %if.else tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.425, ptr noundef nonnull @.str.18) #9 br label %if.end23 -if.else.i18: ; preds = %if.else +if.else.i: ; preds = %if.else tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.426, i64 noundef %arg2, ptr noundef nonnull @.str.18) #9 br label %if.end23 -if.end23: ; preds = %if.else.i18, %if.then.i19, %if.then20 +if.end23: ; preds = %if.else.i, %if.then.i18, %if.then20 tail call void (ptr, ...) @qemu_log(ptr noundef nonnull @.str.428) #9 br label %if.end25 diff --git a/bench/qemu/optimized/linux-user_syscall.c.ll b/bench/qemu/optimized/linux-user_syscall.c.ll index f2a5fdecce9..4d004ad63c1 100644 --- a/bench/qemu/optimized/linux-user_syscall.c.ll +++ b/bench/qemu/optimized/linux-user_syscall.c.ll @@ -1070,10 +1070,10 @@ entry: i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -1085,10 +1085,7 @@ sw.bb1.i: ; preds = %entry, %entry sw.bb2.i: ; preds = %entry br label %thunk_type_size.exit -sw.bb3.i: ; preds = %entry, %entry - br label %thunk_type_size.exit - -if.else.i: ; preds = %entry, %entry, %entry, %entry +sw.bb3.i: ; preds = %entry, %entry, %entry, %entry, %entry, %entry br label %thunk_type_size.exit sw.bb9.i: ; preds = %entry @@ -1112,8 +1109,8 @@ do.body.i: ; preds = %entry tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] +thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] %conv = sext i32 %retval.0.i to i64 %call2 = tail call ptr @lock_user(i32 noundef 1, i64 noundef %arg, i64 noundef %conv, i1 noundef zeroext true) #27 %tobool.not = icmp eq ptr %call2, null @@ -1124,9 +1121,9 @@ if.end: ; preds = %thunk_type_size.exi %5 = load i32, ptr %buf_temp, align 8 %.off = add i32 %5, -1 %switch = icmp ult i32 %.off, 2 - br i1 %switch, label %thunk_type_size.exit32, label %out + br i1 %switch, label %thunk_type_size.exit31, label %out -thunk_type_size.exit32: ; preds = %if.end +thunk_type_size.exit31: ; preds = %if.end %data = getelementptr inbounds nuw i8, ptr %buf_temp, i64 16 %6 = load ptr, ptr %data, align 8 %7 = ptrtoint ptr %6 to i64 @@ -1138,7 +1135,7 @@ thunk_type_size.exit32: ; preds = %if.end %tobool8.not = icmp eq ptr %call7, null br i1 %tobool8.not, label %out, label %if.end10 -if.end10: ; preds = %thunk_type_size.exit32 +if.end10: ; preds = %thunk_type_size.exit31 %call12 = call ptr @thunk_convert(ptr noundef nonnull %host_part, ptr noundef nonnull %call7, ptr noundef nonnull %part_arg_type, i32 noundef 1) #27 store ptr %host_part, ptr %data, align 8 %10 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @thread_cpu) @@ -1153,14 +1150,14 @@ if.end10: ; preds = %thunk_type_size.exi br i1 %cmp.i, label %if.then.i, label %out if.then.i: ; preds = %if.end10 - %call.i34 = tail call ptr @__errno_location() #26 - %14 = load i32, ptr %call.i34, align 4 + %call.i33 = tail call ptr @__errno_location() #26 + %14 = load i32, ptr %call.i33, align 4 %sub.i = sub i32 0, %14 %conv.i = sext i32 %sub.i to i64 br label %out -out: ; preds = %if.then.i, %if.end10, %thunk_type_size.exit32, %if.end, %thunk_type_size.exit - %ret.0 = phi i64 [ -14, %thunk_type_size.exit ], [ -22, %if.end ], [ -14, %thunk_type_size.exit32 ], [ %conv.i, %if.then.i ], [ %call14, %if.end10 ] +out: ; preds = %if.then.i, %if.end10, %thunk_type_size.exit31, %if.end, %thunk_type_size.exit + %ret.0 = phi i64 [ -14, %thunk_type_size.exit ], [ -22, %if.end ], [ -14, %thunk_type_size.exit31 ], [ %conv.i, %if.then.i ], [ %call14, %if.end10 ] ret i64 %ret.0 } @@ -1194,32 +1191,29 @@ if.else5: ; preds = %if.end if.end6: ; preds = %if.end %incdec.ptr = getelementptr i8, ptr %ie, i64 36 %4 = load i32, ptr %incdec.ptr, align 4 - switch i32 %4, label %do.body.i53 [ - i32 1, label %thunk_type_size.exit54 + switch i32 %4, label %do.body.i52 [ + i32 1, label %thunk_type_size.exit53 i32 2, label %sw.bb1.i49 - i32 3, label %sw.bb2.i52 - i32 7, label %sw.bb3.i51 - i32 8, label %sw.bb3.i51 - i32 4, label %if.else.i50 - i32 5, label %if.else.i50 - i32 6, label %if.else.i50 - i32 9, label %if.else.i50 + i32 3, label %sw.bb2.i51 + i32 7, label %sw.bb3.i50 + i32 8, label %sw.bb3.i50 + i32 4, label %sw.bb3.i50 + i32 5, label %sw.bb3.i50 + i32 6, label %sw.bb3.i50 + i32 9, label %sw.bb3.i50 i32 12, label %sw.bb1.i49 i32 10, label %sw.bb9.i44 i32 11, label %sw.bb10.i39 ] sw.bb1.i49: ; preds = %if.end6, %if.end6 - br label %thunk_type_size.exit54 - -sw.bb2.i52: ; preds = %if.end6 - br label %thunk_type_size.exit54 + br label %thunk_type_size.exit53 -sw.bb3.i51: ; preds = %if.end6, %if.end6 - br label %thunk_type_size.exit54 +sw.bb2.i51: ; preds = %if.end6 + br label %thunk_type_size.exit53 -if.else.i50: ; preds = %if.end6, %if.end6, %if.end6, %if.end6 - br label %thunk_type_size.exit54 +sw.bb3.i50: ; preds = %if.end6, %if.end6, %if.end6, %if.end6, %if.end6, %if.end6 + br label %thunk_type_size.exit53 sw.bb9.i44: ; preds = %if.end6 %arrayidx.i45 = getelementptr i8, ptr %ie, i64 40 @@ -1227,7 +1221,7 @@ sw.bb9.i44: ; preds = %if.end6 %add.ptr.i46 = getelementptr i8, ptr %ie, i64 44 %call.i47 = tail call i32 @thunk_type_size_array(ptr noundef %add.ptr.i46, i32 noundef 0) #27 %mul.i48 = mul i32 %call.i47, %5 - br label %thunk_type_size.exit54 + br label %thunk_type_size.exit53 sw.bb10.i39: ; preds = %if.end6 %arrayidx11.i40 = getelementptr i8, ptr %ie, i64 40 @@ -1235,20 +1229,20 @@ sw.bb10.i39: ; preds = %if.end6 %idx.ext.i41 = zext i32 %6 to i64 %size13.i42 = getelementptr %struct.StructEntry, ptr %0, i64 %idx.ext.i41, i32 5 %7 = load i32, ptr %size13.i42, align 4 - br label %thunk_type_size.exit54 + br label %thunk_type_size.exit53 -do.body.i53: ; preds = %if.end6 +do.body.i52: ; preds = %if.end6 tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit54: ; preds = %if.end6, %sw.bb1.i49, %sw.bb2.i52, %sw.bb3.i51, %if.else.i50, %sw.bb9.i44, %sw.bb10.i39 - %retval.0.i43 = phi i32 [ %7, %sw.bb10.i39 ], [ %mul.i48, %sw.bb9.i44 ], [ 8, %if.else.i50 ], [ 8, %sw.bb3.i51 ], [ 4, %sw.bb2.i52 ], [ 2, %sw.bb1.i49 ], [ %4, %if.end6 ] +thunk_type_size.exit53: ; preds = %if.end6, %sw.bb1.i49, %sw.bb2.i51, %sw.bb3.i50, %sw.bb9.i44, %sw.bb10.i39 + %retval.0.i43 = phi i32 [ %7, %sw.bb10.i39 ], [ %mul.i48, %sw.bb9.i44 ], [ 8, %sw.bb3.i50 ], [ 4, %sw.bb2.i51 ], [ 2, %sw.bb1.i49 ], [ %4, %if.end6 ] %conv = sext i32 %retval.0.i43 to i64 %call8 = tail call ptr @lock_user(i32 noundef 1, i64 noundef %arg, i64 noundef %conv, i1 noundef zeroext true) #27 %tobool.not = icmp eq ptr %call8, null br i1 %tobool.not, label %return, label %if.end10 -if.end10: ; preds = %thunk_type_size.exit54 +if.end10: ; preds = %thunk_type_size.exit53 %call11 = tail call ptr @thunk_convert(ptr noundef %buf_temp, ptr noundef nonnull %call8, ptr noundef nonnull %incdec.ptr, i32 noundef 1) #27 %fm_extent_count = getelementptr inbounds nuw i8, ptr %buf_temp, i64 24 %8 = load i32, ptr %fm_extent_count, align 8 @@ -1285,16 +1279,16 @@ if.end28: ; preds = %if.end27, %if.end16 br i1 %cmp.i, label %if.then.i, label %get_errno.exit if.then.i: ; preds = %if.end28 - %call.i56 = tail call ptr @__errno_location() #26 - %13 = load i32, ptr %call.i56, align 4 + %call.i55 = tail call ptr @__errno_location() #26 + %13 = load i32, ptr %call.i55, align 4 %sub.i = sub i32 0, %13 %conv.i = sext i32 %sub.i to i64 br label %get_errno.exit get_errno.exit: ; preds = %if.end28, %if.then.i - %retval.0.i55 = phi i64 [ %conv.i, %if.then.i ], [ %call29, %if.end28 ] - %cmp.i57 = icmp ult i64 %retval.0.i55, -4096 - br i1 %cmp.i57, label %if.then33, label %if.end62 + %retval.0.i54 = phi i64 [ %conv.i, %if.then.i ], [ %call29, %if.end28 ] + %cmp.i56 = icmp ult i64 %retval.0.i54, -4096 + br i1 %cmp.i56, label %if.then33, label %if.end62 if.then33: ; preds = %get_errno.exit %fm_extent_count34 = getelementptr inbounds nuw i8, ptr %fm.0, i64 24 @@ -1325,8 +1319,8 @@ if.else45: ; preds = %if.end40 if.then50: ; preds = %if.else45 %fm_mapped_extents51 = getelementptr inbounds nuw i8, ptr %fm.0, i64 20 %17 = load i32, ptr %fm_mapped_extents51, align 4 - %cmp5259.not = icmp eq i32 %17, 0 - br i1 %cmp5259.not, label %if.end62, label %for.body.lr.ph + %cmp5258.not = icmp eq i32 %17, 0 + br i1 %cmp5258.not, label %if.end62, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.then50 %add.ptr = getelementptr i8, ptr %call42, i64 %conv @@ -1335,27 +1329,27 @@ for.body.lr.ph: ; preds = %if.then50 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body - %i.061 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.body ] - %p.060 = phi ptr [ %add.ptr, %for.body.lr.ph ], [ %add.ptr58, %for.body ] - %idxprom = sext i32 %i.061 to i64 + %i.060 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.body ] + %p.059 = phi ptr [ %add.ptr, %for.body.lr.ph ], [ %add.ptr58, %for.body ] + %idxprom = sext i32 %i.060 to i64 %arrayidx54 = getelementptr [0 x %struct.fiemap_extent], ptr %fm_extents, i64 0, i64 %idxprom - %call56 = call ptr @thunk_convert(ptr noundef %p.060, ptr noundef %arrayidx54, ptr noundef nonnull %extent_arg_type, i32 noundef 0) #27 - %add.ptr58 = getelementptr i8, ptr %p.060, i64 %idx.ext57 - %inc = add nuw i32 %i.061, 1 + %call56 = call ptr @thunk_convert(ptr noundef %p.059, ptr noundef %arrayidx54, ptr noundef nonnull %extent_arg_type, i32 noundef 0) #27 + %add.ptr58 = getelementptr i8, ptr %p.059, i64 %idx.ext57 + %inc = add nuw i32 %i.060, 1 %18 = load i32, ptr %fm_mapped_extents51, align 4 %cmp52 = icmp ult i32 %inc, %18 br i1 %cmp52, label %for.body, label %if.end62, !llvm.loop !5 if.end62: ; preds = %for.body, %if.then50, %if.else45, %if.end40, %get_errno.exit - %ret.0 = phi i64 [ %retval.0.i55, %get_errno.exit ], [ -14, %if.end40 ], [ %retval.0.i55, %if.else45 ], [ %retval.0.i55, %if.then50 ], [ %retval.0.i55, %for.body ] + %ret.0 = phi i64 [ %retval.0.i54, %get_errno.exit ], [ -14, %if.end40 ], [ %retval.0.i54, %if.else45 ], [ %retval.0.i54, %if.then50 ], [ %retval.0.i54, %for.body ] br i1 %cmp20, label %return, label %if.then64 if.then64: ; preds = %if.end62 call void @g_free(ptr noundef nonnull %fm.0) #27 br label %return -return: ; preds = %if.end62, %if.then64, %if.then22, %if.end10, %thunk_type_size.exit54 - %retval.0 = phi i64 [ -14, %thunk_type_size.exit54 ], [ -22, %if.end10 ], [ -12, %if.then22 ], [ %ret.0, %if.then64 ], [ %ret.0, %if.end62 ] +return: ; preds = %if.end62, %if.then64, %if.then22, %if.end10, %thunk_type_size.exit53 + %retval.0 = phi i64 [ -14, %thunk_type_size.exit53 ], [ -22, %if.end10 ], [ -12, %if.then22 ], [ %ret.0, %if.then64 ], [ %ret.0, %if.end62 ] ret i64 %retval.0 } @@ -1370,10 +1364,10 @@ entry: i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -1385,10 +1379,7 @@ sw.bb1.i: ; preds = %entry, %entry sw.bb2.i: ; preds = %entry br label %thunk_type_size.exit -sw.bb3.i: ; preds = %entry, %entry - br label %thunk_type_size.exit - -if.else.i: ; preds = %entry, %entry, %entry, %entry +sw.bb3.i: ; preds = %entry, %entry, %entry, %entry, %entry, %entry br label %thunk_type_size.exit sw.bb9.i: ; preds = %entry @@ -1412,8 +1403,8 @@ do.body.i: ; preds = %entry tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] +thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] %call2 = tail call noalias dereferenceable_or_null(80) ptr @g_try_malloc0_n(i64 noundef 1, i64 noundef 80) #30 %tobool.not = icmp eq ptr %call2, null br i1 %tobool.not, label %return, label %if.end @@ -1617,24 +1608,24 @@ urb_hashtable_remove.exit: ; preds = %if.end7, %if.then.i %14 = load i64, ptr %8, align 8 %call13 = tail call ptr @lock_user(i32 noundef 3, i64 noundef %14, i64 noundef %2, i1 noundef zeroext false) #27 %tobool14.not = icmp eq ptr %call13, null - br i1 %tobool14.not, label %if.then15, label %thunk_type_size.exit47 + br i1 %tobool14.not, label %if.then15, label %thunk_type_size.exit46 if.then15: ; preds = %urb_hashtable_remove.exit tail call void @g_free(ptr noundef nonnull %8) #27 br label %return -thunk_type_size.exit47: ; preds = %urb_hashtable_remove.exit +thunk_type_size.exit46: ; preds = %urb_hashtable_remove.exit %host_urb = getelementptr inbounds nuw i8, ptr %8, i64 24 %call19 = call ptr @thunk_convert(ptr noundef nonnull %call13, ptr noundef nonnull %host_urb, ptr noundef nonnull %usbfsurb_arg_type, i32 noundef 0) #27 %call25 = call ptr @lock_user(i32 noundef 3, i64 noundef %arg, i64 noundef 8, i1 noundef zeroext false) #27 %tobool26.not = icmp eq ptr %call25, null br i1 %tobool26.not, label %if.then27, label %if.end28 -if.then27: ; preds = %thunk_type_size.exit47 +if.then27: ; preds = %thunk_type_size.exit46 call void @g_free(ptr noundef nonnull %8) #27 br label %return -if.end28: ; preds = %thunk_type_size.exit47 +if.end28: ; preds = %thunk_type_size.exit46 %15 = load i64, ptr %8, align 8 store i64 %15, ptr %target_urb_adr, align 8 %call31 = call ptr @thunk_convert(ptr noundef nonnull %call25, ptr noundef nonnull %target_urb_adr, ptr noundef nonnull %ptrvoid_arg_type, i32 noundef 0) #27 @@ -1679,10 +1670,10 @@ if.end5: ; preds = %if.end i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -1694,10 +1685,7 @@ sw.bb1.i: ; preds = %if.end5, %if.end5 sw.bb2.i: ; preds = %if.end5 br label %thunk_type_size.exit -sw.bb3.i: ; preds = %if.end5, %if.end5 - br label %thunk_type_size.exit - -if.else.i: ; preds = %if.end5, %if.end5, %if.end5, %if.end5 +sw.bb3.i: ; preds = %if.end5, %if.end5, %if.end5, %if.end5, %if.end5, %if.end5 br label %thunk_type_size.exit sw.bb9.i: ; preds = %if.end5 @@ -1721,14 +1709,14 @@ do.body.i: ; preds = %if.end5 tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit: ; preds = %if.end5, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %retval.0.i = phi i32 [ %6, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %2, %if.end5 ] +thunk_type_size.exit: ; preds = %if.end5, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i = phi i32 [ %6, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %2, %if.end5 ] %conv = sext i32 %retval.0.i to i64 %call6 = tail call ptr @lock_user(i32 noundef 1, i64 noundef %arg, i64 noundef %conv, i1 noundef zeroext true) #27 %tobool.not = icmp eq ptr %call6, null - br i1 %tobool.not, label %return, label %thunk_type_size.exit66 + br i1 %tobool.not, label %return, label %thunk_type_size.exit65 -thunk_type_size.exit66: ; preds = %thunk_type_size.exit +thunk_type_size.exit65: ; preds = %thunk_type_size.exit %call9 = tail call ptr @thunk_convert(ptr noundef %buf_temp, ptr noundef nonnull %call6, ptr noundef nonnull %incdec.ptr, i32 noundef 1) #27 %ifc_ifcu = getelementptr inbounds nuw i8, ptr %buf_temp, i64 8 %7 = load ptr, ptr %ifc_ifcu, align 8 @@ -1739,7 +1727,7 @@ thunk_type_size.exit66: ; preds = %thunk_type_size.exi %cmp12.not = icmp eq ptr %7, null br i1 %cmp12.not, label %if.end30, label %if.then14 -if.then14: ; preds = %thunk_type_size.exit66 +if.then14: ; preds = %thunk_type_size.exit65 %11 = load i32, ptr %buf_temp, align 8 %div = sdiv i32 %11, %10 %mul = mul i32 %div, 40 @@ -1763,10 +1751,10 @@ if.end27: ; preds = %if.end26, %if.then1 store i32 %mul, ptr %host_ifconf.0, align 8 br label %if.end30 -if.end30: ; preds = %thunk_type_size.exit66, %if.end27 - %host_ifconf.1 = phi ptr [ %host_ifconf.0, %if.end27 ], [ %buf_temp, %thunk_type_size.exit66 ] - %free_buf.1 = phi i1 [ %cmp19, %if.end27 ], [ true, %thunk_type_size.exit66 ] - %host_ifc_buf.0 = phi ptr [ %add.ptr, %if.end27 ], [ null, %thunk_type_size.exit66 ] +if.end30: ; preds = %thunk_type_size.exit65, %if.end27 + %host_ifconf.1 = phi ptr [ %host_ifconf.0, %if.end27 ], [ %buf_temp, %thunk_type_size.exit65 ] + %free_buf.1 = phi i1 [ %cmp19, %if.end27 ], [ true, %thunk_type_size.exit65 ] + %host_ifc_buf.0 = phi ptr [ %add.ptr, %if.end27 ], [ null, %thunk_type_size.exit65 ] %ifc_ifcu31 = getelementptr inbounds nuw i8, ptr %host_ifconf.1, i64 8 store ptr %host_ifc_buf.0, ptr %ifc_ifcu31, align 8 %12 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @thread_cpu) @@ -1781,18 +1769,18 @@ if.end30: ; preds = %thunk_type_size.exi br i1 %cmp.i, label %if.then.i, label %get_errno.exit if.then.i: ; preds = %if.end30 - %call.i68 = tail call ptr @__errno_location() #26 - %16 = load i32, ptr %call.i68, align 4 + %call.i67 = tail call ptr @__errno_location() #26 + %16 = load i32, ptr %call.i67, align 4 %sub.i = sub i32 0, %16 - %conv.i74 = zext i32 %sub.i to i64 + %conv.i73 = zext i32 %sub.i to i64 br label %get_errno.exit get_errno.exit: ; preds = %if.end30, %if.then.i - %retval.0.i67 = phi i64 [ %conv.i74, %if.then.i ], [ %call32, %if.end30 ] - %sext = shl i64 %retval.0.i67, 32 + %retval.0.i66 = phi i64 [ %conv.i73, %if.then.i ], [ %call32, %if.end30 ] + %sext = shl i64 %retval.0.i66, 32 %conv35 = ashr exact i64 %sext, 32 - %cmp.i69 = icmp ult i64 %conv35, -4096 - br i1 %cmp.i69, label %if.then38, label %if.end69 + %cmp.i68 = icmp ult i64 %conv35, -4096 + br i1 %cmp.i68, label %if.then38, label %if.end69 if.then38: ; preds = %get_errno.exit %17 = load i32, ptr %host_ifconf.1, align 8 @@ -1813,8 +1801,8 @@ if.end50: ; preds = %if.then38 if.then55: ; preds = %if.end50 %conv56 = sext i32 %mul43 to i64 %call57 = tail call ptr @lock_user(i32 noundef 3, i64 noundef %8, i64 noundef %conv56, i1 noundef zeroext false) #27 - %cmp5871 = icmp sgt i32 %conv42, 0 - br i1 %cmp5871, label %for.body.preheader, label %if.end69 + %cmp5870 = icmp sgt i32 %conv42, 0 + br i1 %cmp5870, label %for.body.preheader, label %if.end69 for.body.preheader: ; preds = %if.then55 %wide.trip.count = and i64 %div41, 2147483647 @@ -1948,10 +1936,10 @@ entry: i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -1963,10 +1951,7 @@ sw.bb1.i: ; preds = %entry, %entry sw.bb2.i: ; preds = %entry br label %thunk_type_size.exit -sw.bb3.i: ; preds = %entry, %entry - br label %thunk_type_size.exit - -if.else.i: ; preds = %entry, %entry, %entry, %entry +sw.bb3.i: ; preds = %entry, %entry, %entry, %entry, %entry, %entry br label %thunk_type_size.exit sw.bb9.i: ; preds = %entry @@ -1990,8 +1975,8 @@ do.body.i: ; preds = %entry tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] +thunk_type_size.exit: ; preds = %entry, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %retval.0.i = phi i32 [ %4, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %0, %entry ] %conv = sext i32 %retval.0.i to i64 %call2 = tail call ptr @lock_user(i32 noundef 1, i64 noundef %arg, i64 noundef %conv, i1 noundef zeroext true) #27 %tobool.not = icmp eq ptr %call2, null @@ -2057,28 +2042,28 @@ sw.bb25: ; preds = %if.end19 %12 = sext i32 %11 to i64 %target_count = getelementptr inbounds nuw i8, ptr %call5, i64 20 %13 = load i32, ptr %target_count, align 4 - %cmp28160.not = icmp eq i32 %13, 0 - br i1 %cmp28160.not, label %sw.epilog, label %for.body + %cmp28159.not = icmp eq i32 %13, 0 + br i1 %cmp28159.not, label %sw.epilog, label %for.body for.body: ; preds = %sw.bb25, %for.body - %gspec.0163 = phi ptr [ %add.ptr46, %for.body ], [ %call16, %sw.bb25 ] - %cur_data.0162 = phi ptr [ %add.ptr49, %for.body ], [ %add.ptr, %sw.bb25 ] - %i.0161 = phi i32 [ %inc, %for.body ], [ 0, %sw.bb25 ] - %call31 = call ptr @thunk_convert(ptr noundef %cur_data.0162, ptr noundef %gspec.0163, ptr noundef nonnull %dm_arg_type, i32 noundef 1) #27 - %add.ptr33 = getelementptr i8, ptr %gspec.0163, i64 %12 + %gspec.0162 = phi ptr [ %add.ptr46, %for.body ], [ %call16, %sw.bb25 ] + %cur_data.0161 = phi ptr [ %add.ptr49, %for.body ], [ %add.ptr, %sw.bb25 ] + %i.0160 = phi i32 [ %inc, %for.body ], [ 0, %sw.bb25 ] + %call31 = call ptr @thunk_convert(ptr noundef %cur_data.0161, ptr noundef %gspec.0162, ptr noundef nonnull %dm_arg_type, i32 noundef 1) #27 + %add.ptr33 = getelementptr i8, ptr %gspec.0162, i64 %12 %call34 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %add.ptr33) #31 - %next37 = getelementptr inbounds nuw i8, ptr %cur_data.0162, i64 20 + %next37 = getelementptr inbounds nuw i8, ptr %cur_data.0161, i64 20 %14 = load i32, ptr %next37, align 4 %15 = trunc i64 %call34 to i32 %conv40 = add i32 %15, 41 store i32 %conv40, ptr %next37, align 4 - %arrayidx = getelementptr i8, ptr %cur_data.0162, i64 40 + %arrayidx = getelementptr i8, ptr %cur_data.0161, i64 40 %call44 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %arrayidx, ptr noundef nonnull dereferenceable(1) %add.ptr33) #27 %idx.ext45 = zext i32 %14 to i64 - %add.ptr46 = getelementptr i8, ptr %gspec.0163, i64 %idx.ext45 + %add.ptr46 = getelementptr i8, ptr %gspec.0162, i64 %idx.ext45 %idx.ext48 = zext i32 %conv40 to i64 - %add.ptr49 = getelementptr i8, ptr %cur_data.0162, i64 %idx.ext48 - %inc = add nuw i32 %i.0161, 1 + %add.ptr49 = getelementptr i8, ptr %cur_data.0161, i64 %idx.ext48 + %inc = add nuw i32 %i.0160, 1 %16 = load i32, ptr %target_count, align 4 %cmp28 = icmp ult i32 %inc, %16 br i1 %cmp28, label %for.body, label %sw.epilog.loopexit, !llvm.loop !8 @@ -2099,16 +2084,16 @@ sw.epilog: ; preds = %sw.epilog.loopexit, br i1 %cmp.i, label %if.then.i, label %get_errno.exit if.then.i: ; preds = %sw.epilog - %call.i154 = tail call ptr @__errno_location() #26 - %21 = load i32, ptr %call.i154, align 4 + %call.i153 = tail call ptr @__errno_location() #26 + %21 = load i32, ptr %call.i153, align 4 %sub.i = sub i32 0, %21 %conv.i = sext i32 %sub.i to i64 br label %get_errno.exit get_errno.exit: ; preds = %sw.epilog, %if.then.i - %retval.0.i153 = phi i64 [ %conv.i, %if.then.i ], [ %call51, %sw.epilog ] - %cmp.i155 = icmp ult i64 %retval.0.i153, -4096 - br i1 %cmp.i155, label %if.then55, label %out + %retval.0.i152 = phi i64 [ %conv.i, %if.then.i ], [ %call51, %sw.epilog ] + %cmp.i154 = icmp ult i64 %retval.0.i152, -4096 + br i1 %cmp.i154, label %if.then55, label %out if.then55: ; preds = %get_errno.exit %22 = load i32, ptr %data_start, align 8 @@ -2188,8 +2173,8 @@ sw.bb106: ; preds = %if.then55, %if.then %call115 = call fastcc i32 @thunk_type_size(ptr noundef nonnull %dm_arg_type112) %target_count118 = getelementptr inbounds nuw i8, ptr %call5, i64 20 %31 = load i32, ptr %target_count118, align 4 - %cmp119168.not = icmp eq i32 %31, 0 - br i1 %cmp119168.not, label %sw.epilog226, label %for.body121.lr.ph + %cmp119167.not = icmp eq i32 %31, 0 + br i1 %cmp119167.not, label %sw.epilog226, label %for.body121.lr.ph for.body121.lr.ph: ; preds = %sw.bb106 %idx.ext109 = zext i32 %30 to i64 @@ -2201,14 +2186,14 @@ for.body121.lr.ph: ; preds = %sw.bb106 br label %for.body121 for.body121: ; preds = %for.body121.lr.ph, %if.end141 - %i116.0171 = phi i32 [ 0, %for.body121.lr.ph ], [ %inc157, %if.end141 ] - %cur_data111.0170 = phi ptr [ %call63, %for.body121.lr.ph ], [ %add.ptr150, %if.end141 ] - %spec107.0169 = phi ptr [ %add.ptr110, %for.body121.lr.ph ], [ %add.ptr155, %if.end141 ] - %next123 = getelementptr inbounds nuw i8, ptr %spec107.0169, i64 20 + %i116.0170 = phi i32 [ 0, %for.body121.lr.ph ], [ %inc157, %if.end141 ] + %cur_data111.0169 = phi ptr [ %call63, %for.body121.lr.ph ], [ %add.ptr150, %if.end141 ] + %spec107.0168 = phi ptr [ %add.ptr110, %for.body121.lr.ph ], [ %add.ptr155, %if.end141 ] + %next123 = getelementptr inbounds nuw i8, ptr %spec107.0168, i64 20 %32 = load i32, ptr %next123, align 4 - %arrayidx125 = getelementptr i8, ptr %spec107.0169, i64 40 + %arrayidx125 = getelementptr i8, ptr %spec107.0168, i64 40 %call126 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %arrayidx125) #31 - %sub.ptr.lhs.cast = ptrtoint ptr %cur_data111.0170 to i64 + %sub.ptr.lhs.cast = ptrtoint ptr %cur_data111.0169 to i64 %add130 = add i64 %sub.ptr.sub, %sub.ptr.lhs.cast %add132 = add i64 %add130, %call126 %conv133 = trunc i64 %add132 to i32 @@ -2217,8 +2202,8 @@ for.body121: ; preds = %for.body121.lr.ph, br i1 %cmp136, label %sw.epilog226.sink.split, label %if.end141 if.end141: ; preds = %for.body121 - %call143 = call ptr @thunk_convert(ptr noundef %cur_data111.0170, ptr noundef nonnull %spec107.0169, ptr noundef nonnull %dm_arg_type112, i32 noundef 0) #27 - %add.ptr145 = getelementptr i8, ptr %cur_data111.0170, i64 %conv129 + %call143 = call ptr @thunk_convert(ptr noundef %cur_data111.0169, ptr noundef nonnull %spec107.0168, ptr noundef nonnull %dm_arg_type112, i32 noundef 0) #27 + %add.ptr145 = getelementptr i8, ptr %cur_data111.0169, i64 %conv129 %call147 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %add.ptr145, ptr noundef nonnull dereferenceable(1) %arrayidx125) #27 %33 = load i32, ptr %next123, align 4 %idx.ext149 = zext i32 %33 to i64 @@ -2228,7 +2213,7 @@ if.end141: ; preds = %for.body121 %add.ptr153 = getelementptr i8, ptr %call5, i64 %idx.ext152 %idx.ext154 = zext i32 %32 to i64 %add.ptr155 = getelementptr i8, ptr %add.ptr153, i64 %idx.ext154 - %inc157 = add nuw i32 %i116.0171, 1 + %inc157 = add nuw i32 %i116.0170, 1 %35 = load i32, ptr %target_count118, align 4 %cmp119 = icmp ult i32 %inc157, %35 br i1 %cmp119, label %for.body121, label %sw.epilog226, !llvm.loop !9 @@ -2239,18 +2224,18 @@ sw.bb159: ; preds = %if.then55 %add.ptr162 = getelementptr i8, ptr %call5, i64 %idx.ext161 %37 = load i32, ptr %add.ptr162, align 4 store i32 %37, ptr %call63, align 4 - %cmp168164 = icmp sgt i32 %37, 0 - br i1 %cmp168164, label %for.body170, label %sw.epilog226 + %cmp168163 = icmp sgt i32 %37, 0 + br i1 %cmp168163, label %for.body170, label %sw.epilog226 for.body170: ; preds = %sw.bb159, %for.body170 - %i165.0167 = phi i32 [ %inc175, %for.body170 ], [ 0, %sw.bb159 ] - %call63.pn166 = phi ptr [ %gdev.0, %for.body170 ], [ %call63, %sw.bb159 ] - %add.ptr162.pn165 = phi ptr [ %hdev.0, %for.body170 ], [ %add.ptr162, %sw.bb159 ] - %hdev.0 = getelementptr i8, ptr %add.ptr162.pn165, i64 8 - %gdev.0 = getelementptr i8, ptr %call63.pn166, i64 8 + %i165.0166 = phi i32 [ %inc175, %for.body170 ], [ 0, %sw.bb159 ] + %call63.pn165 = phi ptr [ %gdev.0, %for.body170 ], [ %call63, %sw.bb159 ] + %add.ptr162.pn164 = phi ptr [ %hdev.0, %for.body170 ], [ %add.ptr162, %sw.bb159 ] + %hdev.0 = getelementptr i8, ptr %add.ptr162.pn164, i64 8 + %gdev.0 = getelementptr i8, ptr %call63.pn165, i64 8 %38 = load i64, ptr %hdev.0, align 8 store i64 %38, ptr %gdev.0, align 8 - %inc175 = add nuw nsw i32 %i165.0167, 1 + %inc175 = add nuw nsw i32 %i165.0166, 1 %exitcond.not = icmp eq i32 %inc175, %37 br i1 %exitcond.not, label %sw.epilog226, label %for.body170, !llvm.loop !10 @@ -2319,7 +2304,7 @@ if.end232: ; preds = %sw.epilog226 out: ; preds = %if.then55, %if.end19, %sw.epilog226, %if.end, %thunk_type_size.exit, %get_errno.exit, %if.end232 %big_buf.0 = phi ptr [ %call5, %get_errno.exit ], [ %call5, %if.end232 ], [ null, %thunk_type_size.exit ], [ %call5, %if.end ], [ %call5, %sw.epilog226 ], [ %call5, %if.end19 ], [ %call5, %if.then55 ] - %ret.0 = phi i64 [ %retval.0.i153, %get_errno.exit ], [ %retval.0.i153, %if.end232 ], [ -14, %thunk_type_size.exit ], [ -14, %if.end ], [ -14, %sw.epilog226 ], [ -22, %if.end19 ], [ -22, %if.then55 ] + %ret.0 = phi i64 [ %retval.0.i152, %get_errno.exit ], [ %retval.0.i152, %if.end232 ], [ -14, %thunk_type_size.exit ], [ -14, %if.end ], [ -14, %sw.epilog226 ], [ -22, %if.end19 ], [ -22, %if.then55 ] call void @g_free(ptr noundef %big_buf.0) #27 ret i64 %ret.0 } @@ -2890,10 +2875,10 @@ if.end: ; preds = %if.then i32 3, label %sw.bb2.i i32 7, label %sw.bb3.i i32 8, label %sw.bb3.i - i32 4, label %if.else.i - i32 5, label %if.else.i - i32 6, label %if.else.i - i32 9, label %if.else.i + i32 4, label %sw.bb3.i + i32 5, label %sw.bb3.i + i32 6, label %sw.bb3.i + i32 9, label %sw.bb3.i i32 12, label %sw.bb1.i i32 10, label %sw.bb9.i i32 11, label %sw.bb10.i @@ -2905,10 +2890,7 @@ sw.bb1.i: ; preds = %if.end, %if.end sw.bb2.i: ; preds = %if.end br label %thunk_type_size.exit -sw.bb3.i: ; preds = %if.end, %if.end - br label %thunk_type_size.exit - -if.else.i: ; preds = %if.end, %if.end, %if.end, %if.end +sw.bb3.i: ; preds = %if.end, %if.end, %if.end, %if.end, %if.end, %if.end br label %thunk_type_size.exit sw.bb9.i: ; preds = %if.end @@ -2933,9 +2915,9 @@ do.body.i: ; preds = %if.end tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -thunk_type_size.exit: ; preds = %if.end, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %if.else.i, %sw.bb9.i, %sw.bb10.i - %10 = phi i32 [ %1, %sw.bb10.i ], [ %.pre, %sw.bb9.i ], [ %1, %if.else.i ], [ %1, %sw.bb3.i ], [ %1, %sw.bb2.i ], [ %1, %sw.bb1.i ], [ %1, %if.end ] - %retval.0.i = phi i32 [ %9, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %if.else.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %5, %if.end ] +thunk_type_size.exit: ; preds = %if.end, %sw.bb1.i, %sw.bb2.i, %sw.bb3.i, %sw.bb9.i, %sw.bb10.i + %10 = phi i32 [ %1, %sw.bb10.i ], [ %.pre, %sw.bb9.i ], [ %1, %sw.bb3.i ], [ %1, %sw.bb2.i ], [ %1, %sw.bb1.i ], [ %1, %if.end ] + %retval.0.i = phi i32 [ %9, %sw.bb10.i ], [ %mul.i, %sw.bb9.i ], [ 8, %sw.bb3.i ], [ 4, %sw.bb2.i ], [ 2, %sw.bb1.i ], [ %5, %if.end ] %and9 = and i32 %10, -1073676289 %shl = shl i32 %retval.0.i, 16 %or = or i32 %and9, %shl @@ -2974,10 +2956,10 @@ entry: i32 3, label %sw.bb2 i32 7, label %sw.bb3 i32 8, label %sw.bb3 - i32 4, label %if.else - i32 5, label %if.else - i32 6, label %if.else - i32 9, label %if.else + i32 4, label %sw.bb3 + i32 5, label %sw.bb3 + i32 6, label %sw.bb3 + i32 9, label %sw.bb3 i32 12, label %sw.bb1 i32 10, label %sw.bb9 i32 11, label %sw.bb10 @@ -2989,10 +2971,7 @@ sw.bb1: ; preds = %entry, %entry sw.bb2: ; preds = %entry br label %sw.epilog -sw.bb3: ; preds = %entry, %entry - br label %sw.epilog - -if.else: ; preds = %entry, %entry, %entry, %entry +sw.bb3: ; preds = %entry, %entry, %entry, %entry, %entry, %entry br label %sw.epilog sw.bb9: ; preds = %entry @@ -3016,8 +2995,8 @@ do.body: ; preds = %entry tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.592, i32 noundef 141, ptr noundef nonnull @__func__.thunk_type_size, ptr noundef null) #28 unreachable -sw.epilog: ; preds = %entry, %sw.bb10, %sw.bb9, %if.else, %sw.bb3, %sw.bb2, %sw.bb1 - %retval.0 = phi i32 [ %4, %sw.bb10 ], [ %mul, %sw.bb9 ], [ 8, %if.else ], [ 8, %sw.bb3 ], [ 4, %sw.bb2 ], [ 2, %sw.bb1 ], [ %0, %entry ] +sw.epilog: ; preds = %entry, %sw.bb10, %sw.bb9, %sw.bb3, %sw.bb2, %sw.bb1 + %retval.0 = phi i32 [ %4, %sw.bb10 ], [ %mul, %sw.bb9 ], [ 8, %sw.bb3 ], [ 4, %sw.bb2 ], [ 2, %sw.bb1 ], [ %0, %entry ] ret i32 %retval.0 } diff --git a/bench/qemu/optimized/tcg.c.ll b/bench/qemu/optimized/tcg.c.ll index 77e542cc533..b2c46f9ddfe 100644 --- a/bench/qemu/optimized/tcg.c.ll +++ b/bench/qemu/optimized/tcg.c.ll @@ -403,27 +403,24 @@ if.end3: ; preds = %if.end i32 5, label %atom_and_align_for_opc.exit i32 0, label %sw.bb2.i i32 1, label %sw.bb3.i - i32 2, label %sw.bb4.i + i32 2, label %sw.bb2.i i32 3, label %sw.bb2.i i32 4, label %sw.bb2.i ] -sw.bb2.i: ; preds = %if.end3, %if.end3, %if.end3 +sw.bb2.i: ; preds = %if.end3, %if.end3, %if.end3, %if.end3 br label %atom_and_align_for_opc.exit sw.bb3.i: ; preds = %if.end3 %cond.i = add nsw i32 %and.i, -1 br label %atom_and_align_for_opc.exit -sw.bb4.i: ; preds = %if.end3 - br label %atom_and_align_for_opc.exit - do.body.i: ; preds = %if.end3 tail call void @g_assertion_message_expr(ptr noundef null, ptr noundef nonnull @.str.1, i32 noundef 5495, ptr noundef nonnull @__func__.atom_and_align_for_opc, ptr noundef null) #27 unreachable -atom_and_align_for_opc.exit: ; preds = %sw.bb4.i, %if.end3, %sw.bb2.i, %sw.bb3.i - %atmax.0.i = phi i32 [ %cond.i, %sw.bb3.i ], [ %and.i, %sw.bb2.i ], [ 0, %if.end3 ], [ %and.i, %sw.bb4.i ] +atom_and_align_for_opc.exit: ; preds = %if.end3, %sw.bb2.i, %sw.bb3.i + %atmax.0.i = phi i32 [ %cond.i, %sw.bb3.i ], [ %and.i, %sw.bb2.i ], [ 0, %if.end3 ] %2 = and i32 %atmax.0.i, 2147483644 %cmp4 = icmp eq i32 %2, 0 br label %return @@ -5715,10 +5712,10 @@ entry: i32 30, label %return i32 31, label %return i32 7, label %return - i32 20, label %sw.bb10 - i32 21, label %sw.bb10 - i32 22, label %sw.bb11 - i32 23, label %sw.bb11 + i32 20, label %sw.bb4 + i32 21, label %sw.bb4 + i32 22, label %sw.bb4 + i32 23, label %sw.bb4 i32 24, label %return i32 25, label %return i32 32, label %return @@ -5731,8 +5728,8 @@ entry: i32 40, label %return i32 41, label %return i32 42, label %return - i32 43, label %sw.bb22 - i32 44, label %sw.bb22 + i32 43, label %sw.bb4 + i32 44, label %sw.bb4 i32 47, label %return i32 48, label %return i32 49, label %return @@ -5741,15 +5738,15 @@ entry: i32 52, label %return i32 53, label %return i32 55, label %sw.bb31 - i32 56, label %sw.bb22 - i32 57, label %sw.bb22 - i32 58, label %sw.bb22 - i32 59, label %sw.bb22 + i32 56, label %sw.bb4 + i32 57, label %sw.bb4 + i32 58, label %sw.bb4 + i32 59, label %sw.bb4 i32 60, label %return i32 61, label %return i32 62, label %sw.bb40 - i32 45, label %sw.bb43 - i32 46, label %sw.bb43 + i32 45, label %sw.bb4 + i32 46, label %sw.bb4 i32 63, label %return i32 64, label %return i32 103, label %return @@ -5778,17 +5775,17 @@ entry: i32 99, label %return i32 100, label %return i32 65, label %return - i32 81, label %sw.bb46 - i32 82, label %sw.bb46 - i32 83, label %sw.bb47 - i32 84, label %sw.bb47 + i32 81, label %sw.bb4 + i32 82, label %sw.bb4 + i32 83, label %sw.bb4 + i32 84, label %sw.bb4 i32 85, label %return i32 86, label %return i32 93, label %return i32 94, label %return i32 95, label %return i32 96, label %return - i32 97, label %sw.bb22 + i32 97, label %sw.bb4 i32 98, label %return i32 101, label %return i32 102, label %return @@ -5803,10 +5800,10 @@ entry: i32 112, label %return i32 113, label %return i32 115, label %sw.bb65 - i32 116, label %sw.bb22 - i32 117, label %sw.bb22 - i32 118, label %sw.bb22 - i32 119, label %sw.bb22 + i32 116, label %sw.bb4 + i32 117, label %sw.bb4 + i32 118, label %sw.bb4 + i32 119, label %sw.bb4 i32 120, label %return i32 121, label %return i32 122, label %sw.bb74 @@ -5814,8 +5811,8 @@ entry: i32 124, label %return i32 125, label %return i32 126, label %return - i32 127, label %sw.bb22 - i32 128, label %sw.bb22 + i32 127, label %sw.bb4 + i32 128, label %sw.bb4 i32 149, label %sw.bb83 i32 150, label %sw.bb83 i32 154, label %sw.bb83 @@ -5827,9 +5824,9 @@ entry: i32 169, label %sw.bb83 i32 170, label %sw.bb83 i32 190, label %sw.bb83 - i32 151, label %sw.bb22 + i32 151, label %sw.bb4 i32 176, label %sw.bb87 - i32 158, label %sw.bb22 + i32 158, label %sw.bb4 i32 159, label %sw.bb101 i32 171, label %sw.bb101 i32 172, label %sw.bb109 @@ -5837,32 +5834,32 @@ entry: i32 174, label %sw.bb129 i32 175, label %sw.bb139 i32 157, label %sw.bb101 - i32 177, label %sw.bb153 - i32 178, label %sw.bb153 - i32 179, label %sw.bb153 - i32 181, label %sw.bb157 - i32 182, label %sw.bb157 - i32 183, label %sw.bb157 + i32 177, label %sw.bb101 + i32 178, label %sw.bb101 + i32 179, label %sw.bb101 + i32 181, label %sw.bb101 + i32 182, label %sw.bb101 + i32 183, label %sw.bb101 i32 185, label %sw.bb161 i32 186, label %sw.bb161 i32 187, label %sw.bb161 i32 180, label %sw.bb167 - i32 184, label %sw.bb22 + i32 184, label %sw.bb4 i32 188, label %sw.bb181 i32 189, label %sw.bb181 - i32 160, label %sw.bb191 - i32 161, label %sw.bb191 - i32 162, label %sw.bb191 - i32 163, label %sw.bb191 - i32 164, label %sw.bb195 - i32 165, label %sw.bb195 - i32 166, label %sw.bb195 - i32 167, label %sw.bb195 + i32 160, label %sw.bb101 + i32 161, label %sw.bb101 + i32 162, label %sw.bb101 + i32 163, label %sw.bb101 + i32 164, label %sw.bb101 + i32 165, label %sw.bb101 + i32 166, label %sw.bb101 + i32 167, label %sw.bb101 i32 191, label %sw.bb199 i32 192, label %sw.bb101 ] -sw.bb4: ; preds = %entry, %entry +sw.bb4: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %return sw.bb5: ; preds = %entry, %entry, %entry, %entry @@ -5870,15 +5867,6 @@ sw.bb5: ; preds = %entry, %entry, %ent %tobool7 = icmp ne i32 %and6, 0 br label %return -sw.bb10: ; preds = %entry, %entry - br label %return - -sw.bb11: ; preds = %entry, %entry - br label %return - -sw.bb22: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry - br label %return - sw.bb31: ; preds = %entry %and32 = and i32 %0, 32 %tobool33 = icmp ne i32 %and32, 0 @@ -5889,15 +5877,6 @@ sw.bb40: ; preds = %entry %tobool42 = icmp ne i32 %and41, 0 br label %return -sw.bb43: ; preds = %entry, %entry - br label %return - -sw.bb46: ; preds = %entry, %entry - br label %return - -sw.bb47: ; preds = %entry, %entry - br label %return - sw.bb65: ; preds = %entry %and66 = and i32 %0, 32 %tobool67 = icmp ne i32 %and66, 0 @@ -5917,7 +5896,7 @@ sw.bb87: ; preds = %entry %3 = and i1 %tobool, %2 br label %return -sw.bb101: ; preds = %entry, %entry, %entry, %entry +sw.bb101: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry br label %return sw.bb109: ; preds = %entry @@ -5944,12 +5923,6 @@ sw.bb139: ; preds = %entry %15 = and i1 %tobool, %14 br label %return -sw.bb153: ; preds = %entry, %entry, %entry - br label %return - -sw.bb157: ; preds = %entry, %entry, %entry - br label %return - sw.bb161: ; preds = %entry, %entry, %entry %and164 = and i32 %0, 1024 %tobool165 = icmp ne i32 %and164, 0 @@ -5967,12 +5940,6 @@ sw.bb181: ; preds = %entry, %entry %21 = and i1 %tobool, %20 br label %return -sw.bb191: ; preds = %entry, %entry, %entry, %entry - br label %return - -sw.bb195: ; preds = %entry, %entry, %entry, %entry - br label %return - sw.bb199: ; preds = %entry %22 = and i32 %0, 6144 %23 = icmp eq i32 %22, 6144 @@ -5985,8 +5952,8 @@ do.body: ; preds = %entry tail call void @llvm.assume(i1 %or.cond) br label %return -return: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %do.body, %sw.bb199, %sw.bb195, %sw.bb191, %sw.bb181, %sw.bb167, %sw.bb161, %sw.bb157, %sw.bb153, %sw.bb139, %sw.bb129, %sw.bb119, %sw.bb109, %sw.bb101, %sw.bb87, %sw.bb83, %sw.bb74, %sw.bb65, %sw.bb47, %sw.bb46, %sw.bb43, %sw.bb40, %sw.bb31, %sw.bb22, %sw.bb11, %sw.bb10, %sw.bb5, %sw.bb4 - %retval.0 = phi i1 [ true, %do.body ], [ %24, %sw.bb199 ], [ %tobool, %sw.bb195 ], [ %tobool, %sw.bb191 ], [ %21, %sw.bb181 ], [ %18, %sw.bb167 ], [ %tobool165, %sw.bb161 ], [ %tobool, %sw.bb157 ], [ %tobool, %sw.bb153 ], [ %15, %sw.bb139 ], [ %12, %sw.bb129 ], [ %9, %sw.bb119 ], [ %6, %sw.bb109 ], [ %tobool, %sw.bb101 ], [ %3, %sw.bb87 ], [ %tobool, %sw.bb83 ], [ %tobool76, %sw.bb74 ], [ %tobool67, %sw.bb65 ], [ false, %sw.bb47 ], [ false, %sw.bb46 ], [ false, %sw.bb43 ], [ %tobool42, %sw.bb40 ], [ %tobool33, %sw.bb31 ], [ false, %sw.bb22 ], [ false, %sw.bb11 ], [ false, %sw.bb10 ], [ %tobool7, %sw.bb5 ], [ false, %sw.bb4 ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ] +return: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %do.body, %sw.bb199, %sw.bb181, %sw.bb167, %sw.bb161, %sw.bb139, %sw.bb129, %sw.bb119, %sw.bb109, %sw.bb101, %sw.bb87, %sw.bb83, %sw.bb74, %sw.bb65, %sw.bb40, %sw.bb31, %sw.bb5, %sw.bb4 + %retval.0 = phi i1 [ true, %do.body ], [ %24, %sw.bb199 ], [ %21, %sw.bb181 ], [ %18, %sw.bb167 ], [ %tobool165, %sw.bb161 ], [ %15, %sw.bb139 ], [ %12, %sw.bb129 ], [ %9, %sw.bb119 ], [ %6, %sw.bb109 ], [ %tobool, %sw.bb101 ], [ %3, %sw.bb87 ], [ %tobool, %sw.bb83 ], [ %tobool76, %sw.bb74 ], [ %tobool67, %sw.bb65 ], [ %tobool42, %sw.bb40 ], [ %tobool33, %sw.bb31 ], [ %tobool7, %sw.bb5 ], [ false, %sw.bb4 ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ] ret i1 %retval.0 } @@ -16496,12 +16463,12 @@ do.body: ; preds = %entry sw.epilog: ; preds = %sw.bb29, %sw.bb12, %sw.bb4, %sw.bb %bf.set33.sink = phi i64 [ %bf.set33, %sw.bb29 ], [ %bf.set16, %sw.bb12 ], [ %bf.set8, %sw.bb4 ], [ %bf.clear3, %sw.bb ] store i64 %bf.set33.sink, ptr %typemask1, align 8 - %tobool.not97 = icmp ult i32 %bf.cast, 8 - br i1 %tobool.not97, label %if.end.thread, label %for.body.lr.ph + %tobool.not96 = icmp ult i32 %bf.cast, 8 + br i1 %tobool.not96, label %if.end.thread, label %for.body.lr.ph if.end.thread: ; preds = %sw.epilog - %bf.clear67110 = and i64 %bf.set33.sink, -280375465082881 - store i64 %bf.clear67110, ptr %typemask1, align 8 + %bf.clear67109 = and i64 %bf.set33.sink, -280375465082881 + store i64 %bf.clear67109, ptr %typemask1, align 8 br label %if.end128 for.body.lr.ph: ; preds = %sw.epilog @@ -16509,12 +16476,12 @@ for.body.lr.ph: ; preds = %sw.epilog br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc - %typemask.0101.in = phi i32 [ %bf.cast, %for.body.lr.ph ], [ %typemask.0101, %for.inc ] - %cum.sroa.0.0100 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] - %cum.sroa.18.099 = phi i32 [ 0, %for.body.lr.ph ], [ %inc18.i, %for.inc ] - %cum.sroa.6.098 = phi i32 [ 0, %for.body.lr.ph ], [ %inc.i, %for.inc ] - %typemask.0101 = lshr i32 %typemask.0101.in, 3 - %and49 = and i32 %typemask.0101, 7 + %typemask.0100.in = phi i32 [ %bf.cast, %for.body.lr.ph ], [ %typemask.0100, %for.inc ] + %cum.sroa.0.099 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.inc ] + %cum.sroa.18.098 = phi i32 [ 0, %for.body.lr.ph ], [ %inc18.i, %for.inc ] + %cum.sroa.6.097 = phi i32 [ 0, %for.body.lr.ph ], [ %inc.i, %for.inc ] + %typemask.0100 = lshr i32 %typemask.0100.in, 3 + %and49 = and i32 %typemask.0100, 7 switch i32 %and49, label %do.body55 [ i32 2, label %for.inc.sink.split i32 3, label %for.inc.sink.split @@ -16529,9 +16496,9 @@ do.body55: ; preds = %for.body unreachable sw.bb60: ; preds = %for.body - %idxprom.i51 = sext i32 %cum.sroa.6.098 to i64 + %idxprom.i51 = sext i32 %cum.sroa.6.097 to i64 %arrayidx.i52 = getelementptr [14 x %struct.TCGCallArgumentLoc], ptr %in.i49, i64 0, i64 %idxprom.i51 - %bf.value10.i = shl i32 %cum.sroa.0.0100, 24 + %bf.value10.i = shl i32 %cum.sroa.0.099, 24 %bf.shl11.i = and i32 %bf.value10.i, 251658240 br label %for.body.i @@ -16541,7 +16508,7 @@ for.body.i: ; preds = %for.body.i, %sw.bb6 %.compoundliteral.sroa.0.016.i = phi i32 [ undef, %sw.bb60 ], [ %bf.set18.i, %for.body.i ] %arrayidx2.i = getelementptr %struct.TCGCallArgumentLoc, ptr %arrayidx.i52, i64 %indvars.iv.i %0 = trunc nuw nsw i64 %indvars.iv.i to i32 - %add.i = add i32 %cum.sroa.18.099, %0 + %add.i = add i32 %cum.sroa.18.098, %0 %bf.value.i = shl i32 %add.i, 8 %bf.shl.i54 = and i32 %bf.value.i, 65280 %bf.clear4.i = and i32 %.compoundliteral.sroa.0.016.i, -1073741824 @@ -16553,22 +16520,22 @@ for.body.i: ; preds = %for.body.i, %sw.bb6 br i1 %cmp.i, label %for.body.i, label %for.inc, !llvm.loop !91 for.inc.sink.split: ; preds = %for.body, %for.body, %for.body, %for.body, %for.body - %idxprom.i = sext i32 %cum.sroa.6.098 to i64 + %idxprom.i = sext i32 %cum.sroa.6.097 to i64 %arrayidx.i = getelementptr [14 x %struct.TCGCallArgumentLoc], ptr %in.i49, i64 0, i64 %idxprom.i - %bf.value2.i = shl i32 %cum.sroa.18.099, 8 + %bf.value2.i = shl i32 %cum.sroa.18.098, 8 %bf.shl.i = and i32 %bf.value2.i, 65280 - %bf.value9.i = shl i32 %cum.sroa.0.0100, 24 + %bf.value9.i = shl i32 %cum.sroa.0.099, 24 %bf.shl10.i = and i32 %bf.value9.i, 251658240 %bf.set12.i = or disjoint i32 %bf.shl10.i, %bf.shl.i store i32 %bf.set12.i, ptr %arrayidx.i, align 4 br label %for.inc for.inc: ; preds = %for.body.i, %for.inc.sink.split - %.sink115 = phi i32 [ 1, %for.inc.sink.split ], [ 2, %for.body.i ] - %inc.i = add i32 %cum.sroa.6.098, %.sink115 - %inc18.i = add i32 %cum.sroa.18.099, %.sink115 - %inc = add nuw nsw i32 %cum.sroa.0.0100, 1 - %tobool.not = icmp ult i32 %typemask.0101.in, 64 + %.sink114 = phi i32 [ 1, %for.inc.sink.split ], [ 2, %for.body.i ] + %inc.i = add i32 %cum.sroa.6.097, %.sink114 + %inc18.i = add i32 %cum.sroa.18.098, %.sink114 + %inc = add nuw nsw i32 %cum.sroa.0.099, 1 + %tobool.not = icmp ult i32 %typemask.0100.in, 64 br i1 %tobool.not, label %for.end, label %for.body, !llvm.loop !92 for.end: ; preds = %for.inc diff --git a/bench/ruby/optimized/regcomp.ll b/bench/ruby/optimized/regcomp.ll index cf7a6ed5323..241fe22765f 100644 --- a/bench/ruby/optimized/regcomp.ll +++ b/bench/ruby/optimized/regcomp.ll @@ -1687,9 +1687,9 @@ tailrecurse: ; preds = %tailrecurse.backedg i32 9, label %.preheader298 i32 7, label %515 i32 0, label %81 + i32 6, label %436 i32 5, label %363 i32 4, label %315 - i32 6, label %436 ] .preheader298: ; preds = %tailrecurse @@ -2387,14 +2387,14 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl 315: ; preds = %tailrecurse %316 = getelementptr inbounds nuw i8, ptr %3, i64 168 %317 = load ptr, ptr %316, align 8 - %.not268 = icmp eq ptr %317, null + %.not = icmp eq ptr %317, null %318 = getelementptr inbounds nuw i8, ptr %3, i64 104 - %319 = select i1 %.not268, ptr %318, ptr %317 + %319 = select i1 %.not, ptr %318, ptr %317 %320 = getelementptr inbounds nuw i8, ptr %.tr, i64 40 %321 = load ptr, ptr %320, align 8 - %.not269 = icmp eq ptr %321, null + %.not260 = icmp eq ptr %321, null %322 = getelementptr inbounds nuw i8, ptr %.tr, i64 12 - %323 = select i1 %.not269, ptr %322, ptr %321 + %323 = select i1 %.not260, ptr %322, ptr %321 %324 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 %325 = load i32, ptr %324, align 8 %326 = icmp sgt i32 %325, 0 @@ -2430,8 +2430,8 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl store i32 %344, ptr %11, align 4 %345 = load i32, ptr %328, align 4 %346 = and i32 %345, 8192 - %.not270 = icmp eq i32 %346, 0 - br i1 %.not270, label %352, label %.sink.split + %.not261 = icmp eq i32 %346, 0 + br i1 %.not261, label %352, label %.sink.split .sink.split: ; preds = %335 %347 = load i32, ptr %331, align 4 @@ -2462,8 +2462,8 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl %364 = getelementptr inbounds nuw i8, ptr %.tr, i64 8 %365 = load ptr, ptr %364, align 8 %366 = and i32 %.tr296.ph, 4 - %.not271 = icmp eq i32 %366, 0 - br i1 %.not271, label %371, label %367 + %.not262 = icmp eq i32 %366, 0 + br i1 %.not262, label %371, label %367 367: ; preds = %363 %368 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 @@ -2482,8 +2482,8 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl 376: ; preds = %371 %377 = call fastcc i32 @get_min_match_length(ptr noundef %365, ptr noundef %7, ptr noundef nonnull %3) - %.not272 = icmp eq i32 %377, 0 - br i1 %.not272, label %378, label %common.ret760 + %.not263 = icmp eq i32 %377, 0 + br i1 %.not263, label %378, label %common.ret760 378: ; preds = %376 %379 = load i64, ptr %7, align 8 @@ -2502,12 +2502,12 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl %385 = getelementptr inbounds nuw i8, ptr %.tr, i64 16 %386 = load i32, ptr %385, align 8 %387 = load i32, ptr %372, align 4 - %.not274 = icmp eq i32 %386, %387 - %spec.select.v = select i1 %.not274, i32 4, i32 12 + %.not265 = icmp eq i32 %386, %387 + %spec.select.v = select i1 %.not265, i32 4, i32 12 %spec.select = or i32 %spec.select.v, %.tr296.ph %388 = call fastcc i32 @setup_tree(ptr noundef %365, ptr noundef %1, i32 noundef %spec.select, ptr noundef %3) - %.not275 = icmp eq i32 %388, 0 - br i1 %.not275, label %389, label %common.ret760 + %.not266 = icmp eq i32 %388, 0 + br i1 %.not266, label %389, label %common.ret760 389: ; preds = %384 %390 = load i32, ptr %365, align 8 @@ -2554,8 +2554,8 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl %414 = load ptr, ptr %398, align 8 %415 = load ptr, ptr %396, align 8 %416 = call i32 @onig_node_str_cat(ptr noundef nonnull %403, ptr noundef %414, ptr noundef %415) #20 - %.not276 = icmp eq i32 %416, 0 - br i1 %.not276, label %409, label %417, !llvm.loop !24 + %.not267 = icmp eq i32 %416, 0 + br i1 %.not267, label %409, label %417, !llvm.loop !24 417: ; preds = %413 call void @onig_node_free(ptr noundef nonnull %403) #20 @@ -2620,7 +2620,7 @@ expand_case_fold_string.exit: ; preds = %89, %91, %.sink.spl ] common.ret760: ; preds = %expand_case_fold_string.exit, %85, %81, %376, %384, %431, %435, %392, %389, %469, %486, %490, %483, %479, %475, %538, %529, %535, %531, %527, %523, %395, %434, %430, %417, %315, %52, %next_setup.exit.thread, %next_setup.exit, %78, %73, %330, %352, %436, %515, %tailrecurse, %509, %506, %439 - %common.ret760.op = phi i32 [ %446, %439 ], [ %416, %417 ], [ -5, %430 ], [ -5, %434 ], [ -5, %395 ], [ -122, %523 ], [ %528, %527 ], [ -122, %531 ], [ %537, %535 ], [ %472, %490 ], [ %472, %486 ], [ %472, %483 ], [ %472, %479 ], [ %472, %475 ], [ %472, %469 ], [ %377, %376 ], [ %388, %384 ], [ 0, %431 ], [ 0, %435 ], [ 0, %392 ], [ 0, %389 ], [ 0, %85 ], [ %.0.i291, %expand_case_fold_string.exit ], [ 0, %81 ], [ %539, %538 ], [ %530, %529 ], [ 0, %315 ], [ -5, %52 ], [ %16, %next_setup.exit ], [ 0, %next_setup.exit.thread ], [ %76, %73 ], [ 0, %78 ], [ 0, %352 ], [ -208, %330 ], [ 0, %515 ], [ 0, %436 ], [ 0, %tailrecurse ], [ -208, %509 ], [ -209, %506 ] + %common.ret760.op = phi i32 [ %446, %439 ], [ %416, %417 ], [ -5, %430 ], [ -5, %434 ], [ -5, %395 ], [ -122, %523 ], [ %528, %527 ], [ -122, %531 ], [ %537, %535 ], [ %377, %376 ], [ %388, %384 ], [ 0, %431 ], [ 0, %435 ], [ 0, %392 ], [ 0, %389 ], [ %472, %490 ], [ %472, %486 ], [ %472, %483 ], [ %472, %479 ], [ %472, %475 ], [ %472, %469 ], [ 0, %85 ], [ %.0.i291, %expand_case_fold_string.exit ], [ 0, %81 ], [ %539, %538 ], [ %530, %529 ], [ 0, %315 ], [ -5, %52 ], [ %16, %next_setup.exit ], [ 0, %next_setup.exit.thread ], [ %76, %73 ], [ 0, %78 ], [ 0, %352 ], [ -208, %330 ], [ 0, %515 ], [ 0, %436 ], [ 0, %tailrecurse ], [ -208, %509 ], [ -209, %506 ] ret i32 %common.ret760.op 439: ; preds = %436 @@ -2637,8 +2637,8 @@ common.ret760: ; preds = %expand_case_fold_st 447: ; preds = %436 %448 = and i32 %.tr296.ph, 27 - %.not264 = icmp eq i32 %448, 0 - br i1 %.not264, label %455, label %.sink.split537 + %.not273 = icmp eq i32 %448, 0 + br i1 %.not273, label %455, label %.sink.split537 .sink.split537: ; preds = %447 %449 = getelementptr inbounds nuw i8, ptr %.tr, i64 12 @@ -2658,8 +2658,8 @@ common.ret760: ; preds = %expand_case_fold_st %459 = and i32 %458, 16 %spec.select289 = or i32 %459, %.tr296.ph %460 = and i32 %457, 128 - %.not266 = icmp eq i32 %460, 0 - br i1 %.not266, label %463, label %461 + %.not275 = icmp eq i32 %460, 0 + br i1 %.not275, label %463, label %461 461: ; preds = %455 %462 = or i32 %spec.select289, 32 @@ -2667,8 +2667,8 @@ common.ret760: ; preds = %expand_case_fold_st 463: ; preds = %455 %464 = and i32 %.tr296.ph, 32 - %.not267 = icmp eq i32 %464, 0 - br i1 %.not267, label %467, label %465 + %.not276 = icmp eq i32 %464, 0 + br i1 %.not276, label %467, label %465 465: ; preds = %463 %466 = or disjoint i32 %457, 128 @@ -2709,15 +2709,15 @@ tailrecurse.outer.backedge: ; preds = %467, %520 483: ; preds = %479 %484 = getelementptr inbounds nuw i8, ptr %471, i64 24 %485 = load i32, ptr %484, align 8 - %.not262 = icmp eq i32 %485, 0 - br i1 %.not262, label %common.ret760, label %486 + %.not271 = icmp eq i32 %485, 0 + br i1 %.not271, label %common.ret760, label %486 486: ; preds = %483 %487 = getelementptr inbounds nuw i8, ptr %471, i64 8 %488 = load ptr, ptr %487, align 8 %489 = load i32, ptr %488, align 8 - %.not263 = icmp ugt i32 %489, 4 - br i1 %.not263, label %common.ret760, label %490 + %.not272 = icmp ugt i32 %489, 4 + br i1 %.not272, label %common.ret760, label %490 490: ; preds = %486 %491 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 @@ -2730,8 +2730,8 @@ tailrecurse.outer.backedge: ; preds = %467, %520 %495 = getelementptr inbounds nuw i8, ptr %.tr, i64 4 %496 = load i32, ptr %495, align 4 %497 = and i32 %496, 2048 - %.not = icmp eq i32 %497, 0 - br i1 %.not, label %498, label %509 + %.not268 = icmp eq i32 %497, 0 + br i1 %.not268, label %498, label %509 498: ; preds = %494 %499 = load i32, ptr %8, align 8 @@ -2743,14 +2743,14 @@ tailrecurse.outer.backedge: ; preds = %467, %520 %503 = getelementptr inbounds nuw i8, ptr %502, i64 8 %504 = load i32, ptr %503, align 4 %505 = and i32 %504, 128 - %.not260 = icmp eq i32 %505, 0 - br i1 %.not260, label %509, label %506 + %.not269 = icmp eq i32 %505, 0 + br i1 %.not269, label %509, label %506 506: ; preds = %501 %507 = load i32, ptr %3, align 8 %508 = and i32 %507, 256 - %.not261 = icmp eq i32 %508, 0 - br i1 %.not261, label %common.ret760, label %509 + %.not270 = icmp eq i32 %508, 0 + br i1 %.not270, label %common.ret760, label %509 509: ; preds = %506, %501, %498, %494 %510 = getelementptr inbounds nuw i8, ptr %.tr, i64 12 diff --git a/bench/wasmedge/optimized/controlInstr.cpp.ll b/bench/wasmedge/optimized/controlInstr.cpp.ll index 16a2b326d14..5f51dfde358 100644 --- a/bench/wasmedge/optimized/controlInstr.cpp.ll +++ b/bench/wasmedge/optimized/controlInstr.cpp.ll @@ -1287,7 +1287,7 @@ switch.lookup: ; preds = %40 %47 = load i8, ptr %46, align 8 %switch.tableidx = add nsw i8 %47, -94 %switch.cast = trunc i8 %switch.tableidx to i3 - %switch.downshift = lshr i3 3, %switch.cast + %switch.downshift = lshr exact i3 -4, %switch.cast %switch.masked = trunc i3 %switch.downshift to i1 %switch.cast79 = zext i8 %switch.tableidx to i24 %switch.shiftamt80 = shl nuw nsw i24 %switch.cast79, 3 @@ -1303,64 +1303,72 @@ switch.lookup: ; preds = %40 ] 50: ; preds = %49 - %.off75 = add i8 %20, -109 - %switch76 = icmp ult i8 %.off75, 2 - %or.cond77 = and i1 %switch76, %switch.masked + br i1 %switch.masked, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit, label %51 + +51: ; preds = %50 + switch i8 %20, label %52 [ + i8 114, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit + i8 111, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit + ] + +52: ; preds = %51 + %.off = add i8 %20, -109 + %switch = icmp ult i8 %.off, 2 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40: ; preds = %18, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit - %51 = getelementptr inbounds nuw i8, ptr %5, i64 3 - %52 = load i8, ptr %51, align 1 - switch i8 %52, label %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 [ - i8 115, label %53 - i8 114, label %53 - i8 113, label %53 - i8 112, label %53 - i8 111, label %53 - i8 110, label %53 - i8 109, label %53 - i8 108, label %53 - i8 107, label %53 - i8 106, label %53 - i8 105, label %53 - i8 -128, label %53 + %53 = getelementptr inbounds nuw i8, ptr %5, i64 3 + %54 = load i8, ptr %53, align 1 + switch i8 %54, label %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 [ + i8 115, label %55 + i8 114, label %55 + i8 113, label %55 + i8 112, label %55 + i8 111, label %55 + i8 110, label %55 + i8 109, label %55 + i8 108, label %55 + i8 107, label %55 + i8 106, label %55 + i8 105, label %55 + i8 -128, label %55 ] -53: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %54 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %55 = load i32, ptr %54, align 4 - %56 = zext i32 %55 to i64 - %.not = icmp ugt i64 %1, %56 +55: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 + %56 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %57 = load i32, ptr %56, align 4 + %58 = zext i32 %57 to i64 + %.not = icmp ugt i64 %1, %58 br i1 %.not, label %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit -_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49: ; preds = %53 - %57 = getelementptr inbounds nuw ptr, ptr %0, i64 %56 - %58 = load ptr, ptr %57, align 8 - %59 = getelementptr inbounds nuw i8, ptr %58, i64 32 - %60 = load i8, ptr %59, align 8 - %switch = icmp eq i8 %60, 96 - switch i8 %52, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit [ - i8 113, label %61 - i8 115, label %62 +_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49: ; preds = %55 + %59 = getelementptr inbounds nuw ptr, ptr %0, i64 %58 + %60 = load ptr, ptr %59, align 8 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 32 + %62 = load i8, ptr %61, align 8 + %switch78 = icmp eq i8 %62, 96 + switch i8 %54, label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit [ + i8 113, label %63 + i8 115, label %64 ] -61: ; preds = %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 - %not. = xor i1 %switch, true +63: ; preds = %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 + %not. = xor i1 %switch78, true br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit -62: ; preds = %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 +64: ; preds = %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit _ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47: ; preds = %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit40 - %63 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %64 = load i32, ptr %63, align 4 - %65 = getelementptr inbounds nuw i8, ptr %5, i64 4 + %65 = getelementptr inbounds nuw i8, ptr %2, i64 4 %66 = load i32, ptr %65, align 4 - %67 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %64, ptr %3, i64 %4, i32 noundef %66) #19 + %67 = getelementptr inbounds nuw i8, ptr %5, i64 4 + %68 = load i32, ptr %67, align 4 + %69 = tail call noundef zeroext i1 @_ZN8WasmEdge3AST11TypeMatcher9matchTypeEN5cxx204spanIKPKNS0_7SubTypeELm18446744073709551615EEEjS8_j(ptr %0, i64 %1, i32 noundef %66, ptr %3, i64 %4, i32 noundef %68) #19 br label %_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit -_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit: ; preds = %50, %61, %11, %62, %15, %switch.lookup, %49, %49, %39, %37, %35, %34, %33, %33, %31, %29, %29, %27, %24, %14, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, %53, %40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 - %.0 = phi i1 [ %67, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %53 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %38, %37 ], [ %36, %35 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %49 ], [ false, %49 ], [ false, %15 ], [ %switch, %62 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %61 ], [ %or.cond77, %50 ] +_ZN8WasmEdge3AST11TypeMatcher13matchTypeCodeENS_8TypeCodeES2_.exit: ; preds = %63, %11, %64, %52, %15, %50, %switch.lookup, %49, %49, %51, %51, %39, %37, %35, %34, %33, %33, %31, %29, %29, %27, %24, %14, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49, %55, %40, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 + %.0 = phi i1 [ %69, %_ZNK8WasmEdge7ValType13isAbsHeapTypeEv.exit47 ], [ false, %40 ], [ false, %55 ], [ false, %14 ], [ %28, %27 ], [ %32, %31 ], [ false, %39 ], [ %38, %37 ], [ %36, %35 ], [ true, %24 ], [ false, %29 ], [ false, %29 ], [ false, %33 ], [ false, %33 ], [ true, %34 ], [ true, %switch.lookup ], [ false, %50 ], [ false, %49 ], [ false, %49 ], [ false, %51 ], [ false, %51 ], [ false, %15 ], [ %switch, %52 ], [ %switch78, %64 ], [ false, %_ZNK8WasmEdge3AST13CompositeType6expandEv.exit49 ], [ %or.cond, %11 ], [ %not., %63 ] ret i1 %.0 } diff --git a/bench/wasmtime-rs/optimized/joyny9bexuq72mb.ll b/bench/wasmtime-rs/optimized/joyny9bexuq72mb.ll index 1ff2bda0508..3d5751ca04a 100644 --- a/bench/wasmtime-rs/optimized/joyny9bexuq72mb.ll +++ b/bench/wasmtime-rs/optimized/joyny9bexuq72mb.ll @@ -34997,7 +34997,7 @@ define internal fastcc void @"_ZN8wasmtime7runtime5store11StoreOpaque17trace_vmc %14 = icmp samesign ugt i64 %13, 6 br i1 %14, label %_ZN8wasmtime7runtime9externals6global6Global10trace_root17hb1f7144fad3372d9E.exit, label %20 -15: ; preds = %.noexc14.i, %53, %52, %36, %34, %25 +15: ; preds = %.noexc14.i, %54, %53, %37, %35, %26 %16 = landingpad { ptr, i32 } cleanup %17 = load i64, ptr %9, align 8, !range !13101, !alias.scope !14252, !noalias !14250, !noundef !16 @@ -35007,12 +35007,12 @@ define internal fastcc void @"_ZN8wasmtime7runtime5store11StoreOpaque17trace_vmc 18: ; preds = %15 %19 = getelementptr inbounds nuw i8, ptr %9, i64 8 invoke void @"_ZN4core3ptr69drop_in_place$LT$wasmtime..runtime..type_registry..RegisteredType$GT$17ha59c381b239b0dd4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %19) - to label %"_ZN4core3ptr57drop_in_place$LT$wasmtime..runtime..types..GlobalType$GT$17h05e7357358a15127E.exit.i" unwind label %68, !noalias !14257 + to label %"_ZN4core3ptr57drop_in_place$LT$wasmtime..runtime..types..GlobalType$GT$17h05e7357358a15127E.exit.i" unwind label %69, !noalias !14257 20: ; preds = %3 switch i64 %13, label %default.unreachable.i.i [ - i64 0, label %_ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i - i64 4, label %_ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i + i64 0, label %22 + i64 4, label %22 i64 2, label %"_ZN4core3ptr57drop_in_place$LT$wasmtime..runtime..types..GlobalType$GT$17h05e7357358a15127E.exit8.sink.split.i" i64 1, label %_ZN8wasmtime7runtime9externals6global6Global10trace_root17hb1f7144fad3372d9E.exit i64 3, label %_ZN8wasmtime7runtime9externals6global6Global10trace_root17hb1f7144fad3372d9E.exit @@ -35023,100 +35023,100 @@ define internal fastcc void @"_ZN8wasmtime7runtime5store11StoreOpaque17trace_vmc default.unreachable.i.i: ; preds = %20 unreachable -thread-pre-split.i: ; preds = %_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i, %42 +thread-pre-split.i: ; preds = %_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i, %43 %.pr.i = load i64, ptr %9, align 8, !alias.scope !14258, !noalias !14250 %21 = icmp eq i64 %.pr.i, 2 br i1 %21, label %"_ZN4core3ptr57drop_in_place$LT$wasmtime..runtime..types..GlobalType$GT$17h05e7357358a15127E.exit8.sink.split.i", label %_ZN8wasmtime7runtime9externals6global6Global10trace_root17hb1f7144fad3372d9E.exit -_ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i: ; preds = %20, %20 +22: ; preds = %20, %20 tail call void @llvm.experimental.noalias.scope.decl(metadata !14263) - %22 = getelementptr inbounds nuw i8, ptr %0, i64 424 - %23 = load i64, ptr %22, align 8, !range !8604, !alias.scope !14263, !noalias !14266, !noundef !16 - %24 = icmp eq i64 %1, %23 - br i1 %24, label %30, label %25 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 424 + %24 = load i64, ptr %23, align 8, !range !8604, !alias.scope !14263, !noalias !14266, !noundef !16 + %25 = icmp eq i64 %1, %24 + br i1 %25, label %31, label %26 -25: ; preds = %_ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i +26: ; preds = %22 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8), !noalias !14268 store ptr @anon.b05fb5003af99ead400dd576f4a4fe71.874.llvm.14851531119274094909, ptr %8, align 8, !noalias !14268 - %26 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store i64 1, ptr %26, align 8, !noalias !14268 - %27 = getelementptr inbounds nuw i8, ptr %8, i64 32 - store ptr null, ptr %27, align 8, !noalias !14268 - %28 = getelementptr inbounds nuw i8, ptr %8, i64 16 - store ptr @anon.b05fb5003af99ead400dd576f4a4fe71.5.llvm.14851531119274094909, ptr %28, align 8, !noalias !14268 - %29 = getelementptr inbounds nuw i8, ptr %8, i64 24 - store i64 0, ptr %29, align 8, !noalias !14268 + %27 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store i64 1, ptr %27, align 8, !noalias !14268 + %28 = getelementptr inbounds nuw i8, ptr %8, i64 32 + store ptr null, ptr %28, align 8, !noalias !14268 + %29 = getelementptr inbounds nuw i8, ptr %8, i64 16 + store ptr @anon.b05fb5003af99ead400dd576f4a4fe71.5.llvm.14851531119274094909, ptr %29, align 8, !noalias !14268 + %30 = getelementptr inbounds nuw i8, ptr %8, i64 24 + store i64 0, ptr %30, align 8, !noalias !14268 invoke void @_ZN4core9panicking9panic_fmt17ha6effc2775a0749cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.b05fb5003af99ead400dd576f4a4fe71.875.llvm.14851531119274094909) #40 to label %.noexc11.i unwind label %15, !noalias !14250 -.noexc11.i: ; preds = %25 +.noexc11.i: ; preds = %26 unreachable -30: ; preds = %_ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i - %31 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %32 = load i64, ptr %31, align 8, !alias.scope !14263, !noalias !14266, !noundef !16 - %33 = icmp ult i64 %2, %32 - br i1 %33, label %36, label %34, !prof !13118 +31: ; preds = %22 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %33 = load i64, ptr %32, align 8, !alias.scope !14263, !noalias !14266, !noundef !16 + %34 = icmp ult i64 %2, %33 + br i1 %34, label %37, label %35, !prof !13118 -34: ; preds = %30 - invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %2, i64 noundef %32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.08b2c2ba86c6ef4134de2747b1432f05.403) #40 +35: ; preds = %31 + invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %2, i64 noundef %33, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.08b2c2ba86c6ef4134de2747b1432f05.403) #40 to label %.noexc12.i unwind label %15, !noalias !14250 -.noexc12.i: ; preds = %34 +.noexc12.i: ; preds = %35 unreachable "_ZN4core3ptr57drop_in_place$LT$wasmtime..runtime..types..GlobalType$GT$17h05e7357358a15127E.exit8.sink.split.i": ; preds = %thread-pre-split.i, %20 - %35 = getelementptr inbounds nuw i8, ptr %9, i64 8 - call void @"_ZN4core3ptr69drop_in_place$LT$wasmtime..runtime..type_registry..RegisteredType$GT$17ha59c381b239b0dd4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %35), !noalias !14257 + %36 = getelementptr inbounds nuw i8, ptr %9, i64 8 + call void @"_ZN4core3ptr69drop_in_place$LT$wasmtime..runtime..type_registry..RegisteredType$GT$17ha59c381b239b0dd4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %36), !noalias !14257 br label %_ZN8wasmtime7runtime9externals6global6Global10trace_root17hb1f7144fad3372d9E.exit -36: ; preds = %30 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %38 = load ptr, ptr %37, align 8, !alias.scope !14263, !noalias !14266, !nonnull !16, !noundef !16 - %39 = getelementptr inbounds [0 x { { { i32, [2 x i32] }, i8, [3 x i8] }, ptr, ptr }], ptr %38, i64 0, i64 %2, i32 1 - %40 = load ptr, ptr %39, align 8, !noalias !14250, !noundef !16 - %41 = invoke noundef align 4 dereferenceable_or_null(4) ptr @_ZN16wasmtime_runtime9vmcontext18VMGlobalDefinition9as_gc_ref17he374d6a796380786E(ptr noalias noundef readonly align 16 dereferenceable(16) %40) - to label %42 unwind label %15, !noalias !14250 +37: ; preds = %31 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 312 + %39 = load ptr, ptr %38, align 8, !alias.scope !14263, !noalias !14266, !nonnull !16, !noundef !16 + %40 = getelementptr inbounds [0 x { { { i32, [2 x i32] }, i8, [3 x i8] }, ptr, ptr }], ptr %39, i64 0, i64 %2, i32 1 + %41 = load ptr, ptr %40, align 8, !noalias !14250, !noundef !16 + %42 = invoke noundef align 4 dereferenceable_or_null(4) ptr @_ZN16wasmtime_runtime9vmcontext18VMGlobalDefinition9as_gc_ref17he374d6a796380786E(ptr noalias noundef readonly align 16 dereferenceable(16) %41) + to label %43 unwind label %15, !noalias !14250 -42: ; preds = %36 - %.not6.i = icmp eq ptr %41, null - br i1 %.not6.i, label %thread-pre-split.i, label %43 +43: ; preds = %37 + %.not6.i = icmp eq ptr %42, null + br i1 %.not6.i, label %thread-pre-split.i, label %44 -43: ; preds = %42 +44: ; preds = %43 tail call void @llvm.experimental.noalias.scope.decl(metadata !14269) - %44 = load atomic i64, ptr @_ZN3log20MAX_LOG_LEVEL_FILTER17h410246c97b67d9dfE monotonic, align 8, !noalias !14272 - %45 = icmp ult i64 %44, 6 - tail call void @llvm.assume(i1 %45) - %46 = icmp samesign ugt i64 %44, 4 - br i1 %46, label %53, label %47 - -47: ; preds = %.noexc15.i, %43 - %48 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 - %49 = load i64, ptr %48, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 - %50 = load i64, ptr %.0.val, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 - %51 = icmp eq i64 %49, %50 - br i1 %51, label %52, label %_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i - -52: ; preds = %47 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hddaa159167e3efc6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %49) + %45 = load atomic i64, ptr @_ZN3log20MAX_LOG_LEVEL_FILTER17h410246c97b67d9dfE monotonic, align 8, !noalias !14272 + %46 = icmp ult i64 %45, 6 + tail call void @llvm.assume(i1 %46) + %47 = icmp samesign ugt i64 %45, 4 + br i1 %47, label %54, label %48 + +48: ; preds = %.noexc15.i, %44 + %49 = getelementptr inbounds nuw i8, ptr %.0.val, i64 16 + %50 = load i64, ptr %49, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 + %51 = load i64, ptr %.0.val, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 + %52 = icmp eq i64 %50, %51 + br i1 %52, label %53, label %_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i + +53: ; preds = %48 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hddaa159167e3efc6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, i64 noundef %50) to label %.noexc13.i unwind label %15, !noalias !14257 -.noexc13.i: ; preds = %52 - %.pre.i.i.i = load i64, ptr %48, align 8, !alias.scope !14273, !noalias !14257 +.noexc13.i: ; preds = %53 + %.pre.i.i.i = load i64, ptr %49, align 8, !alias.scope !14273, !noalias !14257 br label %_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i -53: ; preds = %43 +54: ; preds = %44 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !14272 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !14272 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5), !noalias !14272 - %54 = invoke noundef i32 @_ZN16wasmtime_runtime2gc6gc_ref7VMGcRef14unchecked_copy17h3a5e860d68f511b7E(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %41) + %55 = invoke noundef i32 @_ZN16wasmtime_runtime2gc6gc_ref7VMGcRef14unchecked_copy17h3a5e860d68f511b7E(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %42) to label %.noexc14.i unwind label %15, !noalias !14250 -.noexc14.i: ; preds = %53 - store i32 %54, ptr %5, align 4, !noalias !14272 +.noexc14.i: ; preds = %54 + store i32 %55, ptr %5, align 4, !noalias !14272 store ptr %5, ptr %6, align 8, !noalias !14272 - %55 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store ptr @"_ZN76_$LT$wasmtime_runtime..gc..gc_ref..VMGcRef$u20$as$u20$core..fmt..Pointer$GT$3fmt17hd9e1aad1001bdcb6E", ptr %55, align 8, !noalias !14272 + %56 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store ptr @"_ZN76_$LT$wasmtime_runtime..gc..gc_ref..VMGcRef$u20$as$u20$core..fmt..Pointer$GT$3fmt17hd9e1aad1001bdcb6E", ptr %56, align 8, !noalias !14272 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %4), !noalias !14272 store i64 2, ptr %4, align 8, !noalias !14272 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -35130,16 +35130,16 @@ _ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i: %.sroa.10.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %4, i64 48 store i8 3, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !14272 store ptr @anon.08b2c2ba86c6ef4134de2747b1432f05.298, ptr %7, align 8, !noalias !14272 - %56 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store i64 1, ptr %56, align 8, !noalias !14272 - %57 = getelementptr inbounds nuw i8, ptr %7, i64 32 - store ptr %4, ptr %57, align 8, !noalias !14272 - %58 = getelementptr inbounds nuw i8, ptr %7, i64 40 - store i64 1, ptr %58, align 8, !noalias !14272 - %59 = getelementptr inbounds nuw i8, ptr %7, i64 16 - store ptr %6, ptr %59, align 8, !noalias !14272 - %60 = getelementptr inbounds nuw i8, ptr %7, i64 24 - store i64 1, ptr %60, align 8, !noalias !14272 + %57 = getelementptr inbounds nuw i8, ptr %7, i64 8 + store i64 1, ptr %57, align 8, !noalias !14272 + %58 = getelementptr inbounds nuw i8, ptr %7, i64 32 + store ptr %4, ptr %58, align 8, !noalias !14272 + %59 = getelementptr inbounds nuw i8, ptr %7, i64 40 + store i64 1, ptr %59, align 8, !noalias !14272 + %60 = getelementptr inbounds nuw i8, ptr %7, i64 16 + store ptr %6, ptr %60, align 8, !noalias !14272 + %61 = getelementptr inbounds nuw i8, ptr %7, i64 24 + store i64 1, ptr %61, align 8, !noalias !14272 invoke void @_ZN3log17__private_api_log17h060dd45788dbf6e5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %7, i64 noundef 5, ptr noalias noundef nonnull readonly align 8 dereferenceable(56) @anon.08b2c2ba86c6ef4134de2747b1432f05.299, ptr noalias noundef readonly align 8 null, i64 undef) to label %.noexc15.i unwind label %15, !noalias !14250 @@ -35148,23 +35148,23 @@ _ZN8wasmtime7runtime5types7RefType15is_gc_heap_type17h05d22cb1c7f3b881E.exit.i: call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4), !noalias !14272 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !14272 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !14272 - br label %47 + br label %48 -_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i: ; preds = %.noexc13.i, %47 - %61 = phi i64 [ %.pre.i.i.i, %.noexc13.i ], [ %49, %47 ] - %62 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 - %63 = load ptr, ptr %62, align 8, !alias.scope !14273, !noalias !14257, !nonnull !16, !noundef !16 - %64 = getelementptr inbounds { i64, [1 x i64] }, ptr %63, i64 %61 - store i64 1, ptr %64, align 8, !noalias !14257 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 8 - store ptr %41, ptr %65, align 8, !noalias !14257 - %66 = load i64, ptr %48, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 - %67 = add i64 %66, 1 - store i64 %67, ptr %48, align 8, !alias.scope !14273, !noalias !14257 +_ZN16wasmtime_runtime2gc10gc_runtime11GcRootsList8add_root17hdcae7c09706e0b96E.exit.i: ; preds = %.noexc13.i, %48 + %62 = phi i64 [ %.pre.i.i.i, %.noexc13.i ], [ %50, %48 ] + %63 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 + %64 = load ptr, ptr %63, align 8, !alias.scope !14273, !noalias !14257, !nonnull !16, !noundef !16 + %65 = getelementptr inbounds { i64, [1 x i64] }, ptr %64, i64 %62 + store i64 1, ptr %65, align 8, !noalias !14257 + %66 = getelementptr inbounds nuw i8, ptr %65, i64 8 + store ptr %42, ptr %66, align 8, !noalias !14257 + %67 = load i64, ptr %49, align 8, !alias.scope !14273, !noalias !14257, !noundef !16 + %68 = add i64 %67, 1 + store i64 %68, ptr %49, align 8, !alias.scope !14273, !noalias !14257 br label %thread-pre-split.i -68: ; preds = %18 - %69 = landingpad { ptr, i32 } +69: ; preds = %18 + %70 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42, !noalias !14257 unreachable diff --git a/bench/wireshark/optimized/packet-ber.c.ll b/bench/wireshark/optimized/packet-ber.c.ll index 09acc341bc2..4455a6a8812 100644 --- a/bench/wireshark/optimized/packet-ber.c.ll +++ b/bench/wireshark/optimized/packet-ber.c.ll @@ -564,7 +564,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.374 = private unnamed_addr constant [12 x i8] c"Unknown BER\00", align 1 @.str.375 = private unnamed_addr constant [14 x i8] c"Decoded as %s\00", align 1 @syntax_names = internal global <{ %struct._value_string, [128 x %struct._value_string] }> <{ %struct._value_string { i32 0, ptr @.str.43 }, [128 x %struct._value_string] zeroinitializer }>, align 16 -@switch.table.dissect_ber_constrained_octet_string_impl = private unnamed_addr constant [19 x i32] [i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 54, i32 54, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 6], align 4 ; Function Attrs: nounwind uwtable define void @add_ber_encoded_label(ptr noundef %0, ptr nocapture noundef readnone %1, ptr noundef %2) local_unnamed_addr #0 { @@ -2082,14 +2081,14 @@ define internal fastcc i32 @dissect_ber_constrained_octet_string_impl(i1 noundef %48 = call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %37, ptr noundef nonnull @ei_ber_expected_octet_string, ptr noundef %3, i32 noundef %4, i32 noundef %24, ptr noundef nonnull @.str.339, ptr noundef %40, i32 noundef %42, ptr noundef %46, i32 noundef %47) #14 %49 = load i32, ptr @decode_unexpected, align 4 %.not95 = icmp eq i32 %49, 0 - br i1 %.not95, label %202, label %50 + br i1 %.not95, label %204, label %50 50: ; preds = %36 %51 = load i32, ptr @ett_ber_unknown, align 4 %52 = call ptr @proto_item_add_subtree(ptr noundef %48, i32 noundef %51) #14 %53 = load ptr, ptr %22, align 8 %54 = call fastcc i32 @try_dissect_unknown_ber(ptr noundef %53, ptr noundef %3, i32 noundef %4, ptr noundef %52, i32 noundef 1) - br label %202 + br label %204 55: ; preds = %20 %56 = load i8, ptr @last_class, align 1 @@ -2130,7 +2129,7 @@ define internal fastcc i32 @dissect_ber_constrained_octet_string_impl(i1 noundef %77 = load ptr, ptr %76, align 8 %78 = tail call i32 @tvb_reported_length_remaining(ptr noundef %3, i32 noundef %4) #14 %79 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %77, ptr noundef nonnull @ei_ber_error_length, ptr noundef %63, i32 noundef %64, i32 noundef %65, ptr noundef nonnull @.str.345, i32 noundef %60, i32 noundef %78) #14 - br label %202 + br label %204 80: ; preds = %71, %73, %21, %31 %81 = phi i32 [ %67, %71 ], [ %60, %73 ], [ %26, %31 ], [ %26, %21 ] @@ -2348,70 +2347,80 @@ reassemble_octet_string.exit: ; preds = %92, %172 %.0.i = phi i32 [ %.159.i107, %172 ], [ %.082, %92 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) - br label %202 + br label %204 175: ; preds = %80 %176 = call i32 @tvb_reported_length_remaining(ptr noundef %3, i32 noundef %.082) #14 %177 = load i32, ptr %18, align 4 %spec.select = call i32 @llvm.umin.i32(i32 %177, i32 %176) %178 = icmp sgt i32 %7, 0 - br i1 %178, label %179, label %194 + br i1 %178, label %179, label %196 179: ; preds = %175 %180 = icmp eq i32 %10, 0 - br i1 %180, label %181, label %185 + br i1 %180, label %181, label %187 181: ; preds = %179 %182 = load i32, ptr %17, align 4 - %switch.tableidx = add i32 %182, -12 - %183 = icmp ult i32 %switch.tableidx, 19 - br i1 %183, label %switch.lookup, label %185 - -switch.lookup: ; preds = %181 - %184 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [19 x i32], ptr @switch.table.dissect_ber_constrained_octet_string_impl, i64 0, i64 %184 - %switch.load = load i32, ptr %switch.gep, align 4 - br label %185 - -185: ; preds = %181, %switch.lookup, %179 - %.083 = phi i32 [ %10, %179 ], [ %switch.load, %switch.lookup ], [ 0, %181 ] - %186 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %187 = load ptr, ptr %186, align 8 - %188 = call fastcc ptr @ber_proto_tree_add_item(ptr noundef %187, ptr noundef %2, i32 noundef %7, ptr noundef %3, i32 noundef %.082, i32 noundef %spec.select, i32 noundef %.083) - store ptr %188, ptr %82, align 8 + switch i32 %182, label %186 [ + i32 12, label %187 + i32 30, label %185 + i32 28, label %184 + i32 21, label %183 + i32 20, label %183 + ] + +183: ; preds = %181, %181 + br label %187 + +184: ; preds = %181 + br label %187 + +185: ; preds = %181 + br label %187 + +186: ; preds = %181 + br label %187 + +187: ; preds = %181, %183, %184, %185, %186, %179 + %.083 = phi i32 [ 0, %186 ], [ 6, %185 ], [ 8, %184 ], [ 54, %183 ], [ %10, %179 ], [ 2, %181 ] + %188 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %189 = load ptr, ptr %188, align 8 + %190 = call fastcc ptr @ber_proto_tree_add_item(ptr noundef %189, ptr noundef %2, i32 noundef %7, ptr noundef %3, i32 noundef %.082, i32 noundef %spec.select, i32 noundef %.083) + store ptr %190, ptr %82, align 8 %.not.i97 = icmp ne i32 %5, -1 - %189 = icmp ult i32 %spec.select, %5 - %or.cond.i = and i1 %.not.i97, %189 - br i1 %or.cond.i, label %.sink.split.i, label %190 - -190: ; preds = %185 - %191 = icmp ugt i32 %spec.select, %6 - br i1 %191, label %.sink.split.i, label %ber_check_length.exit - -.sink.split.i: ; preds = %190, %185 - %.str.360.sink.i = phi ptr [ @.str.358, %185 ], [ @.str.360, %190 ] - %192 = load ptr, ptr %186, align 8 - %193 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %192, ptr noundef %188, ptr noundef nonnull @ei_ber_size_constraint_string, ptr noundef nonnull %.str.360.sink.i, ptr noundef nonnull @.str.43, i32 noundef %spec.select, i32 noundef %5, i32 noundef %6) #14 + %191 = icmp ult i32 %spec.select, %5 + %or.cond.i = and i1 %.not.i97, %191 + br i1 %or.cond.i, label %.sink.split.i, label %192 + +192: ; preds = %187 + %193 = icmp ugt i32 %spec.select, %6 + br i1 %193, label %.sink.split.i, label %ber_check_length.exit + +.sink.split.i: ; preds = %192, %187 + %.str.360.sink.i = phi ptr [ @.str.358, %187 ], [ @.str.360, %192 ] + %194 = load ptr, ptr %188, align 8 + %195 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %194, ptr noundef %190, ptr noundef nonnull @ei_ber_size_constraint_string, ptr noundef nonnull %.str.360.sink.i, ptr noundef nonnull @.str.43, i32 noundef %spec.select, i32 noundef %5, i32 noundef %6) #14 br label %ber_check_length.exit -194: ; preds = %175 - %195 = load i32, ptr @hf_ber_unknown_octetstring, align 4 - %196 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %195, ptr noundef %3, i32 noundef %.082, i32 noundef %177, i32 noundef 0) #14 +196: ; preds = %175 + %197 = load i32, ptr @hf_ber_unknown_octetstring, align 4 + %198 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %197, ptr noundef %3, i32 noundef %.082, i32 noundef %177, i32 noundef 0) #14 br label %ber_check_length.exit -ber_check_length.exit: ; preds = %.sink.split.i, %190, %194 - br i1 %.not, label %202, label %197 +ber_check_length.exit: ; preds = %.sink.split.i, %192, %196 + br i1 %.not, label %204, label %199 -197: ; preds = %ber_check_length.exit - %198 = load i32, ptr %18, align 4 - %199 = call i32 @tvb_reported_length_remaining(ptr noundef %3, i32 noundef %.082) #14 - %200 = call i32 @llvm.smin.i32(i32 %199, i32 %198) - %201 = call ptr @tvb_new_subset_length(ptr noundef %3, i32 noundef %.082, i32 noundef %200) #14 - store ptr %201, ptr %8, align 8 - br label %202 +199: ; preds = %ber_check_length.exit + %200 = load i32, ptr %18, align 4 + %201 = call i32 @tvb_reported_length_remaining(ptr noundef %3, i32 noundef %.082) #14 + %202 = call i32 @llvm.smin.i32(i32 %201, i32 %200) + %203 = call ptr @tvb_new_subset_length(ptr noundef %3, i32 noundef %.082, i32 noundef %202) #14 + store ptr %203, ptr %8, align 8 + br label %204 -202: ; preds = %reassemble_octet_string.exit, %197, %ber_check_length.exit, %36, %50, %75 - %.081 = phi i32 [ %66, %75 ], [ %27, %50 ], [ %27, %36 ], [ %.0.i, %reassemble_octet_string.exit ], [ %.084, %197 ], [ %.084, %ber_check_length.exit ] +204: ; preds = %reassemble_octet_string.exit, %199, %ber_check_length.exit, %36, %50, %75 + %.081 = phi i32 [ %66, %75 ], [ %27, %50 ], [ %27, %36 ], [ %.0.i, %reassemble_octet_string.exit ], [ %.084, %199 ], [ %.084, %ber_check_length.exit ] ret i32 %.081 } diff --git a/bench/wireshark/optimized/packet-btlmp.c.ll b/bench/wireshark/optimized/packet-btlmp.c.ll index 24f8381765a..929e6a775ab 100644 --- a/bench/wireshark/optimized/packet-btlmp.c.ll +++ b/bench/wireshark/optimized/packet-btlmp.c.ll @@ -1028,13 +1028,13 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % i16 20, label %89 i16 21, label %89 i16 23, label %.preheader - i16 1054, label %535 + i16 1056, label %.preheader753 i16 31, label %113 i16 32, label %113 + i16 1055, label %539 + i16 1054, label %535 i16 1050, label %525 - i16 1049, label %525 - i16 1046, label %515 - i16 36, label %.preheader753 + i16 36, label %.preheader754 i16 37, label %120 i16 38, label %120 i16 39, label %.preheader907 @@ -1045,18 +1045,18 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % i16 44, label %207 i16 45, label %214 i16 46, label %214 - i16 1045, label %515 + i16 1049, label %525 i16 48, label %218 - i16 1041, label %.preheader754 - i16 1040, label %497 - i16 1037, label %489 + i16 1046, label %515 + i16 1045, label %515 + i16 1041, label %.preheader755 i16 52, label %225 i16 53, label %232 i16 54, label %232 i16 55, label %239 - i16 1056, label %.preheader756 + i16 1040, label %497 i16 57, label %243 - i16 1055, label %539 + i16 1037, label %489 i16 59, label %268 i16 60, label %272 i16 61, label %284 @@ -1199,14 +1199,14 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % %116 = add nuw nsw i32 %.0720, 1 br label %.loopexit -.preheader753: ; preds = %31, %.preheader753 - %indvars.iv893 = phi i64 [ %indvars.iv.next894, %.preheader753 ], [ 0, %31 ] - %117 = getelementptr [6 x i32], ptr @hf_param_datarate, i64 0, i64 %indvars.iv893 +.preheader754: ; preds = %31, %.preheader754 + %indvars.iv889 = phi i64 [ %indvars.iv.next890, %.preheader754 ], [ 0, %31 ] + %117 = getelementptr [6 x i32], ptr @hf_param_datarate, i64 0, i64 %indvars.iv889 %118 = load i32, ptr %117, align 4 %119 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %118, ptr noundef %0, i32 noundef %.0720, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next894 = add nuw nsw i64 %indvars.iv893, 1 - %exitcond896.not = icmp eq i64 %indvars.iv.next894, 6 - br i1 %exitcond896.not, label %.loopexit, label %.preheader753, !llvm.loop !8 + %indvars.iv.next890 = add nuw nsw i64 %indvars.iv889, 1 + %exitcond892.not = icmp eq i64 %indvars.iv.next890, 6 + br i1 %exitcond892.not, label %.loopexit, label %.preheader754, !llvm.loop !8 120: ; preds = %31, %31 %121 = load i32, ptr @hf_param_versnr, align 4 @@ -1221,104 +1221,104 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % br label %.loopexit 130: ; preds = %.preheader907, %130 - %indvars.iv861 = phi i64 [ %indvars.iv.next862, %130 ], [ 0, %.preheader907 ] - %131 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte0, i64 0, i64 %indvars.iv861 + %indvars.iv857 = phi i64 [ %indvars.iv.next858, %130 ], [ 0, %.preheader907 ] + %131 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte0, i64 0, i64 %indvars.iv857 %132 = load i32, ptr %131, align 4 %133 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %132, ptr noundef %0, i32 noundef %.0720, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next862 = add nuw nsw i64 %indvars.iv861, 1 - %exitcond864.not = icmp eq i64 %indvars.iv.next862, 9 - br i1 %exitcond864.not, label %134, label %130, !llvm.loop !9 + %indvars.iv.next858 = add nuw nsw i64 %indvars.iv857, 1 + %exitcond860.not = icmp eq i64 %indvars.iv.next858, 9 + br i1 %exitcond860.not, label %134, label %130, !llvm.loop !9 134: ; preds = %130 %135 = add nuw nsw i32 %.0720, 1 br label %136 136: ; preds = %134, %136 - %indvars.iv865 = phi i64 [ 0, %134 ], [ %indvars.iv.next866, %136 ] - %137 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte1, i64 0, i64 %indvars.iv865 + %indvars.iv861 = phi i64 [ 0, %134 ], [ %indvars.iv.next862, %136 ] + %137 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte1, i64 0, i64 %indvars.iv861 %138 = load i32, ptr %137, align 4 %139 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %138, ptr noundef %0, i32 noundef %135, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next866 = add nuw nsw i64 %indvars.iv865, 1 - %exitcond868.not = icmp eq i64 %indvars.iv.next866, 9 - br i1 %exitcond868.not, label %140, label %136, !llvm.loop !10 + %indvars.iv.next862 = add nuw nsw i64 %indvars.iv861, 1 + %exitcond864.not = icmp eq i64 %indvars.iv.next862, 9 + br i1 %exitcond864.not, label %140, label %136, !llvm.loop !10 140: ; preds = %136 %141 = add nuw nsw i32 %.0720, 2 br label %142 142: ; preds = %140, %142 - %indvars.iv869 = phi i64 [ 0, %140 ], [ %indvars.iv.next870, %142 ] - %143 = getelementptr [7 x i32], ptr @hf_param_feature_page0_byte2, i64 0, i64 %indvars.iv869 + %indvars.iv865 = phi i64 [ 0, %140 ], [ %indvars.iv.next866, %142 ] + %143 = getelementptr [7 x i32], ptr @hf_param_feature_page0_byte2, i64 0, i64 %indvars.iv865 %144 = load i32, ptr %143, align 4 %145 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %144, ptr noundef %0, i32 noundef %141, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next870 = add nuw nsw i64 %indvars.iv869, 1 - %exitcond872.not = icmp eq i64 %indvars.iv.next870, 7 - br i1 %exitcond872.not, label %146, label %142, !llvm.loop !11 + %indvars.iv.next866 = add nuw nsw i64 %indvars.iv865, 1 + %exitcond868.not = icmp eq i64 %indvars.iv.next866, 7 + br i1 %exitcond868.not, label %146, label %142, !llvm.loop !11 146: ; preds = %142 %147 = add nuw nsw i32 %.0720, 3 br label %148 148: ; preds = %146, %148 - %indvars.iv873 = phi i64 [ 0, %146 ], [ %indvars.iv.next874, %148 ] - %149 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte3, i64 0, i64 %indvars.iv873 + %indvars.iv869 = phi i64 [ 0, %146 ], [ %indvars.iv.next870, %148 ] + %149 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte3, i64 0, i64 %indvars.iv869 %150 = load i32, ptr %149, align 4 %151 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %150, ptr noundef %0, i32 noundef %147, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next874 = add nuw nsw i64 %indvars.iv873, 1 - %exitcond876.not = icmp eq i64 %indvars.iv.next874, 9 - br i1 %exitcond876.not, label %152, label %148, !llvm.loop !12 + %indvars.iv.next870 = add nuw nsw i64 %indvars.iv869, 1 + %exitcond872.not = icmp eq i64 %indvars.iv.next870, 9 + br i1 %exitcond872.not, label %152, label %148, !llvm.loop !12 152: ; preds = %148 %153 = or disjoint i32 %.0720, 4 br label %154 154: ; preds = %152, %154 - %indvars.iv877 = phi i64 [ 0, %152 ], [ %indvars.iv.next878, %154 ] - %155 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte4, i64 0, i64 %indvars.iv877 + %indvars.iv873 = phi i64 [ 0, %152 ], [ %indvars.iv.next874, %154 ] + %155 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte4, i64 0, i64 %indvars.iv873 %156 = load i32, ptr %155, align 4 %157 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %156, ptr noundef %0, i32 noundef %153, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next878 = add nuw nsw i64 %indvars.iv877, 1 - %exitcond880.not = icmp eq i64 %indvars.iv.next878, 9 - br i1 %exitcond880.not, label %158, label %154, !llvm.loop !13 + %indvars.iv.next874 = add nuw nsw i64 %indvars.iv873, 1 + %exitcond876.not = icmp eq i64 %indvars.iv.next874, 9 + br i1 %exitcond876.not, label %158, label %154, !llvm.loop !13 158: ; preds = %154 %159 = add nuw nsw i32 %.0720, 5 br label %160 160: ; preds = %158, %160 - %indvars.iv881 = phi i64 [ 0, %158 ], [ %indvars.iv.next882, %160 ] - %161 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte5, i64 0, i64 %indvars.iv881 + %indvars.iv877 = phi i64 [ 0, %158 ], [ %indvars.iv.next878, %160 ] + %161 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte5, i64 0, i64 %indvars.iv877 %162 = load i32, ptr %161, align 4 %163 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %162, ptr noundef %0, i32 noundef %159, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next882 = add nuw nsw i64 %indvars.iv881, 1 - %exitcond884.not = icmp eq i64 %indvars.iv.next882, 9 - br i1 %exitcond884.not, label %164, label %160, !llvm.loop !14 + %indvars.iv.next878 = add nuw nsw i64 %indvars.iv877, 1 + %exitcond880.not = icmp eq i64 %indvars.iv.next878, 9 + br i1 %exitcond880.not, label %164, label %160, !llvm.loop !14 164: ; preds = %160 %165 = add nuw nsw i32 %.0720, 6 br label %166 166: ; preds = %164, %166 - %indvars.iv885 = phi i64 [ 0, %164 ], [ %indvars.iv.next886, %166 ] - %167 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte6, i64 0, i64 %indvars.iv885 + %indvars.iv881 = phi i64 [ 0, %164 ], [ %indvars.iv.next882, %166 ] + %167 = getelementptr [9 x i32], ptr @hf_param_feature_page0_byte6, i64 0, i64 %indvars.iv881 %168 = load i32, ptr %167, align 4 %169 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %168, ptr noundef %0, i32 noundef %165, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next886 = add nuw nsw i64 %indvars.iv885, 1 - %exitcond888.not = icmp eq i64 %indvars.iv.next886, 9 - br i1 %exitcond888.not, label %170, label %166, !llvm.loop !15 + %indvars.iv.next882 = add nuw nsw i64 %indvars.iv881, 1 + %exitcond884.not = icmp eq i64 %indvars.iv.next882, 9 + br i1 %exitcond884.not, label %170, label %166, !llvm.loop !15 170: ; preds = %166 %171 = add nuw nsw i32 %.0720, 7 br label %172 172: ; preds = %170, %172 - %indvars.iv889 = phi i64 [ 0, %170 ], [ %indvars.iv.next890, %172 ] - %173 = getelementptr [6 x i32], ptr @hf_param_feature_page0_byte7, i64 0, i64 %indvars.iv889 + %indvars.iv885 = phi i64 [ 0, %170 ], [ %indvars.iv.next886, %172 ] + %173 = getelementptr [6 x i32], ptr @hf_param_feature_page0_byte7, i64 0, i64 %indvars.iv885 %174 = load i32, ptr %173, align 4 %175 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %174, ptr noundef %0, i32 noundef %171, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next890 = add nuw nsw i64 %indvars.iv889, 1 - %exitcond892.not = icmp eq i64 %indvars.iv.next890, 6 - br i1 %exitcond892.not, label %176, label %172, !llvm.loop !16 + %indvars.iv.next886 = add nuw nsw i64 %indvars.iv885, 1 + %exitcond888.not = icmp eq i64 %indvars.iv.next886, 6 + br i1 %exitcond888.not, label %176, label %172, !llvm.loop !16 176: ; preds = %172 %177 = or disjoint i32 %.0720, 8 @@ -1340,13 +1340,13 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % br label %189 189: ; preds = %185, %189 - %indvars.iv857 = phi i64 [ 0, %185 ], [ %indvars.iv.next858, %189 ] - %190 = getelementptr [5 x i32], ptr @hf_param_timingcontrolflags, i64 0, i64 %indvars.iv857 + %indvars.iv853 = phi i64 [ 0, %185 ], [ %indvars.iv.next854, %189 ] + %190 = getelementptr [5 x i32], ptr @hf_param_timingcontrolflags, i64 0, i64 %indvars.iv853 %191 = load i32, ptr %190, align 4 %192 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %191, ptr noundef %0, i32 noundef %188, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next858 = add nuw nsw i64 %indvars.iv857, 1 - %exitcond860.not = icmp eq i64 %indvars.iv.next858, 5 - br i1 %exitcond860.not, label %193, label %189, !llvm.loop !17 + %indvars.iv.next854 = add nuw nsw i64 %indvars.iv853, 1 + %exitcond856.not = icmp eq i64 %indvars.iv.next854, 5 + br i1 %exitcond856.not, label %193, label %189, !llvm.loop !17 193: ; preds = %189 %194 = add nuw nsw i32 %.0720, 2 @@ -1810,25 +1810,25 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % %506 = add nuw nsw i32 %.0720, 5 br label %.loopexit -.preheader754: ; preds = %31, %513 - %indvars.iv853 = phi i64 [ %indvars.iv.next854, %513 ], [ 0, %31 ] - %507 = trunc i64 %indvars.iv853 to i32 +.preheader755: ; preds = %31, %513 + %indvars.iv849 = phi i64 [ %indvars.iv.next850, %513 ], [ 0, %31 ] + %507 = trunc i64 %indvars.iv849 to i32 %508 = add i32 %.0720, %507 br label %509 -509: ; preds = %.preheader754, %509 - %indvars.iv849 = phi i64 [ 0, %.preheader754 ], [ %indvars.iv.next850, %509 ] - %510 = getelementptr [10 x [4 x i32]], ptr @hf_param_afh_channelclass, i64 0, i64 %indvars.iv853, i64 %indvars.iv849 +509: ; preds = %.preheader755, %509 + %indvars.iv845 = phi i64 [ 0, %.preheader755 ], [ %indvars.iv.next846, %509 ] + %510 = getelementptr [10 x [4 x i32]], ptr @hf_param_afh_channelclass, i64 0, i64 %indvars.iv849, i64 %indvars.iv845 %511 = load i32, ptr %510, align 4 %512 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %511, ptr noundef %0, i32 noundef %508, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next850 = add nuw nsw i64 %indvars.iv849, 1 - %exitcond852.not = icmp eq i64 %indvars.iv.next850, 4 - br i1 %exitcond852.not, label %513, label %509, !llvm.loop !31 + %indvars.iv.next846 = add nuw nsw i64 %indvars.iv845, 1 + %exitcond848.not = icmp eq i64 %indvars.iv.next846, 4 + br i1 %exitcond848.not, label %513, label %509, !llvm.loop !31 513: ; preds = %509 - %indvars.iv.next854 = add nuw nsw i64 %indvars.iv853, 1 - %exitcond856.not = icmp eq i64 %indvars.iv.next854, 10 - br i1 %exitcond856.not, label %514, label %.preheader754, !llvm.loop !32 + %indvars.iv.next850 = add nuw nsw i64 %indvars.iv849, 1 + %exitcond852.not = icmp eq i64 %indvars.iv.next850, 10 + br i1 %exitcond852.not, label %514, label %.preheader755, !llvm.loop !32 514: ; preds = %513 %narrow752 = add nuw nsw i32 %.0720, 10 @@ -1870,16 +1870,16 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % %542 = add nuw nsw i32 %.0720, 1 br label %.loopexit -.preheader756: ; preds = %31, %.preheader756 - %indvars.iv845 = phi i64 [ %indvars.iv.next846, %.preheader756 ], [ 0, %31 ] - %543 = getelementptr [5 x i32], ptr @hf_param_poweradjresp, i64 0, i64 %indvars.iv845 +.preheader753: ; preds = %31, %.preheader753 + %indvars.iv893 = phi i64 [ %indvars.iv.next894, %.preheader753 ], [ 0, %31 ] + %543 = getelementptr [5 x i32], ptr @hf_param_poweradjresp, i64 0, i64 %indvars.iv893 %544 = load i32, ptr %543, align 4 %545 = tail call ptr @proto_tree_add_item(ptr noundef %8, i32 noundef %544, ptr noundef %0, i32 noundef %.0720, i32 noundef 1, i32 noundef -2147483648) #4 - %indvars.iv.next846 = add nuw nsw i64 %indvars.iv845, 1 - %exitcond848.not = icmp eq i64 %indvars.iv.next846, 5 - br i1 %exitcond848.not, label %546, label %.preheader756, !llvm.loop !33 + %indvars.iv.next894 = add nuw nsw i64 %indvars.iv893, 1 + %exitcond896.not = icmp eq i64 %indvars.iv.next894, 5 + br i1 %exitcond896.not, label %546, label %.preheader753, !llvm.loop !33 -546: ; preds = %.preheader756 +546: ; preds = %.preheader753 %547 = add nuw nsw i32 %.0720, 1 br label %.loopexit @@ -1932,8 +1932,8 @@ define internal i32 @dissect_btlmp(ptr noundef %0, ptr noundef %1, ptr noundef % %583 = add nuw nsw i32 %.0720, 7 br label %.loopexit -.loopexit: ; preds = %279, %.preheader753, %31, %388, %393, %404, %335, %32, %576, %555, %548, %546, %539, %535, %525, %515, %514, %497, %489, %462, %439, %429, %425, %406, %321, %310, %306, %302, %298, %294, %284, %268, %243, %239, %232, %225, %218, %214, %207, %193, %178, %176, %120, %113, %99, %89, %85, %81, %77, %73, %69, %65, %61, %57, %50, %46, %41 - %.1 = phi i32 [ %.0720, %31 ], [ %488, %462 ], [ %442, %439 ], [ %438, %429 ], [ %428, %425 ], [ %424, %406 ], [ %341, %335 ], [ %405, %404 ], [ %394, %393 ], [ %389, %388 ], [ %334, %321 ], [ %320, %310 ], [ %309, %306 ], [ %305, %302 ], [ %301, %298 ], [ %297, %294 ], [ %293, %284 ], [ %271, %268 ], [ %542, %539 ], [ %267, %243 ], [ %547, %546 ], [ %242, %239 ], [ %238, %232 ], [ %231, %225 ], [ %496, %489 ], [ %506, %497 ], [ %narrow752, %514 ], [ %224, %218 ], [ %217, %214 ], [ %213, %207 ], [ %206, %193 ], [ %184, %178 ], [ %177, %176 ], [ %129, %120 ], [ %524, %515 ], [ %534, %525 ], [ %116, %113 ], [ %538, %535 ], [ %112, %99 ], [ %95, %89 ], [ %88, %85 ], [ %554, %548 ], [ %84, %81 ], [ %80, %77 ], [ %76, %73 ], [ %72, %69 ], [ %68, %65 ], [ %64, %61 ], [ %60, %57 ], [ %567, %555 ], [ %56, %50 ], [ %49, %46 ], [ %38, %32 ], [ %45, %41 ], [ %583, %576 ], [ %.0720, %.preheader753 ], [ %283, %279 ] +.loopexit: ; preds = %279, %.preheader754, %31, %388, %393, %404, %335, %32, %576, %555, %548, %546, %539, %535, %525, %515, %514, %497, %489, %462, %439, %429, %425, %406, %321, %310, %306, %302, %298, %294, %284, %268, %243, %239, %232, %225, %218, %214, %207, %193, %178, %176, %120, %113, %99, %89, %85, %81, %77, %73, %69, %65, %61, %57, %50, %46, %41 + %.1 = phi i32 [ %.0720, %31 ], [ %488, %462 ], [ %442, %439 ], [ %438, %429 ], [ %428, %425 ], [ %424, %406 ], [ %341, %335 ], [ %405, %404 ], [ %394, %393 ], [ %389, %388 ], [ %334, %321 ], [ %320, %310 ], [ %309, %306 ], [ %305, %302 ], [ %301, %298 ], [ %297, %294 ], [ %293, %284 ], [ %271, %268 ], [ %496, %489 ], [ %267, %243 ], [ %506, %497 ], [ %242, %239 ], [ %238, %232 ], [ %231, %225 ], [ %narrow752, %514 ], [ %524, %515 ], [ %224, %218 ], [ %217, %214 ], [ %213, %207 ], [ %206, %193 ], [ %184, %178 ], [ %177, %176 ], [ %129, %120 ], [ %534, %525 ], [ %538, %535 ], [ %542, %539 ], [ %116, %113 ], [ %547, %546 ], [ %112, %99 ], [ %95, %89 ], [ %88, %85 ], [ %554, %548 ], [ %84, %81 ], [ %80, %77 ], [ %76, %73 ], [ %72, %69 ], [ %68, %65 ], [ %64, %61 ], [ %60, %57 ], [ %567, %555 ], [ %56, %50 ], [ %49, %46 ], [ %38, %32 ], [ %45, %41 ], [ %583, %576 ], [ %.0720, %.preheader754 ], [ %283, %279 ] %584 = tail call i32 @tvb_captured_length_remaining(ptr noundef %0, i32 noundef %.1) #4 %585 = icmp sgt i32 %584, 0 br i1 %585, label %586, label %591 diff --git a/bench/wireshark/optimized/packet-nfs.c.ll b/bench/wireshark/optimized/packet-nfs.c.ll index 66fd447c1e5..0bdeafc6584 100644 --- a/bench/wireshark/optimized/packet-nfs.c.ll +++ b/bench/wireshark/optimized/packet-nfs.c.ll @@ -9998,11 +9998,11 @@ define internal fastcc i32 @dissect_nfs4_request_op(ptr noundef %0, i32 noundef i32 20, label %256 i32 21, label %260 i32 22, label %268 + i32 74, label %803 i32 73, label %796 - i32 72, label %793 i32 25, label %270 i32 26, label %281 - i32 74, label %803 + i32 72, label %793 i32 55, label %293 i32 57, label %296 i32 58, label %299 @@ -11225,8 +11225,8 @@ dissect_nfs4_app_data_block.exit: ; preds = %742, %766, %769 br label %dissect_nfs4_layoutreturn.exit dissect_nfs4_layoutreturn.exit: ; preds = %.lr.ph78.i, %584, %._crit_edge.i, %527, %59, %67, %73, %93, %97, %100, %108, %109, %146, %253, %256, %260, %268, %293, %296, %299, %310, %319, %323, %324, %326, %329, %333, %337, %355, %360, %380, %387, %391, %dissect_nfs4_state_protect_a.exit, %429, %443, %447, %451, %485, %dissect_nfs4_newtime.exit, %587, %596, %605, %651, %658, %682, %716, %729, %dissect_nfs4_app_data_block.exit, %793, %796, %803, %808, %107, %104, %145, %144, %174, %173, %182, %180, %186, %183, %252, %250, %279, %270, %292, %281, %309, %307, %378, %362, %626, %617, %669, %660, %687, %684, %692, %689, %703, %694, %740, %731, %791, %789, %50 - %.1880 = phi i32 [ %.0879956, %50 ], [ %.0879956, %791 ], [ %.0879956, %789 ], [ %.0879956, %dissect_nfs4_app_data_block.exit ], [ %.0879956, %740 ], [ %.0879956, %731 ], [ %.0879956, %729 ], [ %.0879956, %716 ], [ %.0879956, %703 ], [ %.0879956, %694 ], [ %.0879956, %692 ], [ %.0879956, %689 ], [ %.0879956, %687 ], [ %.0879956, %684 ], [ %.0879956, %682 ], [ %.0879956, %669 ], [ %.0879956, %660 ], [ %.0879956, %658 ], [ %.0879956, %651 ], [ %.0879956, %626 ], [ %.0879956, %617 ], [ %.0879956, %605 ], [ %.0879956, %596 ], [ %.0879956, %587 ], [ %.0879956, %dissect_nfs4_newtime.exit ], [ %.0879956, %485 ], [ %.0879956, %451 ], [ %.0879956, %447 ], [ %.0879956, %443 ], [ %.0879956, %429 ], [ %.0879956, %dissect_nfs4_state_protect_a.exit ], [ %.0879956, %391 ], [ %.0879956, %387 ], [ %.0879956, %380 ], [ %.0879956, %378 ], [ %.0879956, %362 ], [ %.0879956, %360 ], [ %.0879956, %355 ], [ %.0879956, %337 ], [ %.0879956, %333 ], [ %.0879956, %329 ], [ %.0879956, %326 ], [ %325, %324 ], [ %.0879956, %323 ], [ %.0879956, %319 ], [ %.0879956, %310 ], [ %.0879956, %309 ], [ %.0879956, %307 ], [ %.0879956, %299 ], [ %.0879956, %296 ], [ %.0879956, %293 ], [ %.0879956, %803 ], [ %.0879956, %292 ], [ %.0879956, %281 ], [ %.0879956, %279 ], [ %.0879956, %270 ], [ %.0879956, %793 ], [ %.0879956, %796 ], [ %.0879956, %268 ], [ %.0879956, %260 ], [ %.0879956, %256 ], [ %.0879956, %253 ], [ %.0879956, %252 ], [ %.0879956, %250 ], [ %.0879956, %186 ], [ %.0879956, %183 ], [ %.0879956, %808 ], [ %.0879956, %182 ], [ %.0879956, %180 ], [ %.0879956, %173 ], [ %.0879956, %174 ], [ %.0879956, %146 ], [ %.0879956, %144 ], [ %.0879956, %145 ], [ %.0879956, %109 ], [ %.0879956, %108 ], [ %.0879956, %107 ], [ %.0879956, %104 ], [ %.0879956, %100 ], [ %.0879956, %97 ], [ %.0879956, %93 ], [ %.0879956, %73 ], [ %.0879956, %67 ], [ %.0879956, %59 ], [ %.0879956, %527 ], [ %.0879956, %._crit_edge.i ], [ %.0879956, %584 ], [ %.0879956, %.lr.ph78.i ] - %.2 = phi i32 [ %54, %50 ], [ %785, %791 ], [ %785, %789 ], [ %773, %dissect_nfs4_app_data_block.exit ], [ %738, %740 ], [ %738, %731 ], [ %730, %729 ], [ %717, %716 ], [ %701, %703 ], [ %701, %694 ], [ %690, %692 ], [ %690, %689 ], [ %685, %687 ], [ %685, %684 ], [ %683, %682 ], [ %667, %669 ], [ %667, %660 ], [ %659, %658 ], [ %652, %651 ], [ %624, %626 ], [ %624, %617 ], [ %616, %605 ], [ %604, %596 ], [ %595, %587 ], [ %526, %dissect_nfs4_newtime.exit ], [ %500, %485 ], [ %484, %451 ], [ %448, %447 ], [ %446, %443 ], [ %442, %429 ], [ %428, %dissect_nfs4_state_protect_a.exit ], [ %398, %391 ], [ %390, %387 ], [ %386, %380 ], [ %376, %378 ], [ %376, %362 ], [ %361, %360 ], [ %359, %355 ], [ %354, %337 ], [ %335, %333 ], [ %332, %329 ], [ %328, %326 ], [ %54, %324 ], [ %54, %323 ], [ %322, %319 ], [ %314, %310 ], [ %304, %309 ], [ %304, %307 ], [ %301, %299 ], [ %298, %296 ], [ %295, %293 ], [ %807, %803 ], [ %290, %292 ], [ %290, %281 ], [ %277, %279 ], [ %277, %270 ], [ %795, %793 ], [ %802, %796 ], [ %269, %268 ], [ %267, %260 ], [ %259, %256 ], [ %255, %253 ], [ %.0.i946, %252 ], [ %.0.i946, %250 ], [ %184, %186 ], [ %184, %183 ], [ %810, %808 ], [ %177, %182 ], [ %177, %180 ], [ %170, %173 ], [ %170, %174 ], [ %158, %146 ], [ %.0.i, %144 ], [ %.0.i, %145 ], [ %111, %109 ], [ %54, %108 ], [ %105, %107 ], [ %105, %104 ], [ %101, %100 ], [ %99, %97 ], [ %96, %93 ], [ %79, %73 ], [ %70, %67 ], [ %66, %59 ], [ %537, %527 ], [ %570, %._crit_edge.i ], [ %586, %584 ], [ %582, %.lr.ph78.i ] + %.1880 = phi i32 [ %.0879956, %50 ], [ %.0879956, %791 ], [ %.0879956, %789 ], [ %.0879956, %dissect_nfs4_app_data_block.exit ], [ %.0879956, %740 ], [ %.0879956, %731 ], [ %.0879956, %729 ], [ %.0879956, %716 ], [ %.0879956, %703 ], [ %.0879956, %694 ], [ %.0879956, %692 ], [ %.0879956, %689 ], [ %.0879956, %687 ], [ %.0879956, %684 ], [ %.0879956, %682 ], [ %.0879956, %669 ], [ %.0879956, %660 ], [ %.0879956, %658 ], [ %.0879956, %651 ], [ %.0879956, %626 ], [ %.0879956, %617 ], [ %.0879956, %605 ], [ %.0879956, %596 ], [ %.0879956, %587 ], [ %.0879956, %dissect_nfs4_newtime.exit ], [ %.0879956, %485 ], [ %.0879956, %451 ], [ %.0879956, %447 ], [ %.0879956, %443 ], [ %.0879956, %429 ], [ %.0879956, %dissect_nfs4_state_protect_a.exit ], [ %.0879956, %391 ], [ %.0879956, %387 ], [ %.0879956, %380 ], [ %.0879956, %378 ], [ %.0879956, %362 ], [ %.0879956, %360 ], [ %.0879956, %355 ], [ %.0879956, %337 ], [ %.0879956, %333 ], [ %.0879956, %329 ], [ %.0879956, %326 ], [ %325, %324 ], [ %.0879956, %323 ], [ %.0879956, %319 ], [ %.0879956, %310 ], [ %.0879956, %309 ], [ %.0879956, %307 ], [ %.0879956, %299 ], [ %.0879956, %296 ], [ %.0879956, %293 ], [ %.0879956, %793 ], [ %.0879956, %292 ], [ %.0879956, %281 ], [ %.0879956, %279 ], [ %.0879956, %270 ], [ %.0879956, %796 ], [ %.0879956, %803 ], [ %.0879956, %268 ], [ %.0879956, %260 ], [ %.0879956, %256 ], [ %.0879956, %253 ], [ %.0879956, %252 ], [ %.0879956, %250 ], [ %.0879956, %186 ], [ %.0879956, %183 ], [ %.0879956, %808 ], [ %.0879956, %182 ], [ %.0879956, %180 ], [ %.0879956, %173 ], [ %.0879956, %174 ], [ %.0879956, %146 ], [ %.0879956, %144 ], [ %.0879956, %145 ], [ %.0879956, %109 ], [ %.0879956, %108 ], [ %.0879956, %107 ], [ %.0879956, %104 ], [ %.0879956, %100 ], [ %.0879956, %97 ], [ %.0879956, %93 ], [ %.0879956, %73 ], [ %.0879956, %67 ], [ %.0879956, %59 ], [ %.0879956, %527 ], [ %.0879956, %._crit_edge.i ], [ %.0879956, %584 ], [ %.0879956, %.lr.ph78.i ] + %.2 = phi i32 [ %54, %50 ], [ %785, %791 ], [ %785, %789 ], [ %773, %dissect_nfs4_app_data_block.exit ], [ %738, %740 ], [ %738, %731 ], [ %730, %729 ], [ %717, %716 ], [ %701, %703 ], [ %701, %694 ], [ %690, %692 ], [ %690, %689 ], [ %685, %687 ], [ %685, %684 ], [ %683, %682 ], [ %667, %669 ], [ %667, %660 ], [ %659, %658 ], [ %652, %651 ], [ %624, %626 ], [ %624, %617 ], [ %616, %605 ], [ %604, %596 ], [ %595, %587 ], [ %526, %dissect_nfs4_newtime.exit ], [ %500, %485 ], [ %484, %451 ], [ %448, %447 ], [ %446, %443 ], [ %442, %429 ], [ %428, %dissect_nfs4_state_protect_a.exit ], [ %398, %391 ], [ %390, %387 ], [ %386, %380 ], [ %376, %378 ], [ %376, %362 ], [ %361, %360 ], [ %359, %355 ], [ %354, %337 ], [ %335, %333 ], [ %332, %329 ], [ %328, %326 ], [ %54, %324 ], [ %54, %323 ], [ %322, %319 ], [ %314, %310 ], [ %304, %309 ], [ %304, %307 ], [ %301, %299 ], [ %298, %296 ], [ %295, %293 ], [ %795, %793 ], [ %290, %292 ], [ %290, %281 ], [ %277, %279 ], [ %277, %270 ], [ %802, %796 ], [ %807, %803 ], [ %269, %268 ], [ %267, %260 ], [ %259, %256 ], [ %255, %253 ], [ %.0.i946, %252 ], [ %.0.i946, %250 ], [ %184, %186 ], [ %184, %183 ], [ %810, %808 ], [ %177, %182 ], [ %177, %180 ], [ %170, %173 ], [ %170, %174 ], [ %158, %146 ], [ %.0.i, %144 ], [ %.0.i, %145 ], [ %111, %109 ], [ %54, %108 ], [ %105, %107 ], [ %105, %104 ], [ %101, %100 ], [ %99, %97 ], [ %96, %93 ], [ %79, %73 ], [ %70, %67 ], [ %66, %59 ], [ %537, %527 ], [ %570, %._crit_edge.i ], [ %586, %584 ], [ %582, %.lr.ph78.i ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %34, !llvm.loop !10 @@ -13465,13 +13465,13 @@ switch.early.test: ; preds = %dissect_nfs4_status i32 18, label %139 i32 20, label %190 i32 21, label %190 - i32 68, label %696 - i32 67, label %678 - i32 63, label %676 + i32 75, label %743 + i32 74, label %726 + i32 73, label %714 i32 25, label %192 i32 26, label %204 i32 27, label %240 - i32 75, label %743 + i32 72, label %710 i32 28, label %248 i32 29, label %259 i32 33, label %280 @@ -13482,8 +13482,8 @@ switch.early.test: ; preds = %dissect_nfs4_status i32 41, label %303 i32 42, label %311 i32 43, label %349 - i32 74, label %726 - i32 73, label %714 + i32 70, label %707 + i32 69, label %702 i32 55, label %361 i32 46, label %364 i32 50, label %390 @@ -13492,11 +13492,11 @@ switch.early.test: ; preds = %dissect_nfs4_status i32 47, label %523 i32 48, label %627 i32 53, label %641 - i32 72, label %710 + i32 68, label %696 i32 60, label %657 i32 61, label %669 - i32 70, label %707 - i32 69, label %702 + i32 67, label %678 + i32 63, label %676 ] 82: ; preds = %81 @@ -14649,7 +14649,7 @@ dissect_nfs4_listxattr_names.exit: ; preds = %.lr.ph.i488, %727 br label %dissect_nfsdata_reduced.exit dissect_nfsdata_reduced.exit: ; preds = %521, %517, %514, %510, %246, %243, %238, %232, %202, %199, %657, %364, %285, %119, %82, %84, %89, %92, %104, %106, %108, %137, %dissect_nfs4_open_delegation.exit, %190, %248, %259, %280, %283, %293, %303, %dissect_nfs4_state_protect_r.exit, %349, %361, %dissect_nfs4_layoutget.exit, %dissect_nfs4_deviceaddr.exit, %dissect_nfs4_devicelist.exit, %641, %669, %676, %dissect_nfs4_offload_status_res.exit, %702, %124, %120, %122, %291, %286, %387, %368, %664, %658, %697, %696, %708, %707, %711, %710, %715, %714, %dissect_nfs4_listxattr_names.exit, %726, %744, %743, %81, %80 - %.1 = phi i32 [ %78, %80 ], [ %78, %81 ], [ %706, %702 ], [ %709, %708 ], [ %78, %707 ], [ %675, %669 ], [ %663, %658 ], [ %668, %664 ], [ %713, %711 ], [ %78, %710 ], [ %656, %641 ], [ %640, %dissect_nfs4_devicelist.exit ], [ %626, %dissect_nfs4_deviceaddr.exit ], [ %.0.lcssa.i471, %dissect_nfs4_layoutget.exit ], [ %386, %368 ], [ %389, %387 ], [ %363, %361 ], [ %723, %715 ], [ %78, %714 ], [ %742, %dissect_nfs4_listxattr_names.exit ], [ %78, %726 ], [ %360, %349 ], [ %348, %dissect_nfs4_state_protect_r.exit ], [ %310, %303 ], [ %302, %293 ], [ %290, %286 ], [ %292, %291 ], [ %284, %283 ], [ %282, %280 ], [ %277, %259 ], [ %256, %248 ], [ %752, %744 ], [ %78, %743 ], [ %677, %676 ], [ %.014.lcssa.i, %dissect_nfs4_offload_status_res.exit ], [ %701, %697 ], [ %78, %696 ], [ %191, %190 ], [ %.0.i, %dissect_nfs4_open_delegation.exit ], [ %138, %137 ], [ %123, %122 ], [ %78, %120 ], [ %136, %124 ], [ %116, %108 ], [ %107, %106 ], [ %105, %104 ], [ %103, %92 ], [ %91, %89 ], [ %88, %84 ], [ %83, %82 ], [ %78, %119 ], [ %78, %285 ], [ %367, %364 ], [ %78, %657 ], [ %200, %199 ], [ %203, %202 ], [ %237, %232 ], [ %239, %238 ], [ %244, %243 ], [ %247, %246 ], [ %516, %514 ], [ %513, %510 ], [ %522, %521 ], [ %520, %517 ] + %.1 = phi i32 [ %78, %80 ], [ %78, %81 ], [ %677, %676 ], [ %.014.lcssa.i, %dissect_nfs4_offload_status_res.exit ], [ %675, %669 ], [ %663, %658 ], [ %668, %664 ], [ %701, %697 ], [ %78, %696 ], [ %656, %641 ], [ %640, %dissect_nfs4_devicelist.exit ], [ %626, %dissect_nfs4_deviceaddr.exit ], [ %.0.lcssa.i471, %dissect_nfs4_layoutget.exit ], [ %386, %368 ], [ %389, %387 ], [ %363, %361 ], [ %706, %702 ], [ %709, %708 ], [ %78, %707 ], [ %360, %349 ], [ %348, %dissect_nfs4_state_protect_r.exit ], [ %310, %303 ], [ %302, %293 ], [ %290, %286 ], [ %292, %291 ], [ %284, %283 ], [ %282, %280 ], [ %277, %259 ], [ %256, %248 ], [ %713, %711 ], [ %78, %710 ], [ %723, %715 ], [ %78, %714 ], [ %742, %dissect_nfs4_listxattr_names.exit ], [ %78, %726 ], [ %752, %744 ], [ %78, %743 ], [ %191, %190 ], [ %.0.i, %dissect_nfs4_open_delegation.exit ], [ %138, %137 ], [ %123, %122 ], [ %78, %120 ], [ %136, %124 ], [ %116, %108 ], [ %107, %106 ], [ %105, %104 ], [ %103, %92 ], [ %91, %89 ], [ %88, %84 ], [ %83, %82 ], [ %78, %119 ], [ %78, %285 ], [ %367, %364 ], [ %78, %657 ], [ %200, %199 ], [ %203, %202 ], [ %237, %232 ], [ %239, %238 ], [ %244, %243 ], [ %247, %246 ], [ %516, %514 ], [ %513, %510 ], [ %522, %521 ], [ %520, %517 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !43 @@ -14981,8 +14981,8 @@ define internal i32 @dissect_nfs4_cb_compound_call(ptr noundef %0, ptr noundef % i32 3, label %46 i32 5, label %49 i32 8, label %73 - i32 13, label %106 i32 15, label %114 + i32 13, label %106 i32 11, label %77 ] @@ -15139,7 +15139,7 @@ dissect_nfs4_status.exit.i: ; preds = %125, %122, %114 br label %dissect_nfs4_cb_layoutrecall.exit.i dissect_nfs4_cb_layoutrecall.exit.i: ; preds = %._crit_edge.i.i, %134, %132, %106, %77, %73, %66, %59, %49, %46, %41, %34, %.thread.i - %.2.i = phi i32 [ %27, %34 ], [ %133, %132 ], [ %136, %134 ], [ %113, %106 ], [ %76, %73 ], [ %48, %46 ], [ %45, %41 ], [ %27, %.thread.i ], [ %65, %59 ], [ %72, %66 ], [ %58, %49 ], [ %92, %77 ], [ %.1.lcssa.i.i, %._crit_edge.i.i ] + %.2.i = phi i32 [ %27, %34 ], [ %113, %106 ], [ %133, %132 ], [ %136, %134 ], [ %76, %73 ], [ %48, %46 ], [ %45, %41 ], [ %27, %.thread.i ], [ %65, %59 ], [ %72, %66 ], [ %58, %49 ], [ %92, %77 ], [ %.1.lcssa.i.i, %._crit_edge.i.i ] %137 = add nuw i32 %.0109114.i, 1 %exitcond.not.i = icmp eq i32 %137, %16 br i1 %exitcond.not.i, label %dissect_nfs4_cb_request.exit, label %.lr.ph.i, !llvm.loop !49 diff --git a/bench/wireshark/optimized/packet-quic.c.ll b/bench/wireshark/optimized/packet-quic.c.ll index 2cac9b070f7..f1388c6d36e 100644 --- a/bench/wireshark/optimized/packet-quic.c.ll +++ b/bench/wireshark/optimized/packet-quic.c.ll @@ -2407,36 +2407,33 @@ is_quic_draft_max.exit.thread3.i: ; preds = %is_quic_draft_max.e 490: ; preds = %488 %491 = trunc i32 %434 to i8 - br label %is_quic_draft_max.exit69.i + br label %is_quic_draft_max.exit68.i 492: ; preds = %488, %.thread.i160 %493 = phi i32 [ %477, %.thread.i160 ], [ %489, %488 ] %.08.i = phi i32 [ %471, %.thread.i160 ], [ %.0.i162, %488 ] switch i32 %434, label %494 [ - i32 -87117823, label %is_quic_draft_max.exit69.i - i32 -87117810, label %.fold.split.i.i64.i - i32 -87117822, label %.fold.split.i.i64.i - i32 1412445489, label %.fold.split18.i.i62.i - i32 1412445488, label %.fold.split18.i.i62.i - i32 1362113840, label %.fold.split18.i.i62.i + i32 -87117823, label %is_quic_draft_max.exit68.i + i32 -87117810, label %.fold.split.i.i62.i + i32 -87117822, label %.fold.split.i.i62.i + i32 1412445489, label %.fold.split.i.i62.i + i32 1412445488, label %.fold.split.i.i62.i + i32 1362113840, label %.fold.split.i.i62.i ] 494: ; preds = %492 - %switch.select.i.i66.i = select i1 %.not.i155, i8 100, i8 0 - %switch.selectcmp19.i.i67.i = icmp eq i32 %434, 1 - %switch.select20.i.i68.i = select i1 %switch.selectcmp19.i.i67.i, i8 34, i8 %switch.select.i.i66.i - br label %is_quic_draft_max.exit69.i - -.fold.split.i.i64.i: ; preds = %492, %492 - br label %is_quic_draft_max.exit69.i - -.fold.split18.i.i62.i: ; preds = %492, %492, %492 - br label %is_quic_draft_max.exit69.i - -is_quic_draft_max.exit69.i: ; preds = %.fold.split18.i.i62.i, %.fold.split.i.i64.i, %494, %492, %490 - %495 = phi i32 [ %489, %490 ], [ %493, %492 ], [ %493, %.fold.split.i.i64.i ], [ %493, %.fold.split18.i.i62.i ], [ %493, %494 ] - %.07.i = phi i32 [ %.0.i162, %490 ], [ %.08.i, %492 ], [ %.08.i, %.fold.split.i.i64.i ], [ %.08.i, %.fold.split18.i.i62.i ], [ %.08.i, %494 ] - %.0.i.i63.i = phi i8 [ %491, %490 ], [ 22, %492 ], [ 27, %.fold.split.i.i64.i ], [ 27, %.fold.split18.i.i62.i ], [ %switch.select20.i.i68.i, %494 ] + %switch.select.i.i65.i = select i1 %.not.i155, i8 100, i8 0 + %switch.selectcmp19.i.i66.i = icmp eq i32 %434, 1 + %switch.select20.i.i67.i = select i1 %switch.selectcmp19.i.i66.i, i8 34, i8 %switch.select.i.i65.i + br label %is_quic_draft_max.exit68.i + +.fold.split.i.i62.i: ; preds = %492, %492, %492, %492, %492 + br label %is_quic_draft_max.exit68.i + +is_quic_draft_max.exit68.i: ; preds = %.fold.split.i.i62.i, %494, %492, %490 + %495 = phi i32 [ %489, %490 ], [ %493, %492 ], [ %493, %.fold.split.i.i62.i ], [ %493, %494 ] + %.07.i = phi i32 [ %.0.i162, %490 ], [ %.08.i, %492 ], [ %.08.i, %.fold.split.i.i62.i ], [ %.08.i, %494 ] + %.0.i.i63.i = phi i8 [ %491, %490 ], [ 22, %492 ], [ 27, %.fold.split.i.i62.i ], [ %switch.select20.i.i67.i, %494 ] %496 = add i8 %.0.i.i63.i, -25 %497 = icmp ult i8 %496, -24 %498 = icmp ugt i32 %495, 15 @@ -2448,33 +2445,33 @@ is_quic_draft_max.exit69.i: ; preds = %.fold.split18.i.i62 %502 = add i32 %spec.select.i, %.07.i br i1 %472, label %503, label %505 -503: ; preds = %is_quic_draft_max.exit69.i +503: ; preds = %is_quic_draft_max.exit68.i %504 = trunc i32 %434 to i8 - br label %is_quic_draft_max.exit78.i + br label %is_quic_draft_max.exit76.i -505: ; preds = %is_quic_draft_max.exit69.i +505: ; preds = %is_quic_draft_max.exit68.i switch i32 %434, label %506 [ i32 -87117823, label %dissect_quic_retry_packet.exit - i32 -87117810, label %is_quic_draft_max.exit78.thread.i - i32 -87117822, label %is_quic_draft_max.exit78.thread.i - i32 1412445489, label %is_quic_draft_max.exit78.thread.i - i32 1412445488, label %is_quic_draft_max.exit78.thread.i - i32 1362113840, label %is_quic_draft_max.exit78.thread.i + i32 -87117810, label %is_quic_draft_max.exit76.thread.i + i32 -87117822, label %is_quic_draft_max.exit76.thread.i + i32 1412445489, label %is_quic_draft_max.exit76.thread.i + i32 1412445488, label %is_quic_draft_max.exit76.thread.i + i32 1362113840, label %is_quic_draft_max.exit76.thread.i ] 506: ; preds = %505 - %switch.select.i.i75.i = select i1 %.not.i155, i8 100, i8 0 - %switch.selectcmp19.i.i76.i = icmp eq i32 %434, 1 - %switch.select20.i.i77.i = select i1 %switch.selectcmp19.i.i76.i, i8 34, i8 %switch.select.i.i75.i - br label %is_quic_draft_max.exit78.i - -is_quic_draft_max.exit78.i: ; preds = %506, %503 - %.0.i.i72.i = phi i8 [ %504, %503 ], [ %switch.select20.i.i77.i, %506 ] - %507 = add i8 %.0.i.i72.i, -25 + %switch.select.i.i73.i = select i1 %.not.i155, i8 100, i8 0 + %switch.selectcmp19.i.i74.i = icmp eq i32 %434, 1 + %switch.select20.i.i75.i = select i1 %switch.selectcmp19.i.i74.i, i8 34, i8 %switch.select.i.i73.i + br label %is_quic_draft_max.exit76.i + +is_quic_draft_max.exit76.i: ; preds = %506, %503 + %.0.i.i71.i = phi i8 [ %504, %503 ], [ %switch.select20.i.i75.i, %506 ] + %507 = add i8 %.0.i.i71.i, -25 %508 = icmp ult i8 %507, -24 - br i1 %508, label %is_quic_draft_max.exit78.thread.i, label %dissect_quic_retry_packet.exit + br i1 %508, label %is_quic_draft_max.exit76.thread.i, label %dissect_quic_retry_packet.exit -is_quic_draft_max.exit78.thread.i: ; preds = %is_quic_draft_max.exit78.i, %505, %505, %505, %505, %505 +is_quic_draft_max.exit76.thread.i: ; preds = %is_quic_draft_max.exit76.i, %505, %505, %505, %505, %505 %509 = load i32, ptr @hf_quic_retry_integrity_tag, align 4 %510 = call ptr @proto_tree_add_item(ptr noundef %.1109, i32 noundef %509, ptr noundef %.0.i153, i32 noundef %502, i32 noundef 16, i32 noundef 0) #15 %511 = load ptr, ptr %48, align 8 @@ -2485,7 +2482,7 @@ is_quic_draft_max.exit78.thread.i: ; preds = %is_quic_draft_max.e %or.cond3.i = and i1 %276, %515 br i1 %or.cond3.i, label %516, label %576 -516: ; preds = %is_quic_draft_max.exit78.thread.i +516: ; preds = %is_quic_draft_max.exit76.thread.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) store ptr null, ptr %27, align 8 %517 = call i32 @tvb_reported_length(ptr noundef %.0.i153) #15 @@ -2523,28 +2520,28 @@ is_quic_draft_max.exit.i.i: ; preds = %525 %527 = trunc i32 %434 to i8 %528 = add i8 %527, -29 %529 = icmp ult i8 %528, -28 - br i1 %529, label %is_quic_draft_max.exit37.i.i, label %is_quic_draft_max.exit.thread.i.thread.i + br i1 %529, label %is_quic_draft_max.exit36.i.i, label %is_quic_draft_max.exit.thread.i.thread.i -is_quic_draft_max.exit37.i.i: ; preds = %is_quic_draft_max.exit.i.i +is_quic_draft_max.exit36.i.i: ; preds = %is_quic_draft_max.exit.i.i %530 = add i8 %527, -33 %531 = icmp ult i8 %530, -32 - br i1 %531, label %is_quic_draft_max.exit46.i.i, label %.thread117.i.i + br i1 %531, label %is_quic_draft_max.exit44.i.i, label %.thread112.i.i .thread.i.i: ; preds = %526 - %switch.select.i.i43.i.i = select i1 %.not.i155, i8 100, i8 0 - %switch.selectcmp19.i.i44.i.i = icmp eq i32 %434, 1 - %switch.select20.i.i45.i.i = select i1 %switch.selectcmp19.i.i44.i.i, i8 34, i8 %switch.select.i.i43.i.i - br label %is_quic_draft_max.exit46.i.i - -is_quic_draft_max.exit46.i.i: ; preds = %.thread.i.i, %is_quic_draft_max.exit37.i.i - %.0.i.i40.i.i = phi i8 [ %switch.select20.i.i45.i.i, %.thread.i.i ], [ %527, %is_quic_draft_max.exit37.i.i ] - %532 = add i8 %.0.i.i40.i.i, -35 + %switch.select.i.i41.i.i = select i1 %.not.i155, i8 100, i8 0 + %switch.selectcmp19.i.i42.i.i = icmp eq i32 %434, 1 + %switch.select20.i.i43.i.i = select i1 %switch.selectcmp19.i.i42.i.i, i8 34, i8 %switch.select.i.i41.i.i + br label %is_quic_draft_max.exit44.i.i + +is_quic_draft_max.exit44.i.i: ; preds = %.thread.i.i, %is_quic_draft_max.exit36.i.i + %.0.i.i39.i.i = phi i8 [ %switch.select20.i.i43.i.i, %.thread.i.i ], [ %527, %is_quic_draft_max.exit36.i.i ] + %532 = add i8 %.0.i.i39.i.i, -35 %533 = icmp ult i8 %532, -34 %spec.select.i.i = select i1 %533, ptr @quic_verify_retry_token.key_v2, ptr @quic_verify_retry_token.key_v1 br label %is_quic_draft_max.exit.thread.i.i -is_quic_draft_max.exit.thread.i.i: ; preds = %is_quic_draft_max.exit46.i.i, %526, %526, %526, %526, %526, %526 - %quic_verify_retry_token.key_v2.sink.i.i = phi ptr [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ %spec.select.i.i, %is_quic_draft_max.exit46.i.i ] +is_quic_draft_max.exit.thread.i.i: ; preds = %is_quic_draft_max.exit44.i.i, %526, %526, %526, %526, %526, %526 + %quic_verify_retry_token.key_v2.sink.i.i = phi ptr [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ @quic_verify_retry_token.key_draft_25, %526 ], [ %spec.select.i.i, %is_quic_draft_max.exit44.i.i ] %534 = load ptr, ptr %27, align 8 %535 = call i32 @gcry_cipher_setkey(ptr noundef %534, ptr noundef nonnull %quic_verify_retry_token.key_v2.sink.i.i, i64 noundef 16) #15 %536 = icmp eq i32 %535, 0 @@ -2554,67 +2551,67 @@ is_quic_draft_max.exit.thread.i.thread.i: ; preds = %is_quic_draft_max.e %537 = load ptr, ptr %27, align 8 %538 = call i32 @gcry_cipher_setkey(ptr noundef %537, ptr noundef nonnull @quic_verify_retry_token.key_draft_25, i64 noundef 16) #15 %539 = icmp eq i32 %538, 0 - br i1 %539, label %is_quic_draft_max.exit55.thread.i.i, label %543 + br i1 %539, label %is_quic_draft_max.exit52.thread.i.i, label %543 -.thread117.i.i: ; preds = %is_quic_draft_max.exit37.i.i +.thread112.i.i: ; preds = %is_quic_draft_max.exit36.i.i %540 = load ptr, ptr %27, align 8 %541 = call i32 @gcry_cipher_setkey(ptr noundef %540, ptr noundef nonnull @quic_verify_retry_token.key_draft_29, i64 noundef 16) #15 %542 = icmp eq i32 %541, 0 - br i1 %542, label %is_quic_draft_max.exit55.thread.i.i, label %543 + br i1 %542, label %is_quic_draft_max.exit52.thread.i.i, label %543 -543: ; preds = %.thread117.i.i, %is_quic_draft_max.exit.thread.i.thread.i, %is_quic_draft_max.exit.thread.i.i +543: ; preds = %.thread112.i.i, %is_quic_draft_max.exit.thread.i.thread.i, %is_quic_draft_max.exit.thread.i.i call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.487, ptr noundef nonnull @.str.395, i32 noundef 3631, ptr noundef nonnull @.str.488, ptr noundef nonnull @.str.490) #14 unreachable 544: ; preds = %is_quic_draft_max.exit.thread.i.i - br i1 %472, label %is_quic_draft_max.exit55.i.i, label %545 + br i1 %472, label %is_quic_draft_max.exit52.i.i, label %545 545: ; preds = %544 - switch i32 %434, label %.thread100.i.i [ - i32 -87117823, label %is_quic_draft_max.exit55.thread.i.i - i32 -87117810, label %is_quic_draft_max.exit55.thread.i.i - i32 -87117822, label %is_quic_draft_max.exit55.thread.i.i - i32 1412445489, label %is_quic_draft_max.exit55.thread.i.i - i32 1412445488, label %is_quic_draft_max.exit55.thread.i.i - i32 1362113840, label %is_quic_draft_max.exit55.thread.i.i + switch i32 %434, label %.thread95.i.i [ + i32 -87117823, label %is_quic_draft_max.exit52.thread.i.i + i32 -87117810, label %is_quic_draft_max.exit52.thread.i.i + i32 -87117822, label %is_quic_draft_max.exit52.thread.i.i + i32 1412445489, label %is_quic_draft_max.exit52.thread.i.i + i32 1412445488, label %is_quic_draft_max.exit52.thread.i.i + i32 1362113840, label %is_quic_draft_max.exit52.thread.i.i ] -is_quic_draft_max.exit55.i.i: ; preds = %544 +is_quic_draft_max.exit52.i.i: ; preds = %544 %.pre.i = trunc i32 %434 to i8 %.pre16.i = add i8 %.pre.i, -29 %546 = icmp ult i8 %.pre16.i, -28 - br i1 %546, label %is_quic_draft_max.exit64.i.i, label %is_quic_draft_max.exit55.thread.i.i + br i1 %546, label %is_quic_draft_max.exit60.i.i, label %is_quic_draft_max.exit52.thread.i.i -is_quic_draft_max.exit64.i.i: ; preds = %is_quic_draft_max.exit55.i.i +is_quic_draft_max.exit60.i.i: ; preds = %is_quic_draft_max.exit52.i.i %.pre310 = add i8 %.pre.i, -33 %547 = icmp ult i8 %.pre310, -32 - br i1 %547, label %is_quic_draft_max.exit73.i.i, label %is_quic_draft_max.exit55.thread.i.i + br i1 %547, label %is_quic_draft_max.exit68.i.i, label %is_quic_draft_max.exit52.thread.i.i -.thread100.i.i: ; preds = %545 - %switch.select.i.i70.i.i = select i1 %.not.i155, i8 100, i8 0 - %switch.selectcmp19.i.i71.i.i = icmp eq i32 %434, 1 - %switch.select20.i.i72.i.i = select i1 %switch.selectcmp19.i.i71.i.i, i8 34, i8 %switch.select.i.i70.i.i - br label %is_quic_draft_max.exit73.i.i +.thread95.i.i: ; preds = %545 + %switch.select.i.i65.i.i = select i1 %.not.i155, i8 100, i8 0 + %switch.selectcmp19.i.i66.i.i = icmp eq i32 %434, 1 + %switch.select20.i.i67.i.i = select i1 %switch.selectcmp19.i.i66.i.i, i8 34, i8 %switch.select.i.i65.i.i + br label %is_quic_draft_max.exit68.i.i -is_quic_draft_max.exit73.i.i: ; preds = %.thread100.i.i, %is_quic_draft_max.exit64.i.i - %.0.i.i67.i.i = phi i8 [ %switch.select20.i.i72.i.i, %.thread100.i.i ], [ %.pre.i, %is_quic_draft_max.exit64.i.i ] - %548 = add i8 %.0.i.i67.i.i, -35 +is_quic_draft_max.exit68.i.i: ; preds = %.thread95.i.i, %is_quic_draft_max.exit60.i.i + %.0.i.i63.i.i = phi i8 [ %switch.select20.i.i67.i.i, %.thread95.i.i ], [ %.pre.i, %is_quic_draft_max.exit60.i.i ] + %548 = add i8 %.0.i.i63.i.i, -35 %549 = icmp ult i8 %548, -34 - %spec.select121.i.i = select i1 %549, ptr @quic_verify_retry_token.nonce_v2, ptr @quic_verify_retry_token.nonce_v1 - br label %is_quic_draft_max.exit55.thread.i.i + %spec.select116.i.i = select i1 %549, ptr @quic_verify_retry_token.nonce_v2, ptr @quic_verify_retry_token.nonce_v1 + br label %is_quic_draft_max.exit52.thread.i.i -is_quic_draft_max.exit55.thread.i.i: ; preds = %.thread117.i.i, %is_quic_draft_max.exit73.i.i, %is_quic_draft_max.exit64.i.i, %is_quic_draft_max.exit55.i.i, %545, %545, %545, %545, %545, %545, %is_quic_draft_max.exit.thread.i.thread.i - %quic_verify_retry_token.nonce_draft_29.sink.i.i = phi ptr [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %is_quic_draft_max.exit55.i.i ], [ @quic_verify_retry_token.nonce_draft_29, %is_quic_draft_max.exit64.i.i ], [ %spec.select121.i.i, %is_quic_draft_max.exit73.i.i ], [ @quic_verify_retry_token.nonce_draft_25, %is_quic_draft_max.exit.thread.i.thread.i ], [ @quic_verify_retry_token.nonce_draft_29, %.thread117.i.i ] +is_quic_draft_max.exit52.thread.i.i: ; preds = %.thread112.i.i, %is_quic_draft_max.exit68.i.i, %is_quic_draft_max.exit60.i.i, %is_quic_draft_max.exit52.i.i, %545, %545, %545, %545, %545, %545, %is_quic_draft_max.exit.thread.i.thread.i + %quic_verify_retry_token.nonce_draft_29.sink.i.i = phi ptr [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %545 ], [ @quic_verify_retry_token.nonce_draft_25, %is_quic_draft_max.exit52.i.i ], [ @quic_verify_retry_token.nonce_draft_29, %is_quic_draft_max.exit60.i.i ], [ %spec.select116.i.i, %is_quic_draft_max.exit68.i.i ], [ @quic_verify_retry_token.nonce_draft_25, %is_quic_draft_max.exit.thread.i.thread.i ], [ @quic_verify_retry_token.nonce_draft_29, %.thread112.i.i ] %550 = load ptr, ptr %27, align 8 %551 = call i32 @gcry_cipher_setiv(ptr noundef %550, ptr noundef nonnull %quic_verify_retry_token.nonce_draft_29.sink.i.i, i64 noundef 12) #15 %552 = icmp eq i32 %551, 0 br i1 %552, label %554, label %553 -553: ; preds = %is_quic_draft_max.exit55.thread.i.i +553: ; preds = %is_quic_draft_max.exit52.thread.i.i call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.487, ptr noundef nonnull @.str.395, i32 noundef 3641, ptr noundef nonnull @.str.488, ptr noundef nonnull @.str.491) #14 unreachable -554: ; preds = %is_quic_draft_max.exit55.thread.i.i +554: ; preds = %is_quic_draft_max.exit52.thread.i.i %555 = load ptr, ptr %27, align 8 %556 = load i8, ptr %.0113, align 8 %557 = zext i8 %556 to i64 @@ -2654,7 +2651,7 @@ quic_verify_retry_token.exit.i: ; preds = %562 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) br label %576 -576: ; preds = %quic_verify_retry_token.exit.i, %is_quic_draft_max.exit78.thread.i +576: ; preds = %quic_verify_retry_token.exit.i, %is_quic_draft_max.exit76.thread.i %577 = getelementptr inbounds nuw i8, ptr %.1116, i64 43 %578 = load i8, ptr %577, align 1 %579 = trunc i8 %578 to i1 @@ -2681,8 +2678,8 @@ quic_verify_retry_token.exit.i: ; preds = %562 %588 = add i32 %502, 16 br label %dissect_quic_retry_packet.exit -dissect_quic_retry_packet.exit: ; preds = %505, %is_quic_draft_max.exit78.i, %587 - %.1.i = phi i32 [ %502, %is_quic_draft_max.exit78.i ], [ %588, %587 ], [ %502, %505 ] +dissect_quic_retry_packet.exit: ; preds = %505, %is_quic_draft_max.exit76.i, %587 + %.1.i = phi i32 [ %502, %is_quic_draft_max.exit76.i ], [ %588, %587 ], [ %502, %505 ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %28) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %29) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) @@ -5185,12 +5182,12 @@ define internal fastcc void @quic_create_initial_decoders(ptr noundef nonnull %0 30: ; preds = %28 switch i32 %12, label %.thread.i [ - i32 -87117823, label %is_quic_draft_max.exit.thread62.i - i32 -87117810, label %is_quic_draft_max.exit47.thread.i - i32 -87117822, label %is_quic_draft_max.exit47.thread.i - i32 1412445489, label %is_quic_draft_max.exit47.thread.i - i32 1412445488, label %is_quic_draft_max.exit47.thread.i - i32 1362113840, label %is_quic_draft_max.exit47.thread.i + i32 -87117823, label %is_quic_draft_max.exit.thread60.i + i32 -87117810, label %is_quic_draft_max.exit46.thread.i + i32 -87117822, label %is_quic_draft_max.exit46.thread.i + i32 1412445489, label %is_quic_draft_max.exit46.thread.i + i32 1412445488, label %is_quic_draft_max.exit46.thread.i + i32 1362113840, label %is_quic_draft_max.exit46.thread.i ] .thread.i: ; preds = %30 @@ -5202,33 +5199,33 @@ is_quic_draft_max.exit.i: ; preds = %28 %33 = trunc i32 %12 to i8 %34 = add i8 %33, -23 %35 = icmp ult i8 %34, -22 - br i1 %35, label %is_quic_draft_max.exit47.i, label %is_quic_draft_max.exit.thread62.i + br i1 %35, label %is_quic_draft_max.exit46.i, label %is_quic_draft_max.exit.thread60.i -is_quic_draft_max.exit.thread62.i: ; preds = %is_quic_draft_max.exit.i, %30 +is_quic_draft_max.exit.thread60.i: ; preds = %is_quic_draft_max.exit.i, %30 %36 = getelementptr inbounds nuw i8, ptr %0, i64 1 %37 = load i8, ptr %0, align 8 %38 = zext i8 %37 to i64 %39 = call i32 @ws_hmac_buffer(i32 noundef 8, ptr noundef nonnull %8, ptr noundef nonnull %36, i64 noundef range(i64 0, 256) %38, ptr noundef nonnull @quic_derive_initial_secrets.handshake_salt_draft_22, i64 noundef 20) #15 br label %67 -is_quic_draft_max.exit47.i: ; preds = %is_quic_draft_max.exit.i +is_quic_draft_max.exit46.i: ; preds = %is_quic_draft_max.exit.i %40 = add i8 %33, -29 %41 = icmp ult i8 %40, -28 - br i1 %41, label %is_quic_draft_max.exit56.i, label %is_quic_draft_max.exit47.thread.i + br i1 %41, label %is_quic_draft_max.exit54.i, label %is_quic_draft_max.exit46.thread.i -is_quic_draft_max.exit47.thread.i: ; preds = %is_quic_draft_max.exit47.i, %30, %30, %30, %30, %30 +is_quic_draft_max.exit46.thread.i: ; preds = %is_quic_draft_max.exit46.i, %30, %30, %30, %30, %30 %42 = getelementptr inbounds nuw i8, ptr %0, i64 1 %43 = load i8, ptr %0, align 8 %44 = zext i8 %43 to i64 %45 = call i32 @ws_hmac_buffer(i32 noundef 8, ptr noundef nonnull %8, ptr noundef nonnull %42, i64 noundef range(i64 0, 256) %44, ptr noundef nonnull @quic_derive_initial_secrets.handshake_salt_draft_23, i64 noundef 20) #15 br label %67 -is_quic_draft_max.exit56.i: ; preds = %is_quic_draft_max.exit47.i +is_quic_draft_max.exit54.i: ; preds = %is_quic_draft_max.exit46.i %46 = add i8 %33, -33 %47 = icmp ult i8 %46, -32 - br i1 %47, label %is_quic_draft_max.exit, label %is_quic_draft_max.exit56.thread.i + br i1 %47, label %is_quic_draft_max.exit, label %is_quic_draft_max.exit54.thread.i -is_quic_draft_max.exit56.thread.i: ; preds = %is_quic_draft_max.exit56.i +is_quic_draft_max.exit54.thread.i: ; preds = %is_quic_draft_max.exit54.i %48 = getelementptr inbounds nuw i8, ptr %0, i64 1 %49 = load i8, ptr %0, align 8 %50 = zext i8 %49 to i64 @@ -5248,8 +5245,8 @@ is_quic_draft_max.exit.thread: ; preds = %.thread.i %55 = zext i8 %54 to i64 br label %61 -is_quic_draft_max.exit: ; preds = %is_quic_draft_max.exit56.i, %52 - %.0.i.i = phi i8 [ %switch.select20.i.i, %52 ], [ %33, %is_quic_draft_max.exit56.i ] +is_quic_draft_max.exit: ; preds = %is_quic_draft_max.exit54.i, %52 + %.0.i.i = phi i8 [ %switch.select20.i.i, %52 ], [ %33, %is_quic_draft_max.exit54.i ] %56 = add i8 %.0.i.i, -35 %57 = icmp ult i8 %56, -34 %58 = getelementptr inbounds nuw i8, ptr %0, i64 1 @@ -5267,8 +5264,8 @@ is_quic_draft_max.exit: ; preds = %is_quic_draft_max.e %66 = call i32 @ws_hmac_buffer(i32 noundef 8, ptr noundef nonnull %8, ptr noundef nonnull %58, i64 noundef range(i64 0, 256) %60, ptr noundef nonnull @quic_derive_initial_secrets.handshake_salt_v2, i64 noundef 20) #15 br label %67 -67: ; preds = %65, %61, %is_quic_draft_max.exit56.thread.i, %is_quic_draft_max.exit47.thread.i, %is_quic_draft_max.exit.thread62.i, %23, %18, %13 - %.0.i = phi i32 [ %17, %13 ], [ %22, %18 ], [ %27, %23 ], [ %39, %is_quic_draft_max.exit.thread62.i ], [ %45, %is_quic_draft_max.exit47.thread.i ], [ %51, %is_quic_draft_max.exit56.thread.i ], [ %64, %61 ], [ %66, %65 ] +67: ; preds = %65, %61, %is_quic_draft_max.exit54.thread.i, %is_quic_draft_max.exit46.thread.i, %is_quic_draft_max.exit.thread60.i, %23, %18, %13 + %.0.i = phi i32 [ %17, %13 ], [ %22, %18 ], [ %27, %23 ], [ %39, %is_quic_draft_max.exit.thread60.i ], [ %45, %is_quic_draft_max.exit46.thread.i ], [ %51, %is_quic_draft_max.exit54.thread.i ], [ %64, %61 ], [ %66, %65 ] %.not36.i = icmp eq i32 %.0.i, 0 br i1 %.not36.i, label %72, label %68 @@ -5307,8 +5304,8 @@ is_quic_draft_max.exit: ; preds = %is_quic_draft_max.e store i32 32, ptr %78, align 8 store ptr null, ptr %5, align 8 %79 = call i32 @tls13_hkdf_expand_label(i32 noundef 8, ptr noundef nonnull %4, ptr noundef nonnull @.str.509, ptr noundef nonnull @.str.507, i16 noundef zeroext 32, ptr noundef nonnull %5) #15 - %.not.i57.i = icmp eq i32 %79, 0 - br i1 %.not.i57.i, label %80, label %81 + %.not.i55.i = icmp eq i32 %79, 0 + br i1 %.not.i55.i, label %80, label %81 80: ; preds = %76 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) @@ -8421,41 +8418,41 @@ define internal fastcc void @quic_update_key(i32 noundef %0, i32 noundef %1, ptr 8: ; preds = %3 switch i32 %0, label %.thread [ - i32 -87117823, label %is_quic_draft_max.exit.thread22 - i32 -87117810, label %is_quic_draft_max.exit19 - i32 -87117822, label %is_quic_draft_max.exit19 - i32 1412445489, label %is_quic_draft_max.exit19 - i32 1412445488, label %is_quic_draft_max.exit19 - i32 1362113840, label %is_quic_draft_max.exit19 + i32 -87117823, label %is_quic_draft_max.exit.thread21 + i32 -87117810, label %is_quic_draft_max.exit18 + i32 -87117822, label %is_quic_draft_max.exit18 + i32 1412445489, label %is_quic_draft_max.exit18 + i32 1412445488, label %is_quic_draft_max.exit18 + i32 1362113840, label %is_quic_draft_max.exit18 ] .thread: ; preds = %8 %9 = and i32 %0, 252645135 %10 = icmp eq i32 %9, 168430090 - br i1 %10, label %is_quic_draft_max.exit19, label %14 + br i1 %10, label %is_quic_draft_max.exit18, label %14 is_quic_draft_max.exit: ; preds = %3 %11 = trunc i32 %0 to i8 %12 = add i8 %11, -24 %13 = icmp ult i8 %12, -23 - br i1 %13, label %is_quic_draft_max.exit19, label %is_quic_draft_max.exit.thread22 + br i1 %13, label %is_quic_draft_max.exit18, label %is_quic_draft_max.exit.thread21 14: ; preds = %.thread - %switch.selectcmp.i.i15 = icmp eq i32 %0, 1798521807 - %switch.select.i.i16 = select i1 %switch.selectcmp.i.i15, i8 100, i8 0 - %switch.selectcmp19.i.i17 = icmp eq i32 %0, 1 - %switch.select20.i.i18 = select i1 %switch.selectcmp19.i.i17, i8 34, i8 %switch.select.i.i16 - br label %is_quic_draft_max.exit19 - -is_quic_draft_max.exit19: ; preds = %is_quic_draft_max.exit, %8, %8, %8, %8, %8, %.thread, %14 - %.0.i.i13 = phi i8 [ 34, %.thread ], [ %switch.select20.i.i18, %14 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ %11, %is_quic_draft_max.exit ] + %switch.selectcmp.i.i14 = icmp eq i32 %0, 1798521807 + %switch.select.i.i15 = select i1 %switch.selectcmp.i.i14, i8 100, i8 0 + %switch.selectcmp19.i.i16 = icmp eq i32 %0, 1 + %switch.select20.i.i17 = select i1 %switch.selectcmp19.i.i16, i8 34, i8 %switch.select.i.i15 + br label %is_quic_draft_max.exit18 + +is_quic_draft_max.exit18: ; preds = %is_quic_draft_max.exit, %8, %8, %8, %8, %8, %.thread, %14 + %.0.i.i13 = phi i8 [ 34, %.thread ], [ %switch.select20.i.i17, %14 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ 27, %8 ], [ %11, %is_quic_draft_max.exit ] %15 = add i8 %.0.i.i13, -35 %16 = icmp ult i8 %15, -34 %17 = select i1 %16, ptr @.str.598, ptr @.str.597 - br label %is_quic_draft_max.exit.thread22 + br label %is_quic_draft_max.exit.thread21 -is_quic_draft_max.exit.thread22: ; preds = %8, %is_quic_draft_max.exit, %is_quic_draft_max.exit19 - %18 = phi ptr [ %17, %is_quic_draft_max.exit19 ], [ @.str.596, %is_quic_draft_max.exit ], [ @.str.596, %8 ] +is_quic_draft_max.exit.thread21: ; preds = %8, %is_quic_draft_max.exit, %is_quic_draft_max.exit18 + %18 = phi ptr [ %17, %is_quic_draft_max.exit18 ], [ @.str.596, %is_quic_draft_max.exit ], [ @.str.596, %8 ] %19 = load ptr, ptr %2, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) @@ -8468,13 +8465,13 @@ is_quic_draft_max.exit.thread22: ; preds = %8, %is_quic_draft_m %.not.i = icmp eq i32 %22, 0 br i1 %.not.i, label %23, label %24 -23: ; preds = %is_quic_draft_max.exit.thread22 +23: ; preds = %is_quic_draft_max.exit.thread21 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void (ptr, ...) @proto_report_dissector_bug(ptr noundef nonnull @.str.394, ptr noundef nonnull @.str.395, i32 noundef 3375, ptr noundef nonnull @.str.599) #14 unreachable -24: ; preds = %is_quic_draft_max.exit.thread22 +24: ; preds = %is_quic_draft_max.exit.thread21 %25 = load ptr, ptr %5, align 8 %26 = zext i32 %6 to i64 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %19, ptr align 1 %25, i64 %26, i1 false) diff --git a/bench/wireshark/optimized/packet-rdp.c.ll b/bench/wireshark/optimized/packet-rdp.c.ll index 99ac10bab47..61e6315c373 100644 --- a/bench/wireshark/optimized/packet-rdp.c.ll +++ b/bench/wireshark/optimized/packet-rdp.c.ll @@ -2631,8 +2631,8 @@ dissect_rdp_rdstls.exit: ; preds = %.loopexit.i, %124, 149: ; preds = %146 %150 = zext nneg i8 %147 to i32 - %.not155.i = icmp sgt i8 %147, -1 - br i1 %.not155.i, label %158, label %151 + %.not154.i = icmp sgt i8 %147, -1 + br i1 %.not154.i, label %158, label %151 151: ; preds = %149 %152 = and i8 %147, 127 @@ -2644,11 +2644,11 @@ dissect_rdp_rdstls.exit: ; preds = %.loopexit.i, %124, br label %158 158: ; preds = %151, %149 - %.0147.i = phi i32 [ 2, %151 ], [ 1, %149 ] - %.0145.i = phi i32 [ %157, %151 ], [ %150, %149 ] + %.0146.i = phi i32 [ 2, %151 ], [ 1, %149 ] + %.0144.i = phi i32 [ %157, %151 ], [ %150, %149 ] %159 = call i32 @tvb_captured_length(ptr noundef %0) #12 - %.not156.i = icmp eq i32 %.0145.i, %159 - br i1 %.not156.i, label %160, label %dissect_rdp_fastpath.exit + %.not155.i = icmp eq i32 %.0144.i, %159 + br i1 %.not155.i, label %160, label %dissect_rdp_fastpath.exit 160: ; preds = %158 %161 = call ptr @find_conversation_pinfo(ptr noundef %1, i32 noundef 0) #12 @@ -2711,7 +2711,7 @@ rdp_isServerAddressTarget.exit.i: ; preds = %186, %179, %171, %1 %197 = load ptr, ptr %194, align 8 call void @col_set_str(ptr noundef %197, i32 noundef 25, ptr noundef nonnull @.str.981) #12 %198 = load i32, ptr @proto_rdp, align 4 - %199 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %198, ptr noundef %0, i32 noundef 0, i32 noundef %.0145.i, i32 noundef 0) #12 + %199 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %198, ptr noundef %0, i32 noundef 0, i32 noundef %.0144.i, i32 noundef 0) #12 %200 = load i32, ptr @ett_rdp, align 4 %201 = call ptr @proto_item_add_subtree(ptr noundef %199, i32 noundef %200) #12 %202 = load i32, ptr @hf_rdp_fastpathHeader, align 4 @@ -2719,14 +2719,14 @@ rdp_isServerAddressTarget.exit.i: ; preds = %186, %179, %171, %1 %spec.select = select i1 %.0.i.i, ptr @fastpath_serverHeader_flags, ptr @fastpath_clientHeader_flags %204 = call ptr @proto_tree_add_bitmask(ptr noundef %201, ptr noundef %0, i32 noundef 0, i32 noundef %202, i32 noundef %203, ptr noundef nonnull %spec.select, i32 noundef -2147483648) #12 %205 = load i32, ptr @hf_rdp_fastpathPDULength, align 4 - %206 = call ptr @proto_tree_add_uint(ptr noundef %201, i32 noundef %205, ptr noundef %0, i32 noundef 1, i32 noundef %.0147.i, i32 noundef %.0145.i) #12 + %206 = call ptr @proto_tree_add_uint(ptr noundef %201, i32 noundef %205, ptr noundef %0, i32 noundef 1, i32 noundef %.0146.i, i32 noundef %.0144.i) #12 br i1 %.0.i.i, label %207, label %210 207: ; preds = %rdp_isServerAddressTarget.exit.i - %.not15814.i = icmp slt i8 %143, 0 - %spec.select.v.i = select i1 %.not15814.i, i32 9, i32 1 - %spec.select.i = add nuw nsw i32 %.0147.i, %spec.select.v.i - %208 = add nsw i32 %.0145.i, -1 + %.not15714.i = icmp slt i8 %143, 0 + %spec.select.v.i = select i1 %.not15714.i, i32 9, i32 1 + %spec.select.i = add nuw nsw i32 %.0146.i, %spec.select.v.i + %208 = add nsw i32 %.0144.i, -1 %209 = icmp ult i32 %spec.select.i, %208 br i1 %209, label %.lr.ph19.i, label %dissect_rdp_fastpath.exit @@ -2734,11 +2734,11 @@ rdp_isServerAddressTarget.exit.i: ; preds = %186, %179, %171, %1 %211 = lshr exact i32 %144, 2 %212 = and i32 %211, 15 store i32 %212, ptr %5, align 4 - %.not158113.i = icmp slt i8 %143, 0 - %spec.select2.v.i = select i1 %.not158113.i, i32 9, i32 1 - %spec.select2.i = add nuw nsw i32 %.0147.i, %spec.select2.v.i - %.not160.i = icmp eq i32 %212, 0 - br i1 %.not160.i, label %213, label %.lr.ph.i.preheader + %.not157113.i = icmp slt i8 %143, 0 + %spec.select2.v.i = select i1 %.not157113.i, i32 9, i32 1 + %spec.select2.i = add nuw nsw i32 %.0146.i, %spec.select2.v.i + %.not159.i = icmp eq i32 %212, 0 + br i1 %.not159.i, label %213, label %.lr.ph.i.preheader 213: ; preds = %210 %214 = load i32, ptr @hf_rdp_fastpathClientNumEvents2, align 4 @@ -2754,7 +2754,7 @@ rdp_isServerAddressTarget.exit.i: ; preds = %186, %179, %171, %1 .lr.ph.i: ; preds = %.lr.ph.i.preheader, %262 %.217.i = phi i32 [ %263, %262 ], [ %.217.i.ph, %.lr.ph.i.preheader ] - %.014916.i = phi i32 [ %264, %262 ], [ 0, %.lr.ph.i.preheader ] + %.014816.i = phi i32 [ %264, %262 ], [ 0, %.lr.ph.i.preheader ] %218 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.217.i) #12 %219 = lshr i8 %218, 5 switch i8 %219, label %default.unreachable [ @@ -2790,16 +2790,16 @@ default.unreachable: ; preds = %.lr.ph.i unreachable 226: ; preds = %225, %224, %223, %222, %221, %220, %.lr.ph.i - %.0152.ph.i = phi ptr [ @.str.851, %.lr.ph.i ], [ @.str.852, %220 ], [ @.str.853, %221 ], [ @.str.854, %222 ], [ @.str.855, %223 ], [ @.str.856, %224 ], [ @.str.982, %225 ] - %.0151.ph.i = phi ptr [ @fastpath_scancode_flags, %.lr.ph.i ], [ @fastpath_inputHeader_flags, %220 ], [ @fastpath_inputHeader_flags, %221 ], [ @fastpath_inputsync_flags, %222 ], [ @fastpath_inputunicode_flags, %223 ], [ @fastpath_inputHeader_flags, %224 ], [ @fastpath_inputHeader_flags, %225 ] - %.0150.ph.i = phi i32 [ 2, %.lr.ph.i ], [ 7, %220 ], [ 7, %221 ], [ 1, %222 ], [ 3, %223 ], [ 7, %224 ], [ 5, %225 ] + %.0151.ph.i = phi ptr [ @.str.851, %.lr.ph.i ], [ @.str.852, %220 ], [ @.str.853, %221 ], [ @.str.854, %222 ], [ @.str.855, %223 ], [ @.str.856, %224 ], [ @.str.982, %225 ] + %.0150.ph.i = phi ptr [ @fastpath_scancode_flags, %.lr.ph.i ], [ @fastpath_inputHeader_flags, %220 ], [ @fastpath_inputHeader_flags, %221 ], [ @fastpath_inputsync_flags, %222 ], [ @fastpath_inputunicode_flags, %223 ], [ @fastpath_inputHeader_flags, %224 ], [ @fastpath_inputHeader_flags, %225 ] + %.0149.ph.i = phi i32 [ 2, %.lr.ph.i ], [ 7, %220 ], [ 7, %221 ], [ 1, %222 ], [ 3, %223 ], [ 7, %224 ], [ 5, %225 ] %227 = load ptr, ptr %194, align 8 - call void @col_append_sep_str(ptr noundef %227, i32 noundef 25, ptr noundef nonnull @.str.983, ptr noundef nonnull %.0152.ph.i) #12 + call void @col_append_sep_str(ptr noundef %227, i32 noundef 25, ptr noundef nonnull @.str.983, ptr noundef nonnull %.0151.ph.i) #12 %228 = load i32, ptr @ett_rdp_fastpath, align 4 - %229 = call ptr @proto_tree_add_subtree(ptr noundef %201, ptr noundef %0, i32 noundef %.217.i, i32 noundef %.0150.ph.i, i32 noundef %228, ptr noundef null, ptr noundef nonnull %.0152.ph.i) #12 + %229 = call ptr @proto_tree_add_subtree(ptr noundef %201, ptr noundef %0, i32 noundef %.217.i, i32 noundef %.0149.ph.i, i32 noundef %228, ptr noundef null, ptr noundef nonnull %.0151.ph.i) #12 %230 = load i32, ptr @hf_rdp_fastpathInputHeader, align 4 %231 = load i32, ptr @ett_rdp_fastpath_header, align 4 - %232 = call ptr @proto_tree_add_bitmask(ptr noundef %229, ptr noundef %0, i32 noundef %.217.i, i32 noundef %230, i32 noundef %231, ptr noundef nonnull %.0151.ph.i, i32 noundef -2147483648) #12 + %232 = call ptr @proto_tree_add_bitmask(ptr noundef %229, ptr noundef %0, i32 noundef %.217.i, i32 noundef %230, i32 noundef %231, ptr noundef nonnull %.0150.ph.i, i32 noundef -2147483648) #12 switch i8 %219, label %262 [ i8 0, label %.sink.split.i i8 1, label %233 @@ -2855,9 +2855,9 @@ default.unreachable: ; preds = %.lr.ph.i br label %262 262: ; preds = %.sink.split.i, %226, %.lr.ph.i - %.015012.i = phi i32 [ %.0150.ph.i, %226 ], [ 1, %.lr.ph.i ], [ %.0150.ph.i, %.sink.split.i ] - %263 = add i32 %.015012.i, %.217.i - %264 = add nuw i32 %.014916.i, 1 + %.014912.i = phi i32 [ %.0149.ph.i, %226 ], [ 1, %.lr.ph.i ], [ %.0149.ph.i, %.sink.split.i ] + %263 = add i32 %.014912.i, %.217.i + %264 = add nuw i32 %.014816.i, 1 %265 = load i32, ptr %5, align 4 %266 = icmp ult i32 %264, %265 br i1 %266, label %.lr.ph.i, label %dissect_rdp_fastpath.exit, !llvm.loop !7 @@ -2867,13 +2867,13 @@ default.unreachable: ; preds = %.lr.ph.i %267 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.318.i) #12 %268 = and i8 %267, 15 %269 = add nuw i32 %.318.i, 1 - %.not159.i = icmp ult i8 %267, 64 + %.not158.i = icmp ult i8 %267, 64 %270 = add i32 %.318.i, 2 - %spec.select162.i = select i1 %.not159.i, i16 1, i16 2 - %spec.select163.i = select i1 %.not159.i, i32 %269, i32 %270 - %271 = call zeroext i16 @tvb_get_guint16(ptr noundef %0, i32 noundef %spec.select163.i, i32 noundef -2147483648) #12 + %spec.select161.i = select i1 %.not158.i, i16 1, i16 2 + %spec.select162.i = select i1 %.not158.i, i32 %269, i32 %270 + %271 = call zeroext i16 @tvb_get_guint16(ptr noundef %0, i32 noundef %spec.select162.i, i32 noundef -2147483648) #12 %272 = zext i16 %271 to i32 - %273 = add i16 %spec.select162.i, %271 + %273 = add i16 %spec.select161.i, %271 %274 = icmp samesign ult i8 %268, 13 br i1 %274, label %switch.lookup, label %276 @@ -2896,7 +2896,7 @@ switch.lookup: ; preds = %.lr.ph19.i %284 = call ptr @proto_tree_add_item(ptr noundef %280, i32 noundef %283, ptr noundef %0, i32 noundef %.318.i, i32 noundef 1, i32 noundef -2147483648) #12 %285 = load i32, ptr @hf_rdp_fastpathServerCompression, align 4 %286 = call ptr @proto_tree_add_item(ptr noundef %280, i32 noundef %285, ptr noundef %0, i32 noundef %.318.i, i32 noundef 1, i32 noundef -2147483648) #12 - br i1 %.not159.i, label %291, label %287 + br i1 %.not158.i, label %291, label %287 287: ; preds = %276 %288 = load i32, ptr @hf_rdp_fastpathServerCompressionType, align 4 @@ -2914,13 +2914,13 @@ switch.lookup: ; preds = %.lr.ph19.i br i1 %296, label %.lr.ph19.i, label %dissect_rdp_fastpath.exit, !llvm.loop !8 dissect_rdp_fastpath.exit: ; preds = %262, %291, %139, %142, %146, %158, %207, %213 - %.0143.i = phi i32 [ 0, %139 ], [ 0, %142 ], [ 0, %146 ], [ 0, %158 ], [ 1, %207 ], [ 1, %213 ], [ 1, %291 ], [ 1, %262 ] + %.0142.i = phi i32 [ 0, %139 ], [ 0, %142 ], [ 0, %146 ], [ 0, %158 ], [ 1, %207 ], [ 1, %213 ], [ 1, %291 ], [ 1, %262 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) br label %297 297: ; preds = %dissect_rdp_rdstls.exit, %4, %dissect_rdp_fastpath.exit - %.0 = phi i32 [ %.0143.i, %dissect_rdp_fastpath.exit ], [ 1, %4 ], [ 1, %dissect_rdp_rdstls.exit ] + %.0 = phi i32 [ %.0142.i, %dissect_rdp_fastpath.exit ], [ 1, %4 ], [ 1, %dissect_rdp_rdstls.exit ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-scsi.c.ll b/bench/wireshark/optimized/packet-scsi.c.ll index 4767de2c068..f47893383a8 100644 --- a/bench/wireshark/optimized/packet-scsi.c.ll +++ b/bench/wireshark/optimized/packet-scsi.c.ll @@ -3256,7 +3256,6 @@ target triple = "x86_64-pc-linux-gnu" @.str.2409 = private unnamed_addr constant [18 x i8] c"Multimedia Device\00", align 1 @.str.2410 = private unnamed_addr constant [29 x i8] c"%s:%u: failed assertion \22%s\22\00", align 1 @.str.2411 = private unnamed_addr constant [9 x i8] c"tap_data\00", align 1 -@switch.table.dissect_spc_inquiry = private unnamed_addr constant [4 x ptr] [ptr @dissect_spc_inquiry.aca_fields_spc, ptr @dissect_spc_inquiry.aca_fields_spc2, ptr @dissect_spc_inquiry.aca_fields_spc3, ptr @dissect_spc_inquiry.aca_fields_spc3], align 8 @switch.table.dissect_spc_inq_bqueflags = private unnamed_addr constant [3 x ptr] [ptr @dissect_spc_inq_bqueflags.bqe_fields_spc, ptr @dissect_spc_inq_bqueflags.bqe_fields_spc2, ptr @dissect_spc_inq_bqueflags.bqe_fields_spc2], align 8 @switch.table.dissect_spc_inq_reladrflags = private unnamed_addr constant [3 x ptr] [ptr @dissect_spc_inq_reladrflags.reladr_fields_spc, ptr @dissect_spc_inq_reladrflags.reladr_fields_spc2, ptr @dissect_spc_inq_reladrflags.reladr_fields_spc3], align 8 @switch.table.dissect_scsi_modepage = private unnamed_addr constant [9 x ptr] [ptr @scsi_sbc_modepage_val, ptr @scsi_ssc2_modepage_val, ptr @scsi_spc_modepage_val, ptr @scsi_spc_modepage_val, ptr @scsi_spc_modepage_val, ptr @scsi_mmc5_modepage_val, ptr @scsi_spc_modepage_val, ptr @scsi_spc_modepage_val, ptr @scsi_smc_modepage_val], align 8 @@ -3791,12 +3790,12 @@ proto_item_set_generated.exit.i: ; preds = %120, %117, %.lr.ph. store volatile i32 %293, ptr %11, align 4 %.0..0..0..0.8 = load volatile i32, ptr %11, align 4 %294 = icmp eq i32 %.0..0..0..0.8, 0 - br i1 %294, label %295, label %348 + br i1 %294, label %295, label %345 295: ; preds = %292 %.0..0..0..0.16 = load volatile ptr, ptr %10, align 8 %296 = icmp eq ptr %.0..0..0..0.16, null - br i1 %296, label %297, label %348 + br i1 %296, label %297, label %345 297: ; preds = %295 %.0..0..0..0.26 = load volatile i32, ptr %9, align 4 @@ -3822,189 +3821,181 @@ proto_item_set_generated.exit.i: ; preds = %120, %117, %.lr.ph. %309 = add i32 %.0..0..0..0.32, 1 store volatile i32 %309, ptr %9, align 4 %310 = zext i8 %306 to i32 - %switch.tableidx = add i8 %306, -3 - %311 = icmp ult i8 %switch.tableidx, 4 - br i1 %311, label %switch.lookup, label %313 - -switch.lookup: ; preds = %297 - %312 = zext nneg i8 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [4 x ptr], ptr @switch.table.dissect_spc_inquiry, i64 0, i64 %312 - %switch.load = load ptr, ptr %switch.gep, align 8 - br label %313 - -313: ; preds = %297, %switch.lookup - %dissect_spc_inquiry.aca_fields_spc3.sink = phi ptr [ %switch.load, %switch.lookup ], [ @dissect_spc_inquiry.aca_fields_spc3, %297 ] + %switch.selectcmp = icmp eq i8 %306, 4 + %switch.select = select i1 %switch.selectcmp, ptr @dissect_spc_inquiry.aca_fields_spc2, ptr @dissect_spc_inquiry.aca_fields_spc3 + %switch.selectcmp217 = icmp eq i8 %306, 3 + %switch.select218 = select i1 %switch.selectcmp217, ptr @dissect_spc_inquiry.aca_fields_spc, ptr %switch.select %.0..0..0..0.36 = load volatile i32, ptr %9, align 4 - %314 = load i32, ptr @hf_scsi_inq_acaflags, align 4 - %315 = load i32, ptr @ett_scsi_inq_acaflags, align 4 - %316 = call ptr @proto_tree_add_bitmask(ptr noundef %2, ptr noundef %285, i32 noundef %.0..0..0..0.36, i32 noundef %314, i32 noundef %315, ptr noundef nonnull %dissect_spc_inquiry.aca_fields_spc3.sink, i32 noundef 0) #10 + %311 = load i32, ptr @hf_scsi_inq_acaflags, align 4 + %312 = load i32, ptr @ett_scsi_inq_acaflags, align 4 + %313 = call ptr @proto_tree_add_bitmask(ptr noundef %2, ptr noundef %285, i32 noundef %.0..0..0..0.36, i32 noundef %311, i32 noundef %312, ptr noundef nonnull %switch.select218, i32 noundef 0) #10 %.0..0..0..0.37 = load volatile i32, ptr %9, align 4 - %317 = add i32 %.0..0..0..0.37, 1 - store volatile i32 %317, ptr %9, align 4 + %314 = add i32 %.0..0..0..0.37, 1 + store volatile i32 %314, ptr %9, align 4 %.0..0..0..0.38 = load volatile i32, ptr %9, align 4 - %318 = call zeroext i8 @tvb_get_guint8(ptr noundef %285, i32 noundef %.0..0..0..0.38) #10 + %315 = call zeroext i8 @tvb_get_guint8(ptr noundef %285, i32 noundef %.0..0..0..0.38) #10 %.0..0..0..0.39 = load volatile i32, ptr %9, align 4 - %319 = load i32, ptr @hf_scsi_inq_add_len, align 4 + %316 = load i32, ptr @hf_scsi_inq_add_len, align 4 %.0..0..0..0.40 = load volatile i32, ptr %9, align 4 - %320 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %319, ptr noundef %285, i32 noundef %.0..0..0..0.40, i32 noundef 1, i32 noundef 0) #10 + %317 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %316, ptr noundef %285, i32 noundef %.0..0..0..0.40, i32 noundef 1, i32 noundef 0) #10 %.0..0..0..0.41 = load volatile i32, ptr %9, align 4 - %321 = add i32 %.0..0..0..0.41, 1 - store volatile i32 %321, ptr %9, align 4 + %318 = add i32 %.0..0..0..0.41, 1 + store volatile i32 %318, ptr %9, align 4 %.0..0..0..0.42 = load volatile i32, ptr %9, align 4 - %322 = call fastcc i32 @dissect_spc_inq_sccsflags(ptr noundef %285, i32 noundef %.0..0..0..0.42, ptr noundef %2, i32 noundef %310) - store volatile i32 %322, ptr %9, align 4 + %319 = call fastcc i32 @dissect_spc_inq_sccsflags(ptr noundef %285, i32 noundef %.0..0..0..0.42, ptr noundef %2, i32 noundef %310) + store volatile i32 %319, ptr %9, align 4 %.0..0..0..0.43 = load volatile i32, ptr %9, align 4 - %323 = call fastcc i32 @dissect_spc_inq_bqueflags(ptr noundef %285, i32 noundef %.0..0..0..0.43, ptr noundef %2, i32 noundef %310) - store volatile i32 %323, ptr %9, align 4 + %320 = call fastcc i32 @dissect_spc_inq_bqueflags(ptr noundef %285, i32 noundef %.0..0..0..0.43, ptr noundef %2, i32 noundef %310) + store volatile i32 %320, ptr %9, align 4 %.0..0..0..0.44 = load volatile i32, ptr %9, align 4 - %324 = call fastcc i32 @dissect_spc_inq_reladrflags(ptr noundef %285, i32 noundef %.0..0..0..0.44, ptr noundef %2, i32 noundef %310) - store volatile i32 %324, ptr %9, align 4 - %325 = load i32, ptr @hf_scsi_inq_vendor_id, align 4 + %321 = call fastcc i32 @dissect_spc_inq_reladrflags(ptr noundef %285, i32 noundef %.0..0..0..0.44, ptr noundef %2, i32 noundef %310) + store volatile i32 %321, ptr %9, align 4 + %322 = load i32, ptr @hf_scsi_inq_vendor_id, align 4 %.0..0..0..0.45 = load volatile i32, ptr %9, align 4 - %326 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %325, ptr noundef %285, i32 noundef %.0..0..0..0.45, i32 noundef 8, i32 noundef 0) #10 + %323 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %322, ptr noundef %285, i32 noundef %.0..0..0..0.45, i32 noundef 8, i32 noundef 0) #10 %.0..0..0..0.46 = load volatile i32, ptr %9, align 4 - %327 = add i32 %.0..0..0..0.46, 8 - store volatile i32 %327, ptr %9, align 4 - %328 = load i32, ptr @hf_scsi_inq_product_id, align 4 + %324 = add i32 %.0..0..0..0.46, 8 + store volatile i32 %324, ptr %9, align 4 + %325 = load i32, ptr @hf_scsi_inq_product_id, align 4 %.0..0..0..0.47 = load volatile i32, ptr %9, align 4 - %329 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %328, ptr noundef %285, i32 noundef %.0..0..0..0.47, i32 noundef 16, i32 noundef 0) #10 + %326 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %325, ptr noundef %285, i32 noundef %.0..0..0..0.47, i32 noundef 16, i32 noundef 0) #10 %.0..0..0..0.48 = load volatile i32, ptr %9, align 4 - %330 = add i32 %.0..0..0..0.48, 16 - store volatile i32 %330, ptr %9, align 4 - %331 = load i32, ptr @hf_scsi_inq_product_rev, align 4 + %327 = add i32 %.0..0..0..0.48, 16 + store volatile i32 %327, ptr %9, align 4 + %328 = load i32, ptr @hf_scsi_inq_product_rev, align 4 %.0..0..0..0.49 = load volatile i32, ptr %9, align 4 - %332 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %331, ptr noundef %285, i32 noundef %.0..0..0..0.49, i32 noundef 4, i32 noundef 0) #10 + %329 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %328, ptr noundef %285, i32 noundef %.0..0..0..0.49, i32 noundef 4, i32 noundef 0) #10 %.0..0..0..0.50 = load volatile i32, ptr %9, align 4 - %333 = add i32 %.0..0..0..0.50, 4 - store volatile i32 %333, ptr %9, align 4 - %334 = load i32, ptr @hf_scsi_inq_vendor_specific, align 4 + %330 = add i32 %.0..0..0..0.50, 4 + store volatile i32 %330, ptr %9, align 4 + %331 = load i32, ptr @hf_scsi_inq_vendor_specific, align 4 %.0..0..0..0.51 = load volatile i32, ptr %9, align 4 - %335 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %334, ptr noundef %285, i32 noundef %.0..0..0..0.51, i32 noundef 20, i32 noundef 0) #10 + %332 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %331, ptr noundef %285, i32 noundef %.0..0..0..0.51, i32 noundef 20, i32 noundef 0) #10 %.0..0..0..0.52 = load volatile i32, ptr %9, align 4 - %336 = add i32 %.0..0..0..0.52, 20 - store volatile i32 %336, ptr %9, align 4 + %333 = add i32 %.0..0..0..0.52, 20 + store volatile i32 %333, ptr %9, align 4 %.0..0..0..0.53 = load volatile i32, ptr %9, align 4 - %337 = add i32 %.0..0..0..0.53, 2 - store volatile i32 %337, ptr %9, align 4 - br label %338 + %334 = add i32 %.0..0..0..0.53, 2 + store volatile i32 %334, ptr %9, align 4 + br label %335 -338: ; preds = %313, %338 - %.0192 = phi i8 [ 0, %313 ], [ %342, %338 ] - %339 = load i32, ptr @hf_scsi_inq_version_desc, align 4 +335: ; preds = %297, %335 + %.0192 = phi i8 [ 0, %297 ], [ %339, %335 ] + %336 = load i32, ptr @hf_scsi_inq_version_desc, align 4 %.0..0..0..0.54 = load volatile i32, ptr %9, align 4 - %340 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %339, ptr noundef %285, i32 noundef %.0..0..0..0.54, i32 noundef 2, i32 noundef 0) #10 + %337 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %336, ptr noundef %285, i32 noundef %.0..0..0..0.54, i32 noundef 2, i32 noundef 0) #10 %.0..0..0..0.55 = load volatile i32, ptr %9, align 4 - %341 = add i32 %.0..0..0..0.55, 2 - store volatile i32 %341, ptr %9, align 4 - %342 = add nuw nsw i8 %.0192, 1 - %exitcond.not = icmp eq i8 %342, 8 - br i1 %exitcond.not, label %343, label %338, !llvm.loop !7 - -343: ; preds = %338 - %344 = zext i8 %318 to i32 - %345 = add i32 %.0..0..0..0.39, %344 - %.not165 = icmp eq i32 %345, 0 - br i1 %.not165, label %348, label %346 - -346: ; preds = %343 - %347 = call zeroext i8 @tvb_get_guint8(ptr noundef %285, i32 noundef %345) #10 - br label %348 - -348: ; preds = %343, %346, %295, %292 + %338 = add i32 %.0..0..0..0.55, 2 + store volatile i32 %338, ptr %9, align 4 + %339 = add nuw nsw i8 %.0192, 1 + %exitcond.not = icmp eq i8 %339, 8 + br i1 %exitcond.not, label %340, label %335, !llvm.loop !7 + +340: ; preds = %335 + %341 = zext i8 %315 to i32 + %342 = add i32 %.0..0..0..0.39, %341 + %.not165 = icmp eq i32 %342, 0 + br i1 %.not165, label %345, label %343 + +343: ; preds = %340 + %344 = call zeroext i8 @tvb_get_guint8(ptr noundef %285, i32 noundef %342) #10 + br label %345 + +345: ; preds = %340, %343, %295, %292 %.0..0..0..0.9 = load volatile i32, ptr %11, align 4 - %349 = icmp eq i32 %.0..0..0..0.9, 0 - br i1 %349, label %350, label %357 + %346 = icmp eq i32 %.0..0..0..0.9, 0 + br i1 %346, label %347, label %354 -350: ; preds = %348 +347: ; preds = %345 %.0..0..0..0.17 = load volatile ptr, ptr %10, align 8 %.not166 = icmp eq ptr %.0..0..0..0.17, null - br i1 %.not166, label %357, label %351 + br i1 %.not166, label %354, label %348 -351: ; preds = %350 +348: ; preds = %347 %.0..0..0..0.18 = load volatile ptr, ptr %10, align 8 - %352 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.18, i64 8 - %353 = load volatile i64, ptr %352, align 8 - %354 = icmp eq i64 %353, 1 - br i1 %354, label %355, label %357 + %349 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.18, i64 8 + %350 = load volatile i64, ptr %349, align 8 + %351 = icmp eq i64 %350, 1 + br i1 %351, label %352, label %354 -355: ; preds = %351 +352: ; preds = %348 %.0..0..0..0.10 = load volatile i32, ptr %11, align 4 - %356 = or i32 %.0..0..0..0.10, 1 - store volatile i32 %356, ptr %11, align 4 + %353 = or i32 %.0..0..0..0.10, 1 + store volatile i32 %353, ptr %11, align 4 call void @longjmp(ptr noundef nonnull %286, i32 noundef 1) #13 unreachable -357: ; preds = %351, %350, %348 +354: ; preds = %348, %347, %345 %.0..0..0..0.11 = load volatile i32, ptr %11, align 4 - %358 = icmp eq i32 %.0..0..0..0.11, 0 - br i1 %358, label %359, label %366 + %355 = icmp eq i32 %.0..0..0..0.11, 0 + br i1 %355, label %356, label %363 -359: ; preds = %357 +356: ; preds = %354 %.0..0..0..0.19 = load volatile ptr, ptr %10, align 8 %.not167 = icmp eq ptr %.0..0..0..0.19, null - br i1 %.not167, label %366, label %360 + br i1 %.not167, label %363, label %357 -360: ; preds = %359 +357: ; preds = %356 %.0..0..0..0.20 = load volatile ptr, ptr %10, align 8 - %361 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.20, i64 8 - %362 = load volatile i64, ptr %361, align 8 - %363 = icmp eq i64 %362, 2 - br i1 %363, label %364, label %366 + %358 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.20, i64 8 + %359 = load volatile i64, ptr %358, align 8 + %360 = icmp eq i64 %359, 2 + br i1 %360, label %361, label %363 -364: ; preds = %360 +361: ; preds = %357 %.0..0..0..0.12 = load volatile i32, ptr %11, align 4 - %365 = or i32 %.0..0..0..0.12, 1 - store volatile i32 %365, ptr %11, align 4 - br label %366 + %362 = or i32 %.0..0..0..0.12, 1 + store volatile i32 %362, ptr %11, align 4 + br label %363 -366: ; preds = %364, %360, %359, %357 +363: ; preds = %361, %357, %356, %354 %.0..0..0..0.13 = load volatile i32, ptr %11, align 4 - %367 = icmp eq i32 %.0..0..0..0.13, 0 - br i1 %367, label %368, label %375 + %364 = icmp eq i32 %.0..0..0..0.13, 0 + br i1 %364, label %365, label %372 -368: ; preds = %366 +365: ; preds = %363 %.0..0..0..0.21 = load volatile ptr, ptr %10, align 8 %.not168 = icmp eq ptr %.0..0..0..0.21, null - br i1 %.not168, label %375, label %369 + br i1 %.not168, label %372, label %366 -369: ; preds = %368 +366: ; preds = %365 %.0..0..0..0.22 = load volatile ptr, ptr %10, align 8 - %370 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.22, i64 8 - %371 = load volatile i64, ptr %370, align 8 - %372 = icmp eq i64 %371, 3 - br i1 %372, label %373, label %375 + %367 = getelementptr inbounds nuw i8, ptr %.0..0..0..0.22, i64 8 + %368 = load volatile i64, ptr %367, align 8 + %369 = icmp eq i64 %368, 3 + br i1 %369, label %370, label %372 -373: ; preds = %369 +370: ; preds = %366 %.0..0..0..0.14 = load volatile i32, ptr %11, align 4 - %374 = or i32 %.0..0..0..0.14, 1 - store volatile i32 %374, ptr %11, align 4 + %371 = or i32 %.0..0..0..0.14, 1 + store volatile i32 %371, ptr %11, align 4 call void @except_throw(i64 noundef 1, i64 noundef 7, ptr noundef null) #13 unreachable -375: ; preds = %369, %368, %366 +372: ; preds = %366, %365, %363 %.0..0..0..0.15 = load volatile i32, ptr %11, align 4 - %376 = and i32 %.0..0..0..0.15, 1 - %.not169 = icmp eq i32 %376, 0 - br i1 %.not169, label %377, label %379 + %373 = and i32 %.0..0..0..0.15, 1 + %.not169 = icmp eq i32 %373, 0 + br i1 %.not169, label %374, label %376 -377: ; preds = %375 +374: ; preds = %372 %.0..0..0..0.23 = load volatile ptr, ptr %10, align 8 %.not170 = icmp eq ptr %.0..0..0..0.23, null - br i1 %.not170, label %379, label %378 + br i1 %.not170, label %376, label %375 -378: ; preds = %377 +375: ; preds = %374 %.0..0..0..0.24 = load volatile ptr, ptr %10, align 8 call void @except_rethrow(ptr noundef %.0..0..0..0.24) #13 unreachable -379: ; preds = %377, %375 - %380 = getelementptr inbounds nuw i8, ptr %13, i64 40 - %381 = load volatile ptr, ptr %380, align 8 - call void @except_free(ptr noundef %381) #10 - %382 = call ptr @except_pop() #10 +376: ; preds = %374, %372 + %377 = getelementptr inbounds nuw i8, ptr %13, i64 40 + %378 = load volatile ptr, ptr %377, align 8 + call void @except_free(ptr noundef %378) #10 + %379 = call ptr @except_pop() #10 br label %dissect_scsi_evpd.exit -dissect_scsi_evpd.exit: ; preds = %175, %.lr.ph252.i, %33, %264, %263, %242, %198, %180, %177, %176, %149, %140, %138, %129, %.preheader.i, %.preheader238.i, %84, %83, %76, %379, %71 +dissect_scsi_evpd.exit: ; preds = %175, %.lr.ph252.i, %33, %264, %263, %242, %198, %180, %177, %176, %149, %140, %138, %129, %.preheader.i, %.preheader238.i, %84, %83, %76, %376, %71 ret void } @@ -4034,29 +4025,24 @@ declare i32 @_setjmp(ptr noundef) local_unnamed_addr #4 ; Function Attrs: nounwind uwtable define internal fastcc noundef i32 @dissect_spc_inq_sccsflags(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef range(i32 0, 256) %3) unnamed_addr #0 { %trunc = trunc nuw i32 %3 to i8 - switch i8 %trunc, label %6 [ - i8 3, label %10 + switch i8 %trunc, label %5 [ + i8 3, label %9 i8 4, label %.sink.split - i8 5, label %5 - i8 6, label %5 ] -5: ; preds = %4, %4 +5: ; preds = %4 br label %.sink.split -6: ; preds = %4 - br label %.sink.split - -.sink.split: ; preds = %4, %5, %6 - %dissect_spc_inq_sccsflags.sccs_fields_spc3.sink = phi ptr [ @dissect_spc_inq_sccsflags.sccs_fields_spc3, %6 ], [ @dissect_spc_inq_sccsflags.sccs_fields_spc3, %5 ], [ @dissect_spc_inq_sccsflags.sccs_fields_spc2, %4 ] - %7 = load i32, ptr @hf_scsi_inq_sccsflags, align 4 - %8 = load i32, ptr @ett_scsi_inq_sccsflags, align 4 - %9 = tail call ptr @proto_tree_add_bitmask(ptr noundef %2, ptr noundef %0, i32 noundef %1, i32 noundef %7, i32 noundef %8, ptr noundef nonnull %dissect_spc_inq_sccsflags.sccs_fields_spc3.sink, i32 noundef 0) #10 - br label %10 +.sink.split: ; preds = %4, %5 + %dissect_spc_inq_sccsflags.sccs_fields_spc3.sink = phi ptr [ @dissect_spc_inq_sccsflags.sccs_fields_spc3, %5 ], [ @dissect_spc_inq_sccsflags.sccs_fields_spc2, %4 ] + %6 = load i32, ptr @hf_scsi_inq_sccsflags, align 4 + %7 = load i32, ptr @ett_scsi_inq_sccsflags, align 4 + %8 = tail call ptr @proto_tree_add_bitmask(ptr noundef %2, ptr noundef %0, i32 noundef %1, i32 noundef %6, i32 noundef %7, ptr noundef nonnull %dissect_spc_inq_sccsflags.sccs_fields_spc3.sink, i32 noundef 0) #10 + br label %9 -10: ; preds = %.sink.split, %4 - %11 = add i32 %1, 1 - ret i32 %11 +9: ; preds = %.sink.split, %4 + %10 = add i32 %1, 1 + ret i32 %10 } ; Function Attrs: nounwind uwtable diff --git a/bench/zed-rs/optimized/d31g6vudldcq1cl7b9cowxr8a.ll b/bench/zed-rs/optimized/d31g6vudldcq1cl7b9cowxr8a.ll index d47e8e061df..566123e833e 100644 --- a/bench/zed-rs/optimized/d31g6vudldcq1cl7b9cowxr8a.ll +++ b/bench/zed-rs/optimized/d31g6vudldcq1cl7b9cowxr8a.ll @@ -93352,7 +93352,7 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN7postage4sync8transfer17Transfer$LT %10 = getelementptr inbounds nuw i8, ptr %0, i64 386 br label %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" -._crit_edge: ; preds = %32, %2 +._crit_edge: ; preds = %31, %2 %11 = getelementptr inbounds nuw i8, ptr %0, i64 385 %12 = load i8, ptr %11, align 1, !range !678, !noundef !13 store i8 0, ptr %11, align 1 @@ -93363,8 +93363,8 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN7postage4sync8transfer17Transfer$LT call void @_ZN4core6option13unwrap_failed17hba6b08832f9ce30bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9d04a8be78f7e133ecb68d0a52af5caa.142.llvm.14379821547474135896) #48 unreachable -"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i": ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i.lr.ph", %32 - %14 = phi { i8, i1 } [ %9, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i.lr.ph" ], [ %36, %32 ] +"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i": ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i.lr.ph", %31 + %14 = phi { i8, i1 } [ %9, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i.lr.ph" ], [ %35, %31 ] %.sroa.08.0.i.i.i = extractvalue { i8, i1 } %14, 0 switch i8 %.sroa.08.0.i.i.i, label %15 [ i8 4, label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit" @@ -93384,15 +93384,15 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN7postage4sync8transfer17Transfer$LT "_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit": ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" br label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" -"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17": ; preds = %30, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i", %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit", %._crit_edge, %28, %29, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13", %22 - %.sroa.0.0 = phi i8 [ 2, %28 ], [ 2, %29 ], [ 0, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13" ], [ 0, %22 ], [ 0, %._crit_edge ], [ 2, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" ], [ 1, %30 ], [ 0, %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit" ] +"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17": ; preds = %29, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i", %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit", %._crit_edge, %28, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13", %22 + %.sroa.0.0 = phi i8 [ 2, %28 ], [ 0, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13" ], [ 0, %22 ], [ 0, %._crit_edge ], [ 2, %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" ], [ 1, %29 ], [ 0, %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17.loopexit" ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) ret i8 %.sroa.0.0 17: ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i", %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" %18 = load atomic i8, ptr %10 acquire, align 2 %19 = trunc nuw i8 %18 to i1 - br i1 %19, label %20, label %30 + br i1 %19, label %20, label %29 20: ; preds = %17 %21 = cmpxchg ptr %8, i8 2, i8 3 acq_rel monotonic, align 1 @@ -93414,8 +93414,8 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN7postage4sync8transfer17Transfer$LT %.sroa.08.0.i.i.i14 = extractvalue { i8, i1 } %21, 0 switch i8 %.sroa.08.0.i.i.i14, label %26 [ i8 4, label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" - i8 0, label %29 - i8 1, label %29 + i8 0, label %28 + i8 1, label %28 i8 2, label %27 i8 3, label %28 ] @@ -93427,27 +93427,24 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN7postage4sync8transfer17Transfer$LT call void @_ZN4core9panicking5panic17hec978767ec2d35ffE(ptr noalias noundef nonnull readonly align 1 @anon.18f721ccef415aa9c21faff661f5af14.133.llvm.6482399857099888620, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.18f721ccef415aa9c21faff661f5af14.514.llvm.6482399857099888620) #48 unreachable -28: ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13" - br label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" - -29: ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13", %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13" +28: ; preds = %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13", %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13", %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i13" br label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" -30: ; preds = %17 +29: ; preds = %17 call void @_ZN7postage4sync8notifier8Notifier9subscribe17hc2dd2f4d9cadd432E(ptr noundef nonnull align 128 %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1) - %31 = call noundef zeroext i1 @_ZN7postage4sync8notifier17NotificationGuard10is_expired17h911bce5cbddc4a4cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3) - br i1 %31, label %32, label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" + %30 = call noundef zeroext i1 @_ZN7postage4sync8notifier17NotificationGuard10is_expired17h911bce5cbddc4a4cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3) + br i1 %30, label %31, label %"_ZN7postage4sync12oneshot_cell20OneshotCell$LT$T$GT$8try_recv17h70846a9bd877a301E.exit17" -32: ; preds = %30 +31: ; preds = %29 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %33 = call { ptr, i64 } @_ZN7postage4sync8notifier8Notifier5guard17ha2a9ab08a0e201a2E(ptr noundef nonnull align 128 %0) - %34 = extractvalue { ptr, i64 } %33, 0 - %35 = extractvalue { ptr, i64 } %33, 1 - store ptr %34, ptr %3, align 8 - store i64 %35, ptr %7, align 8 - %36 = cmpxchg ptr %8, i8 2, i8 3 acq_rel monotonic, align 1 - %.sroa.18.0.in.i.i.i = extractvalue { i8, i1 } %36, 1 + %32 = call { ptr, i64 } @_ZN7postage4sync8notifier8Notifier5guard17ha2a9ab08a0e201a2E(ptr noundef nonnull align 128 %0) + %33 = extractvalue { ptr, i64 } %32, 0 + %34 = extractvalue { ptr, i64 } %32, 1 + store ptr %33, ptr %3, align 8 + store i64 %34, ptr %7, align 8 + %35 = cmpxchg ptr %8, i8 2, i8 3 acq_rel monotonic, align 1 + %.sroa.18.0.in.i.i.i = extractvalue { i8, i1 } %35, 1 br i1 %.sroa.18.0.in.i.i.i, label %._crit_edge, label %"_ZN7postage4sync10state_cell22StateCell$LT$S$C$T$GT$12compare_take17h6c33b784387291dbE.exit.i" }