From 8cb074d0d5e4bf9de3ab0f76d9e3f8ed4aa06f11 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Fri, 31 Jan 2025 22:47:12 +0800 Subject: [PATCH 1/2] pre-commit: PR124942 --- 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..736b65c030f 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/124942 export COMPTIME_MODE=0 # Please rebase manually From ff891aa2880445fb054b2f4f3c6523189750a5f9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:03:55 +0000 Subject: [PATCH 2/2] pre-commit: Update --- .../optimized/inlined_vector_test.cc.ll | 54 +- bench/arrow/optimized/strtod.cc.ll | 24 +- bench/bullet3/optimized/btMultiBody.ll | 9 +- bench/curl/optimized/libcurl_la-url.ll | 35 +- .../cvc5/optimized/quant_conflict_find.cpp.ll | 6 +- bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll | 18 +- bench/delta-rs/optimized/s2xrj2sh770tx8d.ll | 168 +++-- ...ub_duckdb_storage_compression_chimp.cpp.ll | 132 ++-- bench/folly/optimized/AsyncSocket.cpp.ll | 10 +- bench/folly/optimized/DistributedMutex.cpp.ll | 24 +- bench/gromacs/optimized/md5.c.ll | 164 +++-- bench/gromacs/optimized/md5.cpp.ll | 162 +++-- bench/icu/optimized/reldtfmt.ll | 8 +- bench/icu/optimized/timezone.ll | 12 +- bench/icu/optimized/ucase.ll | 19 +- bench/libquic/optimized/base64.c.ll | 72 +- bench/lief/optimized/psa_crypto_ecp.c.ll | 3 +- bench/linux/optimized/access.ll | 138 ++-- bench/linux/optimized/insn-eval.ll | 430 +++++++----- bench/linux/optimized/seq_ports.ll | 124 ++-- .../optimized/AArch64FrameLowering.cpp.ll | 450 ++++++------ .../llvm/optimized/AArch64ISelLowering.cpp.ll | 211 +++--- .../optimized/AArch64LegalizerInfo.cpp.ll | 53 +- .../AArch64PostLegalizerCombiner.cpp.ll | 302 ++++---- bench/llvm/optimized/ASTContext.cpp.ll | 150 ++-- bench/llvm/optimized/ExprConstant.cpp.ll | 14 +- bench/llvm/optimized/InstrProfiling.cpp.ll | 70 +- bench/llvm/optimized/Legalizer.cpp.ll | 143 ++-- bench/llvm/optimized/MemorySanitizer.cpp.ll | 158 ++--- bench/llvm/optimized/OSTargets.cpp.ll | 216 +++--- bench/llvm/optimized/Verifier.cpp.ll | 87 ++- bench/luajit/optimized/lj_str.ll | 13 +- bench/luau/optimized/Flags.cpp.ll | 54 +- bench/node/optimized/simdutf.ll | 48 +- bench/opencv/optimized/dxt.cpp.ll | 654 +++++++++--------- bench/opencv/optimized/loadsave.cpp.ll | 96 +-- bench/opencv/optimized/qrcode_encoder.cpp.ll | 274 ++++---- bench/openjdk/optimized/jfrModuleEvent.ll | 66 +- bench/openjdk/optimized/jfrTypeSet.ll | 110 ++- bench/openjdk/optimized/loopTransform.ll | 237 ++++--- .../openmpi/optimized/coll_base_allgather.ll | 146 ++-- .../openmpi/optimized/coll_base_allgatherv.ll | 264 ++++--- bench/openmpi/optimized/mpl_trmem.ll | 34 +- bench/openspiel/optimized/cards.cc.ll | 38 +- .../optimized/libcrypto-lib-conf_def.ll | 230 +++--- .../optimized/libdefault-lib-ecx_kmgmt.ll | 12 +- .../optimized/libssl-lib-extensions_srvr.ll | 46 +- .../optimized/libssl-lib-quic_wire_pkt.ll | 15 +- bench/openusd/optimized/strtod.cc.ll | 52 +- bench/pbrt-v4/optimized/paramdict.cpp.ll | 20 +- bench/php/optimized/php_reflection.ll | 142 ++-- bench/portaudio/optimized/pa_linux_alsa.c.ll | 156 ++--- bench/qemu/optimized/block_vvfat.c.ll | 144 ++-- bench/qemu/optimized/hw_ufs_lu.c.ll | 11 +- .../hw_usb_dev-smartcard-reader.c.ll | 8 +- bench/qemu/optimized/system_physmem.c.ll | 17 +- bench/qemu/optimized/tcg-op-ldst.c.ll | 20 +- bench/redis/optimized/sentinel.ll | 14 +- bench/ruby/optimized/enum.ll | 88 ++- bench/ruby/optimized/io.ll | 247 ++++--- bench/ruby/optimized/numeric.ll | 100 ++- bench/ruby/optimized/range.ll | 304 ++++---- bench/ruby/optimized/rational.ll | 62 +- bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll | 178 ++--- bench/tinyrenderer/optimized/tgaimage.cpp.ll | 103 ++- bench/tls-rs/optimized/4vvnrvl2eceao62c.ll | 4 +- bench/wasmedge/optimized/component.cpp.ll | 16 +- bench/wireshark/optimized/packet-afp.c.ll | 74 +- .../wireshark/optimized/packet-gmr1_dtap.c.ll | 14 +- bench/wireshark/optimized/packet-icmp.c.ll | 54 +- bench/wireshark/optimized/packet-tds.c.ll | 214 +++--- bench/yosys/optimized/memory_dff.ll | 554 +++++++-------- .../zxing/optimized/PDFCodewordDecoder.cpp.ll | 4 +- 73 files changed, 4056 insertions(+), 4347 deletions(-) diff --git a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll index 6d50e048584..a839917cdcc 100644 --- a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll +++ b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll @@ -150032,10 +150032,8 @@ if.then.i.i.i.i: ; preds = %_ZN4absl23inlined_v br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit _ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit482, %_ZN4absl23inlined_vector_internal14DestroyAdapterISaINS_13test_internal20CopyableOnlyInstanceEELb0EE15DestroyElementsERS4_PS3_m.exit.i.i.i, %if.then.i.i.i.i - switch i64 %68, label %for.body.preheader.i.i.i.i493 [ - i64 0, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 - i64 1, label %if.then.i.i.i.i512 - ] + %cmp.i.i486 = icmp eq i64 %68, 0 + br i1 %cmp.i.i486, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515, label %for.body.preheader.i.i.i.i493 for.body.preheader.i.i.i.i493: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit %shr.i.i.i.i494 = lshr exact i64 %68, 1 @@ -150066,21 +150064,16 @@ _ZNSt16allocator_traitsISaIN4absl13test_internal20CopyableOnlyInstanceEEE7destro %cmp.not.i.i.i.i507 = icmp eq i64 %dec.i.i.i.i501, 0 br i1 %cmp.not.i.i.i.i507, label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, label %for.body.i.i.i.i497, !llvm.loop !1329 -if.then.i.i.i.i512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit - %189 = load ptr, ptr %data_.i1.i.i.i.i, align 8 - call void @_ZdlPv(ptr noundef %189) #36 - br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 - _ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit: ; preds = %_ZNSt16allocator_traitsISaIN4absl13test_internal20CopyableOnlyInstanceEEE7destroyIS2_EEvRS3_PT_.exit.i.i.i.i505 store i32 %dec.i.i.i.i.i.i.i.i502, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 br label %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 -_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit, %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, %if.then.i.i.i.i512 +_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515.loopexit, %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit call void @_ZN7testing11ScopedTraceD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %gtest_trace_1124) #33 - %190 = load i32, ptr %len, align 4 - %inc344 = add nsw i32 %190, 1 + %189 = load i32, ptr %len, align 4 + %inc344 = add nsw i32 %189, 1 store i32 %inc344, ptr %len, align 4 - %cmp = icmp slt i32 %190, 19 + %cmp = icmp slt i32 %189, 19 br i1 %cmp, label %for.body, label %for.end345, !llvm.loop !3288 ehcleanup339: ; preds = %_ZN7testing7MessageD2Ev.exit478, %lpad327 @@ -150100,8 +150093,8 @@ ehcleanup341: ; preds = %ehcleanup340, %ehcl br label %ehcleanup346 for.end345: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal20CopyableOnlyInstanceELm8ESaIS2_EED2Ev.exit515 - %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 - %cmp.not.i516 = icmp eq i32 %191, %71 + %190 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 + %cmp.not.i516 = icmp eq i32 %190, %71 br i1 %cmp.not.i516, label %if.end.i, label %if.then.i517 if.then.i517: ; preds = %for.end345 @@ -150109,8 +150102,8 @@ if.then.i517: ; preds = %for.end345 unreachable if.end.i: ; preds = %for.end345 - %192 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance19num_live_instances_E, align 4 - %cmp3.not.i = icmp eq i32 %192, %174 + %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance19num_live_instances_E, align 4 + %cmp3.not.i = icmp eq i32 %191, %174 br i1 %cmp3.not.i, label %_ZN4absl13test_internal15InstanceTrackerD2Ev.exit, label %if.then4.i if.then4.i: ; preds = %if.end.i @@ -151912,10 +151905,8 @@ if.then.i.i.i.i: ; preds = %_ZN4absl23inlined_v br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit _ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit: ; preds = %_ZN7testing15AssertionResultD2Ev.exit479, %_ZN4absl23inlined_vector_internal14DestroyAdapterISaINS_13test_internal23CopyableMovableInstanceEELb0EE15DestroyElementsERS4_PS3_m.exit.i.i.i, %if.then.i.i.i.i - switch i64 %68, label %for.body.preheader.i.i.i.i490 [ - i64 0, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 - i64 1, label %if.then.i.i.i.i509 - ] + %cmp.i.i483 = icmp eq i64 %68, 0 + br i1 %cmp.i.i483, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512, label %for.body.preheader.i.i.i.i490 for.body.preheader.i.i.i.i490: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit %shr.i.i.i.i491 = lshr exact i64 %68, 1 @@ -151946,21 +151937,16 @@ _ZNSt16allocator_traitsISaIN4absl13test_internal23CopyableMovableInstanceEEE7des %cmp.not.i.i.i.i504 = icmp eq i64 %dec.i.i.i.i498, 0 br i1 %cmp.not.i.i.i.i504, label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, label %for.body.i.i.i.i494, !llvm.loop !1481 -if.then.i.i.i.i509: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit - %189 = load ptr, ptr %data_.i1.i.i.i.i, align 8 - call void @_ZdlPv(ptr noundef %189) #36 - br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 - _ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit: ; preds = %_ZNSt16allocator_traitsISaIN4absl13test_internal23CopyableMovableInstanceEEE7destroyIS2_EEvRS3_PT_.exit.i.i.i.i502 store i32 %dec.i.i.i.i.i.i.i.i499, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 br label %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 -_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit, %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, %if.then.i.i.i.i509 +_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512.loopexit, %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit call void @_ZN7testing11ScopedTraceD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %gtest_trace_1124) #33 - %190 = load i32, ptr %len, align 4 - %inc344 = add nsw i32 %190, 1 + %189 = load i32, ptr %len, align 4 + %inc344 = add nsw i32 %189, 1 store i32 %inc344, ptr %len, align 4 - %cmp = icmp slt i32 %190, 19 + %cmp = icmp slt i32 %189, 19 br i1 %cmp, label %for.body, label %for.end345, !llvm.loop !3311 ehcleanup339: ; preds = %_ZN7testing7MessageD2Ev.exit475, %lpad327 @@ -151980,8 +151966,8 @@ ehcleanup341: ; preds = %ehcleanup340, %ehcl br label %ehcleanup346 for.end345: ; preds = %_ZN4absl13InlinedVectorINS_13test_internal23CopyableMovableInstanceELm8ESaIS2_EED2Ev.exit512 - %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 - %cmp.not.i513 = icmp eq i32 %191, %71 + %190 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance14num_instances_E, align 4 + %cmp.not.i513 = icmp eq i32 %190, %71 br i1 %cmp.not.i513, label %if.end.i, label %if.then.i514 if.then.i514: ; preds = %for.end345 @@ -151989,8 +151975,8 @@ if.then.i514: ; preds = %for.end345 unreachable if.end.i: ; preds = %for.end345 - %192 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance19num_live_instances_E, align 4 - %cmp3.not.i = icmp eq i32 %192, %174 + %191 = load i32, ptr @_ZN4absl13test_internal19BaseCountedInstance19num_live_instances_E, align 4 + %cmp3.not.i = icmp eq i32 %191, %174 br i1 %cmp3.not.i, label %_ZN4absl13test_internal15InstanceTrackerD2Ev.exit, label %if.then4.i if.then4.i: ; preds = %if.end.i diff --git a/bench/arrow/optimized/strtod.cc.ll b/bench/arrow/optimized/strtod.cc.ll index f0b79fd864f..43ca8430f8c 100644 --- a/bench/arrow/optimized/strtod.cc.ll +++ b/bench/arrow/optimized/strtod.cc.ll @@ -65,13 +65,9 @@ if.else.i: ; preds = %if.end.i if.else10: ; preds = %if.else %and = and i64 %1, 1 %cmp13 = icmp eq i64 %and, 0 - br i1 %cmp13, label %return, label %if.else15 + br i1 %cmp13, label %return, label %if.end.i11 -if.else15: ; preds = %if.else10 - %cmp.i10 = icmp eq i64 %1, 9218868437227405312 - br i1 %cmp.i10, label %return, label %if.end.i11 - -if.end.i11: ; preds = %if.else15 +if.end.i11: ; preds = %if.else10 %cmp3.i12 = icmp slt i64 %1, 0 br i1 %cmp3.i12, label %land.lhs.true.i16, label %if.else.i13 @@ -89,8 +85,8 @@ if.else.i13: ; preds = %if.end.i11 %9 = bitcast i64 %add.i14 to double br label %return -return: ; preds = %entry, %if.else.i13, %if.then10.i18, %land.lhs.true.i16, %if.else15, %if.else10, %if.else.i, %if.then10.i, %land.lhs.true.i, %if.then7, %if.end - %retval.0 = phi double [ %0, %if.end ], [ %6, %if.then10.i ], [ %7, %if.else.i ], [ 0.000000e+00, %land.lhs.true.i ], [ 0x7FF0000000000000, %if.then7 ], [ %0, %if.else10 ], [ %8, %if.then10.i18 ], [ %9, %if.else.i13 ], [ 0.000000e+00, %land.lhs.true.i16 ], [ 0x7FF0000000000000, %if.else15 ], [ %0, %entry ] +return: ; preds = %entry, %if.else.i13, %if.then10.i18, %land.lhs.true.i16, %if.else10, %if.else.i, %if.then10.i, %land.lhs.true.i, %if.then7, %if.end + %retval.0 = phi double [ %0, %if.end ], [ %6, %if.then10.i ], [ %7, %if.else.i ], [ 0.000000e+00, %land.lhs.true.i ], [ 0x7FF0000000000000, %if.then7 ], [ %0, %if.else10 ], [ %8, %if.then10.i18 ], [ %9, %if.else.i13 ], [ 0.000000e+00, %land.lhs.true.i16 ], [ %0, %entry ] ret double %retval.0 } @@ -735,13 +731,9 @@ if.else.i.i: ; preds = %if.end.i.i if.else10.i: ; preds = %if.else.i4 %and.i = and i64 %7, 1 %cmp13.i = icmp eq i64 %and.i, 0 - br i1 %cmp13.i, label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %if.else15.i - -if.else15.i: ; preds = %if.else10.i - %cmp.i10.i = icmp eq i64 %7, 9218868437227405312 - br i1 %cmp.i10.i, label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %if.end.i11.i + br i1 %cmp13.i, label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %if.end.i11.i -if.end.i11.i: ; preds = %if.else15.i +if.end.i11.i: ; preds = %if.else10.i %cmp3.i12.i = icmp slt i64 %7, 0 br i1 %cmp3.i12.i, label %land.lhs.true.i16.i, label %if.else.i13.i @@ -759,8 +751,8 @@ if.else.i13.i: ; preds = %if.end.i11.i %15 = bitcast i64 %add.i14.i to double br label %_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %if.end.i, %if.then7.i, %land.lhs.true.i.i, %if.then10.i.i, %if.else.i.i, %if.else10.i, %if.else15.i, %land.lhs.true.i16.i, %if.then10.i18.i, %if.else.i13.i - %retval.0.i = phi double [ %6, %if.end.i ], [ %12, %if.then10.i.i ], [ %13, %if.else.i.i ], [ 0.000000e+00, %land.lhs.true.i.i ], [ 0x7FF0000000000000, %if.then7.i ], [ %6, %if.else10.i ], [ %14, %if.then10.i18.i ], [ %15, %if.else.i13.i ], [ 0.000000e+00, %land.lhs.true.i16.i ], [ 0x7FF0000000000000, %if.else15.i ], [ %6, %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] +_ZN14arrow_vendored17double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %if.end.i, %if.then7.i, %land.lhs.true.i.i, %if.then10.i.i, %if.else.i.i, %if.else10.i, %land.lhs.true.i16.i, %if.then10.i18.i, %if.else.i13.i + %retval.0.i = phi double [ %6, %if.end.i ], [ %12, %if.then10.i.i ], [ %13, %if.else.i.i ], [ 0.000000e+00, %land.lhs.true.i.i ], [ 0x7FF0000000000000, %if.then7.i ], [ %6, %if.else10.i ], [ %14, %if.then10.i18.i ], [ %15, %if.else.i13.i ], [ 0.000000e+00, %land.lhs.true.i16.i ], [ %6, %_ZN14arrow_vendored17double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %guess.i) ret double %retval.0.i } diff --git a/bench/bullet3/optimized/btMultiBody.ll b/bench/bullet3/optimized/btMultiBody.ll index 841891182da..a18b6e53765 100644 --- a/bench/bullet3/optimized/btMultiBody.ll +++ b/bench/bullet3/optimized/btMultiBody.ll @@ -14321,10 +14321,7 @@ for.body82.lr.ph: ; preds = %for.cond80.preheade %113 = getelementptr float, ptr %cond20, i64 %112 br label %for.body82 -while.cond351.preheader: ; preds = %for.inc348 - br i1 %cmp21.not744, label %if.end, label %for.cond354.preheader.lr.ph - -for.cond354.preheader.lr.ph: ; preds = %for.cond80.preheader, %while.cond351.preheader +for.cond354.preheader.lr.ph: ; preds = %for.inc348, %for.cond80.preheader %m_data.i696 = getelementptr inbounds nuw i8, ptr %this, i64 192 %.pre = load ptr, ptr %m_data.i696, align 8 br label %for.cond354.preheader @@ -14874,7 +14871,7 @@ sw.bb302: ; preds = %for.body82 for.inc348: ; preds = %sw.bb, %sw.bb171, %sw.bb184, %sw.bb302, %for.body82 %indvars.iv.next774 = add nuw nsw i64 %indvars.iv773, 1 %exitcond.not = icmp eq i64 %indvars.iv.next774, %wide.trip.count - br i1 %exitcond.not, label %while.cond351.preheader, label %for.body82, !llvm.loop !260 + br i1 %exitcond.not, label %for.cond354.preheader.lr.ph, label %for.body82, !llvm.loop !260 for.cond354.preheader: ; preds = %for.cond354.preheader.lr.ph, %for.end375 %362 = phi ptr [ %.pre, %for.cond354.preheader.lr.ph ], [ %369, %for.end375 ] @@ -14913,7 +14910,7 @@ for.end375: ; preds = %for.body359, %for.c %cmp352.not = icmp eq i32 %370, -1 br i1 %cmp352.not, label %if.end, label %for.cond354.preheader, !llvm.loop !262 -if.end: ; preds = %for.end375, %while.cond351.preheader, %for.end +if.end: ; preds = %for.end375, %for.end ret void } diff --git a/bench/curl/optimized/libcurl_la-url.ll b/bench/curl/optimized/libcurl_la-url.ll index 85dfc293fa9..aa9ffbe4da1 100644 --- a/bench/curl/optimized/libcurl_la-url.ll +++ b/bench/curl/optimized/libcurl_la-url.ll @@ -4232,64 +4232,53 @@ if.end23: ; preds = %if.then15, %land.lh %host.1 = phi ptr [ null, %if.else ], [ %call163.i.i, %land.lhs.true11 ], [ %call163.i.i, %if.then15 ] %cmp24 = icmp sgt i32 %port.46085, -1 %bf.load46.pre = load i32, ptr %bits.i, align 8 - br i1 %cmp24, label %if.then26, label %if.else44 + br i1 %cmp24, label %if.then26, label %if.end49 if.end23.thread: ; preds = %if.then7 %cmp2490 = icmp sgt i32 %port.0.i.i, -1 - br i1 %cmp2490, label %if.then26.thread, label %if.else44 + br i1 %cmp2490, label %if.then26.thread, label %if.end49 if.then26.thread: ; preds = %if.end23.thread store i32 %port.0.i.i, ptr %conn_to_port97, align 8 %bf.set30100 = or i32 %bf.load, 1536 store i32 %bf.set30100, ptr %bits.i, align 8 - br label %if.end49 + br label %return if.then26: ; preds = %if.end23 store i32 %port.46085, ptr %conn_to_port97, align 8 %bf.set30 = or i32 %bf.load46.pre, 1024 store i32 %bf.set30, ptr %bits.i, align 8 - br i1 %tobool124.not.i.i, label %if.end49, label %land.lhs.true33 + br i1 %tobool124.not.i.i, label %return, label %land.lhs.true33 land.lhs.true33: ; preds = %if.then26 %bf.load36 = load i64, ptr %verbose.i.i, align 2 %43 = and i64 %bf.load36, 536870912 %tobool40.not = icmp eq i64 %43, 0 - br i1 %tobool40.not, label %if.end49, label %if.then41 + br i1 %tobool40.not, label %return, label %if.then41 if.then41: ; preds = %land.lhs.true33 tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %data, ptr noundef nonnull @.str.52, i32 noundef %port.46085) #11 - br label %if.end49 + br label %return -if.else44: ; preds = %if.end23.thread, %if.end23 +if.end49: ; preds = %if.end23, %if.end23.thread %bf.load46 = phi i32 [ %bf.set, %if.end23.thread ], [ %bf.load46.pre, %if.end23 ] %host.193 = phi ptr [ %call163.i.i, %if.end23.thread ], [ %host.1, %if.end23 ] %bf.clear47 = and i32 %bf.load46, -1025 store i32 %bf.clear47, ptr %bits.i, align 8 - br label %if.end49 - -if.end49: ; preds = %if.then26.thread, %if.then41, %land.lhs.true33, %if.then26, %if.else44 - %host.192 = phi ptr [ %host.1, %if.then26 ], [ %host.1, %land.lhs.true33 ], [ %host.1, %if.then41 ], [ %host.193, %if.else44 ], [ %call163.i.i, %if.then26.thread ] - %port.1 = phi i32 [ %port.46085, %if.then26 ], [ %port.46085, %land.lhs.true33 ], [ %port.46085, %if.then41 ], [ -1, %if.else44 ], [ %port.0.i.i, %if.then26.thread ] %next = getelementptr inbounds nuw i8, ptr %conn_to_host.addr.0123, i64 8 %44 = load ptr, ptr %next, align 8 %tobool = icmp eq ptr %44, null - %tobool1 = icmp ne ptr %host.192, null + %tobool1 = icmp ne ptr %host.193, null %or.cond = or i1 %tobool1, %tobool - %or.cond.not = xor i1 %or.cond, true - %cmp = icmp eq i32 %port.1, -1 - %or.cond3 = select i1 %or.cond.not, i1 %cmp, i1 false - br i1 %or.cond3, label %while.body, label %while.end, !llvm.loop !11 + br i1 %or.cond, label %while.end, label %while.body, !llvm.loop !11 while.end: ; preds = %if.end49, %entry %tobool1.lcssa = phi i1 [ false, %entry ], [ %tobool1, %if.end49 ] - %cmp.lcssa = phi i1 [ true, %entry ], [ %cmp, %if.end49 ] %asi = getelementptr inbounds nuw i8, ptr %data, i64 2736 %45 = load ptr, ptr %asi, align 8 %tobool50 = icmp eq ptr %45, null %or.cond1 = or i1 %tobool1.lcssa, %tobool50 - %or.cond1.not = xor i1 %or.cond1, true - %or.cond2 = select i1 %or.cond1.not, i1 %cmp.lcssa, i1 false - br i1 %or.cond2, label %land.lhs.true56, label %return + br i1 %or.cond1, label %return, label %land.lhs.true56 land.lhs.true56: ; preds = %while.end %handler = getelementptr inbounds nuw i8, ptr %conn, i64 712 @@ -4379,8 +4368,8 @@ sw.bb122: ; preds = %do.end112 store i8 30, ptr %httpversion123, align 8 br label %return -return: ; preds = %parse_connect_to_string.exit.thread77, %parse_connect_to_string.exit.thread71, %parse_connect_to_string.exit.thread61, %while.end, %land.lhs.true56, %sw.bb122, %sw.bb120, %if.then59, %do.end112, %if.then67 - %retval.0 = phi i32 [ 27, %if.then67 ], [ 0, %do.end112 ], [ 0, %if.then59 ], [ 0, %sw.bb120 ], [ 0, %sw.bb122 ], [ 0, %land.lhs.true56 ], [ 0, %while.end ], [ 27, %parse_connect_to_string.exit.thread61 ], [ 27, %parse_connect_to_string.exit.thread71 ], [ %result.0.i.i.ph, %parse_connect_to_string.exit.thread77 ] +return: ; preds = %if.then26, %land.lhs.true33, %if.then41, %if.then26.thread, %parse_connect_to_string.exit.thread77, %parse_connect_to_string.exit.thread71, %parse_connect_to_string.exit.thread61, %while.end, %land.lhs.true56, %sw.bb122, %sw.bb120, %if.then59, %do.end112, %if.then67 + %retval.0 = phi i32 [ 27, %if.then67 ], [ 0, %do.end112 ], [ 0, %if.then59 ], [ 0, %sw.bb120 ], [ 0, %sw.bb122 ], [ 0, %land.lhs.true56 ], [ 0, %while.end ], [ 27, %parse_connect_to_string.exit.thread61 ], [ 27, %parse_connect_to_string.exit.thread71 ], [ %result.0.i.i.ph, %parse_connect_to_string.exit.thread77 ], [ 0, %if.then26.thread ], [ 0, %if.then41 ], [ 0, %land.lhs.true33 ], [ 0, %if.then26 ] ret i32 %retval.0 } diff --git a/bench/cvc5/optimized/quant_conflict_find.cpp.ll b/bench/cvc5/optimized/quant_conflict_find.cpp.ll index 0aa5cdeb5f6..45713b3f6c9 100644 --- a/bench/cvc5/optimized/quant_conflict_find.cpp.ll +++ b/bench/cvc5/optimized/quant_conflict_find.cpp.ll @@ -18558,10 +18558,8 @@ invoke.cont288: ; preds = %if.else280 %d_kind.i940 = getelementptr inbounds nuw i8, ptr %96, i64 8 %bf.load.i941 = load i16, ptr %d_kind.i940, align 8 %bf.clear.i942 = and i16 %bf.load.i941, 1023 - %cmp290 = icmp ne i16 %bf.clear.i942, 36 - %cmp293.not3064 = icmp eq i16 %bf.clear.i280, 39 - %cmp293.not = or i1 %cmp293.not3064, %cmp290 - br i1 %cmp293.not, label %if.end313, label %if.then294 + %cmp290.not = icmp eq i16 %bf.clear.i942, 36 + br i1 %cmp290.not, label %if.then294, label %if.end313 if.then294: ; preds = %invoke.cont288 %call297 = invoke noundef ptr @_ZN4cvc58internal11NodeManager9currentNMEv() diff --git a/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll b/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll index 58e6e40e30d..63592349639 100644 --- a/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll +++ b/bench/delta-rs/optimized/1hj0ksbtyfwxzh2n.ll @@ -1524,8 +1524,7 @@ define hidden void @"_ZN9hashbrown11rustc_entry62_$LT$impl$u20$hashbrown..map..H %gep.us.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i, i64 %26 %.val4.i.us.us.i = load i8, ptr %gep.us.us.i, align 1, !range !280, !noalias !434, !noundef !30 %27 = add nsw i8 %.val4.i.us.us.i, -16 - %narrow.i.i.i.us.us.i = call i8 @llvm.umin.i8(i8 %27, i8 4) - %28 = icmp eq i8 %narrow.i.i.i.us.us.i, %narrow3.i.i.i.i + %28 = icmp eq i8 %27, %narrow3.i.i.i.i br i1 %28, label %.loopexit, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us.i": ; preds = %.lr.ph.us.i @@ -1684,8 +1683,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %gep.us.us.i.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i.i, i64 %29 %.val4.i.us.us.i.i = load i8, ptr %gep.us.us.i.i, align 1, !range !280, !alias.scope !463, !noalias !468, !noundef !30 %30 = add nsw i8 %.val4.i.us.us.i.i, -16 - %narrow3.i.i.i.i.us.us.i.i = tail call i8 @llvm.umin.i8(i8 %30, i8 4) - %31 = icmp eq i8 %narrow.i.i.i.i.i.i, %narrow3.i.i.i.i.us.us.i.i + %31 = icmp eq i8 %30, %narrow.i.i.i.i.i.i br i1 %31, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17ha9a9951e792ef5ecE.llvm.8649443668325006364.exit", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i.i": ; preds = %.lr.ph.us.i.i @@ -1866,8 +1864,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h78 %gep.us.i.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i.i, i64 %29 %.val4.i.us.i.us.i = load i8, ptr %gep.us.i.us.i, align 1, !range !280, !alias.scope !500, !noalias !505, !noundef !30 %30 = add nsw i8 %.val4.i.us.i.us.i, -16 - %narrow3.i.i.i.i.us.i.us.i = call i8 @llvm.umin.i8(i8 %30, i8 4) - %31 = icmp eq i8 %narrow.i.i.i.i.i.i, %narrow3.i.i.i.i.us.i.us.i + %31 = icmp eq i8 %30, %narrow.i.i.i.i.i.i br i1 %31, label %.loopexit, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17he651dd2f9ed3996bE.exit.backedge.us.i.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17he651dd2f9ed3996bE.exit.backedge.us.i.us.i": ; preds = %.lr.ph.split.us.i.us.i @@ -2186,8 +2183,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN9hashbrown3ra %gep.us.us.i = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep.i, i64 %24 %.val4.i.us.us.i = load i8, ptr %gep.us.us.i, align 1, !range !280, !alias.scope !537, !noalias !542, !noundef !30 %25 = add nsw i8 %.val4.i.us.us.i, -16 - %narrow3.i.i.i.i.us.us.i = tail call i8 @llvm.umin.i8(i8 %25, i8 4) - %26 = icmp eq i8 %narrow.i.i.i.i.i, %narrow3.i.i.i.i.us.us.i + %26 = icmp eq i8 %25, %narrow.i.i.i.i.i br i1 %26, label %.split.us.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us.i": ; preds = %.lr.ph.us.i @@ -2307,8 +2303,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h1c2a %gep.us.us = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep, i64 %24 %.val4.i.us.us = load i8, ptr %gep.us.us, align 1, !range !280, !alias.scope !555, !noalias !560, !noundef !30 %25 = add nsw i8 %.val4.i.us.us, -16 - %narrow3.i.i.i.i.us.us = tail call i8 @llvm.umin.i8(i8 %25, i8 4) - %26 = icmp eq i8 %narrow.i.i.i.i, %narrow3.i.i.i.i.us.us + %26 = icmp eq i8 %25, %narrow.i.i.i.i br i1 %26, label %.split.us, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hc0a1e1d2e0cec8eaE.exit.backedge.us.us": ; preds = %.lr.ph.us @@ -2425,8 +2420,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h67bf %gep.us.us = getelementptr { i8, [7 x i8], { { { i64, ptr, {} }, i64 } } }, ptr %invariant.gep, i64 %23 %.val4.i.us.us = load i8, ptr %gep.us.us, align 1, !range !280, !noalias !573, !noundef !30 %24 = add nsw i8 %.val4.i.us.us, -16 - %narrow.i.i.i.us.us = tail call i8 @llvm.umin.i8(i8 %24, i8 4) - %25 = icmp eq i8 %narrow.i.i.i.us.us, %narrow3.i.i.i + %25 = icmp eq i8 %24, %narrow3.i.i.i br i1 %25, label %.split.us, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf2c06e39f5cfe2f3E.llvm.8649443668325006364.exit.backedge.us.us": ; preds = %.lr.ph.us diff --git a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll index ab714a7d300..1051ac6bcdb 100644 --- a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll +++ b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll @@ -111878,11 +111878,11 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse %.not.i.i.us17 = icmp eq i16 %32, 0 br i1 %.not.i.i.us17, label %._crit_edge.split.us18, label %.lr.ph.us -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit", %88 - %.sroa.8.0.i = phi i64 [ %89, %88 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.pn.i = phi i64 [ %90, %88 ], [ %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.sroa.6.0.i = phi i64 [ %.sroa.6.1.i, %88 ], [ undef, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] - %.sroa.01.0.i = phi i64 [ %.sroa.01.1.i, %88 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit", %87 + %.sroa.8.0.i = phi i64 [ %88, %87 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.pn.i = phi i64 [ %89, %87 ], [ %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.sroa.6.0.i = phi i64 [ %.sroa.6.1.i, %87 ], [ undef, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] + %.sroa.01.0.i = phi i64 [ %.sroa.01.1.i, %87 ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit" ] %.sroa.0.038.i = and i64 %.pn.i, %16 %64 = getelementptr inbounds i8, ptr %17, i64 %.sroa.0.038.i %.0.copyload.i46.i = load <16 x i8>, ptr %64, align 1, !noalias !31099 @@ -111892,7 +111892,7 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse br i1 %.not.i.i11, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" - %.039.i12.us = phi i16 [ %77, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" ], [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" ] + %.039.i12.us = phi i16 [ %76, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" ], [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" ] %67 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.039.i12.us, i1 true) %68 = zext nneg i16 %67 to i64 %69 = add i64 %.sroa.0.038.i, %68 @@ -111903,82 +111903,81 @@ define hidden void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_inse tail call void @llvm.experimental.noalias.scope.decl(metadata !31106), !noalias !31105 tail call void @llvm.experimental.noalias.scope.decl(metadata !31109), !noalias !31105 %72 = load i64, ptr %gep, align 8, !range !1128, !alias.scope !31112, !noalias !31113, !noundef !4 - %73 = xor i64 %72, -9223372036854775808 - %74 = tail call i64 @llvm.umin.i64(i64 %73, i64 4) - %75 = icmp eq i64 %20, %74 - br i1 %75, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" + %73 = xor i64 %72, %20 + %74 = icmp eq i64 %73, -9223372036854775808 + br i1 %74, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us": ; preds = %.lr.ph - %76 = add i16 %.039.i12.us, -1 - %77 = and i16 %76, %.039.i12.us - %.not.i.i.us = icmp eq i16 %77, 0 + %75 = add i16 %.039.i12.us, -1 + %76 = and i16 %75, %.039.i12.us + %.not.i.i.us = icmp eq i16 %76, 0 br i1 %.not.i.i.us, label %._crit_edge.split.us, label %.lr.ph ._crit_edge.split.us: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.us", %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" %.not.i = icmp eq i64 %.sroa.01.0.i, 1 - br i1 %.not.i, label %85, label %78 + br i1 %.not.i, label %84, label %77 -78: ; preds = %._crit_edge.split.us - %79 = icmp slt <16 x i8> %.0.copyload.i46.i, zeroinitializer - %80 = bitcast <16 x i1> %79 to i16 - %.not.i15.i = icmp ne i16 %80, 0 - %81 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %80, i1 true) - %82 = zext nneg i16 %81 to i64 - %.sroa.3.0.i.i.i = select i1 %.not.i15.i, i64 %82, i64 undef - %83 = add i64 %.sroa.3.0.i.i.i, %.sroa.0.038.i - %84 = and i64 %83, %16 - %.sroa.3.0.i16.i = select i1 %.not.i15.i, i64 %84, i64 undef +77: ; preds = %._crit_edge.split.us + %78 = icmp slt <16 x i8> %.0.copyload.i46.i, zeroinitializer + %79 = bitcast <16 x i1> %78 to i16 + %.not.i15.i = icmp ne i16 %79, 0 + %80 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %79, i1 true) + %81 = zext nneg i16 %80 to i64 + %.sroa.3.0.i.i.i = select i1 %.not.i15.i, i64 %81, i64 undef + %82 = add i64 %.sroa.3.0.i.i.i, %.sroa.0.038.i + %83 = and i64 %82, %16 + %.sroa.3.0.i16.i = select i1 %.not.i15.i, i64 %83, i64 undef %.sroa.0.0.i17.i = zext i1 %.not.i15.i to i64 - br label %85 + br label %84 -85: ; preds = %78, %._crit_edge.split.us - %.sroa.6.1.i = phi i64 [ %.sroa.3.0.i16.i, %78 ], [ %.sroa.6.0.i, %._crit_edge.split.us ] - %.sroa.01.1.i = phi i64 [ %.sroa.0.0.i17.i, %78 ], [ 1, %._crit_edge.split.us ] - %86 = icmp eq <16 x i8> %.0.copyload.i46.i, splat (i8 -1) - %87 = bitcast <16 x i1> %86 to i16 - %.not11.i = icmp eq i16 %87, 0 - br i1 %.not11.i, label %88, label %.split.us +84: ; preds = %77, %._crit_edge.split.us + %.sroa.6.1.i = phi i64 [ %.sroa.3.0.i16.i, %77 ], [ %.sroa.6.0.i, %._crit_edge.split.us ] + %.sroa.01.1.i = phi i64 [ %.sroa.0.0.i17.i, %77 ], [ 1, %._crit_edge.split.us ] + %85 = icmp eq <16 x i8> %.0.copyload.i46.i, splat (i8 -1) + %86 = bitcast <16 x i1> %85 to i16 + %.not11.i = icmp eq i16 %86, 0 + br i1 %.not11.i, label %87, label %.split.us -88: ; preds = %85 - %89 = add i64 %.sroa.8.0.i, 16 - %90 = add i64 %.sroa.0.038.i, %89 +87: ; preds = %84 + %88 = add i64 %.sroa.8.0.i, 16 + %89 = add i64 %.sroa.0.038.i, %88 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd796260a60d35fc1E.exit.split" -.split.us: ; preds = %85, %58 - %.us-phi22 = phi i64 [ %.sroa.6.1.i.us, %58 ], [ %.sroa.6.1.i, %85 ] - %.us-phi23 = phi i64 [ %.sroa.01.1.i.us, %58 ], [ %.sroa.01.1.i, %85 ] - %91 = icmp ne i64 %.us-phi23, 0 - tail call void @llvm.assume(i1 %91) - %92 = getelementptr inbounds i8, ptr %17, i64 %.us-phi22 - %93 = load i8, ptr %92, align 1, !noalias !31105, !noundef !4 - %94 = icmp sgt i8 %93, -1 - br i1 %94, label %95, label %104 - -95: ; preds = %.split.us - %96 = load <16 x i8>, ptr %17, align 16, !noalias !31129 - %97 = icmp slt <16 x i8> %96, zeroinitializer - %98 = bitcast <16 x i1> %97 to i16 - %99 = icmp ne i16 %98, 0 - %100 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %98, i1 true) - %101 = zext nneg i16 %100 to i64 - tail call void @llvm.assume(i1 %99) - br label %104 +.split.us: ; preds = %84, %58 + %.us-phi22 = phi i64 [ %.sroa.6.1.i.us, %58 ], [ %.sroa.6.1.i, %84 ] + %.us-phi23 = phi i64 [ %.sroa.01.1.i.us, %58 ], [ %.sroa.01.1.i, %84 ] + %90 = icmp ne i64 %.us-phi23, 0 + tail call void @llvm.assume(i1 %90) + %91 = getelementptr inbounds i8, ptr %17, i64 %.us-phi22 + %92 = load i8, ptr %91, align 1, !noalias !31105, !noundef !4 + %93 = icmp sgt i8 %92, -1 + br i1 %93, label %94, label %103 + +94: ; preds = %.split.us + %95 = load <16 x i8>, ptr %17, align 16, !noalias !31129 + %96 = icmp slt <16 x i8> %95, zeroinitializer + %97 = bitcast <16 x i1> %96 to i16 + %98 = icmp ne i16 %97, 0 + %99 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %97, i1 true) + %100 = zext nneg i16 %99 to i64 + tail call void @llvm.assume(i1 %98) + br label %103 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread": ; preds = %.lr.ph, %47, %42 %.pre-phi = phi i64 [ %35, %42 ], [ %35, %47 ], [ %71, %.lr.ph ] - %102 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %17, i64 %.pre-phi - %103 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %102, ptr %103, align 8 - br label %106 + %101 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %17, i64 %.pre-phi + %102 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %101, ptr %102, align 8 + br label %105 -104: ; preds = %95, %.split.us - %.sroa.3.0.i = phi i64 [ %101, %95 ], [ %.us-phi22, %.split.us ] - %105 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.3.0.i, ptr %105, align 8 - br label %106 +103: ; preds = %94, %.split.us + %.sroa.3.0.i = phi i64 [ %100, %94 ], [ %.us-phi22, %.split.us ] + %104 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.3.0.i, ptr %104, align 8 + br label %105 -106: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", %104 - %.sroa.0.0.i9 = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread" ], [ 1, %104 ] +105: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread", %103 + %.sroa.0.0.i9 = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h91663b384ba2ca51E.llvm.18123795597341512700.exit.thread" ], [ 1, %103 ] store i64 %.sroa.0.0.i9, ptr %0, align 8 ret void } @@ -114060,9 +114059,9 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 %.not.i4.us48 = icmp eq i16 %23, 0 br i1 %.not.i4.us48, label %._crit_edge.split.us49, label %.lr.ph.us -.split: ; preds = %3, %63 - %.sroa.9.0.i = phi i64 [ %64, %63 ], [ 0, %3 ] - %.pn.i = phi i64 [ %65, %63 ], [ %1, %3 ] +.split: ; preds = %3, %62 + %.sroa.9.0.i = phi i64 [ %63, %62 ], [ 0, %3 ] + %.pn.i = phi i64 [ %64, %62 ], [ %1, %3 ] %.sroa.01.0.i = and i64 %.pn.i, %7 %47 = getelementptr inbounds i8, ptr %8, i64 %.sroa.01.0.i %.0.copyload.i35 = load <16 x i8>, ptr %47, align 1, !noalias !31935 @@ -114072,7 +114071,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 br i1 %.not.i438, label %._crit_edge.split.us, label %.lr.ph .lr.ph: ; preds = %.split, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" - %.02339.us = phi i16 [ %60, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" ], [ %49, %.split ] + %.02339.us = phi i16 [ %59, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" ], [ %49, %.split ] %50 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02339.us, i1 true) %51 = zext nneg i16 %50 to i64 %52 = add i64 %.sroa.01.0.i, %51 @@ -114083,35 +114082,34 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hb160 tail call void @llvm.experimental.noalias.scope.decl(metadata !31942), !noalias !31941 tail call void @llvm.experimental.noalias.scope.decl(metadata !31945), !noalias !31941 %55 = load i64, ptr %gep, align 8, !range !1128, !alias.scope !31948, !noalias !31949, !noundef !4 - %56 = xor i64 %55, -9223372036854775808 - %57 = tail call i64 @llvm.umin.i64(i64 %56, i64 4) - %58 = icmp eq i64 %11, %57 - br i1 %58, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" + %56 = xor i64 %55, %11 + %57 = icmp eq i64 %56, -9223372036854775808 + br i1 %57, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread", label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us" "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us": ; preds = %.lr.ph - %59 = add i16 %.02339.us, -1 - %60 = and i16 %59, %.02339.us - %.not.i4.us = icmp eq i16 %60, 0 + %58 = add i16 %.02339.us, -1 + %59 = and i16 %58, %.02339.us + %.not.i4.us = icmp eq i16 %59, 0 br i1 %.not.i4.us, label %._crit_edge.split.us, label %.lr.ph ._crit_edge.split.us: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.us", %.split - %61 = icmp eq <16 x i8> %.0.copyload.i35, splat (i8 -1) - %62 = bitcast <16 x i1> %61 to i16 - %.not.i = icmp eq i16 %62, 0 - br i1 %.not.i, label %63, label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit + %60 = icmp eq <16 x i8> %.0.copyload.i35, splat (i8 -1) + %61 = bitcast <16 x i1> %60 to i16 + %.not.i = icmp eq i16 %61, 0 + br i1 %.not.i, label %62, label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit -63: ; preds = %._crit_edge.split.us - %64 = add i64 %.sroa.9.0.i, 16 - %65 = add i64 %.sroa.01.0.i, %64 +62: ; preds = %._crit_edge.split.us + %63 = add i64 %.sroa.9.0.i, 16 + %64 = add i64 %.sroa.01.0.i, %63 br label %.split "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread": ; preds = %.lr.ph, %38, %33 %.pre-phi = phi i64 [ %26, %33 ], [ %26, %38 ], [ %54, %.lr.ph ] - %66 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %8, i64 %.pre-phi + %65 = getelementptr inbounds { { i64, [2 x i64] }, {} }, ptr %8, i64 %.pre-phi br label %_ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit _ZN9hashbrown3raw13RawTableInner10find_inner17heaf636810d0ea7b2E.llvm.18123795597341512700.exit: ; preds = %._crit_edge.split.us, %._crit_edge.split.us49, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" - %.0 = phi ptr [ %66, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" ], [ null, %._crit_edge.split.us49 ], [ null, %._crit_edge.split.us ] + %.0 = phi ptr [ %65, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hf7d4c4924dbe963bE.exit.thread" ], [ null, %._crit_edge.split.us49 ], [ null, %._crit_edge.split.us ] ret ptr %.0 } diff --git a/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll b/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll index 34b41f46a94..af818ed20d3 100644 --- a/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_storage_compression_chimp.cpp.ll @@ -2722,10 +2722,21 @@ if.then.i3: ; preds = %_ZN6duckdb10FlagBuf %sub.i.i.i = add i8 %11, -7 store i8 %sub.i.i.i, ptr %free_bits.i.i, align 1, !tbaa !137 %cmp.i.i.i = icmp eq i8 %11, 7 - br i1 %cmp.i.i.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + +if.then.i.i.i: ; preds = %if.then.i3 + %14 = load ptr, ptr %state, align 8, !tbaa !185 + %stream_index.i.i.i.i = getelementptr inbounds nuw i8, ptr %state, i64 16 + %15 = load i64, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %inc.i.i.i.i = add i64 %15, 1 + store i64 %inc.i.i.i.i, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 %15 + store i8 %conv5.i.i, ptr %arrayidx.i.i.i.i, align 1, !tbaa !63 + store i8 0, ptr %current.i.i, align 8, !tbaa !186 + br label %return.sink.split.i if.end.i: ; preds = %_ZN6duckdb10FlagBufferILb0EE6InsertENS_14ChimpConstants5FlagsE.exit - %14 = xor i8 %11, 7 + %16 = xor i8 %11, 7 %cmp.not.i = icmp eq i8 %11, 0 br i1 %cmp.not.i, label %if.end.if.then12_crit_edge.i, label %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i @@ -2735,7 +2746,7 @@ if.end.if.then12_crit_edge.i: ; preds = %if.end.i br label %if.then12.i _ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i: ; preds = %if.end.i - %sub.i = zext nneg i8 %14 to i32 + %sub.i = zext nneg i8 %16 to i32 %conv6.i = zext nneg i8 %previous_index.0244 to i32 %shr.i2 = lshr i32 %conv6.i, %sub.i %conv7.i = trunc nuw nsw i32 %shr.i2 to i8 @@ -2743,52 +2754,41 @@ _ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i: ; preds = %if.end.i %sub.i.i36.i = xor i8 %notmask.i, -1 %and10.i.i = and i8 %conv7.i, %sub.i.i36.i %current.i39.i = getelementptr inbounds nuw i8, ptr %state, i64 8 - %15 = load i8, ptr %current.i39.i, align 8, !tbaa !186 - %conv7.i.i = or i8 %15, %and10.i.i - %16 = load ptr, ptr %state, align 8, !tbaa !185 + %17 = load i8, ptr %current.i39.i, align 8, !tbaa !186 + %conv7.i.i = or i8 %17, %and10.i.i + %18 = load ptr, ptr %state, align 8, !tbaa !185 %stream_index.i.i.i41.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %17 = load i64, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 - %inc.i.i.i42.i = add i64 %17, 1 + %19 = load i64, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 + %inc.i.i.i42.i = add i64 %19, 1 store i64 %inc.i.i.i42.i, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 - %arrayidx.i.i.i43.i = getelementptr inbounds i8, ptr %16, i64 %17 + %arrayidx.i.i.i43.i = getelementptr inbounds i8, ptr %18, i64 %19 store i8 %conv7.i.i, ptr %arrayidx.i.i.i43.i, align 1, !tbaa !63 br label %if.then12.i if.then12.i: ; preds = %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i, %if.end.if.then12_crit_edge.i %conv2.i46.pre-phi.i = phi i32 [ 7, %if.end.if.then12_crit_edge.i ], [ %sub.i, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %18 = phi i8 [ %.pre.i, %if.end.if.then12_crit_edge.i ], [ 0, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %19 = phi i8 [ 0, %if.end.if.then12_crit_edge.i ], [ 8, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %conv.i45.i = zext nneg i8 %19 to i32 + %20 = phi i8 [ %.pre.i, %if.end.if.then12_crit_edge.i ], [ 0, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] + %21 = phi i8 [ 0, %if.end.if.then12_crit_edge.i ], [ 8, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] + %conv.i45.i = zext nneg i8 %21 to i32 %sub.i47.i = sub nsw i32 %conv.i45.i, %conv2.i46.pre-phi.i - %notmask72.i = shl nsw i8 -1, %14 + %notmask72.i = shl nsw i8 -1, %16 %sub.i.i49.i = xor i8 %notmask72.i, -1 %and10.i50.i = and i8 %previous_index.0244, %sub.i.i49.i %and.i51.i = zext nneg i8 %and10.i50.i to i32 %shl.i52.i = shl nuw nsw i32 %and.i51.i, %sub.i47.i %current.i53.i = getelementptr inbounds nuw i8, ptr %state, i64 8 - %20 = trunc i32 %shl.i52.i to i8 - %conv7.i54.i = or i8 %18, %20 + %22 = trunc i32 %shl.i52.i to i8 + %conv7.i54.i = or i8 %20, %22 store i8 %conv7.i54.i, ptr %current.i53.i, align 8, !tbaa !186 - %sub.i11.i55.i = sub nsw i8 %19, %14 - store i8 %sub.i11.i55.i, ptr %free_bits.i.i, align 1, !tbaa !137 - %cmp.i12.i56.i = icmp eq i8 %19, %14 - br i1 %cmp.i12.i56.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit - -return.sink.split.i: ; preds = %if.then12.i, %if.then.i3 - %conv7.i54.sink.i = phi i8 [ %conv5.i.i, %if.then.i3 ], [ %conv7.i54.i, %if.then12.i ] - %current.i53.sink.i = phi ptr [ %current.i.i, %if.then.i3 ], [ %current.i53.i, %if.then12.i ] - %21 = load ptr, ptr %state, align 8, !tbaa !185 - %stream_index.i.i.i58.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %22 = load i64, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %inc.i.i.i59.i = add i64 %22, 1 - store i64 %inc.i.i.i59.i, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %arrayidx.i.i.i60.i = getelementptr inbounds i8, ptr %21, i64 %22 - store i8 %conv7.i54.sink.i, ptr %arrayidx.i.i.i60.i, align 1, !tbaa !63 - store i8 0, ptr %current.i53.sink.i, align 8, !tbaa !186 - store i8 8, ptr %free_bits.i.i, align 1, !tbaa !137 + %sub.i11.i55.i = sub nsw i8 %21, %16 + br label %return.sink.split.i + +return.sink.split.i: ; preds = %if.then12.i, %if.then.i.i.i + %sub.i11.i55.sink.i = phi i8 [ %sub.i11.i55.i, %if.then12.i ], [ 8, %if.then.i.i.i ] + store i8 %sub.i11.i55.sink.i, ptr %free_bits.i.i, align 1, !tbaa !137 br label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit -_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %if.then12.i, %return.sink.split.i +_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %return.sink.split.i %previous_leading_zeros.i = getelementptr inbounds nuw i8, ptr %state, i64 66648 store i8 -1, ptr %previous_leading_zeros.i, align 8, !tbaa !138 br label %if.end94 @@ -6848,10 +6848,21 @@ if.then.i3: ; preds = %_ZN6duckdb10FlagBuf %sub.i.i.i = add i8 %10, -7 store i8 %sub.i.i.i, ptr %free_bits.i.i, align 1, !tbaa !137 %cmp.i.i.i = icmp eq i8 %10, 7 - br i1 %cmp.i.i.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit + +if.then.i.i.i: ; preds = %if.then.i3 + %13 = load ptr, ptr %state, align 8, !tbaa !185 + %stream_index.i.i.i.i = getelementptr inbounds nuw i8, ptr %state, i64 16 + %14 = load i64, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %inc.i.i.i.i = add i64 %14, 1 + store i64 %inc.i.i.i.i, ptr %stream_index.i.i.i.i, align 8, !tbaa !195 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 %14 + store i8 %conv5.i.i, ptr %arrayidx.i.i.i.i, align 1, !tbaa !63 + store i8 0, ptr %current.i.i, align 8, !tbaa !186 + br label %return.sink.split.i if.end.i: ; preds = %_ZN6duckdb10FlagBufferILb0EE6InsertENS_14ChimpConstants5FlagsE.exit - %13 = xor i8 %10, 7 + %15 = xor i8 %10, 7 %cmp.not.i = icmp eq i8 %10, 0 br i1 %cmp.not.i, label %if.end.if.then12_crit_edge.i, label %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i @@ -6861,7 +6872,7 @@ if.end.if.then12_crit_edge.i: ; preds = %if.end.i br label %if.then12.i _ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i: ; preds = %if.end.i - %sub.i = zext nneg i8 %13 to i32 + %sub.i = zext nneg i8 %15 to i32 %conv6.i = zext nneg i8 %previous_index.0234 to i32 %shr.i2 = lshr i32 %conv6.i, %sub.i %conv7.i = trunc nuw nsw i32 %shr.i2 to i8 @@ -6869,52 +6880,41 @@ _ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i: ; preds = %if.end.i %sub.i.i36.i = xor i8 %notmask.i, -1 %and10.i.i = and i8 %conv7.i, %sub.i.i36.i %current.i39.i = getelementptr inbounds nuw i8, ptr %state, i64 8 - %14 = load i8, ptr %current.i39.i, align 8, !tbaa !186 - %conv7.i.i = or i8 %14, %and10.i.i - %15 = load ptr, ptr %state, align 8, !tbaa !185 + %16 = load i8, ptr %current.i39.i, align 8, !tbaa !186 + %conv7.i.i = or i8 %16, %and10.i.i + %17 = load ptr, ptr %state, align 8, !tbaa !185 %stream_index.i.i.i41.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %16 = load i64, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 - %inc.i.i.i42.i = add i64 %16, 1 + %18 = load i64, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 + %inc.i.i.i42.i = add i64 %18, 1 store i64 %inc.i.i.i42.i, ptr %stream_index.i.i.i41.i, align 8, !tbaa !195 - %arrayidx.i.i.i43.i = getelementptr inbounds i8, ptr %15, i64 %16 + %arrayidx.i.i.i43.i = getelementptr inbounds i8, ptr %17, i64 %18 store i8 %conv7.i.i, ptr %arrayidx.i.i.i43.i, align 1, !tbaa !63 br label %if.then12.i if.then12.i: ; preds = %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i, %if.end.if.then12_crit_edge.i %conv2.i46.pre-phi.i = phi i32 [ 7, %if.end.if.then12_crit_edge.i ], [ %sub.i, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %17 = phi i8 [ %.pre.i, %if.end.if.then12_crit_edge.i ], [ 0, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %18 = phi i8 [ 0, %if.end.if.then12_crit_edge.i ], [ 8, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] - %conv.i45.i = zext nneg i8 %18 to i32 + %19 = phi i8 [ %.pre.i, %if.end.if.then12_crit_edge.i ], [ 0, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] + %20 = phi i8 [ 0, %if.end.if.then12_crit_edge.i ], [ 8, %_ZN6duckdb15OutputBitStreamILb0EE14WriteInCurrentEhh.exit.i ] + %conv.i45.i = zext nneg i8 %20 to i32 %sub.i47.i = sub nsw i32 %conv.i45.i, %conv2.i46.pre-phi.i - %notmask72.i = shl nsw i8 -1, %13 + %notmask72.i = shl nsw i8 -1, %15 %sub.i.i49.i = xor i8 %notmask72.i, -1 %and10.i50.i = and i8 %previous_index.0234, %sub.i.i49.i %and.i51.i = zext nneg i8 %and10.i50.i to i32 %shl.i52.i = shl nuw nsw i32 %and.i51.i, %sub.i47.i %current.i53.i = getelementptr inbounds nuw i8, ptr %state, i64 8 - %19 = trunc i32 %shl.i52.i to i8 - %conv7.i54.i = or i8 %17, %19 + %21 = trunc i32 %shl.i52.i to i8 + %conv7.i54.i = or i8 %19, %21 store i8 %conv7.i54.i, ptr %current.i53.i, align 8, !tbaa !186 - %sub.i11.i55.i = sub nsw i8 %18, %13 - store i8 %sub.i11.i55.i, ptr %free_bits.i.i, align 1, !tbaa !137 - %cmp.i12.i56.i = icmp eq i8 %18, %13 - br i1 %cmp.i12.i56.i, label %return.sink.split.i, label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit - -return.sink.split.i: ; preds = %if.then12.i, %if.then.i3 - %conv7.i54.sink.i = phi i8 [ %conv5.i.i, %if.then.i3 ], [ %conv7.i54.i, %if.then12.i ] - %current.i53.sink.i = phi ptr [ %current.i.i, %if.then.i3 ], [ %current.i53.i, %if.then12.i ] - %20 = load ptr, ptr %state, align 8, !tbaa !185 - %stream_index.i.i.i58.i = getelementptr inbounds nuw i8, ptr %state, i64 16 - %21 = load i64, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %inc.i.i.i59.i = add i64 %21, 1 - store i64 %inc.i.i.i59.i, ptr %stream_index.i.i.i58.i, align 8, !tbaa !195 - %arrayidx.i.i.i60.i = getelementptr inbounds i8, ptr %20, i64 %21 - store i8 %conv7.i54.sink.i, ptr %arrayidx.i.i.i60.i, align 1, !tbaa !63 - store i8 0, ptr %current.i53.sink.i, align 8, !tbaa !186 - store i8 8, ptr %free_bits.i.i, align 1, !tbaa !137 + %sub.i11.i55.i = sub nsw i8 %20, %15 + br label %return.sink.split.i + +return.sink.split.i: ; preds = %if.then12.i, %if.then.i.i.i + %sub.i11.i55.sink.i = phi i8 [ %sub.i11.i55.i, %if.then12.i ], [ 8, %if.then.i.i.i ] + store i8 %sub.i11.i55.sink.i, ptr %free_bits.i.i, align 1, !tbaa !137 br label %_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit -_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %if.then12.i, %return.sink.split.i +_ZN6duckdb15OutputBitStreamILb0EE10WriteValueIhLh7EEEvT_.exit: ; preds = %if.then.i3, %return.sink.split.i %previous_leading_zeros.i = getelementptr inbounds nuw i8, ptr %state, i64 132184 store i8 -1, ptr %previous_leading_zeros.i, align 8, !tbaa !286 br label %if.end84 diff --git a/bench/folly/optimized/AsyncSocket.cpp.ll b/bench/folly/optimized/AsyncSocket.cpp.ll index f7744ebbd33..33f4804a6ce 100644 --- a/bench/folly/optimized/AsyncSocket.cpp.ll +++ b/bench/folly/optimized/AsyncSocket.cpp.ll @@ -10183,17 +10183,13 @@ if.then65: ; preds = %if.then59 if.then67: ; preds = %if.then65 %and.i = and i16 %33, -5 store i16 %and.i, ptr %eventFlags_132, align 2, !tbaa !135 - %cmp.i207 = icmp eq i16 %and.i, %33 - br i1 %cmp.i207, label %if.end71, label %if.else.i - -if.else.i: ; preds = %if.then67 %call.i208 = invoke noundef zeroext i1 @_ZN5folly11AsyncSocket23updateEventRegistrationEv(ptr noundef nonnull align 8 dereferenceable(1113) %this) to label %invoke.cont68 unwind label %terminate.lpad.loopexit -invoke.cont68: ; preds = %if.else.i +invoke.cont68: ; preds = %if.then67 br i1 %call.i208, label %if.end71, label %cleanup164 -if.end71: ; preds = %invoke.cont68, %if.then67 +if.end71: ; preds = %invoke.cont68 invoke void @_ZN5folly12AsyncTimeout13cancelTimeoutEv(ptr noundef nonnull align 8 dereferenceable(192) %writeTimeout_144) to label %if.end73 unwind label %terminate.lpad.loopexit @@ -10526,7 +10522,7 @@ terminate.lpad.i: ; preds = %if.then6.i _ZN5folly22DelayedDestructionBase15DestructorGuardD2Ev.exit: ; preds = %if.then6.i, %if.then.i257 ret void -terminate.lpad.loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253, %invoke.cont155, %if.then150, %invoke.cont147, %if.then143, %if.then136, %if.then126, %if.else120, %if.end109, %invoke.cont98, %cond.false.i.i, %invoke.cont94, %if.then91, %if.end71, %if.else.i, %if.else, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %invoke.cont51, %if.end47, %if.then43, %_ZN5folly11AsyncSocket22WriteCallbackWithState13notifyOnWriteEv.exit +terminate.lpad.loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit253, %invoke.cont155, %if.then150, %invoke.cont147, %if.then143, %if.then136, %if.then126, %if.else120, %if.end109, %invoke.cont98, %cond.false.i.i, %invoke.cont94, %if.then91, %if.end71, %if.then67, %if.else, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %invoke.cont51, %if.end47, %if.then43, %_ZN5folly11AsyncSocket22WriteCallbackWithState13notifyOnWriteEv.exit %lpad.loopexit = landingpad { ptr, i32 } catch ptr null br label %terminate.lpad.body diff --git a/bench/folly/optimized/DistributedMutex.cpp.ll b/bench/folly/optimized/DistributedMutex.cpp.ll index 5d320ffaef2..99e4b8ca2dc 100644 --- a/bench/folly/optimized/DistributedMutex.cpp.ll +++ b/bench/folly/optimized/DistributedMutex.cpp.ll @@ -837,9 +837,9 @@ land.lhs.true.i45: ; preds = %_ZN5folly6detail17d %shr.i31.i = lshr i64 %17, 8 %add.i = add nuw nsw i64 %shr.i31.i, 200 %cmp.i55 = icmp samesign ugt i64 %shl.i.i, %add.i - br i1 %cmp.i55, label %if.then.i, label %land.lhs.true.i.thread.thread55 + br i1 %cmp.i55, label %if.then.i, label %land.lhs.true.i.thread.thread54 -land.lhs.true.i.thread.thread55: ; preds = %land.lhs.true.i45 +land.lhs.true.i.thread.thread54: ; preds = %land.lhs.true.i45 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %agg.tmp.i43) br label %if.then5.i @@ -870,14 +870,14 @@ _ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmm land.lhs.true.i.thread: ; preds = %_ZN5folly6detail17distributed_mutex8loadTaskINS1_6WaiterISt6atomicEEEENS0_17InlineFunctionRefIFvvELm48EEEPT_m.exit.us30, %_ZN5folly6detail17distributed_mutex8loadTaskINS1_6WaiterISt6atomicEEEENS0_17InlineFunctionRefIFvvELm48EEEPT_m.exit call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %agg.tmp.i43) - %cmp.i6274 = icmp eq i64 %17, 4 - br i1 %cmp.i6274, label %cond.false.i, label %if.then5.i - -if.then5.i: ; preds = %land.lhs.true.i.us, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37, %land.lhs.true.i.thread.thread55, %land.lhs.true.i.thread - %current.011011 = phi ptr [ %waiter, %land.lhs.true.i.thread ], [ %waiter, %land.lhs.true.i.thread.thread55 ], [ %waiter, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37 ], [ %waiter, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit ], [ %current.0110.us, %land.lhs.true.i.us ] - %futex_7 = phi ptr [ %futex_.us25, %land.lhs.true.i.thread ], [ %futex_.us25, %land.lhs.true.i.thread.thread55 ], [ %futex_.us25, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37 ], [ %futex_.us25, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit ], [ %futex_.us, %land.lhs.true.i.us ] - %34 = getelementptr inbounds nuw i8, ptr %current.011011, i64 144 - store i64 %waker, ptr %34, align 16, !tbaa !65 + %34 = icmp eq i64 %17, 4 + br i1 %34, label %cond.false.i, label %if.then5.i + +if.then5.i: ; preds = %land.lhs.true.i.us, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37, %land.lhs.true.i.thread.thread54, %land.lhs.true.i.thread + %current.011011 = phi ptr [ %waiter, %land.lhs.true.i.thread ], [ %waiter, %land.lhs.true.i.thread.thread54 ], [ %waiter, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37 ], [ %waiter, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit ], [ %current.0110.us, %land.lhs.true.i.us ] + %futex_7 = phi ptr [ %futex_.us25, %land.lhs.true.i.thread ], [ %futex_.us25, %land.lhs.true.i.thread.thread54 ], [ %futex_.us25, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit.us37 ], [ %futex_.us25, %_ZN5folly6detail17distributed_mutex10tryCombineISt6atomicEEmPNS1_6WaiterIT_EEmmmlNS0_17InlineFunctionRefIFvvELm48EEE.exit ], [ %futex_.us, %land.lhs.true.i.us ] + %35 = getelementptr inbounds nuw i8, ptr %current.011011, i64 144 + store i64 %waker, ptr %35, align 16, !tbaa !65 %waiters_.i = getelementptr inbounds nuw i8, ptr %current.011011, i64 152 %storage.sroa.0.0.copyload.i = load i64, ptr %sleepers, align 8 store i64 %storage.sroa.0.0.copyload.i, ptr %waiters_.i, align 8, !tbaa !69 @@ -901,7 +901,7 @@ cleanup.action.i: ; preds = %invoke.cont.i unreachable lpad.i: ; preds = %invoke.cont.i, %cond.false.i - %35 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup call void @_ZN6google15LogMessageFatalD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp10.i) #14 unreachable @@ -921,7 +921,7 @@ cleanup.action: ; preds = %invoke.cont unreachable lpad: ; preds = %invoke.cont, %cond.false - %36 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } cleanup call void @_ZN6google15LogMessageFatalD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %ref.tmp7) #14 unreachable diff --git a/bench/gromacs/optimized/md5.c.ll b/bench/gromacs/optimized/md5.c.ll index 775b393cb69..984b2616cef 100644 --- a/bench/gromacs/optimized/md5.c.ll +++ b/bench/gromacs/optimized/md5.c.ll @@ -3,7 +3,7 @@ source_filename = "bench/gromacs/original/md5.c.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" -@md5_finish.pad = internal constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 +@md5_finish.pad = internal unnamed_addr constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @md5_init(ptr noundef writeonly captures(none) initializes((0, 24)) %0) local_unnamed_addr #0 { @@ -725,7 +725,7 @@ define void @md5_finish(ptr noundef %0, ptr noundef writeonly captures(none) %1) 28: ; preds = %26, %14 %.not.i = icmp eq i32 %20, 0 - br i1 %.not.i, label %40, label %29 + br i1 %.not.i, label %._crit_edge.i.thread, label %29 29: ; preds = %28 %30 = add nuw nsw i32 %19, %20 @@ -739,100 +739,92 @@ define void @md5_finish(ptr noundef %0, ptr noundef writeonly captures(none) %1) tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 16 dereferenceable(1) @md5_finish.pad, i64 %37, i1 false) %38 = add nuw nsw i32 %33, %20 %39 = icmp samesign ult i32 %38, 64 - br i1 %39, label %md5_append.exit, label %._crit_edge.i + br i1 %39, label %md5_append.exit, label %.thread -40: ; preds = %28 - %41 = icmp eq i32 %18, 63 - br i1 %41, label %._crit_edge.i.thread47, label %._crit_edge.i.thread - -._crit_edge.i.thread47: ; preds = %40 - tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull @md5_finish.pad) - br label %md5_append.exit - -._crit_edge.i: ; preds = %29 - %42 = getelementptr inbounds nuw i8, ptr @md5_finish.pad, i64 %37 - %43 = sub nsw i32 %19, %33 +.thread: ; preds = %29 + %40 = getelementptr inbounds nuw i8, ptr @md5_finish.pad, i64 %37 + %41 = sub nsw i32 %19, %33 tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %34) - %.not41.i = icmp eq i32 %43, 0 + %.not41.i = icmp eq i32 %41, 0 br i1 %.not41.i, label %md5_append.exit, label %._crit_edge.i.thread -._crit_edge.i.thread: ; preds = %40, %._crit_edge.i - %.1.lcssa.i32 = phi ptr [ %42, %._crit_edge.i ], [ @md5_finish.pad, %40 ] - %.138.lcssa.i31 = phi i32 [ %43, %._crit_edge.i ], [ %19, %40 ] - %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %45 = sext i32 %.138.lcssa.i31 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %44, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %45, i1 false) +._crit_edge.i.thread: ; preds = %28, %.thread + %.1.lcssa.i32 = phi ptr [ %40, %.thread ], [ @md5_finish.pad, %28 ] + %.138.lcssa.i31 = phi i32 [ %41, %.thread ], [ %19, %28 ] + %42 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %43 = sext i32 %.138.lcssa.i31 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %42, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %43, i1 false) br label %md5_append.exit -md5_append.exit: ; preds = %._crit_edge.i.thread47, %29, %._crit_edge.i, %._crit_edge.i.thread - %46 = load i32, ptr %0, align 4 - %47 = lshr i32 %46, 3 - %48 = and i32 %47, 63 - %49 = load i32, ptr %22, align 4 - %50 = add i32 %46, 64 - store i32 %50, ptr %0, align 4 - %51 = icmp ugt i32 %46, -65 - br i1 %51, label %52, label %54 - -52: ; preds = %md5_append.exit - %53 = add i32 %49, 1 - store i32 %53, ptr %22, align 4 - br label %54 - -54: ; preds = %52, %md5_append.exit - %.not.i15 = icmp eq i32 %48, 0 - br i1 %.not.i15, label %._crit_edge.i18.thread, label %55 - -55: ; preds = %54 - %56 = icmp samesign ugt i32 %48, 56 - %57 = sub nuw nsw i32 64, %48 - %58 = select i1 %56, i32 %57, i32 8 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = zext nneg i32 %48 to i64 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 %60 - %62 = zext nneg i32 %58 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %62, i1 false) - %63 = add nuw nsw i32 %58, %48 - %64 = icmp samesign ult i32 %63, 64 - br i1 %64, label %md5_append.exit25, label %._crit_edge.i18 - -._crit_edge.i18: ; preds = %55 - %65 = getelementptr inbounds nuw i8, ptr %3, i64 %62 - %66 = sub nsw i32 8, %58 - tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %59) - %.not41.i21 = icmp eq i32 %58, 8 +md5_append.exit: ; preds = %29, %.thread, %._crit_edge.i.thread + %44 = load i32, ptr %0, align 4 + %45 = lshr i32 %44, 3 + %46 = and i32 %45, 63 + %47 = load i32, ptr %22, align 4 + %48 = add i32 %44, 64 + store i32 %48, ptr %0, align 4 + %49 = icmp ugt i32 %44, -65 + br i1 %49, label %50, label %52 + +50: ; preds = %md5_append.exit + %51 = add i32 %47, 1 + store i32 %51, ptr %22, align 4 + br label %52 + +52: ; preds = %50, %md5_append.exit + %.not.i15 = icmp eq i32 %46, 0 + br i1 %.not.i15, label %._crit_edge.i18.thread, label %53 + +53: ; preds = %52 + %54 = icmp samesign ugt i32 %46, 56 + %55 = sub nuw nsw i32 64, %46 + %56 = select i1 %54, i32 %55, i32 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = zext nneg i32 %46 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %58 + %60 = zext nneg i32 %56 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %60, i1 false) + %61 = add nuw nsw i32 %56, %46 + %62 = icmp samesign ult i32 %61, 64 + br i1 %62, label %md5_append.exit25, label %._crit_edge.i18 + +._crit_edge.i18: ; preds = %53 + %63 = getelementptr inbounds nuw i8, ptr %3, i64 %60 + %64 = sub nsw i32 8, %56 + tail call fastcc void @md5_process(ptr noundef nonnull %0, ptr noundef nonnull %57) + %.not41.i21 = icmp eq i32 %56, 8 br i1 %.not41.i21, label %md5_append.exit25, label %._crit_edge.i18.thread -._crit_edge.i18.thread: ; preds = %54, %._crit_edge.i18 - %.1.lcssa.i2037 = phi ptr [ %65, %._crit_edge.i18 ], [ %3, %54 ] - %.138.lcssa.i1936 = phi i32 [ %66, %._crit_edge.i18 ], [ 8, %54 ] - %67 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %68 = sext i32 %.138.lcssa.i1936 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %67, ptr nonnull align 1 %.1.lcssa.i2037, i64 %68, i1 false) +._crit_edge.i18.thread: ; preds = %52, %._crit_edge.i18 + %.1.lcssa.i2037 = phi ptr [ %63, %._crit_edge.i18 ], [ %3, %52 ] + %.138.lcssa.i1936 = phi i32 [ %64, %._crit_edge.i18 ], [ 8, %52 ] + %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %66 = sext i32 %.138.lcssa.i1936 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 1 %.1.lcssa.i2037, i64 %66, i1 false) br label %md5_append.exit25 -md5_append.exit25: ; preds = %55, %._crit_edge.i18, %._crit_edge.i18.thread - %69 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %70 - -70: ; preds = %md5_append.exit25, %70 - %indvars.iv43 = phi i64 [ 0, %md5_append.exit25 ], [ %indvars.iv.next44, %70 ] - %71 = lshr i64 %indvars.iv43, 2 - %72 = and i64 %71, 1073741823 - %73 = getelementptr inbounds nuw [4 x i32], ptr %69, i64 0, i64 %72 - %74 = load i32, ptr %73, align 4 - %indvars.iv43.tr = trunc i64 %indvars.iv43 to i32 - %75 = shl i32 %indvars.iv43.tr, 3 - %76 = and i32 %75, 24 - %77 = lshr i32 %74, %76 - %78 = trunc i32 %77 to i8 - %79 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv43 - store i8 %78, ptr %79, align 1 - %indvars.iv.next44 = add nuw nsw i64 %indvars.iv43, 1 - %exitcond46.not = icmp eq i64 %indvars.iv.next44, 16 - br i1 %exitcond46.not, label %80, label %70, !llvm.loop !7 - -80: ; preds = %70 +md5_append.exit25: ; preds = %53, %._crit_edge.i18, %._crit_edge.i18.thread + %67 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %68 + +68: ; preds = %md5_append.exit25, %68 + %indvars.iv41 = phi i64 [ 0, %md5_append.exit25 ], [ %indvars.iv.next42, %68 ] + %69 = lshr i64 %indvars.iv41, 2 + %70 = and i64 %69, 1073741823 + %71 = getelementptr inbounds nuw [4 x i32], ptr %67, i64 0, i64 %70 + %72 = load i32, ptr %71, align 4 + %indvars.iv41.tr = trunc i64 %indvars.iv41 to i32 + %73 = shl i32 %indvars.iv41.tr, 3 + %74 = and i32 %73, 24 + %75 = lshr i32 %72, %74 + %76 = trunc i32 %75 to i8 + %77 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv41 + store i8 %76, ptr %77, align 1 + %indvars.iv.next42 = add nuw nsw i64 %indvars.iv41, 1 + %exitcond44.not = icmp eq i64 %indvars.iv.next42, 16 + br i1 %exitcond44.not, label %78, label %68, !llvm.loop !7 + +78: ; preds = %68 ret void } diff --git a/bench/gromacs/optimized/md5.cpp.ll b/bench/gromacs/optimized/md5.cpp.ll index 51776ee3e24..97ca7bcd608 100644 --- a/bench/gromacs/optimized/md5.cpp.ll +++ b/bench/gromacs/optimized/md5.cpp.ll @@ -5,7 +5,7 @@ target triple = "x86_64-pc-linux-gnu" %"struct.std::array" = type { [16 x i8] } -@_ZZ14gmx_md5_finishP11md5_state_sE3pad = internal constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 +@_ZZ14gmx_md5_finishP11md5_state_sE3pad = internal unnamed_addr constant <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @_Z12gmx_md5_initP11md5_state_s(ptr noundef writeonly captures(none) initializes((0, 24)) %0) local_unnamed_addr #0 { @@ -728,7 +728,7 @@ define { i64, i64 } @_Z14gmx_md5_finishP11md5_state_s(ptr noundef %0) local_unna 28: ; preds = %26, %14 %.not.i = icmp eq i32 %20, 0 - br i1 %.not.i, label %40, label %29 + br i1 %.not.i, label %._crit_edge.i.thread, label %29 29: ; preds = %28 %30 = add nuw nsw i32 %19, %20 @@ -742,99 +742,91 @@ define { i64, i64 } @_Z14gmx_md5_finishP11md5_state_s(ptr noundef %0) local_unna tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 16 dereferenceable(1) @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37, i1 false) %38 = add nuw nsw i32 %33, %20 %39 = icmp samesign ult i32 %38, 64 - br i1 %39, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %._crit_edge.i + br i1 %39, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %.thread -40: ; preds = %28 - %41 = icmp eq i32 %18, 63 - br i1 %41, label %._crit_edge.i.thread44, label %._crit_edge.i.thread - -._crit_edge.i.thread44: ; preds = %40 - tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull @_ZZ14gmx_md5_finishP11md5_state_sE3pad) - br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - -._crit_edge.i: ; preds = %29 - %42 = getelementptr inbounds nuw i8, ptr @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37 - %43 = sub nsw i32 %19, %33 +.thread: ; preds = %29 + %40 = getelementptr inbounds nuw i8, ptr @_ZZ14gmx_md5_finishP11md5_state_sE3pad, i64 %37 + %41 = sub nsw i32 %19, %33 tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %34) - %.not41.i = icmp eq i32 %43, 0 + %.not41.i = icmp eq i32 %41, 0 br i1 %.not41.i, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit, label %._crit_edge.i.thread -._crit_edge.i.thread: ; preds = %40, %._crit_edge.i - %.1.lcssa.i32 = phi ptr [ %42, %._crit_edge.i ], [ @_ZZ14gmx_md5_finishP11md5_state_sE3pad, %40 ] - %.138.lcssa.i31 = phi i32 [ %43, %._crit_edge.i ], [ %19, %40 ] - %44 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %45 = sext i32 %.138.lcssa.i31 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %44, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %45, i1 false) +._crit_edge.i.thread: ; preds = %28, %.thread + %.1.lcssa.i32 = phi ptr [ %40, %.thread ], [ @_ZZ14gmx_md5_finishP11md5_state_sE3pad, %28 ] + %.138.lcssa.i31 = phi i32 [ %41, %.thread ], [ %19, %28 ] + %42 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %43 = sext i32 %.138.lcssa.i31 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %42, ptr noundef nonnull align 1 dereferenceable(1) %.1.lcssa.i32, i64 %43, i1 false) br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit -_Z14gmx_md5_appendP11md5_state_sPKhi.exit: ; preds = %._crit_edge.i.thread44, %29, %._crit_edge.i, %._crit_edge.i.thread - %46 = load i32, ptr %0, align 4 - %47 = lshr i32 %46, 3 - %48 = and i32 %47, 63 - %49 = load i32, ptr %22, align 4 - %50 = add i32 %46, 64 - store i32 %50, ptr %0, align 4 - %51 = icmp ugt i32 %46, -65 - br i1 %51, label %52, label %54 - -52: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - %53 = add i32 %49, 1 - store i32 %53, ptr %22, align 4 - br label %54 - -54: ; preds = %52, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit - %.not.i15 = icmp eq i32 %48, 0 - br i1 %.not.i15, label %._crit_edge.i18.thread, label %55 - -55: ; preds = %54 - %56 = icmp samesign ugt i32 %48, 56 - %57 = sub nuw nsw i32 64, %48 - %58 = select i1 %56, i32 %57, i32 8 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = zext nneg i32 %48 to i64 - %61 = getelementptr inbounds nuw i8, ptr %59, i64 %60 - %62 = zext nneg i32 %58 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %61, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %62, i1 false) - %63 = add nuw nsw i32 %58, %48 - %64 = icmp samesign ult i32 %63, 64 - br i1 %64, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, label %._crit_edge.i18 - -._crit_edge.i18: ; preds = %55 - %65 = getelementptr inbounds nuw i8, ptr %3, i64 %62 - %66 = sub nsw i32 8, %58 - tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %59) - %.not41.i21 = icmp eq i32 %58, 8 +_Z14gmx_md5_appendP11md5_state_sPKhi.exit: ; preds = %29, %.thread, %._crit_edge.i.thread + %44 = load i32, ptr %0, align 4 + %45 = lshr i32 %44, 3 + %46 = and i32 %45, 63 + %47 = load i32, ptr %22, align 4 + %48 = add i32 %44, 64 + store i32 %48, ptr %0, align 4 + %49 = icmp ugt i32 %44, -65 + br i1 %49, label %50, label %52 + +50: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit + %51 = add i32 %47, 1 + store i32 %51, ptr %22, align 4 + br label %52 + +52: ; preds = %50, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit + %.not.i15 = icmp eq i32 %46, 0 + br i1 %.not.i15, label %._crit_edge.i18.thread, label %53 + +53: ; preds = %52 + %54 = icmp samesign ugt i32 %46, 56 + %55 = sub nuw nsw i32 64, %46 + %56 = select i1 %54, i32 %55, i32 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = zext nneg i32 %46 to i64 + %59 = getelementptr inbounds nuw i8, ptr %57, i64 %58 + %60 = zext nneg i32 %56 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 %60, i1 false) + %61 = add nuw nsw i32 %56, %46 + %62 = icmp samesign ult i32 %61, 64 + br i1 %62, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, label %._crit_edge.i18 + +._crit_edge.i18: ; preds = %53 + %63 = getelementptr inbounds nuw i8, ptr %3, i64 %60 + %64 = sub nsw i32 8, %56 + tail call fastcc void @_ZL11md5_processP11md5_state_sPKh(ptr noundef nonnull %0, ptr noundef nonnull %57) + %.not41.i21 = icmp eq i32 %56, 8 br i1 %.not41.i21, label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, label %._crit_edge.i18.thread -._crit_edge.i18.thread: ; preds = %54, %._crit_edge.i18 - %.1.lcssa.i2037 = phi ptr [ %65, %._crit_edge.i18 ], [ %3, %54 ] - %.138.lcssa.i1936 = phi i32 [ %66, %._crit_edge.i18 ], [ 8, %54 ] - %67 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %68 = sext i32 %.138.lcssa.i1936 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %67, ptr nonnull align 1 %.1.lcssa.i2037, i64 %68, i1 false) +._crit_edge.i18.thread: ; preds = %52, %._crit_edge.i18 + %.1.lcssa.i2037 = phi ptr [ %63, %._crit_edge.i18 ], [ %3, %52 ] + %.138.lcssa.i1936 = phi i32 [ %64, %._crit_edge.i18 ], [ 8, %52 ] + %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %66 = sext i32 %.138.lcssa.i1936 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 1 %.1.lcssa.i2037, i64 %66, i1 false) br label %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25 -_Z14gmx_md5_appendP11md5_state_sPKhi.exit25: ; preds = %55, %._crit_edge.i18, %._crit_edge.i18.thread - %69 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %70 - -70: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, %70 - %.040 = phi i64 [ 0, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25 ], [ %79, %70 ] - %71 = lshr i64 %.040, 2 - %72 = getelementptr inbounds nuw [4 x i32], ptr %69, i64 0, i64 %71 - %73 = load i32, ptr %72, align 4 - %.0.tr = trunc nuw i64 %.040 to i32 - %74 = shl nuw nsw i32 %.0.tr, 3 - %75 = and i32 %74, 24 - %76 = lshr i32 %73, %75 - %77 = trunc i32 %76 to i8 - %78 = getelementptr inbounds nuw [16 x i8], ptr %2, i64 0, i64 %.040 - store i8 %77, ptr %78, align 1 - %79 = add nuw nsw i64 %.040, 1 - %exitcond43.not = icmp eq i64 %79, 16 - br i1 %exitcond43.not, label %80, label %70, !llvm.loop !8 - -80: ; preds = %70 +_Z14gmx_md5_appendP11md5_state_sPKhi.exit25: ; preds = %53, %._crit_edge.i18, %._crit_edge.i18.thread + %67 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %68 + +68: ; preds = %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25, %68 + %.039 = phi i64 [ 0, %_Z14gmx_md5_appendP11md5_state_sPKhi.exit25 ], [ %77, %68 ] + %69 = lshr i64 %.039, 2 + %70 = getelementptr inbounds nuw [4 x i32], ptr %67, i64 0, i64 %69 + %71 = load i32, ptr %70, align 4 + %.0.tr = trunc nuw i64 %.039 to i32 + %72 = shl nuw nsw i32 %.0.tr, 3 + %73 = and i32 %72, 24 + %74 = lshr i32 %71, %73 + %75 = trunc i32 %74 to i8 + %76 = getelementptr inbounds nuw [16 x i8], ptr %2, i64 0, i64 %.039 + store i8 %75, ptr %76, align 1 + %77 = add nuw nsw i64 %.039, 1 + %exitcond41.not = icmp eq i64 %77, 16 + br i1 %exitcond41.not, label %78, label %68, !llvm.loop !8 + +78: ; preds = %68 %.fca.0.load = load i64, ptr %2, align 8 %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.fca.0.load, 0 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/icu/optimized/reldtfmt.ll b/bench/icu/optimized/reldtfmt.ll index ffdd73af9b5..defd0a4a2a6 100644 --- a/bench/icu/optimized/reldtfmt.ll +++ b/bench/icu/optimized/reldtfmt.ll @@ -308,7 +308,7 @@ lpad4: ; preds = %invoke.cont3 cleanup br label %ehcleanup -lpad6: ; preds = %call3.i.noexc, %if.then.i, %invoke.cont75, %if.then43, %if.then36, %if.end30, %if.end20 +lpad6: ; preds = %call3.i.noexc, %if.then.i, %invoke.cont75, %if.then43, %if.then36, %if.end30, %if.then23 %2 = landingpad { ptr, i32 } cleanup tail call void @_ZN6icu_756LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %fLocale) #15 @@ -320,14 +320,14 @@ if.end: ; preds = %invoke.cont5 %4 = add i32 %timeStyle, -4 %or.cond4 = icmp ult i32 %4, -5 %or.cond = or i1 %or.cond2, %or.cond4 - br i1 %or.cond, label %invoke.cont77.sink.split, label %if.end20 + br i1 %or.cond, label %invoke.cont77.sink.split, label %if.then23 -if.end20: ; preds = %if.end +if.then23: ; preds = %if.end %and = and i32 %dateStyle, 3 %call25 = invoke noundef ptr @_ZN6icu_7510DateFormat18createDateInstanceENS0_6EStyleERKNS_6LocaleE(i32 noundef %and, ptr noundef nonnull align 8 dereferenceable(217) %locale) to label %invoke.cont24 unwind label %lpad6 -invoke.cont24: ; preds = %if.end20 +invoke.cont24: ; preds = %if.then23 %5 = icmp eq ptr %call25, null br i1 %5, label %dynamic_cast.end.thread, label %dynamic_cast.end diff --git a/bench/icu/optimized/timezone.ll b/bench/icu/optimized/timezone.ll index 9d61dd8a100..640fcb30f4d 100644 --- a/bench/icu/optimized/timezone.ll +++ b/bench/icu/optimized/timezone.ll @@ -1868,9 +1868,9 @@ invoke.cont: ; preds = %entry %cmp.i = icmp sgt i32 %0, 0 %cmp = icmp slt i32 %call, 1 %or.cond = select i1 %cmp.i, i1 true, i1 %cmp - br i1 %or.cond, label %cleanup, label %for.cond.preheader + br i1 %or.cond, label %cleanup, label %if.end4.lr.ph -for.cond.preheader: ; preds = %invoke.cont +if.end4.lr.ph: ; preds = %invoke.cont %div1118 = lshr i32 %call, 1 %fUnion.i.i.i = getelementptr inbounds nuw i8, ptr %id, i64 8 %fLength.i5.i = getelementptr inbounds nuw i8, ptr %copy, i64 12 @@ -1889,10 +1889,10 @@ lpad.loopexit.split-lp: ; preds = %entry cleanup br label %ehcleanup -if.end4: ; preds = %for.cond.preheader, %if.else - %div1122 = phi i32 [ %div1118, %for.cond.preheader ], [ %div11, %if.else ] - %start.021 = phi i32 [ 0, %for.cond.preheader ], [ %start.0.div11, %if.else ] - %limit.020 = phi i32 [ %call, %for.cond.preheader ], [ %div11.limit.0, %if.else ] +if.end4: ; preds = %if.end4.lr.ph, %if.else + %div1122 = phi i32 [ %div1118, %if.end4.lr.ph ], [ %div11, %if.else ] + %start.021 = phi i32 [ 0, %if.end4.lr.ph ], [ %start.0.div11, %if.else ] + %limit.020 = phi i32 [ %call, %if.end4.lr.ph ], [ %div11.limit.0, %if.else ] %call6 = invoke ptr @ures_getStringByIndex_75(ptr noundef %array, i32 noundef %div1122, ptr noundef nonnull %len, ptr noundef nonnull %status) to label %invoke.cont5 unwind label %lpad.loopexit diff --git a/bench/icu/optimized/ucase.ll b/bench/icu/optimized/ucase.ll index 3afa9b69792..0dbdb449f6d 100644 --- a/bench/icu/optimized/ucase.ll +++ b/bench/icu/optimized/ucase.ll @@ -2281,13 +2281,13 @@ land.lhs.true: ; preds = %if.then57 land.lhs.true63: ; preds = %land.lhs.true, %land.lhs.true, %land.lhs.true %cmp.i = icmp eq ptr %iter, null - br i1 %cmp.i, label %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, label %for.cond.i + br i1 %cmp.i, label %lor.lhs.false67, label %for.cond.i for.cond.i: ; preds = %land.lhs.true63, %_ZL10getDotTypei.exit.i %dir.0.i = phi i8 [ 0, %_ZL10getDotTypei.exit.i ], [ 1, %land.lhs.true63 ] %call.i = tail call noundef i32 %iter(ptr noundef %context, i8 noundef signext %dir.0.i) %cmp1.i = icmp sgt i32 %call.i, -1 - br i1 %cmp1.i, label %for.body.i, label %_ZL21isFollowedByMoreAbovePFiPvaES_.exit + br i1 %cmp1.i, label %for.body.i, label %lor.lhs.false67 for.body.i: ; preds = %for.cond.i %cmp.i.i = icmp samesign ult i32 %call.i, 55296 @@ -2364,16 +2364,15 @@ if.else.i.i: ; preds = %cond.end39.i.i _ZL10getDotTypei.exit.i: ; preds = %if.else.i.i, %if.then.i.i %retval.0.i.i = phi i32 [ %and51.i.i, %if.else.i.i ], [ %and46.i.i, %if.then.i.i ] - switch i32 %retval.0.i.i, label %_ZL21isFollowedByMoreAbovePFiPvaES_.exit [ + switch i32 %retval.0.i.i, label %lor.lhs.false67 [ i32 64, label %if.then71 i32 96, label %for.cond.i ], !llvm.loop !14 -_ZL21isFollowedByMoreAbovePFiPvaES_.exit: ; preds = %for.cond.i, %_ZL10getDotTypei.exit.i, %land.lhs.true63 +lor.lhs.false67: ; preds = %_ZL10getDotTypei.exit.i, %for.cond.i, %land.lhs.true63 switch i32 %c, label %if.else77 [ - i32 296, label %sw.bb76 i32 205, label %sw.bb75 - i32 204, label %sw.bb74 + i32 296, label %sw.bb76 ] if.then71: ; preds = %_ZL10getDotTypei.exit.i @@ -2398,19 +2397,19 @@ sw.bb73: ; preds = %if.then71 store ptr @_ZL10iOgonekDot, ptr %pString, align 8 br label %return -sw.bb74: ; preds = %land.lhs.true, %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, %if.then71 +sw.bb74: ; preds = %land.lhs.true, %if.then71 store ptr @_ZL9iDotGrave, ptr %pString, align 8 br label %return -sw.bb75: ; preds = %land.lhs.true, %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, %if.then71 +sw.bb75: ; preds = %land.lhs.true, %lor.lhs.false67, %if.then71 store ptr @_ZL9iDotAcute, ptr %pString, align 8 br label %return -sw.bb76: ; preds = %land.lhs.true, %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, %if.then71 +sw.bb76: ; preds = %land.lhs.true, %lor.lhs.false67, %if.then71 store ptr @_ZL9iDotTilde, ptr %pString, align 8 br label %return -if.else77: ; preds = %_ZL21isFollowedByMoreAbovePFiPvaES_.exit, %if.then57 +if.else77: ; preds = %lor.lhs.false67, %if.then57 %cmp78 = icmp eq i32 %loc, 2 %cmp80 = icmp eq i32 %c, 304 %or.cond6 = and i1 %cmp80, %cmp78 diff --git a/bench/libquic/optimized/base64.c.ll b/bench/libquic/optimized/base64.c.ll index b654f065ac1..28748a59bd8 100644 --- a/bench/libquic/optimized/base64.c.ll +++ b/bench/libquic/optimized/base64.c.ll @@ -815,16 +815,16 @@ if.end: ; preds = %land.lhs.true, %lor br label %for.body for.body: ; preds = %if.end, %for.inc - %ret.1128 = phi i32 [ 0, %if.end ], [ %ret.2, %for.inc ] - %ln.1127 = phi i32 [ %1, %if.end ], [ %ln.4, %for.inc ] - %n.1126 = phi i32 [ %0, %if.end ], [ %n.3, %for.inc ] - %i.0125 = phi i32 [ 0, %if.end ], [ %inc126, %for.inc ] - %out.addr.0123 = phi ptr [ %out, %if.end ], [ %out.addr.1, %for.inc ] + %ret.1127 = phi i32 [ 0, %if.end ], [ %ret.2, %for.inc ] + %ln.1126 = phi i32 [ %1, %if.end ], [ %ln.4, %for.inc ] + %n.1125 = phi i32 [ %0, %if.end ], [ %n.3, %for.inc ] + %i.0124 = phi i32 [ 0, %if.end ], [ %inc126, %for.inc ] + %out.addr.0122 = phi ptr [ %out, %if.end ], [ %out.addr.1, %for.inc ] %exp_nl.1121 = phi i32 [ %2, %if.end ], [ %exp_nl.2, %for.inc ] %in.addr.0120 = phi ptr [ %in, %if.end ], [ %incdec.ptr, %for.inc ] %eof.0119 = phi i32 [ 0, %if.end ], [ %eof.2, %for.inc ] %seof.0118 = phi i32 [ -1, %if.end ], [ %seof.1, %for.inc ] - %cmp7 = icmp ugt i32 %ln.1127, 79 + %cmp7 = icmp ugt i32 %ln.1126, 79 br i1 %cmp7, label %end, label %if.end10 if.end10: ; preds = %for.body @@ -840,27 +840,23 @@ conv_ascii2bin.exit69: ; preds = %if.end10 %conv14 = zext i8 %5 to i32 %6 = and i32 %conv14, 236 %cmp15 = icmp eq i32 %6, 224 - br i1 %cmp15, label %if.else, label %if.then17 + br i1 %cmp15, label %if.end25, label %if.then17 if.then17: ; preds = %if.end10, %conv_ascii2bin.exit69 - %conv1480 = phi i32 [ %conv14, %conv_ascii2bin.exit69 ], [ 255, %if.end10 ] - %retval.0.i6878 = phi i8 [ %5, %conv_ascii2bin.exit69 ], [ -1, %if.end10 ] - %inc = add i32 %n.1126, 1 - %idxprom = zext i32 %n.1126 to i64 + %conv1479 = phi i32 [ %conv14, %conv_ascii2bin.exit69 ], [ 255, %if.end10 ] + %retval.0.i6877 = phi i8 [ %5, %conv_ascii2bin.exit69 ], [ -1, %if.end10 ] + %inc = add i32 %n.1125, 1 + %idxprom = zext i32 %n.1125 to i64 %arrayidx19 = getelementptr inbounds nuw i8, ptr %enc_data, i64 %idxprom store i8 %4, ptr %arrayidx19, align 1 - %inc20 = add nuw nsw i32 %ln.1127, 1 + %inc20 = add nuw nsw i32 %ln.1126, 1 br label %if.end25 -if.else: ; preds = %conv_ascii2bin.exit69 - %cmp21 = icmp eq i8 %5, -1 - br i1 %cmp21, label %end, label %if.end25 - -if.end25: ; preds = %if.else, %if.then17 - %conv1479 = phi i32 [ %conv14, %if.else ], [ %conv1480, %if.then17 ] - %retval.0.i6877 = phi i8 [ %5, %if.else ], [ %retval.0.i6878, %if.then17 ] - %n.2 = phi i32 [ %n.1126, %if.else ], [ %inc, %if.then17 ] - %ln.2 = phi i32 [ %ln.1127, %if.else ], [ %inc20, %if.then17 ] +if.end25: ; preds = %conv_ascii2bin.exit69, %if.then17 + %conv1480 = phi i32 [ %conv1479, %if.then17 ], [ %conv14, %conv_ascii2bin.exit69 ] + %retval.0.i6878 = phi i8 [ %retval.0.i6877, %if.then17 ], [ %5, %conv_ascii2bin.exit69 ] + %n.2 = phi i32 [ %inc, %if.then17 ], [ %n.1125, %conv_ascii2bin.exit69 ] + %ln.2 = phi i32 [ %inc20, %if.then17 ], [ %ln.1126, %conv_ascii2bin.exit69 ] %cmp26 = icmp eq i8 %4, 61 br i1 %cmp26, label %if.then28, label %if.end38 @@ -874,7 +870,7 @@ if.then28: ; preds = %if.end25 if.end38: ; preds = %if.then28, %if.end25 %seof.1 = phi i32 [ %spec.select, %if.then28 ], [ %seof.0118, %if.end25 ] %eof.1 = phi i32 [ %inc33, %if.then28 ], [ %eof.0119, %if.end25 ] - switch i8 %retval.0.i6877, label %if.end51 [ + switch i8 %retval.0.i6878, label %if.end51 [ i8 -15, label %if.then41 i8 -16, label %if.then47 ] @@ -889,7 +885,7 @@ if.then47: ; preds = %if.end38 if.end51: ; preds = %if.end38, %if.then41, %if.then47 %ln.5 = phi i32 [ 0, %if.then47 ], [ 0, %if.then41 ], [ %ln.2, %if.end38 ] - %add = add i32 %i.0125, 1 + %add = add i32 %i.0124, 1 %conv52 = zext i32 %add to i64 %cmp53 = icmp eq i64 %in_len, %conv52 br i1 %cmp53, label %land.lhs.true55, label %if.end78 @@ -919,7 +915,7 @@ if.end78.thread: ; preds = %land.lhs.true55 if.end78: ; preds = %land.lhs.true55, %if.end51 %eof.3 = phi i32 [ 0, %land.lhs.true55 ], [ %eof.1, %if.end51 ] - %cmp79 = icmp eq i32 %conv1479, 242 + %cmp79 = icmp eq i32 %conv1480, 242 br i1 %cmp79, label %if.end78.land.lhs.true81_crit_edge, label %lor.lhs.false85 if.end78.land.lhs.true81_crit_edge: ; preds = %if.end78 @@ -1010,7 +1006,7 @@ EVP_DecodedLength.exit.i: ; preds = %while.end15.i br i1 %cmp17.i, label %EVP_DecodeBlock.exit.thread, label %if.end.i71 if.end.i71: ; preds = %EVP_DecodedLength.exit.i - %call19.i = call i32 @EVP_DecodeBase64(ptr noundef %out.addr.0123, ptr noundef nonnull %dst_len.i, i64 noundef %mul.i.i, ptr noundef nonnull %src.addr.0.i.lcssa, i64 noundef %src_len.addr.1.lcssa.i) + %call19.i = call i32 @EVP_DecodeBase64(ptr noundef %out.addr.0122, ptr noundef nonnull %dst_len.i, i64 noundef %mul.i.i, ptr noundef nonnull %src.addr.0.i.lcssa, i64 noundef %src_len.addr.1.lcssa.i) %tobool20.not.i = icmp eq i32 %call19.i, 0 br i1 %tobool20.not.i, label %EVP_DecodeBlock.exit.thread, label %while.cond23.preheader.i @@ -1023,7 +1019,7 @@ while.cond23.preheader.i: ; preds = %if.end.i71 while.body26.i: ; preds = %while.cond23.preheader.i, %while.body26.i %inc2932.i = phi i64 [ %inc.i, %while.body26.i ], [ %dst_len.promoted.i, %while.cond23.preheader.i ] %inc.i = add i64 %inc2932.i, 1 - %arrayidx27.i = getelementptr inbounds i8, ptr %out.addr.0123, i64 %inc2932.i + %arrayidx27.i = getelementptr inbounds i8, ptr %out.addr.0122, i64 %inc2932.i store i8 0, ptr %arrayidx27.i, align 1 %rem.i = urem i64 %inc.i, 3 %cmp24.not.i = icmp eq i64 %rem.i, 0 @@ -1045,7 +1041,7 @@ if.end104: ; preds = %EVP_DecodeBlock.exi br i1 %cmp105, label %end, label %if.end108 if.end108: ; preds = %if.end104 - %sub109 = sub i32 %ret.1128, %eof.38697 + %sub109 = sub i32 %ret.1127, %eof.38697 %add110 = add i32 %sub109, %conv29.i br label %if.end112 @@ -1053,7 +1049,7 @@ if.end112: ; preds = %if.then88, %if.end1 %spec.select6299 = phi i32 [ %spec.select6298, %if.end108 ], [ 0, %if.then88 ] %eof.5 = phi i32 [ %eof.38697, %if.end108 ], [ 1, %if.then88 ] %v.1 = phi i32 [ %conv29.i, %if.end108 ], [ 0, %if.then88 ] - %ret.3 = phi i32 [ %add110, %if.end108 ], [ %ret.1128, %if.then88 ] + %ret.3 = phi i32 [ %add110, %if.end108 ], [ %ret.1127, %if.then88 ] %19 = load i32, ptr %length, align 4 %cmp113 = icmp slt i32 %v.1, %19 %tobool116 = icmp ne i32 %eof.5, 0 @@ -1067,27 +1063,27 @@ if.else118: ; preds = %if.end112 if.end124: ; preds = %if.else118 %idx.ext = zext nneg i32 %v.1 to i64 - %add.ptr = getelementptr inbounds nuw i8, ptr %out.addr.0123, i64 %idx.ext + %add.ptr = getelementptr inbounds nuw i8, ptr %out.addr.0122, i64 %idx.ext br label %for.inc for.inc: ; preds = %if.then47, %lor.lhs.false85, %if.end124, %land.lhs.true81, %if.then41 %eof.2 = phi i32 [ %eof.1, %if.then41 ], [ %eof.5, %if.end124 ], [ %eof.387, %land.lhs.true81 ], [ %eof.3, %lor.lhs.false85 ], [ %eof.1, %if.then47 ] %exp_nl.2 = phi i32 [ %exp_nl.1121, %if.then41 ], [ %spec.select6299, %if.end124 ], [ 0, %land.lhs.true81 ], [ 0, %lor.lhs.false85 ], [ 0, %if.then47 ] - %out.addr.1 = phi ptr [ %out.addr.0123, %if.then41 ], [ %add.ptr, %if.end124 ], [ %out.addr.0123, %land.lhs.true81 ], [ %out.addr.0123, %lor.lhs.false85 ], [ %out.addr.0123, %if.then47 ] + %out.addr.1 = phi ptr [ %out.addr.0122, %if.then41 ], [ %add.ptr, %if.end124 ], [ %out.addr.0122, %land.lhs.true81 ], [ %out.addr.0122, %lor.lhs.false85 ], [ %out.addr.0122, %if.then47 ] %n.3 = phi i32 [ %n.2, %if.then41 ], [ 0, %if.end124 ], [ %n.2, %land.lhs.true81 ], [ %n.2, %lor.lhs.false85 ], [ %n.2, %if.then47 ] %ln.4 = phi i32 [ 0, %if.then41 ], [ %ln.5, %if.end124 ], [ %ln.5, %land.lhs.true81 ], [ %ln.5, %lor.lhs.false85 ], [ 0, %if.then47 ] - %ret.2 = phi i32 [ %ret.1128, %if.then41 ], [ %ret.3, %if.end124 ], [ %ret.1128, %land.lhs.true81 ], [ %ret.1128, %lor.lhs.false85 ], [ %ret.1128, %if.then47 ] - %inc126 = add i32 %i.0125, 1 + %ret.2 = phi i32 [ %ret.1127, %if.then41 ], [ %ret.3, %if.end124 ], [ %ret.1127, %land.lhs.true81 ], [ %ret.1127, %lor.lhs.false85 ], [ %ret.1127, %if.then47 ] + %inc126 = add i32 %i.0124, 1 %conv4 = zext i32 %inc126 to i64 %cmp5 = icmp ugt i64 %in_len, %conv4 br i1 %cmp5, label %for.body, label %end, !llvm.loop !14 -end: ; preds = %for.inc, %if.else118, %if.end112, %if.end104, %EVP_DecodeBlock.exit, %if.then28, %if.else, %for.body, %land.lhs.true, %EVP_DecodeBlock.exit.thread, %entry - %rv.0 = phi i32 [ 0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ 1, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ -1, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ -1, %if.then28 ], [ -1, %if.else ], [ -1, %for.body ] - %exp_nl.0 = phi i32 [ %2, %entry ], [ %spec.select6298, %EVP_DecodeBlock.exit.thread ], [ %2, %land.lhs.true ], [ %exp_nl.2, %for.inc ], [ %spec.select6299, %if.else118 ], [ %spec.select6299, %if.end112 ], [ %spec.select6298, %if.end104 ], [ %spec.select6298, %EVP_DecodeBlock.exit ], [ %exp_nl.1121, %if.then28 ], [ %exp_nl.1121, %if.else ], [ %exp_nl.1121, %for.body ] - %n.0 = phi i32 [ %0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %n.3, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ 0, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ %n.2, %if.then28 ], [ %n.1126, %if.else ], [ %n.1126, %for.body ] - %ln.0 = phi i32 [ %1, %entry ], [ %ln.5, %EVP_DecodeBlock.exit.thread ], [ %1, %land.lhs.true ], [ %ln.4, %for.inc ], [ %ln.5, %if.else118 ], [ %ln.5, %if.end112 ], [ %ln.5, %if.end104 ], [ %ln.5, %EVP_DecodeBlock.exit ], [ %ln.2, %if.then28 ], [ %ln.1127, %if.else ], [ %ln.1127, %for.body ] - %ret.0 = phi i32 [ 0, %entry ], [ %ret.1128, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %ret.2, %for.inc ], [ %ret.3, %if.else118 ], [ %ret.3, %if.end112 ], [ %ret.1128, %if.end104 ], [ %ret.1128, %EVP_DecodeBlock.exit ], [ %ret.1128, %if.then28 ], [ %ret.1128, %if.else ], [ %ret.1128, %for.body ] +end: ; preds = %for.inc, %if.else118, %if.end112, %if.end104, %EVP_DecodeBlock.exit, %if.then28, %for.body, %land.lhs.true, %EVP_DecodeBlock.exit.thread, %entry + %rv.0 = phi i32 [ 0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ 1, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ -1, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ -1, %if.then28 ], [ -1, %for.body ] + %exp_nl.0 = phi i32 [ %2, %entry ], [ %spec.select6298, %EVP_DecodeBlock.exit.thread ], [ %2, %land.lhs.true ], [ %exp_nl.2, %for.inc ], [ %spec.select6299, %if.else118 ], [ %spec.select6299, %if.end112 ], [ %spec.select6298, %if.end104 ], [ %spec.select6298, %EVP_DecodeBlock.exit ], [ %exp_nl.1121, %if.then28 ], [ %exp_nl.1121, %for.body ] + %n.0 = phi i32 [ %0, %entry ], [ 0, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %n.3, %for.inc ], [ 0, %if.else118 ], [ 0, %if.end112 ], [ 0, %if.end104 ], [ 0, %EVP_DecodeBlock.exit ], [ %n.2, %if.then28 ], [ %n.1125, %for.body ] + %ln.0 = phi i32 [ %1, %entry ], [ %ln.5, %EVP_DecodeBlock.exit.thread ], [ %1, %land.lhs.true ], [ %ln.4, %for.inc ], [ %ln.5, %if.else118 ], [ %ln.5, %if.end112 ], [ %ln.5, %if.end104 ], [ %ln.5, %EVP_DecodeBlock.exit ], [ %ln.2, %if.then28 ], [ %ln.1126, %for.body ] + %ret.0 = phi i32 [ 0, %entry ], [ %ret.1127, %EVP_DecodeBlock.exit.thread ], [ 0, %land.lhs.true ], [ %ret.2, %for.inc ], [ %ret.3, %if.else118 ], [ %ret.3, %if.end112 ], [ %ret.1127, %if.end104 ], [ %ret.1127, %EVP_DecodeBlock.exit ], [ %ret.1127, %if.then28 ], [ %ret.1127, %for.body ] store i32 %ret.0, ptr %out_len, align 4 store i32 %n.0, ptr %ctx, align 4 store i32 %ln.0, ptr %line_num, align 4 diff --git a/bench/lief/optimized/psa_crypto_ecp.c.ll b/bench/lief/optimized/psa_crypto_ecp.c.ll index 5b78eaff27f..426aff5d37a 100644 --- a/bench/lief/optimized/psa_crypto_ecp.c.ll +++ b/bench/lief/optimized/psa_crypto_ecp.c.ll @@ -365,7 +365,6 @@ define hidden i32 @mbedtls_psa_ecdsa_sign_hash(ptr noundef readonly captures(non switch i32 %29, label %switch.early.test [ i32 100664064, label %31 i32 100668160, label %31 - i32 100663808, label %31 i32 100665600, label %31 ] @@ -376,7 +375,7 @@ switch.early.test: ; preds = %28 i32 100664320, label %31 ] -31: ; preds = %28, %28, %28, %28, %switch.early.test, %switch.early.test +31: ; preds = %28, %28, %28, %switch.early.test, %switch.early.test %32 = and i32 %3, 255 %.not43 = icmp eq i32 %32, 0 %33 = or disjoint i32 %32, 33554432 diff --git a/bench/linux/optimized/access.ll b/bench/linux/optimized/access.ll index 6c188646941..166dd8ccf8c 100644 --- a/bench/linux/optimized/access.ll +++ b/bench/linux/optimized/access.ll @@ -1240,11 +1240,11 @@ define dso_local i32 @pcie_capability_read_dword(ptr noundef readonly captures(n store i32 0, ptr %2, align 4 %5 = and i32 %1, 3 %6 = icmp eq i32 %5, 0 - br i1 %6, label %7, label %49 + br i1 %6, label %7, label %34 7: ; preds = %3 %8 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) - br i1 %8, label %9, label %33 + br i1 %8, label %9, label %34 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %0, i64 180 @@ -1282,35 +1282,16 @@ define dso_local i32 @pcie_capability_read_dword(ptr noundef readonly captures(n %32 = select i1 %30, i32 %31, i32 -1 store i32 %32, ptr %2, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7 - br i1 %30, label %49, label %.thread - -33: ; preds = %7 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %35 = load i8, ptr %34, align 4 - %36 = icmp eq i8 %35, 0 - br i1 %36, label %49, label %37 - -37: ; preds = %33 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 106 - %39 = load i16, ptr %38, align 2 - %40 = and i16 %39, 208 - %41 = icmp eq i16 %40, 64 - %42 = and i16 %39, 240 - %43 = icmp eq i16 %42, 128 - %44 = or i1 %41, %43 - %45 = icmp eq i32 %1, 26 - %46 = and i1 %45, %44 - br i1 %46, label %.thread, label %49 - -.thread: ; preds = %9, %.thread1, %37, %23 - %47 = phi i32 [ 0, %23 ], [ 64, %37 ], [ 0, %.thread1 ], [ 0, %9 ] - %48 = phi i32 [ %29, %23 ], [ 0, %37 ], [ 135, %.thread1 ], [ 134, %9 ] - store i32 %47, ptr %2, align 4 - br label %49 - -49: ; preds = %.thread, %37, %33, %23, %3 - %50 = phi i32 [ 135, %3 ], [ 0, %23 ], [ 0, %37 ], [ 0, %33 ], [ %48, %.thread ] - ret i32 %50 + br i1 %30, label %34, label %.thread + +.thread: ; preds = %9, %.thread1, %23 + %33 = phi i32 [ %29, %23 ], [ 135, %.thread1 ], [ 134, %9 ] + store i32 0, ptr %2, align 4 + br label %34 + +34: ; preds = %7, %.thread, %23, %3 + %35 = phi i32 [ 135, %3 ], [ 0, %23 ], [ %33, %.thread ], [ 0, %7 ] + ret i32 %35 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -1664,65 +1645,46 @@ define dso_local i32 @pcie_capability_clear_and_set_dword(ptr noundef readonly c %31 = icmp eq i32 %30, 0 %32 = load i32, ptr %5, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7 - br i1 %31, label %47, label %pci_bus_write_config_dword.exit - -33: ; preds = %8 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %35 = load i8, ptr %34, align 4 - %36 = icmp eq i8 %35, 0 - br i1 %36, label %47, label %37 - -37: ; preds = %33 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 106 - %39 = load i16, ptr %38, align 2 - %40 = and i16 %39, 208 - %41 = icmp eq i16 %40, 64 - %42 = and i16 %39, 240 - %43 = icmp eq i16 %42, 128 - %44 = or i1 %41, %43 - %45 = icmp eq i32 %1, 26 - %46 = and i1 %45, %44 - %spec.select = select i1 %46, i32 64, i32 0 - br label %47 - -47: ; preds = %37, %33, %24 - %.0.ph = phi i32 [ 0, %33 ], [ %32, %24 ], [ %spec.select, %37 ] - %48 = xor i32 %2, -1 - %49 = and i32 %.0.ph, %48 - %50 = or i32 %49, %3 - %51 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) - br i1 %51, label %52, label %pci_bus_write_config_dword.exit - -52: ; preds = %47 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 180 - %54 = load i32, ptr %53, align 4 - %55 = icmp eq i32 %54, 3 - br i1 %55, label %pci_bus_write_config_dword.exit, label %56 - -56: ; preds = %52 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 100 - %58 = load i8, ptr %57, align 4 - %59 = zext i8 %58 to i32 - %60 = and i32 %59, 3 - %61 = icmp eq i32 %60, 0 - br i1 %61, label %62, label %pci_bus_write_config_dword.exit - -62: ; preds = %56 - %63 = add i32 %1, %59 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %65 = load i32, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %67 = load ptr, ptr %66, align 8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 192 - %69 = load ptr, ptr %68, align 8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 32 - %71 = load ptr, ptr %70, align 8 - %72 = tail call i32 %71(ptr noundef %67, i32 noundef %65, i32 noundef %63, i32 noundef 4, i32 noundef %50) #7 + br i1 %31, label %33, label %pci_bus_write_config_dword.exit + +33: ; preds = %8, %24 + %.0 = phi i32 [ %32, %24 ], [ 0, %8 ] + %34 = xor i32 %2, -1 + %35 = and i32 %.0, %34 + %36 = or i32 %35, %3 + %37 = tail call fastcc zeroext i1 @pcie_capability_reg_implemented(ptr noundef %0, i32 noundef %1) + br i1 %37, label %38, label %pci_bus_write_config_dword.exit + +38: ; preds = %33 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 180 + %40 = load i32, ptr %39, align 4 + %41 = icmp eq i32 %40, 3 + br i1 %41, label %pci_bus_write_config_dword.exit, label %42 + +42: ; preds = %38 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 100 + %44 = load i8, ptr %43, align 4 + %45 = zext i8 %44 to i32 + %46 = and i32 %45, 3 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %48, label %pci_bus_write_config_dword.exit + +48: ; preds = %42 + %49 = add i32 %1, %45 + %50 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %51 = load i32, ptr %50, align 8 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds nuw i8, ptr %53, i64 192 + %55 = load ptr, ptr %54, align 8 + %56 = getelementptr inbounds nuw i8, ptr %55, i64 32 + %57 = load ptr, ptr %56, align 8 + %58 = tail call i32 %57(ptr noundef %53, i32 noundef %51, i32 noundef %49, i32 noundef 4, i32 noundef %36) #7 br label %pci_bus_write_config_dword.exit -pci_bus_write_config_dword.exit: ; preds = %24, %10, %62, %56, %4, %.thread3, %52, %47 - %73 = phi i32 [ 0, %47 ], [ 134, %52 ], [ 135, %4 ], [ 135, %.thread3 ], [ %72, %62 ], [ 135, %56 ], [ 134, %10 ], [ %30, %24 ] - ret i32 %73 +pci_bus_write_config_dword.exit: ; preds = %24, %10, %.thread3, %4, %48, %42, %38, %33 + %59 = phi i32 [ 0, %33 ], [ 134, %38 ], [ %58, %48 ], [ 135, %42 ], [ 135, %.thread3 ], [ 135, %4 ], [ 134, %10 ], [ %30, %24 ] + ret i32 %59 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/insn-eval.ll b/bench/linux/optimized/insn-eval.ll index 5c2d90b6e91..db4852095f6 100644 --- a/bench/linux/optimized/insn-eval.ll +++ b/bench/linux/optimized/insn-eval.ll @@ -625,20 +625,20 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un %14 = icmp ne ptr %0, null %15 = icmp ne ptr %1, null %16 = and i1 %14, %15 - br i1 %16, label %17, label %166 + br i1 %16, label %17, label %232 17: ; preds = %2 %18 = tail call i32 @insn_get_opcode(ptr noundef nonnull %0) #7 %19 = icmp eq i32 %18, 0 - br i1 %19, label %20, label %166 + br i1 %19, label %20, label %232 20: ; preds = %17 %21 = getelementptr inbounds nuw i8, ptr %0, i64 81 %22 = load i8, ptr %21, align 1 - switch i8 %22, label %166 [ + switch i8 %22, label %232 [ i8 2, label %23 i8 4, label %101 - i8 8, label %137 + i8 8, label %170 ] 23: ; preds = %20 @@ -763,7 +763,7 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7 - br label %166 + br label %232 101: ; preds = %20 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7 @@ -778,120 +778,246 @@ define dso_local ptr @insn_get_addr_ref(ptr noundef %0, ptr noundef %1) local_un %103 = load i32, ptr %102, align 8 %104 = and i32 %103, 192 %105 = icmp eq i32 %104, 192 - br i1 %105, label %106, label %109 + br i1 %105, label %106, label %143 106: ; preds = %101 - %107 = call fastcc i32 @get_eff_addr_reg(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %107 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 %108 = icmp eq i32 %107, 0 - br i1 %108, label %119, label %134 + br i1 %108, label %109, label %get_eff_addr_reg.exit.thread -109: ; preds = %101 - %110 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %111 = load i8, ptr %110, align 1 - %112 = icmp eq i8 %111, 0 - br i1 %112, label %116, label %113 +109: ; preds = %106 + %110 = load i32, ptr %102, align 8 + %111 = and i32 %110, 192 + %112 = icmp eq i32 %111, 192 + br i1 %112, label %113, label %get_eff_addr_reg.exit.thread 113: ; preds = %109 - %114 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) - %115 = icmp eq i32 %114, 0 - br i1 %115, label %119, label %134 - -116: ; preds = %109 - %117 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) - %118 = icmp eq i32 %117, 0 - br i1 %118, label %119, label %134 - -119: ; preds = %116, %113, %106 - %120 = load i64, ptr %9, align 8 - %121 = load i32, ptr %8, align 4 - %122 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %121, ptr noundef nonnull %6, ptr noundef nonnull %7), !range !25 - %123 = icmp eq i32 %122, 0 - br i1 %123, label %124, label %134 - -124: ; preds = %119 - %125 = getelementptr inbounds nuw i8, ptr %1, i64 136 - %126 = load i64, ptr %125, align 8 - %127 = and i64 %126, 3 - %128 = icmp ne i64 %127, 0 - %129 = icmp ne i64 %126, 51 - %.not8 = and i1 %129, %128 - %.pre4 = and i64 %120, 4294967295 - %130 = load i64, ptr %7, align 8 - %131 = icmp ugt i64 %.pre4, %130 - %or.cond = select i1 %.not8, i1 %131, i1 false - br i1 %or.cond, label %134, label %._crit_edge - -._crit_edge: ; preds = %124 - %132 = load i64, ptr %6, align 8 - %133 = add i64 %132, %.pre4 - br label %134 - -134: ; preds = %124, %._crit_edge, %119, %116, %113, %106 - %135 = phi i64 [ -1, %106 ], [ -1, %119 ], [ %133, %._crit_edge ], [ -1, %113 ], [ -1, %116 ], [ -1, %124 ] + %114 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %115 = load i8, ptr %114, align 1 + %116 = icmp eq i8 %115, 0 + %117 = select i1 %116, i32 8, i32 16 + %118 = and i32 %110, 7 + %119 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %120 = load i32, ptr %119, align 8 + %121 = shl i32 %120, 3 + %122 = and i32 %121, 8 + %123 = or disjoint i32 %122, %118 + %124 = icmp samesign ult i32 %123, %117 + br i1 %124, label %128, label %125 + +125: ; preds = %113 + %126 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %126, label %get_eff_addr_reg.exit.thread, label %127, !prof !17 + +127: ; preds = %125 + store i1 true, ptr @get_regno.__already_done, align 1 + tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 + tail call void asm sideeffect "371: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 371b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 371) #7, !srcloc !19 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 516, i32 2313, i64 12) #7, !srcloc !20 + tail call void asm sideeffect "372: nop\0A\09.pushsection .discard.instr_end\0A\09.long 372b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 372) #7, !srcloc !21 + tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 + br label %get_eff_addr_reg.exit.thread + +128: ; preds = %113 + %129 = zext nneg i32 %123 to i64 + %130 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %129 + %131 = load i32, ptr %130, align 4 + store i32 %131, ptr %8, align 4 + %132 = load i8, ptr %21, align 1 + %133 = zext nneg i32 %131 to i64 + %134 = ptrtoint ptr %1 to i64 + %135 = add i64 %133, %134 %136 = inttoptr i64 %135 to ptr + %137 = load i64, ptr %136, align 8 + switch i8 %132, label %get_eff_addr_reg.exit [ + i8 2, label %138 + i8 4, label %140 + ] + +138: ; preds = %128 + %139 = and i64 %137, 65535 + br label %get_eff_addr_reg.exit + +140: ; preds = %128 + %141 = and i64 %137, 4294967295 + br label %get_eff_addr_reg.exit + +get_eff_addr_reg.exit: ; preds = %128, %138, %140 + %142 = phi i64 [ %139, %138 ], [ %141, %140 ], [ %137, %128 ] + store i64 %142, ptr %9, align 8 + br label %153 + +143: ; preds = %101 + %144 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %145 = load i8, ptr %144, align 1 + %146 = icmp eq i8 %145, 0 + br i1 %146, label %150, label %147 + +147: ; preds = %143 + %148 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %149 = icmp eq i32 %148, 0 + br i1 %149, label %153, label %get_eff_addr_reg.exit.thread + +150: ; preds = %143 + %151 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %8, ptr noundef nonnull %9) + %152 = icmp eq i32 %151, 0 + br i1 %152, label %153, label %get_eff_addr_reg.exit.thread + +153: ; preds = %get_eff_addr_reg.exit, %150, %147 + %154 = load i64, ptr %9, align 8 + %155 = load i32, ptr %8, align 4 + %156 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %155, ptr noundef nonnull %6, ptr noundef nonnull %7), !range !25 + %157 = icmp eq i32 %156, 0 + br i1 %157, label %158, label %get_eff_addr_reg.exit.thread + +158: ; preds = %153 + %159 = getelementptr inbounds nuw i8, ptr %1, i64 136 + %160 = load i64, ptr %159, align 8 + %161 = and i64 %160, 3 + %162 = icmp ne i64 %161, 0 + %163 = icmp ne i64 %160, 51 + %.not10 = and i1 %163, %162 + %.pre6 = and i64 %154, 4294967295 + %164 = load i64, ptr %7, align 8 + %165 = icmp ugt i64 %.pre6, %164 + %or.cond = select i1 %.not10, i1 %165, i1 false + br i1 %or.cond, label %get_eff_addr_reg.exit.thread, label %._crit_edge + +._crit_edge: ; preds = %158 + %166 = load i64, ptr %6, align 8 + %167 = add i64 %166, %.pre6 + br label %get_eff_addr_reg.exit.thread + +get_eff_addr_reg.exit.thread: ; preds = %158, %125, %127, %109, %106, %._crit_edge, %153, %150, %147 + %168 = phi i64 [ -1, %153 ], [ %167, %._crit_edge ], [ -1, %147 ], [ -1, %150 ], [ -1, %106 ], [ -1, %109 ], [ -1, %127 ], [ -1, %125 ], [ -1, %158 ] + %169 = inttoptr i64 %168 to ptr call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7 - br label %166 + br label %232 -137: ; preds = %20 +170: ; preds = %20 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7 store i64 0, ptr %3, align 8, !annotation !23 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7 store i32 0, ptr %4, align 4, !annotation !23 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7 store i64 0, ptr %5, align 8, !annotation !23 - %138 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %139 = load i32, ptr %138, align 8 - %140 = and i32 %139, 192 - %141 = icmp eq i32 %140, 192 - br i1 %141, label %142, label %145 - -142: ; preds = %137 - %143 = call fastcc i32 @get_eff_addr_reg(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %144 = icmp eq i32 %143, 0 - br i1 %144, label %155, label %163 - -145: ; preds = %137 - %146 = getelementptr inbounds nuw i8, ptr %0, i64 45 - %147 = load i8, ptr %146, align 1 - %148 = icmp eq i8 %147, 0 - br i1 %148, label %152, label %149 - -149: ; preds = %145 - %150 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %151 = icmp eq i32 %150, 0 - br i1 %151, label %155, label %163 - -152: ; preds = %145 - %153 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) - %154 = icmp eq i32 %153, 0 - br i1 %154, label %155, label %163 - -155: ; preds = %152, %149, %142 - %156 = load i32, ptr %4, align 4 - %157 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %156, ptr noundef nonnull %3, ptr noundef null), !range !25 - %158 = icmp eq i32 %157, 0 - br i1 %158, label %159, label %163 - -159: ; preds = %155 - %160 = load i64, ptr %5, align 8 - %161 = load i64, ptr %3, align 8 - %162 = add i64 %161, %160 - br label %163 - -163: ; preds = %159, %155, %152, %149, %142 - %164 = phi i64 [ -1, %142 ], [ -1, %155 ], [ %162, %159 ], [ -1, %149 ], [ -1, %152 ] - %165 = inttoptr i64 %164 to ptr + %171 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %172 = load i32, ptr %171, align 8 + %173 = and i32 %172, 192 + %174 = icmp eq i32 %173, 192 + br i1 %174, label %175, label %212 + +175: ; preds = %170 + %176 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 + %177 = icmp eq i32 %176, 0 + br i1 %177, label %178, label %get_eff_addr_reg.exit5.thread + +178: ; preds = %175 + %179 = load i32, ptr %171, align 8 + %180 = and i32 %179, 192 + %181 = icmp eq i32 %180, 192 + br i1 %181, label %182, label %get_eff_addr_reg.exit5.thread + +182: ; preds = %178 + %183 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %184 = load i8, ptr %183, align 1 + %185 = icmp eq i8 %184, 0 + %186 = select i1 %185, i32 8, i32 16 + %187 = and i32 %179, 7 + %188 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %189 = load i32, ptr %188, align 8 + %190 = shl i32 %189, 3 + %191 = and i32 %190, 8 + %192 = or disjoint i32 %191, %187 + %193 = icmp samesign ult i32 %192, %186 + br i1 %193, label %197, label %194 + +194: ; preds = %182 + %195 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %195, label %get_eff_addr_reg.exit5.thread, label %196, !prof !17 + +196: ; preds = %194 + store i1 true, ptr @get_regno.__already_done, align 1 + tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 + tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 + tail call void asm sideeffect "371: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 371b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 371) #7, !srcloc !19 + tail call void asm sideeffect "1:\09.byte 0x0f, 0x0b\0A.pushsection __bug_table,\22aw\22\0A2:\09.long 1b - .\09# bug_entry::bug_addr\0A\09.long ${0:c} - .\09# bug_entry::file\0A\09.word ${1:c}\09# bug_entry::line\0A\09.word ${2:c}\09# bug_entry::flags\0A\09.org 2b+${3:c}\0A.popsection\0A998:\0A\09.pushsection .discard.reachable\0A\09.long 998b\0A\09.popsection\0A\09", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull @.str.2, i32 516, i32 2313, i64 12) #7, !srcloc !20 + tail call void asm sideeffect "372: nop\0A\09.pushsection .discard.instr_end\0A\09.long 372b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 372) #7, !srcloc !21 + tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 + br label %get_eff_addr_reg.exit5.thread + +197: ; preds = %182 + %198 = zext nneg i32 %192 to i64 + %199 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %198 + %200 = load i32, ptr %199, align 4 + store i32 %200, ptr %4, align 4 + %201 = load i8, ptr %21, align 1 + %202 = zext nneg i32 %200 to i64 + %203 = ptrtoint ptr %1 to i64 + %204 = add i64 %202, %203 + %205 = inttoptr i64 %204 to ptr + %206 = load i64, ptr %205, align 8 + switch i8 %201, label %get_eff_addr_reg.exit5 [ + i8 2, label %207 + i8 4, label %209 + ] + +207: ; preds = %197 + %208 = and i64 %206, 65535 + br label %get_eff_addr_reg.exit5 + +209: ; preds = %197 + %210 = and i64 %206, 4294967295 + br label %get_eff_addr_reg.exit5 + +get_eff_addr_reg.exit5: ; preds = %197, %207, %209 + %211 = phi i64 [ %208, %207 ], [ %210, %209 ], [ %206, %197 ] + store i64 %211, ptr %5, align 8 + br label %222 + +212: ; preds = %170 + %213 = getelementptr inbounds nuw i8, ptr %0, i64 45 + %214 = load i8, ptr %213, align 1 + %215 = icmp eq i8 %214, 0 + br i1 %215, label %219, label %216 + +216: ; preds = %212 + %217 = call fastcc i32 @get_eff_addr_sib(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) + %218 = icmp eq i32 %217, 0 + br i1 %218, label %222, label %get_eff_addr_reg.exit5.thread + +219: ; preds = %212 + %220 = call fastcc i32 @get_eff_addr_modrm(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %4, ptr noundef nonnull %5) + %221 = icmp eq i32 %220, 0 + br i1 %221, label %222, label %get_eff_addr_reg.exit5.thread + +222: ; preds = %get_eff_addr_reg.exit5, %219, %216 + %223 = load i32, ptr %4, align 4 + %224 = call fastcc i32 @get_seg_base_limit(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %223, ptr noundef nonnull %3, ptr noundef null), !range !25 + %225 = icmp eq i32 %224, 0 + br i1 %225, label %226, label %get_eff_addr_reg.exit5.thread + +226: ; preds = %222 + %227 = load i64, ptr %5, align 8 + %228 = load i64, ptr %3, align 8 + %229 = add i64 %228, %227 + br label %get_eff_addr_reg.exit5.thread + +get_eff_addr_reg.exit5.thread: ; preds = %194, %196, %178, %175, %226, %222, %219, %216 + %230 = phi i64 [ -1, %222 ], [ %229, %226 ], [ -1, %216 ], [ -1, %219 ], [ -1, %175 ], [ -1, %178 ], [ -1, %196 ], [ -1, %194 ] + %231 = inttoptr i64 %230 to ptr call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7 - br label %166 + br label %232 -166: ; preds = %163, %134, %.thread, %20, %17, %2 - %167 = phi ptr [ %165, %163 ], [ %136, %134 ], [ %100, %.thread ], [ inttoptr (i64 -1 to ptr), %2 ], [ inttoptr (i64 -1 to ptr), %17 ], [ inttoptr (i64 -1 to ptr), %20 ] - ret ptr %167 +232: ; preds = %get_eff_addr_reg.exit5.thread, %get_eff_addr_reg.exit.thread, %.thread, %20, %17, %2 + %233 = phi ptr [ %231, %get_eff_addr_reg.exit5.thread ], [ %169, %get_eff_addr_reg.exit.thread ], [ %100, %.thread ], [ inttoptr (i64 -1 to ptr), %2 ], [ inttoptr (i64 -1 to ptr), %17 ], [ inttoptr (i64 -1 to ptr), %20 ] + ret ptr %233 } ; Function Attrs: null_pointer_is_valid @@ -1136,39 +1262,34 @@ declare dso_local i32 @insn_get_displacement(ptr noundef) local_unnamed_addr #2 define internal fastcc i32 @get_eff_addr_reg(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef writeonly captures(none) %2, ptr noundef writeonly captures(none) %3) unnamed_addr #0 align 16 { %5 = tail call i32 @insn_get_modrm(ptr noundef nonnull %0) #7 %6 = icmp eq i32 %5, 0 - br i1 %6, label %7, label %47 + br i1 %6, label %7, label %44 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 %9 = load i32, ptr %8, align 8 %10 = and i32 %9, 192 %11 = icmp eq i32 %10, 192 - br i1 %11, label %12, label %47 + br i1 %11, label %12, label %44 12: ; preds = %7 - %13 = and i32 %9, 199 - %14 = icmp eq i32 %13, 5 - br i1 %14, label %.thread4, label %15 - -15: ; preds = %12 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 83 - %17 = load i8, ptr %16, align 1 - %18 = icmp eq i8 %17, 0 - %19 = select i1 %18, i32 8, i32 16 - %20 = and i32 %9, 7 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %22 = load i32, ptr %21, align 8 - %23 = shl i32 %22, 3 - %24 = and i32 %23, 8 - %25 = or disjoint i32 %24, %20 - %26 = icmp samesign ult i32 %25, %19 - br i1 %26, label %30, label %27 - -27: ; preds = %15 - %28 = load i1, ptr @get_regno.__already_done, align 1 - br i1 %28, label %.thread4, label %29, !prof !17 - -29: ; preds = %27 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 83 + %14 = load i8, ptr %13, align 1 + %15 = icmp eq i8 %14, 0 + %16 = select i1 %15, i32 8, i32 16 + %17 = and i32 %9, 7 + %18 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %19 = load i32, ptr %18, align 8 + %20 = shl i32 %19, 3 + %21 = and i32 %20, 8 + %22 = or disjoint i32 %21, %17 + %23 = icmp samesign ult i32 %22, %16 + br i1 %23, label %27, label %24 + +24: ; preds = %12 + %25 = load i1, ptr @get_regno.__already_done, align 1 + br i1 %25, label %.thread4, label %26, !prof !17 + +26: ; preds = %24 store i1 true, ptr @get_regno.__already_done, align 1 tail call void asm sideeffect "370: nop\0A\09.pushsection .discard.instr_begin\0A\09.long 370b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 370) #7, !srcloc !18 tail call void (ptr, ...) @__warn_printk(ptr noundef nonnull @.str.1) #7 @@ -1178,44 +1299,43 @@ define internal fastcc i32 @get_eff_addr_reg(ptr noundef nonnull %0, ptr noundef tail call void asm sideeffect "373: nop\0A\09.pushsection .discard.instr_end\0A\09.long 373b - .\0A\09.popsection\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i32 373) #7, !srcloc !22 br label %.thread4 -.thread4: ; preds = %29, %27, %12 - %.ph = phi i32 [ -22, %29 ], [ -22, %27 ], [ -33, %12 ] - store i32 %.ph, ptr %2, align 4 - br label %47 - -30: ; preds = %15 - %31 = zext nneg i32 %25 to i64 - %32 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %31 - %33 = load i32, ptr %32, align 4 - store i32 %33, ptr %2, align 4 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 81 - %35 = load i8, ptr %34, align 1 - %36 = zext nneg i32 %33 to i64 - %37 = ptrtoint ptr %1 to i64 - %38 = add i64 %36, %37 - %39 = inttoptr i64 %38 to ptr - %40 = load i64, ptr %39, align 8 - switch i8 %35, label %45 [ - i8 2, label %41 - i8 4, label %43 +.thread4: ; preds = %26, %24 + store i32 -22, ptr %2, align 4 + br label %44 + +27: ; preds = %12 + %28 = zext nneg i32 %22 to i64 + %29 = getelementptr [16 x i32], ptr @pt_regoff, i64 0, i64 %28 + %30 = load i32, ptr %29, align 4 + store i32 %30, ptr %2, align 4 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 81 + %32 = load i8, ptr %31, align 1 + %33 = zext nneg i32 %30 to i64 + %34 = ptrtoint ptr %1 to i64 + %35 = add i64 %33, %34 + %36 = inttoptr i64 %35 to ptr + %37 = load i64, ptr %36, align 8 + switch i8 %32, label %42 [ + i8 2, label %38 + i8 4, label %40 ] -41: ; preds = %30 - %42 = and i64 %40, 65535 - br label %45 +38: ; preds = %27 + %39 = and i64 %37, 65535 + br label %42 -43: ; preds = %30 - %44 = and i64 %40, 4294967295 - br label %45 +40: ; preds = %27 + %41 = and i64 %37, 4294967295 + br label %42 -45: ; preds = %30, %43, %41 - %46 = phi i64 [ %42, %41 ], [ %44, %43 ], [ %40, %30 ] - store i64 %46, ptr %3, align 8 - br label %47 +42: ; preds = %27, %40, %38 + %43 = phi i64 [ %39, %38 ], [ %41, %40 ], [ %37, %27 ] + store i64 %43, ptr %3, align 8 + br label %44 -47: ; preds = %.thread4, %45, %7, %4 - %48 = phi i32 [ %5, %4 ], [ -22, %7 ], [ 0, %45 ], [ -22, %.thread4 ] - ret i32 %48 +44: ; preds = %.thread4, %42, %7, %4 + %45 = phi i32 [ %5, %4 ], [ -22, %7 ], [ 0, %42 ], [ -22, %.thread4 ] + ret i32 %45 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/seq_ports.ll b/bench/linux/optimized/seq_ports.ll index b7ed519ad76..4614c228b1b 100644 --- a/bench/linux/optimized/seq_ports.ll +++ b/bench/linux/optimized/seq_ports.ll @@ -198,7 +198,7 @@ define dso_local ptr @snd_seq_port_query_nearest(ptr noundef %0, ptr noundef rea define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr noundef %0, i32 noundef %1, ptr noundef writeonly captures(none) initializes((0, 8)) %2) local_unnamed_addr #0 align 16 { store ptr null, ptr %2, align 8 %4 = icmp eq ptr %0, null - br i1 %4, label %87, label %5 + br i1 %4, label %85, label %5 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 132 @@ -210,13 +210,13 @@ define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr nounde %10 = getelementptr inbounds nuw i8, ptr %0, i64 80 %11 = load i32, ptr %10, align 8 %12 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str, i32 noundef %11) #11 - br label %87 + br label %85 13: ; preds = %5 %14 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @kmalloc_caches, i64 72), align 8 %15 = tail call noalias align 8 dereferenceable_or_null(336) ptr @kmalloc_trace(ptr noundef %14, i32 noundef 3520, i64 noundef 336) #12 %16 = icmp eq ptr %15, null - br i1 %16, label %87, label %17 + br i1 %16, label %85, label %17 17: ; preds = %13 %18 = getelementptr inbounds nuw i8, ptr %0, i64 80 @@ -278,78 +278,74 @@ define dso_local range(i32 -22, -2147483648) i32 @snd_seq_create_port(ptr nounde 50: ; preds = %17 %51 = icmp slt i32 %1, 0 - br i1 %51, label %.split.us, label %.split + br i1 %51, label %.split.us.preheader, label %.split -.split.us: ; preds = %50, %60 - %52 = phi ptr [ %62, %60 ], [ %48, %50 ] - %53 = phi i32 [ %61, %60 ], [ %44, %50 ] +.split.us.preheader: ; preds = %50, %58 + %52 = phi ptr [ %60, %58 ], [ %48, %50 ] + %53 = phi i32 [ %59, %58 ], [ %44, %50 ] %54 = getelementptr i8, ptr %52, i64 -79 %55 = load i8, ptr %54, align 1 %56 = zext i8 %55 to i32 - %57 = icmp eq i32 %1, %56 - br i1 %57, label %.split11.us, label %58 - -58: ; preds = %.split.us - %59 = icmp ult i32 %53, %56 - br i1 %59, label %.loopexit, label %60 - -60: ; preds = %58 - %61 = add nuw nsw i32 %56, 1 - %62 = load ptr, ptr %52, align 8 - %63 = icmp eq ptr %62, %47 - br i1 %63, label %.loopexit, label %.split.us, !llvm.loop !10 - -.split: ; preds = %50, %71 - %64 = phi ptr [ %72, %71 ], [ %48, %50 ] - %65 = getelementptr i8, ptr %64, i64 -79 - %66 = load i8, ptr %65, align 1 - %67 = zext i8 %66 to i32 - %68 = icmp eq i32 %1, %67 - br i1 %68, label %.split11.us, label %69 - -.split11.us: ; preds = %.split, %.split.us + %57 = icmp ult i32 %53, %56 + br i1 %57, label %.loopexit, label %58 + +58: ; preds = %.split.us.preheader + %59 = add nuw nsw i32 %56, 1 + %60 = load ptr, ptr %52, align 8 + %61 = icmp eq ptr %60, %47 + br i1 %61, label %.loopexit, label %.split.us.preheader, !llvm.loop !10 + +.split: ; preds = %50, %69 + %62 = phi ptr [ %70, %69 ], [ %48, %50 ] + %63 = getelementptr i8, ptr %62, i64 -79 + %64 = load i8, ptr %63, align 1 + %65 = zext i8 %64 to i32 + %66 = icmp eq i32 %1, %65 + br i1 %66, label %.split11.us, label %67 + +.split11.us: ; preds = %.split tail call void @kfree(ptr noundef nonnull %15) #10 - br label %85 - -69: ; preds = %.split - %70 = icmp samesign ult i32 %44, %67 - br i1 %70, label %.loopexit, label %71 - -71: ; preds = %69 - %72 = load ptr, ptr %64, align 8 - %73 = icmp eq ptr %72, %47 - br i1 %73, label %.loopexit, label %.split, !llvm.loop !10 - -.loopexit: ; preds = %69, %71, %60, %58, %17 - %74 = phi i32 [ %44, %17 ], [ %53, %58 ], [ %61, %60 ], [ %44, %71 ], [ %44, %69 ] - %75 = phi ptr [ %48, %17 ], [ %52, %58 ], [ %62, %60 ], [ %64, %69 ], [ %72, %71 ] - %76 = getelementptr inbounds nuw i8, ptr %15, i64 80 - %77 = getelementptr inbounds nuw i8, ptr %75, i64 8 - %78 = load ptr, ptr %77, align 8 + br label %83 + +67: ; preds = %.split + %68 = icmp samesign ult i32 %44, %65 + br i1 %68, label %.loopexit, label %69 + +69: ; preds = %67 + %70 = load ptr, ptr %62, align 8 + %71 = icmp eq ptr %70, %47 + br i1 %71, label %.loopexit, label %.split, !llvm.loop !10 + +.loopexit: ; preds = %67, %69, %58, %.split.us.preheader, %17 + %72 = phi i32 [ %44, %17 ], [ %53, %.split.us.preheader ], [ %59, %58 ], [ %44, %69 ], [ %44, %67 ] + %73 = phi ptr [ %48, %17 ], [ %52, %.split.us.preheader ], [ %60, %58 ], [ %62, %67 ], [ %70, %69 ] + %74 = getelementptr inbounds nuw i8, ptr %15, i64 80 + %75 = getelementptr inbounds nuw i8, ptr %73, i64 8 + %76 = load ptr, ptr %75, align 8 + store ptr %74, ptr %75, align 8 + store ptr %73, ptr %74, align 8 + %77 = getelementptr inbounds nuw i8, ptr %15, i64 88 store ptr %76, ptr %77, align 8 - store ptr %75, ptr %76, align 8 - %79 = getelementptr inbounds nuw i8, ptr %15, i64 88 - store ptr %78, ptr %79, align 8 - store volatile ptr %76, ptr %78, align 8 - %80 = load i32, ptr %6, align 4 - %81 = add i32 %80, 1 - store i32 %81, ptr %6, align 4 - %82 = trunc i32 %74 to i8 - store i8 %82, ptr %21, align 1 - %83 = getelementptr inbounds nuw i8, ptr %15, i64 16 - %84 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %83, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %74) #10 + store volatile ptr %74, ptr %76, align 8 + %78 = load i32, ptr %6, align 4 + %79 = add i32 %78, 1 + store i32 %79, ptr %6, align 4 + %80 = trunc i32 %72 to i8 + store i8 %80, ptr %21, align 1 + %81 = getelementptr inbounds nuw i8, ptr %15, i64 16 + %82 = tail call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %81, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %72) #10 store ptr %15, ptr %2, align 8 - br label %85 + br label %83 -85: ; preds = %.loopexit, %.split11.us - %86 = phi i32 [ -16, %.split11.us ], [ %74, %.loopexit ] +83: ; preds = %.loopexit, %.split11.us + %84 = phi i32 [ -16, %.split11.us ], [ %72, %.loopexit ] tail call void @_raw_write_unlock_irq(ptr noundef nonnull %46) #10 tail call void @mutex_unlock(ptr noundef nonnull %45) #10 - br label %87 + br label %85 -87: ; preds = %85, %13, %9, %3 - %88 = phi i32 [ -22, %9 ], [ %86, %85 ], [ -22, %3 ], [ -12, %13 ] - ret i32 %88 +85: ; preds = %83, %13, %9, %3 + %86 = phi i32 [ -22, %9 ], [ %84, %83 ], [ -22, %3 ], [ -12, %13 ] + ret i32 %86 } ; Function Attrs: cold null_pointer_is_valid diff --git a/bench/llvm/optimized/AArch64FrameLowering.cpp.ll b/bench/llvm/optimized/AArch64FrameLowering.cpp.ll index 17b66963d7a..8b426aaefc1 100644 --- a/bench/llvm/optimized/AArch64FrameLowering.cpp.ll +++ b/bench/llvm/optimized/AArch64FrameLowering.cpp.ll @@ -18569,7 +18569,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %8 = and i32 %6, 15 %.not = icmp eq i32 %8, 0 %or.cond = and i1 %7, %.not - br i1 %or.cond, label %9, label %245 + br i1 %or.cond, label %9, label %244 9: ; preds = %3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -18577,7 +18577,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %12 = getelementptr inbounds nuw i8, ptr %11, i64 80 %13 = load i32, ptr %12, align 8 %.not50 = icmp eq i32 %13, 2147483647 - br i1 %.not50, label %14, label %245 + br i1 %.not50, label %14, label %244 14: ; preds = %9 %15 = load ptr, ptr %1, align 8 @@ -18595,7 +18595,7 @@ define dso_local void @_ZNK4llvm20AArch64FrameLowering24determineStackHazardSlot %20 = load i32, ptr %5, align 4 %21 = and i32 %20, 7 %22 = icmp eq i32 %21, 0 - br i1 %22, label %245, label %23 + br i1 %22, label %244, label %23 23: ; preds = %19, %14 %24 = getelementptr inbounds nuw i8, ptr %1, i64 48 @@ -18698,7 +18698,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i: ; p %85 = shl nuw nsw i32 1, %79 %86 = and i32 %85, %84 %.not13.i.i.i.i.i.i.i.i = icmp eq i32 %86, 0 - br i1 %.not13.i.i.i.i.i.i.i.i, label %.thread9.i.i.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not13.i.i.i.i.i.i.i.i, label %.thread9.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread .thread9.i.i.i.i.i.i.i.i: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %.thread6.i.i.i.i.i.i.i.i %87 = load i16, ptr %57, align 2 @@ -18716,7 +18716,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i: ; p %95 = shl nuw nsw i32 1, %89 %96 = and i32 %95, %94 %.not14.i.i.i.i.i.i.i.i = icmp eq i32 %96, 0 - br i1 %.not14.i.i.i.i.i.i.i.i, label %.thread12.i.i.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not14.i.i.i.i.i.i.i.i, label %.thread12.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread .thread12.i.i.i.i.i.i.i.i: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %.thread9.i.i.i.i.i.i.i.i %97 = load i16, ptr %60, align 2 @@ -18734,7 +18734,7 @@ _ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i: ; p %105 = shl nuw nsw i32 1, %99 %106 = and i32 %105, %104 %.not10.i.i.i.i.i.i = icmp eq i32 %106, 0 - br i1 %.not10.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" + br i1 %.not10.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread "_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i": ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i", %.thread12.i.i.i.i.i.i.i.i, %62 %107 = add i32 %.sroa.4.014.i.i.i.i.i.i, 1 @@ -18784,272 +18784,268 @@ _ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i: ; p %.not.i.i.i.i.i.i = icmp eq i32 %131, -1 br i1 %.not.i.i.i.i.i.i, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread", label %62, !llvm.loop !741 -"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit": ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i" - %132 = icmp eq i32 %.sroa.4.014.i.i.i.i.i.i, -1 - br i1 %132, label %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread", label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread - -"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread": ; preds = %44, %109, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", %_ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i, %126, %_ZNK4llvm9BitVector8set_bitsEv.exit, %23, %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit" - %133 = getelementptr inbounds nuw i8, ptr %25, i64 8 - %134 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %135 = load ptr, ptr %134, align 8 - %136 = load ptr, ptr %133, align 8 +"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread": ; preds = %44, %109, %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.thread9.i.i.i.i.i.i", %_ZN4llvm28const_set_bits_iterator_implINS_9BitVectorEEppEv.exit.i.i.i.i.i.i, %126, %_ZNK4llvm9BitVector8set_bitsEv.exit, %23 + %132 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %133 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %134 = load ptr, ptr %133, align 8 + %135 = load ptr, ptr %132, align 8 + %136 = ptrtoint ptr %134 to i64 %137 = ptrtoint ptr %135 to i64 - %138 = ptrtoint ptr %136 to i64 - %139 = sub i64 %137, %138 - %140 = sdiv exact i64 %139, 40 - %141 = trunc i64 %140 to i32 - %142 = getelementptr inbounds nuw i8, ptr %25, i64 32 - %143 = load i32, ptr %142, align 8 - %144 = sub i32 %141, %143 - %145 = sext i32 %144 to i64 - %146 = icmp slt i32 %144, 0 - br i1 %146, label %147, label %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i - -147: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread" + %138 = sub i64 %136, %137 + %139 = sdiv exact i64 %138, 40 + %140 = trunc i64 %139 to i32 + %141 = getelementptr inbounds nuw i8, ptr %25, i64 32 + %142 = load i32, ptr %141, align 8 + %143 = sub i32 %140, %142 + %144 = sext i32 %143 to i64 + %145 = icmp slt i32 %143, 0 + br i1 %145, label %146, label %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i + +146: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread" call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.27) #28 unreachable _ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit.thread" - %.not.i.i.i.i = icmp eq i32 %143, %141 - br i1 %.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %148 - -148: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i - %149 = shl nuw nsw i64 %145, 2 - %150 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %149) #29 - %151 = getelementptr i32, ptr %150, i64 %145 - store i32 0, ptr %150, align 4 - %152 = getelementptr i8, ptr %150, i64 4 - %153 = icmp eq i32 %144, 1 - br i1 %153, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i - -_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %148 - %154 = add nsw i64 %149, -4 - call void @llvm.memset.p0.i64(ptr align 4 %152, i8 0, i64 %154, i1 false) + %.not.i.i.i.i = icmp eq i32 %142, %140 + br i1 %.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %147 + +147: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i + %148 = shl nuw nsw i64 %144, 2 + %149 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %148) #29 + %150 = getelementptr i32, ptr %149, i64 %144 + store i32 0, ptr %149, align 4 + %151 = getelementptr i8, ptr %149, i64 4 + %152 = icmp eq i32 %143, 1 + br i1 %152, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, label %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i + +_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %147 + %153 = add nsw i64 %148, -4 + call void @llvm.memset.p0.i64(ptr align 4 %151, i8 0, i64 %153, i1 false) br label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit -_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i, %148, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i - %.sroa.11.0 = phi ptr [ %151, %148 ], [ %151, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %.sroa.037.0 = phi ptr [ %150, %148 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %.0.i.i.i.i.i21 = phi ptr [ %152, %148 ], [ %151, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] - %155 = getelementptr inbounds nuw i8, ptr %1, i64 328 - %156 = getelementptr inbounds nuw i8, ptr %1, i64 320 - %.sroa.034.066 = load ptr, ptr %155, align 8 - %.not5267 = icmp eq ptr %.sroa.034.066, %156 +_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i, %147, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i + %.sroa.11.0 = phi ptr [ %150, %147 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %.sroa.037.0 = phi ptr [ %149, %147 ], [ %149, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %.0.i.i.i.i.i21 = phi ptr [ %151, %147 ], [ %150, %_ZSt6fill_nIPjmjET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] + %154 = getelementptr inbounds nuw i8, ptr %1, i64 328 + %155 = getelementptr inbounds nuw i8, ptr %1, i64 320 + %.sroa.034.064 = load ptr, ptr %154, align 8 + %.not5265 = icmp eq ptr %.sroa.034.064, %155 %.pre = ptrtoint ptr %.0.i.i.i.i.i21 to i64 - %.pre92 = ptrtoint ptr %.sroa.037.0 to i64 - %.pre94 = sub i64 %.pre, %.pre92 - br i1 %.not5267, label %._crit_edge70, label %.lr.ph69 - -.lr.ph69: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit - %157 = lshr exact i64 %.pre94, 2 - %158 = trunc i64 %157 to i32 - br label %159 - -159: ; preds = %.lr.ph69, %._crit_edge - %.sroa.034.068 = phi ptr [ %.sroa.034.066, %.lr.ph69 ], [ %.sroa.034.0, %._crit_edge ] - %160 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 56 - %161 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 48 - %.sroa.031.063 = load ptr, ptr %160, align 8 - %.not5464 = icmp eq ptr %.sroa.031.063, %161 - br i1 %.not5464, label %._crit_edge, label %.lr.ph - -.lr.ph: ; preds = %159, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit - %.sroa.031.065 = phi ptr [ %.sroa.031.0, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %.sroa.031.063, %159 ] - %162 = call fastcc i64 @_ZL14getLdStFrameIDRKN4llvm12MachineInstrERKNS_16MachineFrameInfoE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.065, ptr noundef nonnull align 8 dereferenceable(696) %25) - %.sroa.025.0.extract.trunc = trunc i64 %162 to i32 - %163 = icmp samesign ugt i64 %162, 4294967295 - %164 = icmp sgt i32 %.sroa.025.0.extract.trunc, -1 - %or.cond49 = and i1 %163, %164 - %165 = icmp slt i32 %.sroa.025.0.extract.trunc, %158 - %or.cond79 = select i1 %or.cond49, i1 %165, i1 false - br i1 %or.cond79, label %166, label %180 - -166: ; preds = %.lr.ph - %167 = load i32, ptr %142, align 8 - %168 = add i32 %167, %.sroa.025.0.extract.trunc - %169 = zext i32 %168 to i64 - %170 = load ptr, ptr %133, align 8 - %171 = getelementptr inbounds nuw %"struct.llvm::MachineFrameInfo::StackObject", ptr %170, i64 %169, i32 6 - %172 = load i8, ptr %171, align 4 - %173 = icmp eq i8 %172, 2 - br i1 %173, label %.sink.split, label %174 - -174: ; preds = %166 - %175 = call noundef zeroext i1 @_ZN4llvm16AArch64InstrInfo10isFpOrNEONERKNS_12MachineInstrE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.065) #25 - %spec.select = select i1 %175, i32 2, i32 1 + %.pre88 = ptrtoint ptr %.sroa.037.0 to i64 + %.pre90 = sub i64 %.pre, %.pre88 + br i1 %.not5265, label %._crit_edge68, label %.lr.ph67 + +.lr.ph67: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit + %156 = lshr exact i64 %.pre90, 2 + %157 = trunc i64 %156 to i32 + br label %158 + +158: ; preds = %.lr.ph67, %._crit_edge + %.sroa.034.066 = phi ptr [ %.sroa.034.064, %.lr.ph67 ], [ %.sroa.034.0, %._crit_edge ] + %159 = getelementptr inbounds nuw i8, ptr %.sroa.034.066, i64 56 + %160 = getelementptr inbounds nuw i8, ptr %.sroa.034.066, i64 48 + %.sroa.031.061 = load ptr, ptr %159, align 8 + %.not5462 = icmp eq ptr %.sroa.031.061, %160 + br i1 %.not5462, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %158, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit + %.sroa.031.063 = phi ptr [ %.sroa.031.0, %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit ], [ %.sroa.031.061, %158 ] + %161 = call fastcc i64 @_ZL14getLdStFrameIDRKN4llvm12MachineInstrERKNS_16MachineFrameInfoE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.063, ptr noundef nonnull align 8 dereferenceable(696) %25) + %.sroa.025.0.extract.trunc = trunc i64 %161 to i32 + %162 = icmp samesign ugt i64 %161, 4294967295 + %163 = icmp sgt i32 %.sroa.025.0.extract.trunc, -1 + %or.cond49 = and i1 %162, %163 + %164 = icmp slt i32 %.sroa.025.0.extract.trunc, %157 + %or.cond77 = select i1 %or.cond49, i1 %164, i1 false + br i1 %or.cond77, label %165, label %179 + +165: ; preds = %.lr.ph + %166 = load i32, ptr %141, align 8 + %167 = add i32 %166, %.sroa.025.0.extract.trunc + %168 = zext i32 %167 to i64 + %169 = load ptr, ptr %132, align 8 + %170 = getelementptr inbounds nuw %"struct.llvm::MachineFrameInfo::StackObject", ptr %169, i64 %168, i32 6 + %171 = load i8, ptr %170, align 4 + %172 = icmp eq i8 %171, 2 + br i1 %172, label %.sink.split, label %173 + +173: ; preds = %165 + %174 = call noundef zeroext i1 @_ZN4llvm16AArch64InstrInfo10isFpOrNEONERKNS_12MachineInstrE(ptr noundef nonnull align 8 dereferenceable(70) %.sroa.031.063) #25 + %spec.select = select i1 %174, i32 2, i32 1 br label %.sink.split -.sink.split: ; preds = %174, %166 - %.sink118 = phi i32 [ 2, %166 ], [ %spec.select, %174 ] - %176 = and i64 %162, 2147483647 - %177 = getelementptr inbounds nuw i32, ptr %.sroa.037.0, i64 %176 - %178 = load i32, ptr %177, align 4 - %179 = or i32 %178, %.sink118 - store i32 %179, ptr %177, align 4 - br label %180 +.sink.split: ; preds = %173, %165 + %.sink108 = phi i32 [ 2, %165 ], [ %spec.select, %173 ] + %175 = and i64 %161, 2147483647 + %176 = getelementptr inbounds nuw i32, ptr %.sroa.037.0, i64 %175 + %177 = load i32, ptr %176, align 4 + %178 = or i32 %177, %.sink108 + store i32 %178, ptr %176, align 4 + br label %179 -180: ; preds = %.sink.split, %.lr.ph - %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %.sroa.031.065, align 8 - %181 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 4 - %.not.i.i.i = icmp eq i64 %181, 0 +179: ; preds = %.sink.split, %.lr.ph + %.0.copyload.i.i.i.i.i.i.i.i.i = load i64, ptr %.sroa.031.063, align 8 + %180 = and i64 %.0.copyload.i.i.i.i.i.i.i.i.i, 4 + %.not.i.i.i = icmp eq i64 %180, 0 br i1 %.not.i.i.i, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit -_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i: ; preds = %180 - %182 = getelementptr inbounds nuw i8, ptr %.sroa.031.065, i64 44 - %183 = load i32, ptr %182, align 4 - %184 = and i32 %183, 8 - %.not34.i.i.i = icmp eq i32 %184, 0 +_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i: ; preds = %179 + %181 = getelementptr inbounds nuw i8, ptr %.sroa.031.063, i64 44 + %182 = load i32, ptr %181, align 4 + %183 = and i32 %182, 8 + %.not34.i.i.i = icmp eq i32 %183, 0 br i1 %.not34.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i _ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i - %.sroa.0.15.i.i.i = phi ptr [ %186, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ], [ %.sroa.031.065, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ] - %185 = getelementptr inbounds nuw i8, ptr %.sroa.0.15.i.i.i, i64 8 - %186 = load ptr, ptr %185, align 8 - %187 = getelementptr inbounds nuw i8, ptr %186, i64 44 - %188 = load i32, ptr %187, align 4 - %189 = and i32 %188, 8 - %.not3.i.i.i = icmp eq i32 %189, 0 + %.sroa.0.15.i.i.i = phi ptr [ %185, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ], [ %.sroa.031.063, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ] + %184 = getelementptr inbounds nuw i8, ptr %.sroa.0.15.i.i.i, i64 8 + %185 = load ptr, ptr %184, align 8 + %186 = getelementptr inbounds nuw i8, ptr %185, i64 44 + %187 = load i32, ptr %186, align 4 + %188 = and i32 %187, 8 + %.not3.i.i.i = icmp eq i32 %188, 0 br i1 %.not3.i.i.i, label %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, label %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, !llvm.loop !6 -_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, %180, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i - %.sroa.0.0.i.i.i = phi ptr [ %.sroa.031.065, %180 ], [ %.sroa.031.065, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %186, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] - %190 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 - %.sroa.031.0 = load ptr, ptr %190, align 8 - %.not54 = icmp eq ptr %.sroa.031.0, %161 +_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit: ; preds = %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i, %179, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i + %.sroa.0.0.i.i.i = phi ptr [ %.sroa.031.063, %179 ], [ %.sroa.031.063, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.preheader.i.i.i ], [ %185, %_ZNK4llvm14ilist_iteratorINS_12ilist_detail12node_optionsINS_12MachineInstrELb1ELb1EvLb0EvEELb0ELb0EE5isEndEv.exit.i.i.i ] + %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i, i64 8 + %.sroa.031.0 = load ptr, ptr %189, align 8 + %.not54 = icmp eq ptr %.sroa.031.0, %160 br i1 %.not54, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %159 - %191 = getelementptr inbounds nuw i8, ptr %.sroa.034.068, i64 8 - %.sroa.034.0 = load ptr, ptr %191, align 8 - %.not52 = icmp eq ptr %.sroa.034.0, %156 - br i1 %.not52, label %._crit_edge70, label %159 +._crit_edge: ; preds = %_ZN4llvm26MachineInstrBundleIteratorINS_12MachineInstrELb0EEppEv.exit, %158 + %190 = getelementptr inbounds nuw i8, ptr %.sroa.034.066, i64 8 + %.sroa.034.0 = load ptr, ptr %190, align 8 + %.not52 = icmp eq ptr %.sroa.034.0, %155 + br i1 %.not52, label %._crit_edge68, label %158 -._crit_edge70: ; preds = %._crit_edge, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit - %192 = ashr i64 %.pre94, 4 - %193 = icmp sgt i64 %192, 0 - br i1 %193, label %.lr.ph.preheader.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i +._crit_edge68: ; preds = %._crit_edge, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit + %191 = ashr i64 %.pre90, 4 + %192 = icmp sgt i64 %191, 0 + br i1 %192, label %.lr.ph.preheader.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i -.lr.ph.preheader.i.i.i.i.i.i: ; preds = %._crit_edge70 - %194 = and i64 %.pre94, -16 - %scevgep.i.i.i.i.i.i = getelementptr i8, ptr %.sroa.037.0, i64 %194 +.lr.ph.preheader.i.i.i.i.i.i: ; preds = %._crit_edge68 + %193 = and i64 %.pre90, -16 + %scevgep.i.i.i.i.i.i = getelementptr i8, ptr %.sroa.037.0, i64 %193 br label %.lr.ph.i.i.i.i.i.i23 -.lr.ph.i.i.i.i.i.i23: ; preds = %213, %.lr.ph.preheader.i.i.i.i.i.i - %.045.i.i.i.i.i.i = phi i64 [ %215, %213 ], [ %192, %.lr.ph.preheader.i.i.i.i.i.i ] - %.sroa.025.044.i.i.i.i.i.i = phi ptr [ %214, %213 ], [ %.sroa.037.0, %.lr.ph.preheader.i.i.i.i.i.i ] - %195 = load i32, ptr %.sroa.025.044.i.i.i.i.i.i, align 4 - %196 = and i32 %195, 3 - %197 = icmp eq i32 %196, 2 - br i1 %197, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %198 - -198: ; preds = %.lr.ph.i.i.i.i.i.i23 - %199 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 - %200 = load i32, ptr %199, align 4 - %201 = and i32 %200, 3 - %202 = icmp eq i32 %201, 2 - br i1 %202, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", label %203 - -203: ; preds = %198 - %204 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 - %205 = load i32, ptr %204, align 4 - %206 = and i32 %205, 3 - %207 = icmp eq i32 %206, 2 - br i1 %207, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108", label %208 - -208: ; preds = %203 - %209 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 - %210 = load i32, ptr %209, align 4 - %211 = and i32 %210, 3 - %212 = icmp eq i32 %211, 2 - br i1 %212, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110", label %213 - -213: ; preds = %208 - %214 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 16 - %215 = add nsw i64 %.045.i.i.i.i.i.i, -1 - %216 = icmp sgt i64 %.045.i.i.i.i.i.i, 1 - br i1 %216, label %.lr.ph.i.i.i.i.i.i23, label %._crit_edge.loopexit.i.i.i.i.i.i, !llvm.loop !742 - -._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %213 +.lr.ph.i.i.i.i.i.i23: ; preds = %212, %.lr.ph.preheader.i.i.i.i.i.i + %.045.i.i.i.i.i.i = phi i64 [ %214, %212 ], [ %191, %.lr.ph.preheader.i.i.i.i.i.i ] + %.sroa.025.044.i.i.i.i.i.i = phi ptr [ %213, %212 ], [ %.sroa.037.0, %.lr.ph.preheader.i.i.i.i.i.i ] + %194 = load i32, ptr %.sroa.025.044.i.i.i.i.i.i, align 4 + %195 = and i32 %194, 3 + %196 = icmp eq i32 %195, 2 + br i1 %196, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %197 + +197: ; preds = %.lr.ph.i.i.i.i.i.i23 + %198 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 + %199 = load i32, ptr %198, align 4 + %200 = and i32 %199, 3 + %201 = icmp eq i32 %200, 2 + br i1 %201, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", label %202 + +202: ; preds = %197 + %203 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 + %204 = load i32, ptr %203, align 4 + %205 = and i32 %204, 3 + %206 = icmp eq i32 %205, 2 + br i1 %206, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit98", label %207 + +207: ; preds = %202 + %208 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 + %209 = load i32, ptr %208, align 4 + %210 = and i32 %209, 3 + %211 = icmp eq i32 %210, 2 + br i1 %211, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100", label %212 + +212: ; preds = %207 + %213 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 16 + %214 = add nsw i64 %.045.i.i.i.i.i.i, -1 + %215 = icmp sgt i64 %.045.i.i.i.i.i.i, 1 + br i1 %215, label %.lr.ph.i.i.i.i.i.i23, label %._crit_edge.loopexit.i.i.i.i.i.i, !llvm.loop !742 + +._crit_edge.loopexit.i.i.i.i.i.i: ; preds = %212 %.pre.i.i.i.i.i.i = ptrtoint ptr %scevgep.i.i.i.i.i.i to i64 %.pre50.i.i.i.i.i.i = sub i64 %.pre, %.pre.i.i.i.i.i.i br label %._crit_edge.i.i.i.i.i.i -._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %._crit_edge70 - %.pre-phi51.i.i.i.i.i.i = phi i64 [ %.pre50.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.pre94, %._crit_edge70 ] - %.sroa.025.0.lcssa.i.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.sroa.037.0, %._crit_edge70 ] - %217 = ashr exact i64 %.pre-phi51.i.i.i.i.i.i, 2 - switch i64 %217, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" [ - i64 3, label %218 - i64 2, label %224 - i64 1, label %230 +._crit_edge.i.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i.i, %._crit_edge68 + %.pre-phi51.i.i.i.i.i.i = phi i64 [ %.pre50.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.pre90, %._crit_edge68 ] + %.sroa.025.0.lcssa.i.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %.sroa.037.0, %._crit_edge68 ] + %216 = ashr exact i64 %.pre-phi51.i.i.i.i.i.i, 2 + switch i64 %216, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" [ + i64 3, label %217 + i64 2, label %223 + i64 1, label %229 ] -218: ; preds = %._crit_edge.i.i.i.i.i.i - %219 = load i32, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, align 4 - %220 = and i32 %219, 3 - %221 = icmp eq i32 %220, 2 - br i1 %221, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %222 - -222: ; preds = %218 - %223 = getelementptr inbounds nuw i8, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, i64 4 - br label %224 - -224: ; preds = %222, %._crit_edge.i.i.i.i.i.i - %.sroa.025.1.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %223, %222 ] - %225 = load i32, ptr %.sroa.025.1.i.i.i.i.i.i, align 4 - %226 = and i32 %225, 3 - %227 = icmp eq i32 %226, 2 - br i1 %227, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %228 - -228: ; preds = %224 - %229 = getelementptr inbounds nuw i8, ptr %.sroa.025.1.i.i.i.i.i.i, i64 4 - br label %230 - -230: ; preds = %228, %._crit_edge.i.i.i.i.i.i - %.sroa.025.2.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %229, %228 ] - %231 = load i32, ptr %.sroa.025.2.i.i.i.i.i.i, align 4 - %232 = and i32 %231, 3 - %233 = icmp eq i32 %232, 2 - %spec.select.i.i.i.i.i.i = select i1 %233, ptr %.sroa.025.2.i.i.i.i.i.i, ptr %.0.i.i.i.i.i21 +217: ; preds = %._crit_edge.i.i.i.i.i.i + %218 = load i32, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, align 4 + %219 = and i32 %218, 3 + %220 = icmp eq i32 %219, 2 + br i1 %220, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %221 + +221: ; preds = %217 + %222 = getelementptr inbounds nuw i8, ptr %.sroa.025.0.lcssa.i.i.i.i.i.i, i64 4 + br label %223 + +223: ; preds = %221, %._crit_edge.i.i.i.i.i.i + %.sroa.025.1.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %222, %221 ] + %224 = load i32, ptr %.sroa.025.1.i.i.i.i.i.i, align 4 + %225 = and i32 %224, 3 + %226 = icmp eq i32 %225, 2 + br i1 %226, label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit", label %227 + +227: ; preds = %223 + %228 = getelementptr inbounds nuw i8, ptr %.sroa.025.1.i.i.i.i.i.i, i64 4 + br label %229 + +229: ; preds = %227, %._crit_edge.i.i.i.i.i.i + %.sroa.025.2.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i ], [ %228, %227 ] + %230 = load i32, ptr %.sroa.025.2.i.i.i.i.i.i, align 4 + %231 = and i32 %230, 3 + %232 = icmp eq i32 %231, 2 + %spec.select.i.i.i.i.i.i = select i1 %232, ptr %.sroa.025.2.i.i.i.i.i.i, ptr %.0.i.i.i.i.i21 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %198 - %234 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit": ; preds = %197 + %233 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 4 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108": ; preds = %203 - %235 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit98": ; preds = %202 + %234 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 8 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110": ; preds = %208 - %236 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100": ; preds = %207 + %235 = getelementptr inbounds nuw i8, ptr %.sroa.025.044.i.i.i.i.i.i, i64 12 br label %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" -"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit": ; preds = %.lr.ph.i.i.i.i.i.i23, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110", %._crit_edge.i.i.i.i.i.i, %218, %224, %230 - %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %218 ], [ %.sroa.025.1.i.i.i.i.i.i, %224 ], [ %.0.i.i.i.i.i21, %._crit_edge.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %230 ], [ %234, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %235, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit108" ], [ %236, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit110" ], [ %.sroa.025.044.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i23 ] +"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit": ; preds = %.lr.ph.i.i.i.i.i.i23, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit98", %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100", %._crit_edge.i.i.i.i.i.i, %217, %223, %229 + %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.i = phi ptr [ %.sroa.025.0.lcssa.i.i.i.i.i.i, %217 ], [ %.sroa.025.1.i.i.i.i.i.i, %223 ], [ %.0.i.i.i.i.i21, %._crit_edge.i.i.i.i.i.i ], [ %spec.select.i.i.i.i.i.i, %229 ], [ %233, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit" ], [ %234, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit98" ], [ %235, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit.loopexit.split.loop.exit100" ], [ %.sroa.025.044.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i23 ] %.not53 = icmp eq ptr %.0.i.i.i.i.i21, %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.i %.not.i.i.i24 = icmp eq ptr %.sroa.037.0, null - br i1 %.not.i.i.i24, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %237 + br i1 %.not.i.i.i24, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %236 -237: ; preds = %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" - %238 = ptrtoint ptr %.sroa.11.0 to i64 - %239 = sub i64 %238, %.pre92 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.037.0, i64 noundef %239) #26 +236: ; preds = %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" + %237 = ptrtoint ptr %.sroa.11.0 to i64 + %238 = sub i64 %237, %.pre88 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.037.0, i64 noundef %238) #26 br label %_ZNSt6vectorIjSaIjEED2Ev.exit -_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %237, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" - br i1 %.not53, label %245, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread +_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %236, %"_ZN4llvm6any_ofIRSt6vectorIjSaIjEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERNS_9BitVectorEE3$_1EEbOT_T0_.exit" + br i1 %.not53, label %244, label %_ZNSt6vectorIjSaIjEED2Ev.exit.thread -_ZNSt6vectorIjSaIjEED2Ev.exit.thread: ; preds = %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i.i.i.i.i.i.i, %"_ZN4llvm6any_ofINS_14iterator_rangeINS_28const_set_bits_iterator_implINS_9BitVectorEEEEEZNKS_20AArch64FrameLowering24determineStackHazardSlotERNS_15MachineFunctionERS3_E3$_0EEbOT_T0_.exit", %_ZNSt6vectorIjSaIjEED2Ev.exit - %240 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_ZL15StackHazardSize, i64 128), align 8 - %241 = zext i32 %240 to i64 - %242 = call noundef i32 @_ZN4llvm16MachineFrameInfo17CreateStackObjectEmNS_5AlignEbPKNS_10AllocaInstEh(ptr noundef nonnull align 8 dereferenceable(696) %25, i64 noundef %241, i8 4, i1 noundef zeroext false, ptr noundef null, i8 noundef zeroext 0) #25 - %243 = load ptr, ptr %10, align 8 - %244 = getelementptr inbounds nuw i8, ptr %243, i64 80 - store i32 %242, ptr %244, align 8 - br label %245 +_ZNSt6vectorIjSaIjEED2Ev.exit.thread: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZNK4llvm20AArch64FrameLowering24determineStackHazardSlotERNS2_15MachineFunctionERNS2_9BitVectorEE3$_0EclINS2_28const_set_bits_iterator_implIS6_EEEEbT_.exit.i.i.i.i.i.i", %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit9.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit6.i.i.i.i.i.i.i.i, %_ZNK4llvm19TargetRegisterClass8containsENS_8RegisterE.exit.i.i.i.i.i.i.i.i, %_ZNSt6vectorIjSaIjEED2Ev.exit + %239 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_ZL15StackHazardSize, i64 128), align 8 + %240 = zext i32 %239 to i64 + %241 = call noundef i32 @_ZN4llvm16MachineFrameInfo17CreateStackObjectEmNS_5AlignEbPKNS_10AllocaInstEh(ptr noundef nonnull align 8 dereferenceable(696) %25, i64 noundef %240, i8 4, i1 noundef zeroext false, ptr noundef null, i8 noundef zeroext 0) #25 + %242 = load ptr, ptr %10, align 8 + %243 = getelementptr inbounds nuw i8, ptr %242, i64 80 + store i32 %241, ptr %243, align 8 + br label %244 -245: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %19, %3, %9, %_ZNSt6vectorIjSaIjEED2Ev.exit.thread +244: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit, %19, %3, %9, %_ZNSt6vectorIjSaIjEED2Ev.exit.thread ret void } diff --git a/bench/llvm/optimized/AArch64ISelLowering.cpp.ll b/bench/llvm/optimized/AArch64ISelLowering.cpp.ll index ebaff4be826..f33e01be649 100644 --- a/bench/llvm/optimized/AArch64ISelLowering.cpp.ll +++ b/bench/llvm/optimized/AArch64ISelLowering.cpp.ll @@ -84596,138 +84596,123 @@ _ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit: ; %128 = add i16 %124, -169 %spec.select.i.i = icmp ult i16 %128, 21 %or.cond101 = or i1 %spec.select.i.i, %or.cond4.i.i - br i1 %or.cond101, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %137 + br i1 %or.cond101, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %135 129: ; preds = %.loopexit %130 = call noundef zeroext i1 @_ZNK4llvm3EVT23isExtendedFloatingPointEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 - br i1 %130, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %137 + br i1 %130, label %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, label %135 _ZNK4llvm3EVT15isFloatingPointEv.exit.thread: ; preds = %125, %129 %131 = shl nuw nsw i32 %43, 1 %132 = add nsw i32 %131, -16 %133 = call i32 @llvm.fshl.i32(i32 %132, i32 %132, i32 28) - %134 = icmp ult i32 %133, 5 - br i1 %134, label %switch.hole_check, label %135 - -135: ; preds = %switch.hole_check, %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread - %136 = icmp eq i32 %43, 64 - call void @llvm.assume(i1 %136) + %134 = sext i32 %133 to i64 + %switch.gep = getelementptr inbounds [5 x i16], ptr @switch.table._ZNK4llvm21AArch64TargetLowering14shouldLocalizeERKNS_12MachineInstrEPKNS_19TargetTransformInfoE, i64 0, i64 %134 + %switch.load = load i16, ptr %switch.gep, align 2 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -137: ; preds = %125, %129 - switch i32 %43, label %144 [ - i32 64, label %143 +135: ; preds = %125, %129 + switch i32 %43, label %142 [ + i32 64, label %141 i32 1, label %_ZN4llvm3MVT18getFloatingPointVTEj.exit - i32 2, label %138 - i32 4, label %139 - i32 8, label %140 - i32 16, label %141 - i32 32, label %142 + i32 2, label %136 + i32 4, label %137 + i32 8, label %138 + i32 16, label %139 + i32 32, label %140 ] -138: ; preds = %137 - br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit - -139: ; preds = %137 +136: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -140: ; preds = %137 +137: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -141: ; preds = %137 +138: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -142: ; preds = %137 +139: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -143: ; preds = %137 +140: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -144: ; preds = %137 +141: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -switch.hole_check: ; preds = %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread - %switch.maskindex = trunc nuw i32 %133 to i8 - %switch.shifted = lshr i8 27, %switch.maskindex - %switch.lobit = trunc i8 %switch.shifted to i1 - br i1 %switch.lobit, label %switch.lookup, label %135 - -switch.lookup: ; preds = %switch.hole_check - %145 = zext nneg i32 %133 to i64 - %switch.gep = getelementptr inbounds nuw [5 x i16], ptr @switch.table._ZNK4llvm21AArch64TargetLowering14shouldLocalizeERKNS_12MachineInstrEPKNS_19TargetTransformInfoE, i64 0, i64 %145 - %switch.load = load i16, ptr %switch.gep, align 2 +142: ; preds = %135 br label %_ZN4llvm3MVT18getFloatingPointVTEj.exit -_ZN4llvm3MVT18getFloatingPointVTEj.exit: ; preds = %switch.lookup, %137, %144, %143, %142, %141, %140, %139, %138, %135 - %.sroa.040.0 = phi i16 [ 15, %135 ], [ 0, %144 ], [ 9, %143 ], [ 8, %142 ], [ 7, %141 ], [ 6, %140 ], [ 5, %139 ], [ 4, %138 ], [ 3, %137 ], [ %switch.load, %switch.lookup ] - br i1 %.not.i81, label %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, label %146 +_ZN4llvm3MVT18getFloatingPointVTEj.exit: ; preds = %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread, %135, %142, %141, %140, %139, %138, %137, %136 + %.sroa.040.0 = phi i16 [ 0, %142 ], [ 9, %141 ], [ 8, %140 ], [ 7, %139 ], [ 6, %138 ], [ 5, %137 ], [ 4, %136 ], [ 3, %135 ], [ %switch.load, %_ZNK4llvm3EVT15isFloatingPointEv.exit.thread ] + br i1 %.not.i81, label %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, label %143 -146: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit - %147 = add i16 %124, -137 - %spec.select.i.i.i = icmp ult i16 %147, 53 - br i1 %spec.select.i.i.i, label %149, label %150 +143: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit + %144 = add i16 %124, -137 + %spec.select.i.i.i = icmp ult i16 %144, 53 + br i1 %spec.select.i.i.i, label %146, label %147 _ZNK4llvm3EVT16isScalableVectorEv.exit.i: ; preds = %_ZN4llvm3MVT18getFloatingPointVTEj.exit - %148 = call noundef zeroext i1 @_ZNK4llvm3EVT24isExtendedScalableVectorEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 - br i1 %148, label %149, label %.thread.i + %145 = call noundef zeroext i1 @_ZNK4llvm3EVT24isExtendedScalableVectorEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 + br i1 %145, label %146, label %.thread.i -149: ; preds = %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, %146 +146: ; preds = %_ZNK4llvm3EVT16isScalableVectorEv.exit.i, %143 call void @_ZN4llvm24reportInvalidSizeRequestEPKc(ptr noundef nonnull @.str.527) #33 %.pr.i = load i16, ptr %7, align 8 - br label %150 + br label %147 -150: ; preds = %149, %146 - %151 = phi i16 [ %124, %146 ], [ %.pr.i, %149 ] - %.not.i84 = icmp eq i16 %151, 0 - br i1 %.not.i84, label %.thread.i, label %152 +147: ; preds = %146, %143 + %148 = phi i16 [ %124, %143 ], [ %.pr.i, %146 ] + %.not.i84 = icmp eq i16 %148, 0 + br i1 %.not.i84, label %.thread.i, label %149 -152: ; preds = %150 - %153 = add i16 %151, -137 - %spec.select.i.i1.i = icmp ult i16 %153, 53 - br i1 %spec.select.i.i1.i, label %154, label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i +149: ; preds = %147 + %150 = add i16 %148, -137 + %spec.select.i.i1.i = icmp ult i16 %150, 53 + br i1 %spec.select.i.i1.i, label %151, label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i -154: ; preds = %152 +151: ; preds = %149 call void @_ZN4llvm24reportInvalidSizeRequestEPKc(ptr noundef nonnull @.str.528) #33 %.pre.i.i = load i16, ptr %7, align 8 br label %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i -_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i: ; preds = %154, %152 - %155 = phi i16 [ %.pre.i.i, %154 ], [ %151, %152 ] - %156 = zext i16 %155 to i64 - %157 = add nsw i64 %156, -1 - %158 = getelementptr inbounds [240 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %157 - %159 = load i16, ptr %158, align 2 - %160 = zext i16 %159 to i32 +_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i: ; preds = %151, %149 + %152 = phi i16 [ %.pre.i.i, %151 ], [ %148, %149 ] + %153 = zext i16 %152 to i64 + %154 = add nsw i64 %153, -1 + %155 = getelementptr inbounds [240 x i16], ptr @_ZZNK4llvm3MVT23getVectorMinNumElementsEvE10NElemTable, i64 0, i64 %154 + %156 = load i16, ptr %155, align 2 + %157 = zext i16 %156 to i32 br label %_ZNK4llvm3EVT20getVectorNumElementsEv.exit -.thread.i: ; preds = %150, %_ZNK4llvm3EVT16isScalableVectorEv.exit.i - %161 = call noundef i32 @_ZNK4llvm3EVT28getExtendedVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 +.thread.i: ; preds = %147, %_ZNK4llvm3EVT16isScalableVectorEv.exit.i + %158 = call noundef i32 @_ZNK4llvm3EVT28getExtendedVectorNumElementsEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #34 br label %_ZNK4llvm3EVT20getVectorNumElementsEv.exit _ZNK4llvm3EVT20getVectorNumElementsEv.exit: ; preds = %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i, %.thread.i - %162 = phi i32 [ %160, %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i ], [ %161, %.thread.i ] - %163 = lshr i32 %162, 1 - %164 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %.sroa.040.0, i32 noundef %163) - %.not.i85 = icmp eq i16 %164, 0 + %159 = phi i32 [ %157, %_ZNK4llvm3MVT20getVectorNumElementsEv.exit.i ], [ %158, %.thread.i ] + %160 = lshr i32 %159, 1 + %161 = call i16 @_ZN4llvm3MVT11getVectorVTES0_j(i16 %.sroa.040.0, i32 noundef %160) + %.not.i85 = icmp eq i16 %161, 0 br i1 %.not.i85, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit - %165 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %166 = load ptr, ptr %165, align 8 - %167 = getelementptr inbounds nuw i8, ptr %166, i64 104 - %168 = zext i16 %164 to i64 - %169 = getelementptr inbounds nuw [233 x ptr], ptr %167, i64 0, i64 %168 - %170 = load ptr, ptr %169, align 8 - %.not = icmp eq ptr %170, null - br i1 %.not, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %171 - -171: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit - %172 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr %.sroa.054.0.copyload, i32 %.sroa.455.0.copyload) #33 - %.fca.0.extract24 = extractvalue { ptr, i32 } %172, 0 - %.fca.1.extract25 = extractvalue { ptr, i32 } %172, 1 - %173 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr %.sroa.048.0.copyload, i32 %.sroa.4.0.copyload) #33 - %.fca.0.extract14 = extractvalue { ptr, i32 } %173, 0 - %.fca.1.extract15 = extractvalue { ptr, i32 } %173, 1 + %162 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %163 = load ptr, ptr %162, align 8 + %164 = getelementptr inbounds nuw i8, ptr %163, i64 104 + %165 = zext i16 %161 to i64 + %166 = getelementptr inbounds nuw [233 x ptr], ptr %164, i64 0, i64 %165 + %167 = load ptr, ptr %166, align 8 + %.not = icmp eq ptr %167, null + br i1 %.not, label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, label %168 + +168: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit + %169 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr %.sroa.054.0.copyload, i32 %.sroa.455.0.copyload) #33 + %.fca.0.extract24 = extractvalue { ptr, i32 } %169, 0 + %.fca.1.extract25 = extractvalue { ptr, i32 } %169, 1 + %170 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr %.sroa.048.0.copyload, i32 %.sroa.4.0.copyload) #33 + %.fca.0.extract14 = extractvalue { ptr, i32 } %170, 0 + %.fca.1.extract15 = extractvalue { ptr, i32 } %170, 1 %.sroa.011.0.copyload = load i16, ptr %7, align 8 %.sroa.213.0.copyload = load ptr, ptr %23, align 8 store ptr %.fca.0.extract14, ptr %10, align 8 @@ -84735,43 +84720,43 @@ _ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit: ; preds = %_ZNK4llvm3E store i32 %.fca.1.extract15, ptr %.sroa.4.0..sroa_idx50, align 8 %.sroa.6.0..sroa_idx52 = getelementptr inbounds nuw i8, ptr %10, i64 12 store i32 %.sroa.6.0.copyload, ptr %.sroa.6.0..sroa_idx52, align 4 - %174 = load ptr, ptr %9, align 8 - store ptr %174, ptr %11, align 8 - %175 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %176 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #33 - store i64 %176, ptr %175, align 8 - %177 = call { ptr, i32 } @_ZN4llvm12SelectionDAG16getVectorShuffleENS_3EVTERKNS_5SDLocENS_7SDValueES5_NS_8ArrayRefIiEE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %164, ptr null, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr %.fca.0.extract24, i32 %.fca.1.extract25, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"class.llvm::ArrayRef.264") align 8 %11) #33 - %.fca.0.extract2 = extractvalue { ptr, i32 } %177, 0 - %.fca.1.extract3 = extractvalue { ptr, i32 } %177, 1 - %178 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %.sroa.011.0.copyload, ptr %.sroa.213.0.copyload, ptr %.fca.0.extract2, i32 %.fca.1.extract3) #33 - %.fca.0.extract = extractvalue { ptr, i32 } %178, 0 - %.fca.1.extract = extractvalue { ptr, i32 } %178, 1 + %171 = load ptr, ptr %9, align 8 + store ptr %171, ptr %11, align 8 + %172 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %173 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #33 + store i64 %173, ptr %172, align 8 + %174 = call { ptr, i32 } @_ZN4llvm12SelectionDAG16getVectorShuffleENS_3EVTERKNS_5SDLocENS_7SDValueES5_NS_8ArrayRefIiEE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %161, ptr null, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr %.fca.0.extract24, i32 %.fca.1.extract25, ptr noundef nonnull byval(%"class.llvm::SDValue") align 8 %10, ptr noundef nonnull byval(%"class.llvm::ArrayRef.264") align 8 %11) #33 + %.fca.0.extract2 = extractvalue { ptr, i32 } %174, 0 + %.fca.1.extract3 = extractvalue { ptr, i32 } %174, 1 + %175 = call { ptr, i32 } @_ZN4llvm12SelectionDAG10getBitcastENS_3EVTENS_7SDValueE(ptr noundef nonnull align 8 dereferenceable(904) %2, i16 %.sroa.011.0.copyload, ptr %.sroa.213.0.copyload, ptr %.fca.0.extract2, i32 %.fca.1.extract3) #33 + %.fca.0.extract = extractvalue { ptr, i32 } %175, 0 + %.fca.1.extract = extractvalue { ptr, i32 } %175, 1 br label %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread -_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit, %171 - %.sroa.6.1 = phi i32 [ %.fca.1.extract, %171 ], [ 0, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ 0, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ 0, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] - %.sroa.096.1 = phi ptr [ %.fca.0.extract, %171 ], [ null, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ null, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ null, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] - %179 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #33 - %180 = load ptr, ptr %9, align 8 - %181 = icmp eq ptr %180, %60 - br i1 %181, label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, label %182 +_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread: ; preds = %_ZNK4llvm3EVT20getVectorNumElementsEv.exit, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit, %168 + %.sroa.6.1 = phi i32 [ %.fca.1.extract, %168 ], [ 0, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ 0, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ 0, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] + %.sroa.096.1 = phi ptr [ %.fca.0.extract, %168 ], [ null, %_ZL14isWideTypeMaskN4llvm8ArrayRefIiEENS_3EVTERNS_15SmallVectorImplIiEE.exit ], [ null, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit ], [ null, %_ZNK4llvm3EVT20getVectorNumElementsEv.exit ] + %176 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #33 + %177 = load ptr, ptr %9, align 8 + %178 = icmp eq ptr %177, %60 + br i1 %178, label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, label %179 -182: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread - call void @free(ptr noundef %180) #33 +179: ; preds = %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread + call void @free(ptr noundef %177) #33 br label %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit -_ZN4llvm11SmallVectorIiLj8EED2Ev.exit: ; preds = %182, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit - %.sroa.6.0 = phi i32 [ 0, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit ], [ %.sroa.6.1, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread ], [ %.sroa.6.1, %182 ] - %.sroa.096.0 = phi ptr [ null, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit ], [ %.sroa.096.1, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread ], [ %.sroa.096.1, %182 ] - %183 = load ptr, ptr %6, align 8 - %.not.i.i.i.i.i = icmp eq ptr %183, null - br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %184 +_ZN4llvm11SmallVectorIiLj8EED2Ev.exit: ; preds = %179, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit + %.sroa.6.0 = phi i32 [ 0, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit ], [ %.sroa.6.1, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread ], [ %.sroa.6.1, %179 ] + %.sroa.096.0 = phi ptr [ null, %_ZNK4llvm19ShuffleVectorSDNode7getMaskEv.exit ], [ %.sroa.096.1, %_ZNK4llvm18TargetLoweringBase11isTypeLegalENS_3EVTE.exit.thread ], [ %.sroa.096.1, %179 ] + %180 = load ptr, ptr %6, align 8 + %.not.i.i.i.i.i = icmp eq ptr %180, null + br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %181 -184: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit - call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(8) %183) #33 +181: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit + call void @_ZN4llvm16MetadataTracking7untrackEPvRNS_8MetadataE(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(8) %180) #33 br label %_ZN4llvm5SDLocD2Ev.exit -_ZN4llvm5SDLocD2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, %184 +_ZN4llvm5SDLocD2Ev.exit: ; preds = %_ZN4llvm11SmallVectorIiLj8EED2Ev.exit, %181 %.fca.0.insert = insertvalue { ptr, i32 } poison, ptr %.sroa.096.0, 0 %.fca.1.insert = insertvalue { ptr, i32 } %.fca.0.insert, i32 %.sroa.6.0, 1 ret { ptr, i32 } %.fca.1.insert diff --git a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll index 00b31fd511e..e2685c11d14 100644 --- a/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll +++ b/bench/llvm/optimized/AArch64LegalizerInfo.cpp.ll @@ -23445,53 +23445,36 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNSt17_Function_handlerIFbRKN4ll br i1 %.not.i.i.i, label %18, label %_ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit 18: ; preds = %14 - %19 = and i64 %9, 6 - %20 = icmp eq i64 %19, 2 - %21 = and i64 %9, 1 - %22 = icmp ne i64 %21, 0 - %or.cond14.i.i.i.i = or i1 %22, %20 - br i1 %or.cond14.i.i.i.i, label %23, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i - -23: ; preds = %18 - %.not.i1.i.i.i.i = icmp eq i64 %21, 0 - br i1 %.not.i1.i.i.i.i, label %26, label %24 - -24: ; preds = %23 - %25 = lshr i64 %9, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i - -26: ; preds = %23 - %27 = lshr i64 %9, 19 - %28 = and i64 %27, 65535 - %spec.select.i.i2.i.i.i = select i1 %.not.i.i.i.i, i64 %27, i64 %28 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i + %19 = and i64 %9, 1 + %.not5.i.i.i = icmp eq i64 %19, 0 + %20 = lshr i64 %9, 3 + br i1 %.not5.i.i.i, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %18 - %29 = lshr i64 %9, 3 - %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %29, 65535 - %30 = lshr i64 %9, 19 - %31 = and i64 %30, 65535 - %spec.select.i10.i.i.i.i = select i1 %.not.i.i.i.i, i64 %30, i64 %31 - %32 = mul nuw nsw i64 %spec.select.i10.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i + %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %20, 65535 + %21 = lshr i64 %9, 19 + %22 = and i64 %21, 65535 + %spec.select.i10.i.i.i.i = select i1 %.not.i.i.i.i, i64 %21, i64 %22 + %23 = mul nuw nsw i64 %spec.select.i10.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %26, %24 - %.sroa.012.0.in.i.i.i.i = phi i64 [ %32, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %25, %24 ], [ %spec.select.i.i2.i.i.i, %26 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %18 + %.sroa.012.0.in.i.i.i.i = phi i64 [ %23, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %20, %18 ] %.sroa.012.0.i.i.i.i = and i64 %.sroa.012.0.in.i.i.i.i, 4294967295 store i64 %.sroa.012.0.i.i.i.i, ptr %3, align 8 %.sroa.2.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 0, ptr %.sroa.2.0..sroa_idx.i.i.i, align 8 - %33 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %3) #20 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %35 = load i32, ptr %34, align 4 - %36 = zext i32 %35 to i64 - %37 = icmp ult i64 %33, %36 + %24 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %3) #20 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %26 = load i32, ptr %25, align 4 + %27 = zext i32 %26 to i64 + %28 = icmp ult i64 %24, %27 br label %_ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit _ZSt10__invoke_rIbRZN4llvm15LegalizeRuleSet30widenVectorEltsToVectorMinSizeEjjEUlRKNS0_13LegalityQueryEE_JS4_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EES8_E4typeEOS9_DpOSA_.exit: ; preds = %2, %14, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i - %38 = phi i1 [ false, %14 ], [ false, %2 ], [ %37, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ] + %29 = phi i1 [ false, %14 ], [ false, %2 ], [ %28, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - ret i1 %38 + ret i1 %29 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll b/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll index 854c337cc01..aeeb1f4439a 100644 --- a/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll +++ b/bench/llvm/optimized/AArch64PostLegalizerCombiner.cpp.ll @@ -6466,210 +6466,178 @@ _ZNK4llvm3LLT16isScalableVectorEv.exit.i: ; preds = %_ZNK4llvm19MachineR br i1 %.not52.i, label %43, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit 43: ; preds = %_ZNK4llvm3LLT16isScalableVectorEv.exit.i - %44 = and i64 %35, 6 - %45 = icmp eq i64 %44, 2 - %46 = and i64 %35, 1 - %47 = icmp ne i64 %46, 0 - %or.cond14.i.i = or i1 %47, %45 - br i1 %or.cond14.i.i, label %48, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i - -48: ; preds = %43 - %.not.i1.i.i = icmp eq i64 %46, 0 - br i1 %.not.i1.i.i, label %51, label %49 - -49: ; preds = %48 - %50 = lshr i64 %35, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i - -51: ; preds = %48 - %52 = lshr i64 %35, 19 - %53 = and i64 %52, 65535 - %spec.select.i.i19.i = select i1 %.not.i.i.i, i64 %52, i64 %53 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i + %44 = and i64 %35, 1 + %.not53.i = icmp eq i64 %44, 0 + %45 = lshr i64 %35, 3 + br i1 %.not53.i, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i: ; preds = %43 - %54 = lshr i64 %35, 3 - %.sroa.0.0.insert.ext.i.i.i.i = and i64 %54, 65535 - %55 = lshr i64 %35, 19 - %56 = and i64 %55, 65535 - %spec.select.i10.i.i = select i1 %.not.i.i.i, i64 %55, i64 %56 - %57 = mul nuw nsw i64 %spec.select.i10.i.i, %.sroa.0.0.insert.ext.i.i.i.i + %.sroa.0.0.insert.ext.i.i.i.i = and i64 %45, 65535 + %46 = lshr i64 %35, 19 + %47 = and i64 %46, 65535 + %spec.select.i10.i.i = select i1 %.not.i.i.i, i64 %46, i64 %47 + %48 = mul nuw nsw i64 %spec.select.i10.i.i, %.sroa.0.0.insert.ext.i.i.i.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, %51, %49 - %.sroa.012.0.in.i.i = phi i64 [ %57, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i ], [ %50, %49 ], [ %spec.select.i.i19.i, %51 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i, %43 + %.sroa.012.0.in.i.i = phi i64 [ %48, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i ], [ %45, %43 ] %.sroa.012.0.i.i = and i64 %.sroa.012.0.in.i.i, 4294967295 store i64 %.sroa.012.0.i.i, ptr %1, align 8 %.sroa.26.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %1, i64 8 store i8 0, ptr %.sroa.26.0..sroa_idx.i, align 8 - %58 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %1) #22 - %.not.i = icmp eq i64 %58, 128 - br i1 %.not.i, label %59, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -59: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i - %60 = load i64, ptr %3, align 8 - %61 = icmp ugt i64 %60, 7 - call void @llvm.assume(i1 %61) - %62 = and i64 %60, 7 - %switch.i.i.i = icmp eq i64 %62, 0 - br i1 %switch.i.i.i, label %63, label %65 - -63: ; preds = %59 - %64 = inttoptr i64 %60 to ptr - store ptr %64, ptr %3, align 8 + %49 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %1) #22 + %.not.i = icmp eq i64 %49, 128 + br i1 %.not.i, label %50, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +50: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i + %51 = load i64, ptr %3, align 8 + %52 = icmp ugt i64 %51, 7 + call void @llvm.assume(i1 %52) + %53 = and i64 %51, 7 + %switch.i.i.i = icmp eq i64 %53, 0 + br i1 %switch.i.i.i, label %54, label %56 + +54: ; preds = %50 + %55 = inttoptr i64 %51 to ptr + store ptr %55, ptr %3, align 8 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i -65: ; preds = %59 - %66 = and i64 %60, -8 - %67 = inttoptr i64 %66 to ptr - %68 = getelementptr inbounds nuw i8, ptr %67, i64 16 - %.pre.i.i.i = load ptr, ptr %68, align 8 +56: ; preds = %50 + %57 = and i64 %51, -8 + %58 = inttoptr i64 %57 to ptr + %59 = getelementptr inbounds nuw i8, ptr %58, i64 16 + %.pre.i.i.i = load ptr, ptr %59, align 8 br label %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i -_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i: ; preds = %65, %63 - %69 = phi ptr [ %64, %63 ], [ %.pre.i.i.i, %65 ] - %70 = getelementptr inbounds nuw i8, ptr %69, i64 24 - %71 = load i64, ptr %70, align 8 - %72 = and i64 %71, -7 - %spec.select.i.not.i.i.i = icmp eq i64 %72, 0 - br i1 %spec.select.i.not.i.i.i, label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i, label %73 - -73: ; preds = %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i - %74 = and i64 %71, 2 - %.not.i.not.i.i.i.i = icmp eq i64 %74, 0 - %75 = and i64 %71, 6 - %76 = icmp eq i64 %75, 2 - %77 = and i64 %71, 1 - %78 = icmp ne i64 %77, 0 - %or.cond14.i.i.i.i = or i1 %78, %76 - br i1 %or.cond14.i.i.i.i, label %79, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i - -79: ; preds = %73 - %.not.i1.i.i.i.i = icmp eq i64 %77, 0 - br i1 %.not.i1.i.i.i.i, label %82, label %80 - -80: ; preds = %79 - %81 = lshr i64 %71, 3 +_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i: ; preds = %56, %54 + %60 = phi ptr [ %55, %54 ], [ %.pre.i.i.i, %56 ] + %61 = getelementptr inbounds nuw i8, ptr %60, i64 24 + %62 = load i64, ptr %61, align 8 + %63 = and i64 %62, -7 + %spec.select.i.not.i.i.i = icmp eq i64 %63, 0 + br i1 %spec.select.i.not.i.i.i, label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i, label %64 + +64: ; preds = %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i + %65 = and i64 %62, 2 + %.not.i.not.i.i.i.i = icmp eq i64 %65, 0 + %66 = and i64 %62, 6 + %67 = icmp eq i64 %66, 2 + %68 = and i64 %62, 1 + %69 = icmp ne i64 %68, 0 + %or.cond14.i.i.i.i = or i1 %69, %67 + br i1 %or.cond14.i.i.i.i, label %70, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i + +70: ; preds = %64 + %.not.i1.i.i.i.i = icmp eq i64 %68, 0 + br i1 %.not.i1.i.i.i.i, label %73, label %71 + +71: ; preds = %70 + %72 = lshr i64 %62, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -82: ; preds = %79 - %83 = and i64 %71, 4 - %.not1.i2.i.i.i.i = icmp eq i64 %83, 0 - br i1 %.not1.i2.i.i.i.i, label %87, label %84 +73: ; preds = %70 + %74 = and i64 %62, 4 + %.not1.i2.i.i.i.i = icmp eq i64 %74, 0 + br i1 %.not1.i2.i.i.i.i, label %78, label %75 -84: ; preds = %82 - %85 = lshr i64 %71, 19 - %86 = and i64 %85, 65535 - %spec.select.i.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %85, i64 %86 +75: ; preds = %73 + %76 = lshr i64 %62, 19 + %77 = and i64 %76, 65535 + %spec.select.i.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %76, i64 %77 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -87: ; preds = %82 - %88 = lshr i64 %71, 3 - %89 = and i64 %88, 65535 +78: ; preds = %73 + %79 = lshr i64 %62, 3 + %80 = and i64 %79, 65535 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %73 - %90 = lshr i64 %71, 3 - %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %90, 65535 - %91 = select i1 %.not.i.not.i.i.i.i, i64 2251799813685248, i64 576460752303423488 - %92 = and i64 %91, %71 - %.not1.i4.i.not.i.i.i = icmp eq i64 %92, 0 - %93 = and i64 %71, 4 - %.not1.i8.i.i.i.i = icmp eq i64 %93, 0 - %94 = lshr i64 %71, 19 - %95 = and i64 %94, 65535 - %spec.select.i10.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %94, i64 %95 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i: ; preds = %64 + %81 = lshr i64 %62, 3 + %.sroa.0.0.insert.ext.i.i.i.i.i.i = and i64 %81, 65535 + %82 = select i1 %.not.i.not.i.i.i.i, i64 2251799813685248, i64 576460752303423488 + %83 = and i64 %82, %62 + %.not1.i4.i.not.i.i.i = icmp eq i64 %83, 0 + %84 = and i64 %62, 4 + %.not1.i8.i.i.i.i = icmp eq i64 %84, 0 + %85 = lshr i64 %62, 19 + %86 = and i64 %85, 65535 + %spec.select.i10.i.i.i.i = select i1 %.not.i.not.i.i.i.i, i64 %85, i64 %86 %.0.in.i6.i.i.i.i = select i1 %.not1.i8.i.i.i.i, i64 %.sroa.0.0.insert.ext.i.i.i.i.i.i, i64 %spec.select.i10.i.i.i.i - %96 = mul nuw nsw i64 %.0.in.i6.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i - %97 = select i1 %.not1.i4.i.not.i.i.i, i64 0, i64 4611686018427387904 + %87 = mul nuw nsw i64 %.0.in.i6.i.i.i.i, %.sroa.0.0.insert.ext.i.i.i.i.i.i + %88 = select i1 %.not1.i4.i.not.i.i.i, i64 0, i64 4611686018427387904 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %87, %84, %80 - %.sroa.012.0.in.i.i.i.i = phi i64 [ %96, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %81, %80 ], [ %89, %87 ], [ %spec.select.i.i.i.i.i, %84 ] - %.sroa.3.0.i.i.i.i = phi i64 [ %97, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ 0, %80 ], [ 0, %87 ], [ 0, %84 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i, %78, %75, %71 + %.sroa.012.0.in.i.i.i.i = phi i64 [ %87, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ %72, %71 ], [ %80, %78 ], [ %spec.select.i.i.i.i.i, %75 ] + %.sroa.3.0.i.i.i.i = phi i64 [ %88, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i.i.i.i ], [ 0, %71 ], [ 0, %78 ], [ 0, %75 ] %.sroa.012.0.i.i.i.i = and i64 %.sroa.012.0.in.i.i.i.i, 4294967295 - %98 = or disjoint i64 %.sroa.3.0.i.i.i.i, %.sroa.012.0.i.i.i.i + %89 = or disjoint i64 %.sroa.3.0.i.i.i.i, %.sroa.012.0.i.i.i.i br label %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i _ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i - %.sroa.03.0.i.i.i = phi i64 [ %98, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ], [ -1, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i ] - br i1 %or.cond14.i.i, label %99, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i - -99: ; preds = %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i - %.not.i1.i35.i = icmp eq i64 %46, 0 - br i1 %.not.i1.i35.i, label %102, label %100 - -100: ; preds = %99 - %101 = lshr i64 %35, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i - -102: ; preds = %99 - %103 = lshr i64 %35, 19 - %104 = and i64 %103, 65535 - %spec.select.i.i37.i = select i1 %.not.i.i.i, i64 %103, i64 %104 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i + %.sroa.03.0.i.i.i = phi i64 [ %89, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i.i.i ], [ -1, %_ZNK4llvm13GMemOperation6getMMOEv.exit.i.i ] + br i1 %.not53.i, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i: ; preds = %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i - %105 = lshr i64 %35, 3 - %.sroa.0.0.insert.ext.i.i.i25.i = and i64 %105, 65535 - %106 = lshr i64 %35, 19 - %107 = and i64 %106, 65535 - %spec.select.i10.i28.i = select i1 %.not.i.i.i, i64 %106, i64 %107 - %108 = mul nuw nsw i64 %spec.select.i10.i28.i, %.sroa.0.0.insert.ext.i.i.i25.i + %.sroa.0.0.insert.ext.i.i.i25.i = and i64 %45, 65535 + %90 = lshr i64 %35, 19 + %91 = and i64 %90, 65535 + %spec.select.i10.i28.i = select i1 %.not.i.i.i, i64 %90, i64 %91 + %92 = mul nuw nsw i64 %spec.select.i10.i28.i, %.sroa.0.0.insert.ext.i.i.i25.i br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i -_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, %102, %100 - %.sroa.012.0.in.i30.i = phi i64 [ %108, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i ], [ %101, %100 ], [ %spec.select.i.i37.i, %102 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i, %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i + %.sroa.012.0.in.i30.i = phi i64 [ %92, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i24.i ], [ %45, %_ZNK4llvm13GMemOperation16getMemSizeInBitsEv.exit.i ] %.sroa.012.0.i32.i = and i64 %.sroa.012.0.in.i30.i, 4294967295 - %109 = and i64 %.sroa.03.0.i.i.i, 4611686018427387903 - %110 = icmp eq i64 %109, %.sroa.012.0.i32.i - %.not53.i = icmp ult i64 %.sroa.03.0.i.i.i, 4611686018427387904 - %or.cond55.i = select i1 %.not53.i, i1 %110, i1 false - br i1 %or.cond55.i, label %111, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -111: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i - %112 = load ptr, ptr %22, align 8 - %113 = getelementptr inbounds nuw i8, ptr %112, i64 4 - %114 = load i32, ptr %113, align 4 - %115 = call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %114) #22 - br i1 %115, label %116, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit - -116: ; preds = %111 - %117 = load ptr, ptr %22, align 8 - %118 = getelementptr inbounds nuw i8, ptr %117, i64 4 - %119 = load i32, ptr %118, align 4 - %120 = call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %119) #22 - call void @_ZN4llvm31isConstantOrConstantSplatVectorERNS_12MachineInstrERKNS_19MachineRegisterInfoE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.660") align 8 %2, ptr noundef nonnull align 8 dereferenceable(70) %120, ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val) #22 - %121 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %122 = load i8, ptr %121, align 8 - %123 = trunc i8 %122 to i1 - br i1 %123, label %124, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + %93 = and i64 %.sroa.03.0.i.i.i, 4611686018427387903 + %94 = icmp eq i64 %93, %.sroa.012.0.i32.i + %.not54.i = icmp ult i64 %.sroa.03.0.i.i.i, 4611686018427387904 + %or.cond56.i = select i1 %.not54.i, i1 %94, i1 false + br i1 %or.cond56.i, label %95, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +95: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i + %96 = load ptr, ptr %22, align 8 + %97 = getelementptr inbounds nuw i8, ptr %96, i64 4 + %98 = load i32, ptr %97, align 4 + %99 = call noundef zeroext i1 @_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %98) #22 + br i1 %99, label %100, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +100: ; preds = %95 + %101 = load ptr, ptr %22, align 8 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 4 + %103 = load i32, ptr %102, align 4 + %104 = call noundef ptr @_ZNK4llvm19MachineRegisterInfo10getVRegDefENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val, i32 %103) #22 + call void @_ZN4llvm31isConstantOrConstantSplatVectorERNS_12MachineInstrERKNS_19MachineRegisterInfoE(ptr dead_on_unwind nonnull writable sret(%"class.std::optional.660") align 8 %2, ptr noundef nonnull align 8 dereferenceable(70) %104, ptr noundef nonnull align 8 dereferenceable(512) %.8.val.4256.val) #22 + %105 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %106 = load i8, ptr %105, align 8 + %107 = trunc i8 %106 to i1 + br i1 %107, label %108, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit + +108: ; preds = %100 + %109 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %110 = load i32, ptr %109, align 8 + %111 = icmp ult i32 %110, 65 + br i1 %111, label %112, label %115 -124: ; preds = %116 - %125 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %126 = load i32, ptr %125, align 8 - %127 = icmp ult i32 %126, 65 - br i1 %127, label %128, label %131 - -128: ; preds = %124 - %129 = load i64, ptr %2, align 8 - %130 = icmp eq i64 %129, 0 +112: ; preds = %108 + %113 = load i64, ptr %2, align 8 + %114 = icmp eq i64 %113, 0 br label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit -131: ; preds = %124 - %132 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %2) #26 - %133 = icmp eq i32 %132, %126 - store i8 0, ptr %121, align 8 - %134 = load ptr, ptr %2, align 8 - %135 = icmp eq ptr %134, null - br i1 %135, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit, label %136 +115: ; preds = %108 + %116 = call noundef i32 @_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv(ptr noundef nonnull align 8 dereferenceable(12) %2) #26 + %117 = icmp eq i32 %116, %110 + store i8 0, ptr %105, align 8 + %118 = load ptr, ptr %2, align 8 + %119 = icmp eq ptr %118, null + br i1 %119, label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit, label %120 -136: ; preds = %131 - call void @_ZdaPv(ptr noundef nonnull %134) #23 +120: ; preds = %115 + call void @_ZdaPv(ptr noundef nonnull %118) #23 br label %_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit -_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit: ; preds = %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i, %21, %27, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i, %111, %116, %128, %131, %136 - %.0.i = phi i1 [ false, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i ], [ false, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i ], [ false, %111 ], [ false, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i ], [ %130, %128 ], [ %133, %131 ], [ %133, %136 ], [ false, %116 ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i ], [ false, %27 ], [ false, %21 ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i ] +_ZN12_GLOBAL__N_122matchSplitStoreZero128ERN4llvm12MachineInstrERNS0_19MachineRegisterInfoE.exit: ; preds = %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i, %21, %27, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i, %95, %100, %112, %115, %120 + %.0.i = phi i1 [ false, %_ZNK4llvm13GMemOperation8isSimpleEv.exit.i ], [ false, %_ZNK4llvm3LLT16isScalableVectorEv.exit.i ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit.i ], [ false, %95 ], [ false, %_ZNK4llvm19MachineRegisterInfo7getTypeENS_8RegisterE.exit.i ], [ %114, %112 ], [ %117, %115 ], [ %117, %120 ], [ false, %100 ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.i.i ], [ false, %_ZNK4llvm13GMemOperation8isAtomicEv.exit.thread.i.i ], [ false, %27 ], [ false, %21 ], [ false, %_ZNK4llvm3LLT13getSizeInBitsEv.exit38.i ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) ret i1 %.0.i diff --git a/bench/llvm/optimized/ASTContext.cpp.ll b/bench/llvm/optimized/ASTContext.cpp.ll index be844b204ae..f117f58e226 100644 --- a/bench/llvm/optimized/ASTContext.cpp.ll +++ b/bench/llvm/optimized/ASTContext.cpp.ll @@ -99942,99 +99942,95 @@ define dso_local noundef zeroext i1 @_ZNK5clang10ASTContext28AtomicUsesUnsupport %8 = load i32, ptr %7, align 4 %9 = and i32 %8, -9 %spec.select.i.i = icmp eq i32 %9, 1 - br i1 %spec.select.i.i, label %11, label %10 + br i1 %spec.select.i.i, label %16, label %10 10: ; preds = %2 switch i32 %8, label %_ZNK4llvm6Triple10isOSDarwinEv.exit [ - i32 26, label %12 - i32 5, label %12 - i32 27, label %17 - i32 29, label %17 - i32 30, label %17 + i32 26, label %11 + i32 5, label %11 + i32 27, label %16 + i32 29, label %16 + i32 30, label %16 ] -11: ; preds = %2 - %cond = icmp eq i32 %8, 5 - br i1 %cond, label %12, label %17 - -12: ; preds = %11, %10, %10 - %13 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 - %14 = extractvalue { i64, i64 } %13, 0 - %15 = trunc i64 %14 to i32 - %16 = icmp ult i32 %15, 7 - br i1 %16, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %._crit_edge +11: ; preds = %10, %10 + %12 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 + %13 = extractvalue { i64, i64 } %12, 0 + %14 = trunc i64 %13 to i32 + %15 = icmp ult i32 %14, 7 + br i1 %15, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %._crit_edge -._crit_edge: ; preds = %12 +._crit_edge: ; preds = %11 %.pre = load i32, ptr %7, align 4 - br label %17 + br label %16 -17: ; preds = %11, %._crit_edge, %10, %10, %10 - %18 = phi i32 [ %.pre, %._crit_edge ], [ %8, %10 ], [ %8, %10 ], [ %8, %10 ], [ %8, %11 ] - %19 = and i32 %18, -9 - %spec.select.i14 = icmp eq i32 %19, 1 - br i1 %spec.select.i14, label %20, label %_ZNK4llvm6Triple10isOSDarwinEv.exit +16: ; preds = %2, %._crit_edge, %10, %10, %10 + %17 = phi i32 [ %.pre, %._crit_edge ], [ %8, %10 ], [ %8, %10 ], [ %8, %10 ], [ %8, %2 ] + %18 = and i32 %17, -9 + %spec.select.i14 = icmp eq i32 %18, 1 + br i1 %spec.select.i14, label %19, label %_ZNK4llvm6Triple10isOSDarwinEv.exit -20: ; preds = %17 - %21 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 - %22 = extractvalue { i64, i64 } %21, 0 - %23 = trunc i64 %22 to i32 - %24 = icmp ult i32 %23, 10 - br i1 %24, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit - -_ZNK4llvm6Triple13isOSVersionLTEjjj.exit: ; preds = %20 - %25 = icmp eq i32 %23, 10 - %26 = and i64 %22, 9223372032559808512 - %27 = icmp samesign ult i64 %26, 38654705664 - %spec.select.i15 = select i1 %25, i1 %27, i1 false +19: ; preds = %16 + %20 = tail call { i64, i64 } @_ZNK4llvm6Triple12getOSVersionEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #29 + %21 = extractvalue { i64, i64 } %20, 0 + %22 = trunc i64 %21 to i32 + %23 = icmp ult i32 %22, 10 + br i1 %23, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit + +_ZNK4llvm6Triple13isOSVersionLTEjjj.exit: ; preds = %19 + %24 = icmp eq i32 %22, 10 + %25 = and i64 %21, 9223372032559808512 + %26 = icmp samesign ult i64 %25, 38654705664 + %spec.select.i15 = select i1 %24, i1 %26, i1 false br i1 %spec.select.i15, label %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, label %_ZNK4llvm6Triple10isOSDarwinEv.exit -_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread: ; preds = %20, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit, %12 - %28 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %29 = load ptr, ptr %28, align 8 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 - %.sroa.0.0.copyload.i = load i64, ptr %30, align 8 - %31 = and i64 %.sroa.0.0.copyload.i, -16 - %32 = inttoptr i64 %31 to ptr - %33 = load ptr, ptr %32, align 16 - %34 = tail call i64 @_ZNK5clang4Type14getPointeeTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %33) #29 +_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread: ; preds = %19, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit, %11 + %27 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %28 = load ptr, ptr %27, align 8 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 + %.sroa.0.0.copyload.i = load i64, ptr %29, align 8 + %30 = and i64 %.sroa.0.0.copyload.i, -16 + %31 = inttoptr i64 %30 to ptr + %32 = load ptr, ptr %31, align 16 + %33 = tail call i64 @_ZNK5clang4Type14getPointeeTypeEv(ptr noundef nonnull align 16 dereferenceable(24) %32) #29 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) - call void @_ZNK5clang10ASTContext18getTypeInfoInCharsENS_8QualTypeE(ptr dead_on_unwind nonnull writable sret(%"struct.clang::TypeInfoChars") align 8 %3, ptr noundef nonnull align 8 dereferenceable(23096) %0, i64 %34) + call void @_ZNK5clang10ASTContext18getTypeInfoInCharsENS_8QualTypeE(ptr dead_on_unwind nonnull writable sret(%"struct.clang::TypeInfoChars") align 8 %3, ptr noundef nonnull align 8 dereferenceable(23096) %0, i64 %33) %.sroa.02.0.copyload.i = load i64, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) - %35 = and i64 %34, -16 - %36 = inttoptr i64 %35 to ptr - %37 = load ptr, ptr %36, align 16 - %38 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %37) - %39 = extractvalue { i64, i64 } %38, 1 - %40 = and i64 %39, 4294967295 - %41 = getelementptr inbounds nuw i8, ptr %0, i64 18440 - %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %41, align 8 - %42 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 - %43 = inttoptr i64 %42 to ptr - %44 = load ptr, ptr %43, align 16 - %45 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %44) - %46 = extractvalue { i64, i64 } %45, 0 - %47 = udiv i64 %40, %46 - %.not = icmp eq i64 %.sroa.02.0.copyload.i, %47 - br i1 %.not, label %48, label %_ZNK4llvm6Triple10isOSDarwinEv.exit - -48: ; preds = %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread - %49 = load ptr, ptr %4, align 8 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 287 - %51 = load i8, ptr %50, align 1 - %.sroa.0.0.copyload.i.i = load i64, ptr %41, align 8 - %52 = and i64 %.sroa.0.0.copyload.i.i, -16 - %53 = inttoptr i64 %52 to ptr - %54 = load ptr, ptr %53, align 16 - %55 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %54) - %56 = extractvalue { i64, i64 } %55, 0 - %57 = mul i64 %56, %.sroa.02.0.copyload.i - %58 = zext i8 %51 to i64 - %59 = icmp sgt i64 %57, %58 + %34 = and i64 %33, -16 + %35 = inttoptr i64 %34 to ptr + %36 = load ptr, ptr %35, align 16 + %37 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %36) + %38 = extractvalue { i64, i64 } %37, 1 + %39 = and i64 %38, 4294967295 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 18440 + %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %40, align 8 + %41 = and i64 %.sroa.0.0.copyload.i.i.i.i, -16 + %42 = inttoptr i64 %41 to ptr + %43 = load ptr, ptr %42, align 16 + %44 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %43) + %45 = extractvalue { i64, i64 } %44, 0 + %46 = udiv i64 %39, %45 + %.not = icmp eq i64 %.sroa.02.0.copyload.i, %46 + br i1 %.not, label %47, label %_ZNK4llvm6Triple10isOSDarwinEv.exit + +47: ; preds = %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread + %48 = load ptr, ptr %4, align 8 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 287 + %50 = load i8, ptr %49, align 1 + %.sroa.0.0.copyload.i.i = load i64, ptr %40, align 8 + %51 = and i64 %.sroa.0.0.copyload.i.i, -16 + %52 = inttoptr i64 %51 to ptr + %53 = load ptr, ptr %52, align 16 + %54 = tail call { i64, i64 } @_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23096) %0, ptr noundef %53) + %55 = extractvalue { i64, i64 } %54, 0 + %56 = mul i64 %55, %.sroa.02.0.copyload.i + %57 = zext i8 %50 to i64 + %58 = icmp sgt i64 %56, %57 br label %_ZNK4llvm6Triple10isOSDarwinEv.exit -_ZNK4llvm6Triple10isOSDarwinEv.exit: ; preds = %10, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, %48, %17, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit - %.0 = phi i1 [ false, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit ], [ false, %17 ], [ true, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread ], [ %59, %48 ], [ false, %10 ] +_ZNK4llvm6Triple10isOSDarwinEv.exit: ; preds = %10, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread, %47, %16, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit + %.0 = phi i1 [ false, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit ], [ false, %16 ], [ true, %_ZNK4llvm6Triple13isOSVersionLTEjjj.exit.thread ], [ %58, %47 ], [ false, %10 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/ExprConstant.cpp.ll b/bench/llvm/optimized/ExprConstant.cpp.ll index e9ebab6eb05..0079064f624 100644 --- a/bench/llvm/optimized/ExprConstant.cpp.ll +++ b/bench/llvm/optimized/ExprConstant.cpp.ll @@ -102143,7 +102143,7 @@ define internal fastcc noundef i32 @_ZL22FindDesignatorMismatchN5clang8QualTypeE .lr.ph._crit_edge: ; preds = %.lr.ph %.pre = load ptr, ptr %5, align 8 - %.pre66 = load ptr, ptr %7, align 8 + %.pre65 = load ptr, ptr %7, align 8 br label %49 11: ; preds = %.lr.ph @@ -102163,8 +102163,8 @@ define internal fastcc noundef i32 @_ZL22FindDesignatorMismatchN5clang8QualTypeE 22: ; preds = %11 %23 = icmp eq i8 %20, 14 - %.pre65 = load ptr, ptr %5, align 8 - %.pre67 = load ptr, ptr %7, align 8 + %.pre64 = load ptr, ptr %5, align 8 + %.pre66 = load ptr, ptr %7, align 8 br i1 %23, label %.thread, label %49 24: ; preds = %11 @@ -102178,9 +102178,9 @@ define internal fastcc noundef i32 @_ZL22FindDesignatorMismatchN5clang8QualTypeE br i1 %.not27, label %42, label %35 .thread: ; preds = %22 - %31 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %.pre65, i64 %indvars.iv + %31 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %.pre64, i64 %indvars.iv %32 = load i64, ptr %31, align 8 - %33 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %.pre67, i64 %indvars.iv + %33 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %.pre66, i64 %indvars.iv %34 = load i64, ptr %33, align 8 %.not2750 = icmp eq i64 %32, %34 br i1 %.not2750, label %.thread51, label %35 @@ -102223,8 +102223,8 @@ _ZNK5clang4Type21castAsArrayTypeUnsafeEv.exit: ; preds = %42, %46 br label %68 49: ; preds = %.lr.ph._crit_edge, %22 - %50 = phi ptr [ %.pre66, %.lr.ph._crit_edge ], [ %.pre67, %22 ] - %51 = phi ptr [ %.pre, %.lr.ph._crit_edge ], [ %.pre65, %22 ] + %50 = phi ptr [ %.pre65, %.lr.ph._crit_edge ], [ %.pre66, %22 ] + %51 = phi ptr [ %.pre, %.lr.ph._crit_edge ], [ %.pre64, %22 ] %52 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %51, i64 %indvars.iv %53 = load i64, ptr %52, align 8 %54 = getelementptr inbounds nuw %"class.clang::APValue::LValuePathEntry", ptr %50, i64 %indvars.iv diff --git a/bench/llvm/optimized/InstrProfiling.cpp.ll b/bench/llvm/optimized/InstrProfiling.cpp.ll index 963fd85a0ce..a453d58edda 100644 --- a/bench/llvm/optimized/InstrProfiling.cpp.ll +++ b/bench/llvm/optimized/InstrProfiling.cpp.ll @@ -4845,65 +4845,61 @@ _ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i: ; preds _ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %_ZL38needsRuntimeRegistrationOfSectionRangeRKN4llvm6TripleE.exit.thread.i %272 = getelementptr inbounds nuw i8, ptr %175, i64 32 %273 = load i32, ptr %272, align 8 - %274 = and i32 %273, 15 - %275 = and i32 %273, 14 - %spec.select.i.i.i.i120.i = icmp eq i32 %275, 2 - br i1 %spec.select.i.i.i.i120.i, label %277, label %276 - -276: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i - switch i32 %274, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i [ - i32 1, label %279 - i32 7, label %281 - i32 8, label %281 + %274 = and i32 %273, 14 + %spec.select.i.i.i.i120.i = icmp eq i32 %274, 2 + br i1 %spec.select.i.i.i.i120.i, label %279, label %275 + +275: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i + %276 = and i32 %273, 15 + switch i32 %276, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i [ + i32 1, label %277 + i32 7, label %279 + i32 8, label %279 ] -277: ; preds = %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i - %278 = icmp eq i32 %274, 1 - br i1 %278, label %279, label %281 +277: ; preds = %275 + %278 = call noundef zeroext i1 @_ZNK4llvm8Function14hasFnAttributeENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(136) %175, i32 noundef 3) #19 + br i1 %278, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i, label %._crit_edge16.i.i.i -279: ; preds = %277, %276 - %280 = call noundef zeroext i1 @_ZNK4llvm8Function14hasFnAttributeENS_9Attribute8AttrKindE(ptr noundef nonnull align 8 dereferenceable(136) %175, i32 noundef 3) #19 - br i1 %280, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i, label %._crit_edge.i.i.i - -._crit_edge.i.i.i: ; preds = %279 +._crit_edge16.i.i.i: ; preds = %277 %.pre.i.i.i = load i32, ptr %272, align 8 - %.pre16.i.i.i = and i32 %.pre.i.i.i, 15 - br label %281 + br label %279 -281: ; preds = %._crit_edge.i.i.i, %277, %276, %276 - %.pre-phi.i.i.i = phi i32 [ %.pre16.i.i.i, %._crit_edge.i.i.i ], [ %274, %276 ], [ %274, %276 ], [ %274, %277 ] - %282 = add nsw i32 %.pre-phi.i.i.i, -7 +279: ; preds = %._crit_edge16.i.i.i, %275, %275, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i + %280 = phi i32 [ %.pre.i.i.i, %._crit_edge16.i.i.i ], [ %273, %275 ], [ %273, %275 ], [ %273, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.thread14.i.i.i ] + %281 = and i32 %280, 15 + %282 = add nsw i32 %281, -7 %spec.select.i.i12.i.i.i = icmp ult i32 %282, 2 br i1 %spec.select.i.i12.i.i.i, label %283, label %286 -283: ; preds = %281 +283: ; preds = %279 %284 = getelementptr inbounds nuw i8, ptr %175, i64 48 %285 = load ptr, ptr %284, align 8 %.not15.i.i.i = icmp eq ptr %285, null br i1 %.not15.i.i.i, label %286, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i -286: ; preds = %283, %281 +286: ; preds = %283, %279 %287 = call noundef zeroext i1 @_ZNK4llvm8Function15hasAddressTakenEPPKNS_4UserEbbbbb(ptr noundef nonnull align 8 dereferenceable(136) %175, ptr noundef null, i1 noundef zeroext false, i1 noundef zeroext true, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false) #19 %.pre.i.i = load i32, ptr %272, align 8 %288 = and i32 %.pre.i.i, 14 %spec.select.i.i13.i.i.i = icmp eq i32 %288, 2 %or.cond.i.i = select i1 %287, i1 true, i1 %spec.select.i.i13.i.i.i - br i1 %or.cond.i.i, label %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i + br i1 %or.cond.i.i, label %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i, label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i -._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i: ; preds = %286 +._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i: ; preds = %286 %.pre.i = and i32 %.pre.i.i, 15 - br label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i + br label %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i -_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i: ; preds = %286, %283, %279, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %262, %260 +_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i: ; preds = %286, %283, %277, %_ZN12_GLOBAL__N_124profDataReferencedByCodeERKN4llvm6ModuleE.exit.i.i.i, %262, %260 %289 = call noundef ptr @_ZN4llvm19ConstantPointerNull3getEPNS_11PointerTypeE(ptr noundef %256) #19 br label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i -_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i: ; preds = %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i, %276 - %.pre-phi.i = phi i32 [ %.pre.i, %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i_crit_edge.i ], [ %274, %276 ] +_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i: ; preds = %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i, %275 + %.pre-phi.i = phi i32 [ %.pre.i, %._ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i_crit_edge.i ], [ %276, %275 ] %290 = icmp eq i32 %.pre-phi.i, 1 br i1 %290, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i -_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i: ; preds = %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i +_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i: ; preds = %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i %291 = call noundef zeroext i1 @_ZNK4llvm11GlobalValue13isDeclarationEv(ptr noundef nonnull align 8 dereferenceable(48) %175) #19 br i1 %291, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %292 @@ -4985,16 +4981,16 @@ _ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i: ; preds = %_ZNK4 %330 = or disjoint i32 %329, 16 store i32 %330, ptr %320, align 8 %331 = and i32 %328, 15 - %.not26.i.i = icmp eq i32 %331, 9 - br i1 %.not26.i.i, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i + %.not25.i.i = icmp eq i32 %331, 9 + br i1 %.not25.i.i, label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i, label %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i19.i.i -_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i: ; preds = %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i +_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i19.i.i: ; preds = %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i %332 = or i32 %329, 16400 store i32 %332, ptr %320, align 8 br label %_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i -_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i, %303, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i, %292, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i - %.0.i119.i = phi ptr [ %289, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i ], [ %314, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i ], [ %314, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i20.i.i ], [ %175, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i ], [ %175, %292 ], [ %175, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i ], [ %175, %303 ], [ %175, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread23.i.i ], [ %314, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i ] +_ZL22getFuncAddrForProfDataPN4llvm8FunctionE.exit.i: ; preds = %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i19.i.i, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i, %303, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i, %292, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i + %.0.i119.i = phi ptr [ %289, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread.i.i ], [ %314, %_ZL21shouldUsePublicSymbolPN4llvm8FunctionE.exit.i.i ], [ %314, %_ZNK4llvm11GlobalValue18isImplicitDSOLocalEv.exit.thread.i19.i.i ], [ %175, %_ZNK4llvm11GlobalValue22isDeclarationForLinkerEv.exit.i.i.i ], [ %175, %292 ], [ %175, %_ZNK4llvm5Value11hasMetadataEj.exit.i.i.i ], [ %175, %303 ], [ %175, %_ZL24shouldRecordFunctionAddrPN4llvm8FunctionE.exit.thread22.i.i ], [ %314, %_ZN4llvm11GlobalValue10setLinkageENS0_12LinkageTypesE.exit.i.i ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) br label %333 diff --git a/bench/llvm/optimized/Legalizer.cpp.ll b/bench/llvm/optimized/Legalizer.cpp.ll index a51ea910cec..bcca9b9243a 100644 --- a/bench/llvm/optimized/Legalizer.cpp.ll +++ b/bench/llvm/optimized/Legalizer.cpp.ll @@ -8803,7 +8803,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %5 = alloca %"class.llvm::TypeSize", align 8 %6 = alloca %"class.llvm::TypeSize", align 8 %7 = alloca %"class.llvm::TypeSize", align 8 - switch i32 %0, label %129 [ + switch i32 %0, label %119 [ i32 74, label %8 i32 73, label %8 i32 76, label %32 @@ -8811,7 +8811,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom 8: ; preds = %4, %4 %9 = icmp eq i32 %1, 0 - br i1 %9, label %129, label %10 + br i1 %9, label %119, label %10 10: ; preds = %8 %11 = and i64 %3, -7 @@ -8819,7 +8819,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %12 = and i64 %3, 4 %13 = icmp ne i64 %12, 0 %14 = and i1 %spec.select.i.i, %13 - br i1 %14, label %129, label %15 + br i1 %14, label %119, label %15 15: ; preds = %10 %16 = and i64 %2, -7 @@ -8827,7 +8827,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN4llvm28LegalizationArtifactCom %17 = and i64 %2, 4 %18 = icmp ne i64 %17, 0 %19 = and i1 %spec.select.i.i15, %18 - br i1 %19, label %20, label %129 + br i1 %19, label %20, label %119 20: ; preds = %15 %21 = and i64 %2, 2 @@ -8856,11 +8856,11 @@ _ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i: ; preds = %20 _ZNK4llvm3LLT14getElementTypeEv.exit: ; preds = %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i %.sroa.0.0.i = phi i64 [ %28, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit.i ], [ %31, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit9.i ] %spec.select.i = icmp eq i64 %3, %.sroa.0.0.i - br label %129 + br label %119 32: ; preds = %4 %33 = icmp eq i32 %1, 0 - br i1 %33, label %129, label %34 + br i1 %33, label %119, label %34 34: ; preds = %32 %35 = and i64 %3, -7 @@ -8868,7 +8868,7 @@ _ZNK4llvm3LLT14getElementTypeEv.exit: ; preds = %_ZNK4llvm3LLT19getS %36 = and i64 %3, 4 %37 = icmp ne i64 %36, 0 %38 = and i1 %spec.select.i.i16, %37 - br i1 %38, label %39, label %129 + br i1 %38, label %39, label %119 39: ; preds = %34 %40 = and i64 %2, 2 @@ -8986,101 +8986,80 @@ _ZNK4llvm3LLT13getSizeInBitsEv.exit: ; preds = %70, %74, %77, %_ZNK store i8 %.sroa.3.0.i, ptr %.sroa.28.0..sroa_idx, align 8 %88 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %5) #25 %89 = icmp eq i32 %1, 127 - %90 = and i64 %3, 2 - %.not.i.not.i36 = icmp eq i64 %90, 0 - %91 = and i64 %3, 6 - %92 = icmp eq i64 %91, 2 - %93 = and i64 %3, 1 - %94 = icmp ne i64 %93, 0 - %or.cond14.i38 = or i1 %94, %92 - br i1 %89, label %95, label %112 - -95: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit - br i1 %or.cond14.i38, label %96, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 - -96: ; preds = %95 - %.not.i1.i51 = icmp eq i64 %93, 0 - br i1 %.not.i1.i51, label %99, label %97 - -97: ; preds = %96 - %98 = lshr i64 %3, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 + %90 = and i64 %3, 1 + %.not84 = icmp eq i64 %90, 0 + br i1 %89, label %91, label %105 + +91: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit + br i1 %.not84, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39, label %92 -99: ; preds = %96 - %100 = lshr i64 %3, 19 - %101 = and i64 %100, 65535 - %spec.select.i.i53 = select i1 %.not.i.not.i36, i64 %100, i64 %101 +92: ; preds = %91 + %93 = lshr i64 %3, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39: ; preds = %95 - %102 = lshr i64 %3, 3 - %.sroa.0.0.insert.ext.i.i.i40 = and i64 %102, 65535 - %103 = select i1 %.not.i.not.i36, i64 2251799813685248, i64 576460752303423488 - %104 = and i64 %103, %3 - %.not1.i4.i41 = icmp ne i64 %104, 0 - %105 = lshr i64 %3, 19 - %106 = and i64 %105, 65535 - %spec.select.i10.i43 = select i1 %.not.i.not.i36, i64 %105, i64 %106 - %107 = mul nuw nsw i64 %spec.select.i10.i43, %.sroa.0.0.insert.ext.i.i.i40 - %108 = zext i1 %.not1.i4.i41 to i8 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39: ; preds = %91 + %94 = and i64 %3, 2 + %.not.i.not.i36 = icmp eq i64 %94, 0 + %95 = lshr i64 %3, 3 + %.sroa.0.0.insert.ext.i.i.i40 = and i64 %95, 65535 + %96 = select i1 %.not.i.not.i36, i64 2251799813685248, i64 576460752303423488 + %97 = and i64 %96, %3 + %.not1.i4.i41 = icmp ne i64 %97, 0 + %98 = lshr i64 %3, 19 + %99 = and i64 %98, 65535 + %spec.select.i10.i43 = select i1 %.not.i.not.i36, i64 %98, i64 %99 + %100 = mul nuw nsw i64 %spec.select.i10.i43, %.sroa.0.0.insert.ext.i.i.i40 + %101 = zext i1 %.not1.i4.i41 to i8 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 -_ZNK4llvm3LLT13getSizeInBitsEv.exit54: ; preds = %97, %99, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 - %.sroa.012.0.in.i46 = phi i64 [ %107, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ %98, %97 ], [ %spec.select.i.i53, %99 ] - %.sroa.3.0.i47 = phi i8 [ %108, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ 0, %97 ], [ 0, %99 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit54: ; preds = %92, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 + %.sroa.012.0.in.i46 = phi i64 [ %100, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ %93, %92 ] + %.sroa.3.0.i47 = phi i8 [ %101, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i39 ], [ 0, %92 ] %.sroa.012.0.i48 = and i64 %.sroa.012.0.in.i46, 4294967295 store i64 %.sroa.012.0.i48, ptr %6, align 8 %.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 store i8 %.sroa.3.0.i47, ptr %.sroa.24.0..sroa_idx, align 8 - %109 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 - %110 = and i64 %88, 4294967295 - %111 = icmp ule i64 %109, %110 - br label %129 - -112: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit - br i1 %or.cond14.i38, label %113, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 + %102 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %6) #25 + %103 = and i64 %88, 4294967295 + %104 = icmp ule i64 %102, %103 + br label %119 -113: ; preds = %112 - %.not.i1.i71 = icmp eq i64 %93, 0 - br i1 %.not.i1.i71, label %116, label %114 +105: ; preds = %_ZNK4llvm3LLT13getSizeInBitsEv.exit + br i1 %.not84, label %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59, label %106 -114: ; preds = %113 - %115 = lshr i64 %3, 3 - br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 - -116: ; preds = %113 - %117 = lshr i64 %3, 19 - %118 = and i64 %117, 65535 - %spec.select.i.i73 = select i1 %.not.i.not.i36, i64 %117, i64 %118 +106: ; preds = %105 + %107 = lshr i64 %3, 3 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 -_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59: ; preds = %112 - %119 = lshr i64 %3, 3 - %.sroa.0.0.insert.ext.i.i.i60 = and i64 %119, 65535 - %120 = select i1 %.not.i.not.i36, i64 2251799813685248, i64 576460752303423488 - %121 = and i64 %120, %3 - %.not1.i4.i61 = icmp ne i64 %121, 0 - %122 = lshr i64 %3, 19 - %123 = and i64 %122, 65535 - %spec.select.i10.i63 = select i1 %.not.i.not.i36, i64 %122, i64 %123 - %124 = mul nuw nsw i64 %spec.select.i10.i63, %.sroa.0.0.insert.ext.i.i.i60 - %125 = zext i1 %.not1.i4.i61 to i8 +_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59: ; preds = %105 + %108 = and i64 %3, 2 + %.not.i.not.i56 = icmp eq i64 %108, 0 + %109 = lshr i64 %3, 3 + %.sroa.0.0.insert.ext.i.i.i60 = and i64 %109, 65535 + %110 = select i1 %.not.i.not.i56, i64 2251799813685248, i64 576460752303423488 + %111 = and i64 %110, %3 + %.not1.i4.i61 = icmp ne i64 %111, 0 + %112 = lshr i64 %3, 19 + %113 = and i64 %112, 65535 + %spec.select.i10.i63 = select i1 %.not.i.not.i56, i64 %112, i64 %113 + %114 = mul nuw nsw i64 %spec.select.i10.i63, %.sroa.0.0.insert.ext.i.i.i60 + %115 = zext i1 %.not1.i4.i61 to i8 br label %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 -_ZNK4llvm3LLT13getSizeInBitsEv.exit74: ; preds = %114, %116, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 - %.sroa.012.0.in.i66 = phi i64 [ %124, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ %115, %114 ], [ %spec.select.i.i73, %116 ] - %.sroa.3.0.i67 = phi i8 [ %125, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ 0, %114 ], [ 0, %116 ] +_ZNK4llvm3LLT13getSizeInBitsEv.exit74: ; preds = %106, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 + %.sroa.012.0.in.i66 = phi i64 [ %114, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ %107, %106 ] + %.sroa.3.0.i67 = phi i8 [ %115, %_ZNK4llvm3LLT19getScalarSizeInBitsEv.exit11.i59 ], [ 0, %106 ] %.sroa.012.0.i68 = and i64 %.sroa.012.0.in.i66, 4294967295 store i64 %.sroa.012.0.i68, ptr %7, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store i8 %.sroa.3.0.i67, ptr %.sroa.2.0..sroa_idx, align 8 - %126 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %7) #25 - %127 = and i64 %88, 4294967295 - %128 = icmp uge i64 %126, %127 - br label %129 + %116 = call noundef i64 @_ZNK4llvm8TypeSizecvmEv(ptr noundef nonnull align 8 dereferenceable(9) %7) #25 + %117 = and i64 %88, 4294967295 + %118 = icmp uge i64 %116, %117 + br label %119 -129: ; preds = %34, %32, %10, %15, %_ZNK4llvm3LLT14getElementTypeEv.exit, %8, %4, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 - %.0 = phi i1 [ %111, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 ], [ %128, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 ], [ false, %4 ], [ true, %8 ], [ false, %15 ], [ false, %10 ], [ %spec.select.i, %_ZNK4llvm3LLT14getElementTypeEv.exit ], [ true, %32 ], [ false, %34 ] +119: ; preds = %34, %32, %10, %15, %_ZNK4llvm3LLT14getElementTypeEv.exit, %8, %4, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 + %.0 = phi i1 [ %104, %_ZNK4llvm3LLT13getSizeInBitsEv.exit54 ], [ %118, %_ZNK4llvm3LLT13getSizeInBitsEv.exit74 ], [ false, %4 ], [ true, %8 ], [ false, %15 ], [ false, %10 ], [ %spec.select.i, %_ZNK4llvm3LLT14getElementTypeEv.exit ], [ true, %32 ], [ false, %34 ] ret i1 %.0 } diff --git a/bench/llvm/optimized/MemorySanitizer.cpp.ll b/bench/llvm/optimized/MemorySanitizer.cpp.ll index 5560a2ee458..6ea7c5f1188 100644 --- a/bench/llvm/optimized/MemorySanitizer.cpp.ll +++ b/bench/llvm/optimized/MemorySanitizer.cpp.ll @@ -37608,122 +37608,122 @@ tailrecurse.i: ; preds = %tailrecurse.i.prehe br i1 %150, label %tailrecurse._crit_edge.i, label %tailrecurse.i tailrecurse._crit_edge.i: ; preds = %tailrecurse.i - %.mask.i = and i32 %148, -256 - %151 = icmp eq i32 %.mask.i, 256 - br i1 %151, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit, label %152 + %151 = and i32 %148, -256 + %152 = icmp eq i32 %151, 256 + br i1 %152, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit, label %153 -152: ; preds = %tailrecurse._crit_edge.i - %153 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %146, i64 noundef 0, i1 noundef zeroext false) #23 - %154 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %144, ptr noundef %153, ptr noundef nonnull align 8 dereferenceable(34) %17) +153: ; preds = %tailrecurse._crit_edge.i + %154 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %146, i64 noundef 0, i1 noundef zeroext false) #23 + %155 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %144, ptr noundef %154, ptr noundef nonnull align 8 dereferenceable(34) %17) br label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit -_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit: ; preds = %tailrecurse._crit_edge.i, %152 - %.0.i50 = phi ptr [ %154, %152 ], [ %144, %tailrecurse._crit_edge.i ] - %155 = getelementptr inbounds nuw i8, ptr %18, i64 32 - %156 = getelementptr inbounds nuw i8, ptr %35, i64 8 - store i16 257, ptr %155, align 8 - %157 = load ptr, ptr %156, align 8 - %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 - %159 = load i32, ptr %158, align 8 - %160 = and i32 %159, 255 - %161 = icmp eq i32 %160, 12 - br i1 %161, label %tailrecurse._crit_edge.i53, label %tailrecurse.i51 +_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit: ; preds = %tailrecurse._crit_edge.i, %153 + %.0.i50 = phi ptr [ %155, %153 ], [ %144, %tailrecurse._crit_edge.i ] + %156 = getelementptr inbounds nuw i8, ptr %18, i64 32 + %157 = getelementptr inbounds nuw i8, ptr %35, i64 8 + store i16 257, ptr %156, align 8 + %158 = load ptr, ptr %157, align 8 + %159 = getelementptr inbounds nuw i8, ptr %158, i64 8 + %160 = load i32, ptr %159, align 8 + %161 = and i32 %160, 255 + %162 = icmp eq i32 %161, 12 + br i1 %162, label %tailrecurse._crit_edge.i53, label %tailrecurse.i51 tailrecurse.i51: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit, %tailrecurse.i51 - %.tr1418.i52 = phi ptr [ %162, %tailrecurse.i51 ], [ %35, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ] - %162 = call fastcc noundef ptr @_ZN12_GLOBAL__N_122MemorySanitizerVisitor21convertShadowToScalarEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEE(ptr noundef nonnull readonly align 8 dereferenceable(1632) %0, ptr noundef nonnull %.tr1418.i52, ptr noundef nonnull align 8 dereferenceable(144) %12) - %163 = getelementptr inbounds nuw i8, ptr %162, i64 8 - %164 = load ptr, ptr %163, align 8 - %165 = getelementptr inbounds nuw i8, ptr %164, i64 8 - %166 = load i32, ptr %165, align 8 - %167 = and i32 %166, 255 - %168 = icmp eq i32 %167, 12 - br i1 %168, label %tailrecurse._crit_edge.i53, label %tailrecurse.i51 + %.tr1418.i52 = phi ptr [ %163, %tailrecurse.i51 ], [ %35, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ] + %163 = call fastcc noundef ptr @_ZN12_GLOBAL__N_122MemorySanitizerVisitor21convertShadowToScalarEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEE(ptr noundef nonnull readonly align 8 dereferenceable(1632) %0, ptr noundef nonnull %.tr1418.i52, ptr noundef nonnull align 8 dereferenceable(144) %12) + %164 = getelementptr inbounds nuw i8, ptr %163, i64 8 + %165 = load ptr, ptr %164, align 8 + %166 = getelementptr inbounds nuw i8, ptr %165, i64 8 + %167 = load i32, ptr %166, align 8 + %168 = and i32 %167, 255 + %169 = icmp eq i32 %168, 12 + br i1 %169, label %tailrecurse._crit_edge.i53, label %tailrecurse.i51 tailrecurse._crit_edge.i53: ; preds = %tailrecurse.i51, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit - %.tr14.lcssa.i54 = phi ptr [ %35, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %162, %tailrecurse.i51 ] - %.lcssa17.i55 = phi ptr [ %157, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %164, %tailrecurse.i51 ] - %.lcssa.i56 = phi i32 [ %159, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %166, %tailrecurse.i51 ] + %.tr14.lcssa.i54 = phi ptr [ %35, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %163, %tailrecurse.i51 ] + %.lcssa17.i55 = phi ptr [ %158, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %165, %tailrecurse.i51 ] + %.lcssa.i56 = phi i32 [ %160, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit ], [ %167, %tailrecurse.i51 ] %.mask.i57 = and i32 %.lcssa.i56, -256 - %169 = icmp eq i32 %.mask.i57, 256 - br i1 %169, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59, label %170 + %170 = icmp eq i32 %.mask.i57, 256 + br i1 %170, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59, label %171 -170: ; preds = %tailrecurse._crit_edge.i53 - %171 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %.lcssa17.i55, i64 noundef 0, i1 noundef zeroext false) #23 - %172 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %.tr14.lcssa.i54, ptr noundef %171, ptr noundef nonnull align 8 dereferenceable(34) %18) +171: ; preds = %tailrecurse._crit_edge.i53 + %172 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef nonnull %.lcssa17.i55, i64 noundef 0, i1 noundef zeroext false) #23 + %173 = call noundef ptr @_ZN4llvm13IRBuilderBase10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE(ptr noundef nonnull align 8 dereferenceable(144) %12, i32 noundef 33, ptr noundef nonnull %.tr14.lcssa.i54, ptr noundef %172, ptr noundef nonnull align 8 dereferenceable(34) %18) br label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 -_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59: ; preds = %170, %tailrecurse._crit_edge.i53, %136 - %.034 = phi ptr [ %35, %136 ], [ %172, %170 ], [ %.tr14.lcssa.i54, %tailrecurse._crit_edge.i53 ] - %.0 = phi ptr [ %2, %136 ], [ %.0.i50, %170 ], [ %.0.i50, %tailrecurse._crit_edge.i53 ] - %173 = getelementptr inbounds nuw i8, ptr %19, i64 32 - store i16 257, ptr %173, align 8 - %174 = call noundef ptr @_ZN4llvm13IRBuilderBase12CreateSelectEPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(128) %12, ptr noundef %.0, ptr noundef %50, ptr noundef %52, ptr noundef nonnull align 8 dereferenceable(34) %19, ptr noundef null) #23 - %175 = getelementptr inbounds nuw i8, ptr %20, i64 32 - store i16 257, ptr %175, align 8 - %176 = call noundef ptr @_ZN4llvm13IRBuilderBase12CreateSelectEPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(128) %12, ptr noundef %.034, ptr noundef %51, ptr noundef %174, ptr noundef nonnull align 8 dereferenceable(34) %20, ptr noundef null) #23 - %177 = load ptr, ptr %38, align 8 - %178 = getelementptr inbounds nuw i8, ptr %177, i64 4 - %179 = load i32, ptr %178, align 4 - %.not.i60 = icmp eq i32 %179, 0 - br i1 %.not.i60, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, label %180 - -180: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 - %181 = getelementptr inbounds nuw i8, ptr %0, i64 368 +_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59: ; preds = %171, %tailrecurse._crit_edge.i53, %136 + %.034 = phi ptr [ %35, %136 ], [ %173, %171 ], [ %.tr14.lcssa.i54, %tailrecurse._crit_edge.i53 ] + %.0 = phi ptr [ %2, %136 ], [ %.0.i50, %171 ], [ %.0.i50, %tailrecurse._crit_edge.i53 ] + %174 = getelementptr inbounds nuw i8, ptr %19, i64 32 + store i16 257, ptr %174, align 8 + %175 = call noundef ptr @_ZN4llvm13IRBuilderBase12CreateSelectEPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(128) %12, ptr noundef %.0, ptr noundef %50, ptr noundef %52, ptr noundef nonnull align 8 dereferenceable(34) %19, ptr noundef null) #23 + %176 = getelementptr inbounds nuw i8, ptr %20, i64 32 + store i16 257, ptr %176, align 8 + %177 = call noundef ptr @_ZN4llvm13IRBuilderBase12CreateSelectEPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(128) %12, ptr noundef %.034, ptr noundef %51, ptr noundef %175, ptr noundef nonnull align 8 dereferenceable(34) %20, ptr noundef null) #23 + %178 = load ptr, ptr %38, align 8 + %179 = getelementptr inbounds nuw i8, ptr %178, i64 4 + %180 = load i32, ptr %179, align 4 + %.not.i60 = icmp eq i32 %180, 0 + br i1 %.not.i60, label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, label %181 + +181: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59 + %182 = getelementptr inbounds nuw i8, ptr %0, i64 368 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) - %182 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 2, ptr %182, align 8, !alias.scope !322 - %183 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr null, ptr %183, align 8, !alias.scope !322 - %184 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store ptr %1, ptr %184, align 8, !alias.scope !322 + %183 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 2, ptr %183, align 8, !alias.scope !322 + %184 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store ptr null, ptr %184, align 8, !alias.scope !322 + %185 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store ptr %1, ptr %185, align 8, !alias.scope !322 %magicptr.i.i.i.i.i.i = ptrtoint ptr %1 to i64 - switch i64 %magicptr.i.i.i.i.i.i, label %185 [ + switch i64 %magicptr.i.i.i.i.i.i, label %186 [ i64 0, label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i i64 -4096, label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i i64 -8192, label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i ] -185: ; preds = %180 - call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #23 +186: ; preds = %181 + call void @_ZN4llvm15ValueHandleBase12AddToUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #23 br label %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i -_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i: ; preds = %185, %180, %180, %180 +_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i: ; preds = %186, %181, %181, %181 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVN4llvm18ValueMapCallbackVHIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEE, i64 16), ptr %6, align 8, !alias.scope !322 - %186 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store ptr %181, ptr %186, align 8, !alias.scope !322 - %187 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapINS_18ValueMapCallbackVHIPNS_5ValueES4_NS_14ValueMapConfigIS4_NS_3sys10SmartMutexILb0EEEEEEES4_NS_12DenseMapInfoISA_vEENS_6detail12DenseMapPairISA_S4_EEEESA_S4_SC_SF_E16FindAndConstructEOSA_(ptr noundef nonnull align 8 dereferenceable(57) %181, ptr noundef nonnull align 8 dereferenceable(40) %6) - %188 = load ptr, ptr %184, align 8 - %magicptr.i.i.i.i.i = ptrtoint ptr %188 to i64 - switch i64 %magicptr.i.i.i.i.i, label %189 [ + %187 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store ptr %182, ptr %187, align 8, !alias.scope !322 + %188 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapINS_18ValueMapCallbackVHIPNS_5ValueES4_NS_14ValueMapConfigIS4_NS_3sys10SmartMutexILb0EEEEEEES4_NS_12DenseMapInfoISA_vEENS_6detail12DenseMapPairISA_S4_EEEESA_S4_SC_SF_E16FindAndConstructEOSA_(ptr noundef nonnull align 8 dereferenceable(57) %182, ptr noundef nonnull align 8 dereferenceable(40) %6) + %189 = load ptr, ptr %185, align 8 + %magicptr.i.i.i.i.i = ptrtoint ptr %189 to i64 + switch i64 %magicptr.i.i.i.i.i, label %190 [ i64 0, label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i i64 -4096, label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i i64 -8192, label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i ] -189: ; preds = %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i - call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #23 +190: ; preds = %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i + call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %183) #23 br label %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i -_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i: ; preds = %189, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i - %190 = getelementptr inbounds nuw i8, ptr %187, i64 40 +_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i: ; preds = %190, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i, %_ZNK4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEE4WrapES2_.exit.i.i + %191 = getelementptr inbounds nuw i8, ptr %188, i64 40 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) - store ptr %176, ptr %190, align 8 + store ptr %177, ptr %191, align 8 br label %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit _ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit: ; preds = %_ZN4llvm8ValueMapIPNS_5ValueES2_NS_14ValueMapConfigIS2_NS_3sys10SmartMutexILb0EEEEEEixERKS2_.exit.i, %_ZN12_GLOBAL__N_122MemorySanitizerVisitor13convertToBoolEPN4llvm5ValueERNS1_9IRBuilderINS1_14ConstantFolderENS1_24IRBuilderDefaultInserterEEERKNS1_5TwineE.exit59, %129 call void @_ZN4llvm24IRBuilderDefaultInserterD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #23 call void @_ZN4llvm15IRBuilderFolderD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #23 - %191 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(144) %12) #23 - %192 = load ptr, ptr %12, align 8 - %193 = icmp eq ptr %192, %24 - br i1 %193, label %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit, label %194 + %192 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(144) %12) #23 + %193 = load ptr, ptr %12, align 8 + %194 = icmp eq ptr %193, %24 + br i1 %194, label %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit, label %195 -194: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit - call void @free(ptr noundef %192) #23 +195: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit + call void @free(ptr noundef %193) #23 br label %_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit -_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, %194 +_ZN4llvm9IRBuilderINS_14ConstantFolderENS_24IRBuilderDefaultInserterEED2Ev.exit: ; preds = %_ZN12_GLOBAL__N_122MemorySanitizerVisitor9setOriginEPN4llvm5ValueES3_.exit, %195 ret void } diff --git a/bench/llvm/optimized/OSTargets.cpp.ll b/bench/llvm/optimized/OSTargets.cpp.ll index ea922b501fd..a15c2bf0b7d 100644 --- a/bench/llvm/optimized/OSTargets.cpp.ll +++ b/bench/llvm/optimized/OSTargets.cpp.ll @@ -377,8 +377,7 @@ _ZN4llvmeqENS_9StringRefES0_.exit54.thread221: ; preds = %102, %114, %_ZN4llv store i8 %145, ptr %146, align 1 %147 = getelementptr inbounds nuw i8, ptr %27, i64 4 store i8 0, ptr %147, align 1 - %cond = icmp eq i32 %116, 5 - br i1 %cond, label %200, label %.thread246 + br label %.thread246 .critedge: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit54.thread221 %148 = icmp ult i32 %119, 10 @@ -461,11 +460,11 @@ _ZN4llvmeqENS_9StringRefES0_.exit54.thread221: ; preds = %102, %114, %_ZN4llv %193 = or disjoint i8 %192, 48 store i8 %193, ptr %.sink249.sroa.phi, align 1 store i8 0, ptr %.sink247.sroa.phi, align 1 - switch i32 %116, label %219 [ + switch i32 %116, label %218 [ i32 26, label %194 i32 5, label %200 - i32 27, label %207 - i32 29, label %213 + i32 27, label %206 + i32 29, label %212 ] 194: ; preds = %184 @@ -488,151 +487,150 @@ _ZN4llvm5TwineC2EPKc.exit: ; preds = %194, %199 %storemerge.i = phi i8 [ 3, %199 ], [ 1, %194 ] store i8 %storemerge.i, ptr %197, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %28, ptr noundef nonnull align 8 dereferenceable(34) %29) - br label %226 + br label %225 -200: ; preds = %.thread, %184 - %201 = phi i8 [ %185, %184 ], [ 1, %.thread ] - %202 = getelementptr inbounds nuw i8, ptr %30, i64 32 - %203 = getelementptr inbounds nuw i8, ptr %30, i64 33 - store i8 1, ptr %203, align 1 +200: ; preds = %184 + %201 = getelementptr inbounds nuw i8, ptr %30, i64 32 + %202 = getelementptr inbounds nuw i8, ptr %30, i64 33 + store i8 1, ptr %202, align 1 store ptr @.str.20, ptr %30, align 8 - store i8 3, ptr %202, align 8 - %204 = getelementptr inbounds nuw i8, ptr %31, i64 32 - %205 = getelementptr inbounds nuw i8, ptr %31, i64 33 - store i8 1, ptr %205, align 1 - %.not.i122 = icmp eq i8 %201, 0 - br i1 %.not.i122, label %_ZN4llvm5TwineC2EPKc.exit124, label %206 - -206: ; preds = %200 + store i8 3, ptr %201, align 8 + %203 = getelementptr inbounds nuw i8, ptr %31, i64 32 + %204 = getelementptr inbounds nuw i8, ptr %31, i64 33 + store i8 1, ptr %204, align 1 + %.not.i122 = icmp eq i8 %185, 0 + br i1 %.not.i122, label %_ZN4llvm5TwineC2EPKc.exit124, label %205 + +205: ; preds = %200 store ptr %27, ptr %31, align 8 br label %_ZN4llvm5TwineC2EPKc.exit124 -_ZN4llvm5TwineC2EPKc.exit124: ; preds = %200, %206 - %storemerge.i123 = phi i8 [ 3, %206 ], [ 1, %200 ] - store i8 %storemerge.i123, ptr %204, align 8 +_ZN4llvm5TwineC2EPKc.exit124: ; preds = %200, %205 + %storemerge.i123 = phi i8 [ 3, %205 ], [ 1, %200 ] + store i8 %storemerge.i123, ptr %203, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %30, ptr noundef nonnull align 8 dereferenceable(34) %31) - br label %226 + br label %225 -207: ; preds = %184 - %208 = getelementptr inbounds nuw i8, ptr %32, i64 32 - %209 = getelementptr inbounds nuw i8, ptr %32, i64 33 - store i8 1, ptr %209, align 1 +206: ; preds = %184 + %207 = getelementptr inbounds nuw i8, ptr %32, i64 32 + %208 = getelementptr inbounds nuw i8, ptr %32, i64 33 + store i8 1, ptr %208, align 1 store ptr @.str.21, ptr %32, align 8 - store i8 3, ptr %208, align 8 - %210 = getelementptr inbounds nuw i8, ptr %33, i64 32 - %211 = getelementptr inbounds nuw i8, ptr %33, i64 33 - store i8 1, ptr %211, align 1 + store i8 3, ptr %207, align 8 + %209 = getelementptr inbounds nuw i8, ptr %33, i64 32 + %210 = getelementptr inbounds nuw i8, ptr %33, i64 33 + store i8 1, ptr %210, align 1 %.not.i126 = icmp eq i8 %185, 0 - br i1 %.not.i126, label %_ZN4llvm5TwineC2EPKc.exit128, label %212 + br i1 %.not.i126, label %_ZN4llvm5TwineC2EPKc.exit128, label %211 -212: ; preds = %207 +211: ; preds = %206 store ptr %27, ptr %33, align 8 br label %_ZN4llvm5TwineC2EPKc.exit128 -_ZN4llvm5TwineC2EPKc.exit128: ; preds = %207, %212 - %storemerge.i127 = phi i8 [ 3, %212 ], [ 1, %207 ] - store i8 %storemerge.i127, ptr %210, align 8 +_ZN4llvm5TwineC2EPKc.exit128: ; preds = %206, %211 + %storemerge.i127 = phi i8 [ 3, %211 ], [ 1, %206 ] + store i8 %storemerge.i127, ptr %209, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %32, ptr noundef nonnull align 8 dereferenceable(34) %33) - br label %226 + br label %225 -213: ; preds = %184 - %214 = getelementptr inbounds nuw i8, ptr %34, i64 32 - %215 = getelementptr inbounds nuw i8, ptr %34, i64 33 - store i8 1, ptr %215, align 1 +212: ; preds = %184 + %213 = getelementptr inbounds nuw i8, ptr %34, i64 32 + %214 = getelementptr inbounds nuw i8, ptr %34, i64 33 + store i8 1, ptr %214, align 1 store ptr @.str.22, ptr %34, align 8 - store i8 3, ptr %214, align 8 - %216 = getelementptr inbounds nuw i8, ptr %35, i64 32 - %217 = getelementptr inbounds nuw i8, ptr %35, i64 33 - store i8 1, ptr %217, align 1 + store i8 3, ptr %213, align 8 + %215 = getelementptr inbounds nuw i8, ptr %35, i64 32 + %216 = getelementptr inbounds nuw i8, ptr %35, i64 33 + store i8 1, ptr %216, align 1 %.not.i130 = icmp eq i8 %185, 0 - br i1 %.not.i130, label %_ZN4llvm5TwineC2EPKc.exit132, label %218 + br i1 %.not.i130, label %_ZN4llvm5TwineC2EPKc.exit132, label %217 -218: ; preds = %213 +217: ; preds = %212 store ptr %27, ptr %35, align 8 br label %_ZN4llvm5TwineC2EPKc.exit132 -_ZN4llvm5TwineC2EPKc.exit132: ; preds = %213, %218 - %storemerge.i131 = phi i8 [ 3, %218 ], [ 1, %213 ] - store i8 %storemerge.i131, ptr %216, align 8 +_ZN4llvm5TwineC2EPKc.exit132: ; preds = %212, %217 + %storemerge.i131 = phi i8 [ 3, %217 ], [ 1, %212 ] + store i8 %storemerge.i131, ptr %215, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %34, ptr noundef nonnull align 8 dereferenceable(34) %35) - br label %226 + br label %225 -219: ; preds = %184 - br i1 %spec.select.i55, label %.thread246, label %226 +218: ; preds = %184 + br i1 %spec.select.i55, label %.thread246, label %225 -.thread246: ; preds = %.thread, %219 - %220 = phi i8 [ %185, %219 ], [ 1, %.thread ] - %221 = getelementptr inbounds nuw i8, ptr %36, i64 32 - %222 = getelementptr inbounds nuw i8, ptr %36, i64 33 - store i8 1, ptr %222, align 1 +.thread246: ; preds = %.thread, %218 + %219 = phi i8 [ %185, %218 ], [ 1, %.thread ] + %220 = getelementptr inbounds nuw i8, ptr %36, i64 32 + %221 = getelementptr inbounds nuw i8, ptr %36, i64 33 + store i8 1, ptr %221, align 1 store ptr @.str.23, ptr %36, align 8 - store i8 3, ptr %221, align 8 - %223 = getelementptr inbounds nuw i8, ptr %37, i64 32 - %224 = getelementptr inbounds nuw i8, ptr %37, i64 33 - store i8 1, ptr %224, align 1 - %.not.i135 = icmp eq i8 %220, 0 - br i1 %.not.i135, label %_ZN4llvm5TwineC2EPKc.exit137, label %225 - -225: ; preds = %.thread246 + store i8 3, ptr %220, align 8 + %222 = getelementptr inbounds nuw i8, ptr %37, i64 32 + %223 = getelementptr inbounds nuw i8, ptr %37, i64 33 + store i8 1, ptr %223, align 1 + %.not.i135 = icmp eq i8 %219, 0 + br i1 %.not.i135, label %_ZN4llvm5TwineC2EPKc.exit137, label %224 + +224: ; preds = %.thread246 store ptr %27, ptr %37, align 8 br label %_ZN4llvm5TwineC2EPKc.exit137 -_ZN4llvm5TwineC2EPKc.exit137: ; preds = %.thread246, %225 - %storemerge.i136 = phi i8 [ 3, %225 ], [ 1, %.thread246 ] - store i8 %storemerge.i136, ptr %223, align 8 +_ZN4llvm5TwineC2EPKc.exit137: ; preds = %.thread246, %224 + %storemerge.i136 = phi i8 [ 3, %224 ], [ 1, %.thread246 ] + store i8 %storemerge.i136, ptr %222, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %36, ptr noundef nonnull align 8 dereferenceable(34) %37) - br label %226 - -226: ; preds = %_ZN4llvm5TwineC2EPKc.exit124, %_ZN4llvm5TwineC2EPKc.exit132, %_ZN4llvm5TwineC2EPKc.exit137, %219, %_ZN4llvm5TwineC2EPKc.exit128, %_ZN4llvm5TwineC2EPKc.exit - %227 = load i32, ptr %98, align 4 - %228 = and i32 %227, -9 - %spec.select.i.i = icmp eq i32 %228, 1 - br i1 %spec.select.i.i, label %230, label %229 - -229: ; preds = %226 - switch i32 %227, label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread [ - i32 26, label %230 - i32 5, label %230 - i32 27, label %230 - i32 29, label %230 - i32 30, label %230 + br label %225 + +225: ; preds = %_ZN4llvm5TwineC2EPKc.exit124, %_ZN4llvm5TwineC2EPKc.exit132, %_ZN4llvm5TwineC2EPKc.exit137, %218, %_ZN4llvm5TwineC2EPKc.exit128, %_ZN4llvm5TwineC2EPKc.exit + %226 = load i32, ptr %98, align 4 + %227 = and i32 %226, -9 + %spec.select.i.i = icmp eq i32 %227, 1 + br i1 %spec.select.i.i, label %229, label %228 + +228: ; preds = %225 + switch i32 %226, label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread [ + i32 26, label %229 + i32 5, label %229 + i32 27, label %229 + i32 29, label %229 + i32 30, label %229 ] -230: ; preds = %229, %229, %229, %229, %229, %226 - %231 = getelementptr inbounds nuw i8, ptr %38, i64 32 - %232 = getelementptr inbounds nuw i8, ptr %38, i64 33 - store i8 1, ptr %232, align 1 +229: ; preds = %228, %228, %228, %228, %228, %225 + %230 = getelementptr inbounds nuw i8, ptr %38, i64 32 + %231 = getelementptr inbounds nuw i8, ptr %38, i64 33 + store i8 1, ptr %231, align 1 store ptr @.str.24, ptr %38, align 8 - store i8 3, ptr %231, align 8 - %233 = getelementptr inbounds nuw i8, ptr %39, i64 32 - %234 = getelementptr inbounds nuw i8, ptr %39, i64 33 - store i8 1, ptr %234, align 1 - %235 = load i8, ptr %27, align 1 - %.not.i139 = icmp eq i8 %235, 0 - br i1 %.not.i139, label %_ZN4llvm5TwineC2EPKc.exit141, label %236 - -236: ; preds = %230 + store i8 3, ptr %230, align 8 + %232 = getelementptr inbounds nuw i8, ptr %39, i64 32 + %233 = getelementptr inbounds nuw i8, ptr %39, i64 33 + store i8 1, ptr %233, align 1 + %234 = load i8, ptr %27, align 1 + %.not.i139 = icmp eq i8 %234, 0 + br i1 %.not.i139, label %_ZN4llvm5TwineC2EPKc.exit141, label %235 + +235: ; preds = %229 store ptr %27, ptr %39, align 8 br label %_ZN4llvm5TwineC2EPKc.exit141 -_ZN4llvm5TwineC2EPKc.exit141: ; preds = %230, %236 - %storemerge.i140 = phi i8 [ 3, %236 ], [ 1, %230 ] - store i8 %storemerge.i140, ptr %233, align 8 +_ZN4llvm5TwineC2EPKc.exit141: ; preds = %229, %235 + %storemerge.i140 = phi i8 [ 3, %235 ], [ 1, %229 ] + store i8 %storemerge.i140, ptr %232, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %38, ptr noundef nonnull align 8 dereferenceable(34) %39) - %237 = getelementptr inbounds nuw i8, ptr %40, i64 32 - %238 = getelementptr inbounds nuw i8, ptr %40, i64 33 - store i8 1, ptr %238, align 1 + %236 = getelementptr inbounds nuw i8, ptr %40, i64 32 + %237 = getelementptr inbounds nuw i8, ptr %40, i64 33 + store i8 1, ptr %237, align 1 store ptr @.str.25, ptr %40, align 8 - store i8 3, ptr %237, align 8 - %239 = getelementptr inbounds nuw i8, ptr %41, i64 32 - %240 = getelementptr inbounds nuw i8, ptr %41, i64 33 - store i8 1, ptr %240, align 1 + store i8 3, ptr %236, align 8 + %238 = getelementptr inbounds nuw i8, ptr %41, i64 32 + %239 = getelementptr inbounds nuw i8, ptr %41, i64 33 + store i8 1, ptr %239, align 1 store ptr @.str.3, ptr %41, align 8 - store i8 3, ptr %239, align 8 + store i8 3, ptr %238, align 8 call void @_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(34) %40, ptr noundef nonnull align 8 dereferenceable(34) %41) br label %_ZN4llvmeqENS_9StringRefES0_.exit54.thread -_ZN4llvmeqENS_9StringRefES0_.exit54.thread: ; preds = %_ZN4llvm5TwineC2EPKc.exit141, %229, %_ZN4llvmeqENS_9StringRefES0_.exit54 +_ZN4llvmeqENS_9StringRefES0_.exit54.thread: ; preds = %_ZN4llvm5TwineC2EPKc.exit141, %228, %_ZN4llvmeqENS_9StringRefES0_.exit54 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %26, i64 16, i1 false) ret void } diff --git a/bench/llvm/optimized/Verifier.cpp.ll b/bench/llvm/optimized/Verifier.cpp.ll index b066d9cb9ef..5adbcd0add7 100644 --- a/bench/llvm/optimized/Verifier.cpp.ll +++ b/bench/llvm/optimized/Verifier.cpp.ll @@ -12589,9 +12589,9 @@ _ZN4llvm7mdconst19dyn_extract_or_nullINS_11ConstantIntERKNS_9MDOperandEEENSt9ena store i32 0, ptr %337, align 8 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %398 - %.0160 = phi i8 [ %376, %398 ], [ 0, %.lr.ph.preheader ] - %338 = phi ptr [ %399, %398 ], [ %.pr, %.lr.ph.preheader ] +.lr.ph: ; preds = %.lr.ph.preheader, %397 + %.0160 = phi i8 [ %376, %397 ], [ 0, %.lr.ph.preheader ] + %338 = phi ptr [ %398, %397 ], [ %.pr, %.lr.ph.preheader ] %339 = getelementptr inbounds i8, ptr %338, i64 -16 %340 = load i64, ptr %339, align 8 %341 = and i64 %340, 2 @@ -12708,78 +12708,75 @@ _ZNK4llvm5APInteqEm.exit.thread: ; preds = %_ZNK4llvm5APInt13ge ._crit_edge: ; preds = %372, %_ZNK4llvm5APInteqEm.exit %388 = icmp eq i32 %380, %.sroa.2136.0.extract.trunc - br i1 %388, label %397, label %389 + br i1 %388, label %396, label %389 389: ; preds = %._crit_edge %390 = icmp ult i64 %371, 4294967296 - br i1 %390, label %391, label %394 + br i1 %390, label %391, label %393 391: ; preds = %389 %392 = call noundef zeroext i1 @_ZNK4llvm5APInteqEm(ptr noundef nonnull align 8 dereferenceable(12) %22, i64 noundef 0) - %393 = icmp eq i64 %.sroa.2136.0.extract.shift, 4294967295 - %or.cond3 = and i1 %.0.i142145, %393 - %or.cond173 = or i1 %392, %or.cond3 - br i1 %or.cond173, label %397, label %395 + br i1 %392, label %396, label %394 -394: ; preds = %389 +393: ; preds = %389 %.old = icmp eq i64 %.sroa.2136.0.extract.shift, 4294967295 %or.cond3.old = and i1 %.0.i142145, %.old - br i1 %or.cond3.old, label %397, label %395 + br i1 %or.cond3.old, label %396, label %394 -395: ; preds = %391, %394 +394: ; preds = %391, %393 store ptr %1, ptr %28, align 8 - %396 = load i32, ptr %326, align 8 - store i32 %396, ptr %29, align 4 + %395 = load i32, ptr %326, align 8 + store i32 %395, ptr %29, align 4 call void @_ZN4llvm12TBAAVerifier11CheckFailedIJRA55_KcPNS_11InstructionERPKNS_6MDNodeERjjEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 1 dereferenceable(55) @.str.26, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(4) %25, ptr noundef nonnull align 4 dereferenceable(4) %29) br label %.loopexit -397: ; preds = %394, %391, %._crit_edge +396: ; preds = %393, %391, %._crit_edge %brmerge.not = select i1 %.0.i142145, i1 %.not57, i1 false - br i1 %brmerge.not, label %.critedge, label %398 + br i1 %brmerge.not, label %.critedge, label %397 -398: ; preds = %397 - %399 = call noundef ptr @_ZN4llvm12TBAAVerifier28getFieldNodeFromTBAABaseNodeERNS_11InstructionEPKNS_6MDNodeERNS_5APIntEb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef %352, ptr noundef nonnull align 8 dereferenceable(12) %22, i1 noundef zeroext %.0.i142145) - store ptr %399, ptr %12, align 8 - %.not56 = icmp eq ptr %399, null +397: ; preds = %396 + %398 = call noundef ptr @_ZN4llvm12TBAAVerifier28getFieldNodeFromTBAABaseNodeERNS_11InstructionEPKNS_6MDNodeERNS_5APIntEb(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(72) %1, ptr noundef %352, ptr noundef nonnull align 8 dereferenceable(12) %22, i1 noundef zeroext %.0.i142145) + store ptr %398, ptr %12, align 8 + %.not56 = icmp eq ptr %398, null br i1 %.not56, label %.critedge, label %.lr.ph, !llvm.loop !92 -.critedge: ; preds = %398, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit, %397 - %.1.ph = phi i8 [ %376, %398 ], [ %.0160, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit ], [ %376, %397 ] - %400 = trunc nuw i8 %.1.ph to i1 - br i1 %400, label %.loopexit, label %401 +.critedge: ; preds = %397, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit, %396 + %.1.ph = phi i8 [ %376, %397 ], [ %.0160, %_ZL14IsRootTBAANodePKN4llvm6MDNodeE.exit ], [ %376, %396 ] + %399 = trunc nuw i8 %.1.ph to i1 + br i1 %399, label %.loopexit, label %400 -401: ; preds = %.critedge +400: ; preds = %.critedge store ptr %1, ptr %30, align 8 call void @_ZN4llvm12TBAAVerifier11CheckFailedIJRA40_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 1 dereferenceable(40) @.str.27, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %8) br label %.loopexit -.loopexit: ; preds = %370, %.critedge, %401, %395, %_ZNK4llvm5APInteqEm.exit.thread, %.critedge175 - %.148 = phi i1 [ false, %.critedge175 ], [ false, %401 ], [ false, %395 ], [ false, %_ZNK4llvm5APInteqEm.exit.thread ], [ true, %.critedge ], [ false, %370 ] - %402 = load ptr, ptr %334, align 8 - %403 = load ptr, ptr %23, align 8 - %404 = icmp eq ptr %402, %403 - br i1 %404, label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, label %405 +.loopexit: ; preds = %370, %.critedge, %400, %394, %_ZNK4llvm5APInteqEm.exit.thread, %.critedge175 + %.148 = phi i1 [ false, %.critedge175 ], [ false, %400 ], [ false, %394 ], [ false, %_ZNK4llvm5APInteqEm.exit.thread ], [ true, %.critedge ], [ false, %370 ] + %401 = load ptr, ptr %334, align 8 + %402 = load ptr, ptr %23, align 8 + %403 = icmp eq ptr %401, %402 + br i1 %403, label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, label %404 -405: ; preds = %.loopexit - call void @free(ptr noundef %402) #23 +404: ; preds = %.loopexit + call void @free(ptr noundef %401) #23 br label %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit -_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit: ; preds = %.loopexit, %405 - %406 = load i32, ptr %326, align 8 - %407 = icmp ugt i32 %406, 64 - br i1 %407, label %408, label %_ZN4llvm5APIntD2Ev.exit +_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit: ; preds = %.loopexit, %404 + %405 = load i32, ptr %326, align 8 + %406 = icmp ugt i32 %405, 64 + br i1 %406, label %407, label %_ZN4llvm5APIntD2Ev.exit -408: ; preds = %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit - %409 = load ptr, ptr %22, align 8 - %410 = icmp eq ptr %409, null - br i1 %410, label %_ZN4llvm5APIntD2Ev.exit, label %411 +407: ; preds = %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit + %408 = load ptr, ptr %22, align 8 + %409 = icmp eq ptr %408, null + br i1 %409, label %_ZN4llvm5APIntD2Ev.exit, label %410 -411: ; preds = %408 - call void @_ZdaPv(ptr noundef nonnull %409) #25 +410: ; preds = %407 + call void @_ZdaPv(ptr noundef nonnull %408) #25 br label %_ZN4llvm5APIntD2Ev.exit -_ZN4llvm5APIntD2Ev.exit: ; preds = %411, %408, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, %324, %302, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit, %277, %266, %229, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit, %177, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit, %62, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit - %.047 = phi i1 [ false, %324 ], [ false, %302 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit ], [ false, %277 ], [ false, %266 ], [ false, %229 ], [ false, %177 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit ], [ false, %62 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ %.148, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit ], [ %.148, %408 ], [ %.148, %411 ] +_ZN4llvm5APIntD2Ev.exit: ; preds = %410, %407, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit, %324, %302, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit, %277, %266, %229, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit, %177, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit, %62, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit + %.047 = phi i1 [ false, %324 ], [ false, %302 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA99_KcPNS_11InstructionERPKNS_6MDNodeERPS7_SC_EEEvDpOT_.exit ], [ false, %277 ], [ false, %266 ], [ false, %229 ], [ false, %177 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA53_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA66_KcPNS_11InstructionEEEEvDpOT_.exit ], [ false, %62 ], [ false, %_ZN4llvm12TBAAVerifier11CheckFailedIJRA37_KcPNS_11InstructionERPKNS_6MDNodeEEEEvDpOT_.exit ], [ %.148, %_ZN4llvm11SmallPtrSetIPNS_6MDNodeELj4EED2Ev.exit ], [ %.148, %407 ], [ %.148, %410 ] ret i1 %.047 } diff --git a/bench/luajit/optimized/lj_str.ll b/bench/luajit/optimized/lj_str.ll index fff28517143..f26ccf74156 100644 --- a/bench/luajit/optimized/lj_str.ll +++ b/bench/luajit/optimized/lj_str.ll @@ -203,11 +203,7 @@ for.body.lr.ph: ; preds = %if.then9 %7 = zext i32 %6 to i64 br label %for.body -for.cond28.preheader: ; preds = %for.inc - %cmp29.not148 = icmp eq i32 %newmask, -1 - br i1 %cmp29.not148, label %for.end43, label %for.body31.preheader - -for.body31.preheader: ; preds = %if.then9, %for.cond28.preheader +for.body31.preheader: ; preds = %for.inc, %if.then9 %8 = zext nneg i32 %newmask to i64 br label %for.body31 @@ -314,7 +310,7 @@ cond.end: ; preds = %cond.false, %hash_s for.inc: ; preds = %cond.end, %for.body %indvars.iv.next = add nsw i64 %indvars.iv, -1 %cmp11.not = icmp eq i64 %indvars.iv, 0 - br i1 %cmp11.not, label %for.cond28.preheader, label %for.body, !llvm.loop !9 + br i1 %cmp11.not, label %for.body31.preheader, label %for.body, !llvm.loop !9 for.body31: ; preds = %for.body31.preheader, %for.body31 %indvars.iv159 = phi i64 [ %8, %for.body31.preheader ], [ %indvars.iv.next160, %for.body31 ] @@ -330,9 +326,8 @@ for.body31: ; preds = %for.body31.preheade %indvars.iv.next160 = add nsw i64 %indvars.iv159, -1 br i1 %cmp29.not, label %for.end43, label %for.body31, !llvm.loop !10 -for.end43: ; preds = %for.body31, %for.cond28.preheader - %newsecond.0.lcssa = phi i8 [ 0, %for.cond28.preheader ], [ %or, %for.body31 ] - store i8 %newsecond.0.lcssa, ptr %second, align 1 +for.end43: ; preds = %for.body31 + store i8 %or, ptr %second, align 1 br label %if.end47 if.end47: ; preds = %for.end43, %if.end diff --git a/bench/luau/optimized/Flags.cpp.ll b/bench/luau/optimized/Flags.cpp.ll index 8e11b8058fe..7f3228804d5 100644 --- a/bench/luau/optimized/Flags.cpp.ll +++ b/bench/luau/optimized/Flags.cpp.ll @@ -107,15 +107,15 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit: ; preds = %_ZNSt1 %12 = ptrtoint ptr %6 to i64 %13 = ptrtoint ptr %.sroa.6.0179 to i64 %14 = sub i64 %12, %13 - %.fr235 = freeze i64 %14 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0147.0178, i64 %.fr235) - %.not161 = icmp eq i64 %.fr235, 0 - br i1 %.not161, label %.thread155, label %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i + %.fr233 = freeze i64 %14 + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0147.0178, i64 %.fr233) + %.not161 = icmp eq i64 %.fr233, 0 + br i1 %.not161, label %.thread159, label %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i _ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i, %8, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit - %.fr11.i97206 = phi i64 [ %.sroa.speculated.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.sroa.0147.0178, %8 ], [ %.sroa.0147.0178, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] - %.020.i.i204 = phi i64 [ %.fr235, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ -1, %8 ], [ -1, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] - %15 = tail call ptr @memchr(ptr noundef %.sroa.6.0179, i32 noundef 61, i64 noundef %.fr11.i97206) #8 + %.fr11.i97203 = phi i64 [ %.sroa.speculated.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.sroa.0147.0178, %8 ], [ %.sroa.0147.0178, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] + %.020.i.i202 = phi i64 [ %.fr233, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ -1, %8 ], [ -1, %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i.i ] + %15 = tail call ptr @memchr(ptr noundef %.sroa.6.0179, i32 noundef 61, i64 noundef %.fr11.i97203) #8 %.not.i = icmp eq ptr %15, null br i1 %.not.i, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit @@ -128,17 +128,17 @@ _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit: ; preds = %_ZNSt11c br i1 %.not, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, label %19 19: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit - %.sroa.speculated.i28 = tail call i64 @llvm.umin.i64(i64 %.fr11.i97206, i64 %.fr) + %.sroa.speculated.i28 = tail call i64 @llvm.umin.i64(i64 %.fr11.i97203, i64 %.fr) %20 = add nuw i64 %.fr, 1 - %.not162 = icmp ult i64 %.fr, %.fr11.i97206 + %.not162 = icmp ult i64 %.fr, %.fr11.i97203 br i1 %.not162, label %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit, label %21 21: ; preds = %19 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.10, i64 noundef %20, i64 noundef %.fr11.i97206) #9 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.10, i64 noundef %20, i64 noundef %.fr11.i97203) #9 unreachable _ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm.exit: ; preds = %19 - %22 = sub nuw i64 %.fr11.i97206, %20 + %22 = sub nuw i64 %.fr11.i97203, %20 %23 = getelementptr inbounds i8, ptr %.sroa.6.0179, i64 %20 switch i64 %22, label %60 [ i64 4, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i34 @@ -279,7 +279,7 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ br label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit _ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread: ; preds = %_ZNSt11char_traitsIcE4findEPKcmRS1_.exit.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit - switch i64 %.fr11.i97206, label %.thread159 [ + switch i64 %.fr11.i97203, label %.thread159 [ i64 4, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 i64 5, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 ] @@ -289,19 +289,12 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69: ; preds = %_ZNKSt17basic_strin %65 = icmp eq i32 %bcmp.i70, 0 br i1 %65, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 -.thread155: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit - switch i64 %.sroa.speculated.i, label %.thread159 [ - i64 4, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 - i64 5, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 - ] - _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 %bcmp.i74 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %.sroa.6.0179, ptr noundef nonnull dereferenceable(4) @.str.3, i64 4) %66 = icmp eq i32 %bcmp.i74, 0 br i1 %66, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, label %.thread159 -_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72: ; preds = %.thread155, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 - %.020.i.i202 = phi i64 [ 0, %.thread155 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 ] +_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i69 %.04.i = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not5.i = icmp eq ptr %.04.i, null br i1 %.not5.i, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i77 @@ -325,7 +318,7 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ br i1 %.not.i79, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i77, !llvm.loop !9 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81: ; preds = %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread - %bcmp.i82 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull @.str.4, i64 %.fr11.i97206) + %bcmp.i82 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull @.str.4, i64 %.fr11.i97203) %74 = icmp eq i32 %bcmp.i82, 0 br i1 %74, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 @@ -334,8 +327,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85: ; preds = %_ZNSt11char_traitsI %75 = icmp eq i32 %bcmp.i86, 0 br i1 %75, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, label %.thread159 -_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84: ; preds = %.thread155, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 - %.020.i.i201 = phi i64 [ 0, %.thread155 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 ] +_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i81 %.04.i89 = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not5.i90 = icmp eq ptr %.04.i89, null br i1 %.not5.i90, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i91 @@ -358,15 +350,15 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ %.not.i94 = icmp eq ptr %.0.i93, null br i1 %.not.i94, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit, label %.lr.ph.i91, !llvm.loop !9 -.thread159: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %.thread155, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 - %.fr11.i97205 = phi i64 [ 4, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.sroa.speculated.i, %.thread155 ], [ %.fr11.i97206, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ 5, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] - %.020.i.i203 = phi i64 [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ 0, %.thread155 ], [ %.020.i.i204, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ %.020.i.i204, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] +.thread159: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 + %.fr11.i97204 = phi i64 [ 4, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ %.sroa.speculated.i, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.fr11.i97203, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ 5, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] + %.020.i.i201 = phi i64 [ %.020.i.i202, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i73 ], [ 0, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm.exit ], [ %.020.i.i202, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm.exit.thread ], [ %.020.i.i202, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i85 ] %.07.i98 = load ptr, ptr @_ZN4Luau6FValueIbE4listE, align 8 %.not8.i99 = icmp eq ptr %.07.i98, null br i1 %.not8.i99, label %._crit_edge.i105, label %.lr.ph.i100 .lr.ph.i100: ; preds = %.thread159 - %83 = icmp eq i64 %.fr11.i97205, 0 + %83 = icmp eq i64 %.fr11.i97204, 0 br i1 %83, label %.lr.ph.split.us.i110, label %.lr.ph.split.i101 .lr.ph.split.us.i110: ; preds = %.lr.ph.i100, %87 @@ -388,11 +380,11 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ %89 = getelementptr inbounds nuw i8, ptr %.09.i102, i64 8 %90 = load ptr, ptr %89, align 8 %91 = tail call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %90) #8 - %92 = icmp eq i64 %.fr11.i97205, %91 + %92 = icmp eq i64 %.fr11.i97204, %91 br i1 %92, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i106, label %94 _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i106: ; preds = %.lr.ph.split.i101 - %bcmp.i.i107 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull %90, i64 %.fr11.i97205) + %bcmp.i.i107 = tail call i32 @bcmp(ptr %.sroa.6.0179, ptr nonnull %90, i64 %.fr11.i97204) %93 = icmp eq i32 %bcmp.i.i107, 0 br i1 %93, label %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108, label %94 @@ -409,12 +401,12 @@ _ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_ ._crit_edge.i105: ; preds = %94, %87, %.thread159 %96 = load ptr, ptr @stderr, align 8 - %97 = trunc i64 %.fr11.i97205 to i32 + %97 = trunc i64 %.fr11.i97204 to i32 %98 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %96, ptr noundef nonnull @.str.12, i32 noundef %97, ptr noundef %.sroa.6.0179) #10 br label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit _ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit: ; preds = %81, %72, %._crit_edge.i105, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72, %._crit_edge.i58, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61, %._crit_edge.i, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i, %60 - %.020.i.i200 = phi i64 [ %.020.i.i203, %._crit_edge.i105 ], [ %.020.i.i203, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108 ], [ %.020.i.i201, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 ], [ %.020.i.i204, %._crit_edge.i58 ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61 ], [ %.020.i.i204, %._crit_edge.i ], [ %.020.i.i204, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i ], [ %.020.i.i204, %60 ], [ %.020.i.i202, %72 ], [ %.020.i.i201, %81 ] + %.020.i.i200 = phi i64 [ %.020.i.i201, %._crit_edge.i105 ], [ %.020.i.i201, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i108 ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit84 ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit72 ], [ %.020.i.i202, %._crit_edge.i58 ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i61 ], [ %.020.i.i202, %._crit_edge.i ], [ %.020.i.i202, %_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE.exit.i ], [ %.020.i.i202, %60 ], [ %.020.i.i202, %72 ], [ %.020.i.i202, %81 ] %.not27 = icmp eq i64 %.020.i.i200, -1 br i1 %.not27, label %_ZL11setLuauFlagSt17basic_string_viewIcSt11char_traitsIcEEb.exit._crit_edge, label %99 diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 01f559ca790..7681414a5ff 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -24797,17 +24797,13 @@ _ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inp %c.sroa.0.1.i.i.i = or <4 x i64> %c.sroa.22.01221.pn.i.i.i, %c.sroa.0.01219.i.i.i %add.i58.i.i.i = add nuw i64 %reader.sroa.11.01218.i.i.i, 64 %cmp.i16.i.i.i = icmp ult i64 %add.i58.i.i.i, %spec.select.i.i.i - br i1 %cmp.i16.i.i.i, label %while.body.i.i.i, label %while.end.i.i.i, !llvm.loop !239 + br i1 %cmp.i16.i.i.i, label %while.body.i.i.i, label %if.end.i.i.i.i, !llvm.loop !239 -while.end.i.i.i: ; preds = %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i - %cmp.i63.i.i.i = icmp eq i64 %length, %add.i58.i.i.i - br i1 %cmp.i63.i.i.i, label %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i, label %if.end.i.i.i.i - -if.end.i.i.i.i: ; preds = %if.else, %while.end.i.i.i - %c.sroa.22.0.lcssa.i.i.i24 = phi <4 x i64> [ %c.sroa.22.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %c.sroa.17.0.lcssa.i.i.i22 = phi <4 x i64> [ %c.sroa.17.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %c.sroa.0.0.lcssa.i.i.i20 = phi <4 x i64> [ %c.sroa.0.1.i.i.i, %while.end.i.i.i ], [ zeroinitializer, %if.else ] - %reader.sroa.11.0.lcssa.i.i.i19 = phi i64 [ %add.i58.i.i.i, %while.end.i.i.i ], [ 0, %if.else ] +if.end.i.i.i.i: ; preds = %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i, %if.else + %c.sroa.22.0.lcssa.i.i.i24 = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.22.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %c.sroa.17.0.lcssa.i.i.i22 = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.17.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %c.sroa.0.0.lcssa.i.i.i20 = phi <4 x i64> [ zeroinitializer, %if.else ], [ %c.sroa.0.1.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] + %reader.sroa.11.0.lcssa.i.i.i19 = phi i64 [ 0, %if.else ], [ %add.i58.i.i.i, %_ZN7simdutf7haswell12_GLOBAL__N_115utf8_validation12utf8_checker16check_next_inputERKNS1_4simd8simd8x64IhEE.exit51.i.i.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %block.i.i.i, i8 32, i64 64, i1 false) %add.ptr.i64.i.i.i = getelementptr inbounds i8, ptr %input, i64 %reader.sroa.11.0.lcssa.i.i.i19 %sub.i66.i.i.i = sub i64 %length, %reader.sroa.11.0.lcssa.i.i.i19 @@ -24815,24 +24811,16 @@ if.end.i.i.i.i: ; preds = %if.else, %while.end %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i = load <4 x i64>, ptr %block.i.i.i, align 16, !noalias !240 %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32.add.ptr.i26.sroa_idx = getelementptr inbounds nuw i8, ptr %block.i.i.i, i64 32 %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i = load <4 x i64>, ptr %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32.add.ptr.i26.sroa_idx, align 16, !noalias !243 - br label %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i - -_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i: ; preds = %if.end.i.i.i.i, %while.end.i.i.i - %c.sroa.22.0.lcssa.i.i.i25 = phi <4 x i64> [ %c.sroa.22.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] - %c.sroa.17.0.lcssa.i.i.i23 = phi <4 x i64> [ %c.sroa.17.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.17.0.lcssa.i.i.i22, %if.end.i.i.i.i ] - %c.sroa.0.0.lcssa.i.i.i21 = phi <4 x i64> [ %c.sroa.0.1.i.i.i, %while.end.i.i.i ], [ %c.sroa.0.0.lcssa.i.i.i20, %if.end.i.i.i.i ] - %block.32.block.32.block.32..i.i.i = phi <4 x i64> [ zeroinitializer, %while.end.i.i.i ], [ %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, %if.end.i.i.i.i ] - %block.0.block.0.block.0..i.i.i = phi <4 x i64> [ zeroinitializer, %while.end.i.i.i ], [ %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, %if.end.i.i.i.i ] - %or.i.i344.i.i.i = or <4 x i64> %block.0.block.0.block.0..i.i.i, %block.32.block.32.block.32..i.i.i + %or.i.i344.i.i.i = or <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i %170 = bitcast <4 x i64> %or.i.i344.i.i.i to <32 x i8> %171 = icmp slt <32 x i8> %170, zeroinitializer %172 = bitcast <32 x i1> %171 to i32 %cmp.i296.i.i.i = icmp eq i32 %172, 0 br i1 %cmp.i296.i.i.i, label %_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit, label %if.else.i.i.i.i -if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i - %173 = bitcast <4 x i64> %block.0.block.0.block.0..i.i.i to <32 x i8> - %vperm.i.i.i.i = shufflevector <4 x i64> %c.sroa.17.0.lcssa.i.i.i23, <4 x i64> %block.0.block.0.block.0..i.i.i, <4 x i32> +if.else.i.i.i.i: ; preds = %if.end.i.i.i.i + %173 = bitcast <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i to <32 x i8> + %vperm.i.i.i.i = shufflevector <4 x i64> %c.sroa.17.0.lcssa.i.i.i22, <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, <4 x i32> %174 = bitcast <4 x i64> %vperm.i.i.i.i to <32 x i8> %palignr.i.i.i.i = shufflevector <32 x i8> %174, <32 x i8> %173, <32 x i32> %175 = bitcast <32 x i8> %palignr.i.i.i.i to <16 x i16> @@ -24842,7 +24830,7 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %179 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %178) %180 = and <32 x i8> %palignr.i.i.i.i, splat (i8 15) %181 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %180) - %182 = bitcast <4 x i64> %block.0.block.0.block.0..i.i.i to <16 x i16> + %182 = bitcast <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i to <16 x i16> %183 = lshr <16 x i16> %182, splat (i16 4) %184 = bitcast <16 x i16> %183 to <32 x i8> %185 = and <32 x i8> %184, splat (i8 15) @@ -24860,8 +24848,8 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %187 = bitcast <32 x i8> %sext.i.i.i.i.i to <4 x i64> %and.i.i1921.i.i.i = and <4 x i64> %187, splat (i64 -9187201950435737472) %xor.i.i7507.i.i.i = xor <4 x i64> %and.i.i1921.i.i.i, %and.i.i2321.i.i.i - %188 = bitcast <4 x i64> %block.32.block.32.block.32..i.i.i to <32 x i8> - %vperm.i695.i.i.i = shufflevector <4 x i64> %block.0.block.0.block.0..i.i.i, <4 x i64> %block.32.block.32.block.32..i.i.i, <4 x i32> + %188 = bitcast <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i to <32 x i8> + %vperm.i695.i.i.i = shufflevector <4 x i64> %block.i.i.i.0.block.i.i.i.0.block.i.i.i.0.block.i.i.0.block.i.i.0.block.i.0.block.i.0.block.0.block.0.block.0..pre.i.i.i, <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i, <4 x i32> %189 = bitcast <4 x i64> %vperm.i695.i.i.i to <32 x i8> %palignr.i696.i.i.i = shufflevector <32 x i8> %189, <32 x i8> %188, <32 x i32> %190 = bitcast <32 x i8> %palignr.i696.i.i.i to <16 x i16> @@ -24871,7 +24859,7 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %194 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %193) %195 = and <32 x i8> %palignr.i696.i.i.i, splat (i8 15) %196 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> %195) - %197 = bitcast <4 x i64> %block.32.block.32.block.32..i.i.i to <16 x i16> + %197 = bitcast <4 x i64> %block.i.i.i.32.block.i.i.i.32.block.i.i.i.32.block.i.i.32.block.i.i.32.block.i.32.block.i.32.block.32.block.32.block.32..pre.i.i.i to <16 x i16> %198 = lshr <16 x i16> %197, splat (i16 4) %199 = bitcast <16 x i16> %198 to <32 x i8> %200 = and <32 x i8> %199, splat (i8 15) @@ -24894,10 +24882,10 @@ if.else.i.i.i.i: ; preds = %_ZNK7simdutf7haswel %204 = bitcast <32 x i8> %elt.sat.i.i.i.i.i to <4 x i64> br label %_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit -_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit: ; preds = %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i, %if.else.i.i.i.i - %c.sroa.22.0.lcssa.pn.i.i.i = phi <4 x i64> [ %203, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i25, %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i ] - %c.sroa.22.2.i.i.i = phi <4 x i64> [ %204, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i25, %_ZNK7simdutf7haswell12_GLOBAL__N_116buf_block_readerILm64EE13get_remainderEPh.exit.i.i.i ] - %c.sroa.0.2.i.i.i = or <4 x i64> %c.sroa.22.0.lcssa.pn.i.i.i, %c.sroa.0.0.lcssa.i.i.i21 +_ZNK7simdutf7haswell14implementation13validate_utf8EPKcm.exit: ; preds = %if.end.i.i.i.i, %if.else.i.i.i.i + %c.sroa.22.0.lcssa.pn.i.i.i = phi <4 x i64> [ %203, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] + %c.sroa.22.2.i.i.i = phi <4 x i64> [ %204, %if.else.i.i.i.i ], [ %c.sroa.22.0.lcssa.i.i.i24, %if.end.i.i.i.i ] + %c.sroa.0.2.i.i.i = or <4 x i64> %c.sroa.22.0.lcssa.pn.i.i.i, %c.sroa.0.0.lcssa.i.i.i20 %or.i.i610.i.i.i = or <4 x i64> %c.sroa.0.2.i.i.i, %c.sroa.22.2.i.i.i %205 = tail call noundef i32 @llvm.x86.avx.ptestz.256(<4 x i64> %or.i.i610.i.i.i, <4 x i64> %or.i.i610.i.i.i) %tobool.i.i.i.i.not = icmp ne i32 %205, 0 diff --git a/bench/opencv/optimized/dxt.cpp.ll b/bench/opencv/optimized/dxt.cpp.ll index ef36f43e9ca..36228707127 100644 --- a/bench/opencv/optimized/dxt.cpp.ll +++ b/bench/opencv/optimized/dxt.cpp.ll @@ -6049,13 +6049,13 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou 35: ; preds = %32 %36 = landingpad { ptr, i32 } cleanup - br label %279 + br label %278 37: ; preds = %33 %38 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #19 - br label %279 + br label %278 39: ; preds = %30 %40 = sext i32 %1 to i64 @@ -6113,7 +6113,7 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou %61 = load i32, ptr %60, align 4 %smax = tail call i32 @llvm.smax.i32(i32 %0, i32 2) %wide.trip.count328 = zext nneg i32 %smax to i64 - br label %173 + br label %172 62: ; preds = %57 %63 = getelementptr inbounds nuw i8, ptr %9, i64 4 @@ -6143,123 +6143,119 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou 76: ; preds = %71 %77 = icmp samesign ult i32 %14, 257 %invariant.op283 = add nsw i32 %66, %72 - br i1 %77, label %78, label %97 - -78: ; preds = %76 - %79 = sub nsw i32 10, %.1 - %.not239285 = icmp eq i32 %14, 3 - br i1 %.not239285, label %.loopexit268, label %.lr.ph288.preheader + br i1 %77, label %.lr.ph288.preheader, label %96 -.lr.ph288.preheader: ; preds = %78 - %80 = add nsw i32 %14, -4 - %81 = zext nneg i32 %80 to i64 +.lr.ph288.preheader: ; preds = %76 + %78 = sub nsw i32 10, %.1 + %79 = add nsw i32 %14, -4 + %80 = sext i32 %79 to i64 br label %.lr.ph288 .lr.ph288: ; preds = %.lr.ph288.preheader, %.lr.ph288 %indvars.iv333 = phi i64 [ 0, %.lr.ph288.preheader ], [ %indvars.iv.next334, %.lr.ph288 ] - %82 = lshr exact i64 %indvars.iv333, 2 - %83 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %82 - %84 = load i8, ptr %83, align 1 - %85 = zext i8 %84 to i32 - %86 = lshr i32 %85, %79 - %87 = mul nsw i32 %86, %64 - %88 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv333 - store i32 %87, ptr %88, align 4 - %89 = add nsw i32 %87, %66 - %90 = or disjoint i64 %indvars.iv333, 1 - %91 = getelementptr inbounds nuw i32, ptr %.0, i64 %90 - store i32 %89, ptr %91, align 4 - %92 = add nsw i32 %87, %72 - %93 = or disjoint i64 %indvars.iv333, 2 - %94 = getelementptr inbounds nuw i32, ptr %.0, i64 %93 - store i32 %92, ptr %94, align 4 - %.reass284 = add i32 %87, %invariant.op283 - %95 = or disjoint i64 %indvars.iv333, 3 - %96 = getelementptr inbounds nuw i32, ptr %.0, i64 %95 - store i32 %.reass284, ptr %96, align 4 + %81 = lshr exact i64 %indvars.iv333, 2 + %82 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %81 + %83 = load i8, ptr %82, align 1 + %84 = zext i8 %83 to i32 + %85 = lshr i32 %84, %78 + %86 = mul nsw i32 %85, %64 + %87 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv333 + store i32 %86, ptr %87, align 4 + %88 = add nsw i32 %86, %66 + %89 = or disjoint i64 %indvars.iv333, 1 + %90 = getelementptr inbounds nuw i32, ptr %.0, i64 %89 + store i32 %88, ptr %90, align 4 + %91 = add nsw i32 %86, %72 + %92 = or disjoint i64 %indvars.iv333, 2 + %93 = getelementptr inbounds nuw i32, ptr %.0, i64 %92 + store i32 %91, ptr %93, align 4 + %.reass284 = add i32 %86, %invariant.op283 + %94 = or disjoint i64 %indvars.iv333, 3 + %95 = getelementptr inbounds nuw i32, ptr %.0, i64 %94 + store i32 %.reass284, ptr %95, align 4 %indvars.iv.next334 = add nuw nsw i64 %indvars.iv333, 4 - %.not239 = icmp samesign ugt i64 %indvars.iv.next334, %81 + %.not239 = icmp sgt i64 %indvars.iv.next334, %80 br i1 %.not239, label %.loopexit268, label %.lr.ph288, !llvm.loop !57 -97: ; preds = %76 - %98 = sub nsw i32 34, %.1 - %99 = zext nneg i32 %14 to i64 - br label %100 - -100: ; preds = %97, %100 - %indvars.iv330 = phi i64 [ 0, %97 ], [ %indvars.iv.next331, %100 ] - %101 = lshr exact i64 %indvars.iv330, 2 - %102 = and i64 %101, 255 - %103 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %102 - %104 = load i8, ptr %103, align 1 - %105 = zext i8 %104 to i32 - %106 = shl nuw i32 %105, 24 - %107 = lshr i64 %indvars.iv330, 10 - %108 = and i64 %107, 255 - %109 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %108 - %110 = load i8, ptr %109, align 1 - %111 = zext i8 %110 to i32 - %112 = shl nuw nsw i32 %111, 16 - %113 = or disjoint i32 %112, %106 - %114 = lshr i64 %indvars.iv330, 18 - %115 = and i64 %114, 255 - %116 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %115 - %117 = load i8, ptr %116, align 1 - %118 = zext i8 %117 to i32 - %119 = shl nuw nsw i32 %118, 8 - %120 = or disjoint i32 %113, %119 - %121 = lshr i64 %indvars.iv330, 26 - %122 = and i64 %121, 63 - %123 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %122 - %124 = load i8, ptr %123, align 1 - %125 = zext i8 %124 to i32 - %126 = or disjoint i32 %120, %125 - %127 = lshr i32 %126, %98 - %128 = mul nsw i32 %127, %64 - %129 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv330 - store i32 %128, ptr %129, align 4 - %130 = add nsw i32 %128, %66 - %131 = or disjoint i64 %indvars.iv330, 1 - %132 = getelementptr inbounds nuw i32, ptr %.0, i64 %131 - store i32 %130, ptr %132, align 4 - %133 = add nsw i32 %128, %72 - %134 = or disjoint i64 %indvars.iv330, 2 - %135 = getelementptr inbounds nuw i32, ptr %.0, i64 %134 - store i32 %133, ptr %135, align 4 - %.reass = add i32 %128, %invariant.op283 - %136 = or disjoint i64 %indvars.iv330, 3 - %137 = getelementptr inbounds nuw i32, ptr %.0, i64 %136 - store i32 %.reass, ptr %137, align 4 +96: ; preds = %76 + %97 = sub nsw i32 34, %.1 + %98 = zext nneg i32 %14 to i64 + br label %99 + +99: ; preds = %96, %99 + %indvars.iv330 = phi i64 [ 0, %96 ], [ %indvars.iv.next331, %99 ] + %100 = lshr exact i64 %indvars.iv330, 2 + %101 = and i64 %100, 255 + %102 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %101 + %103 = load i8, ptr %102, align 1 + %104 = zext i8 %103 to i32 + %105 = shl nuw i32 %104, 24 + %106 = lshr i64 %indvars.iv330, 10 + %107 = and i64 %106, 255 + %108 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %107 + %109 = load i8, ptr %108, align 1 + %110 = zext i8 %109 to i32 + %111 = shl nuw nsw i32 %110, 16 + %112 = or disjoint i32 %111, %105 + %113 = lshr i64 %indvars.iv330, 18 + %114 = and i64 %113, 255 + %115 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %114 + %116 = load i8, ptr %115, align 1 + %117 = zext i8 %116 to i32 + %118 = shl nuw nsw i32 %117, 8 + %119 = or disjoint i32 %112, %118 + %120 = lshr i64 %indvars.iv330, 26 + %121 = and i64 %120, 63 + %122 = getelementptr inbounds nuw [256 x i8], ptr @_ZN2cvL9bitrevTabE, i64 0, i64 %121 + %123 = load i8, ptr %122, align 1 + %124 = zext i8 %123 to i32 + %125 = or disjoint i32 %119, %124 + %126 = lshr i32 %125, %97 + %127 = mul nsw i32 %126, %64 + %128 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv330 + store i32 %127, ptr %128, align 4 + %129 = add nsw i32 %127, %66 + %130 = or disjoint i64 %indvars.iv330, 1 + %131 = getelementptr inbounds nuw i32, ptr %.0, i64 %130 + store i32 %129, ptr %131, align 4 + %132 = add nsw i32 %127, %72 + %133 = or disjoint i64 %indvars.iv330, 2 + %134 = getelementptr inbounds nuw i32, ptr %.0, i64 %133 + store i32 %132, ptr %134, align 4 + %.reass = add i32 %127, %invariant.op283 + %135 = or disjoint i64 %indvars.iv330, 3 + %136 = getelementptr inbounds nuw i32, ptr %.0, i64 %135 + store i32 %.reass, ptr %136, align 4 %indvars.iv.next331 = add nuw nsw i64 %indvars.iv330, 4 - %138 = icmp samesign ult i64 %indvars.iv.next331, %99 - br i1 %138, label %100, label %.loopexit268, !llvm.loop !58 - -.loopexit268: ; preds = %100, %.lr.ph288, %78, %74 - %139 = getelementptr inbounds nuw i8, ptr %8, i64 4 - %140 = load i32, ptr %139, align 4 - %141 = add nsw i32 %140, 1 - store i32 %141, ptr %139, align 4 - %142 = icmp sgt i32 %1, 1 - br i1 %142, label %143, label %.loopexit267 - -143: ; preds = %.loopexit268 - %144 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %145 = load i32, ptr %144, align 8 - %146 = icmp slt i32 %14, %0 - br i1 %146, label %.preheader266.lr.ph, label %.loopexit267 - -.preheader266.lr.ph: ; preds = %143 - %147 = icmp sgt i32 %14, 0 - %148 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %149 = sext i32 %14 to i64 - %150 = zext nneg i32 %0 to i64 + %137 = icmp samesign ult i64 %indvars.iv.next331, %98 + br i1 %137, label %99, label %.loopexit268, !llvm.loop !58 + +.loopexit268: ; preds = %99, %.lr.ph288, %74 + %138 = getelementptr inbounds nuw i8, ptr %8, i64 4 + %139 = load i32, ptr %138, align 4 + %140 = add nsw i32 %139, 1 + store i32 %140, ptr %138, align 4 + %141 = icmp sgt i32 %1, 1 + br i1 %141, label %142, label %.loopexit267 + +142: ; preds = %.loopexit268 + %143 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %144 = load i32, ptr %143, align 8 + %145 = icmp slt i32 %14, %0 + br i1 %145, label %.preheader266.lr.ph, label %.loopexit267 + +.preheader266.lr.ph: ; preds = %142 + %146 = icmp sgt i32 %14, 0 + %147 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %148 = sext i32 %14 to i64 + %149 = zext nneg i32 %0 to i64 %wide.trip.count339 = zext nneg i32 %14 to i64 br label %.preheader266 .preheader266: ; preds = %.preheader266.backedge, %.preheader266.lr.ph - %indvars.iv344 = phi i64 [ %149, %.preheader266.lr.ph ], [ %indvars.iv.next345, %.preheader266.backedge ] - %.0214298 = phi i32 [ %145, %.preheader266.lr.ph ], [ %.0214298.be, %.preheader266.backedge ] - br i1 %147, label %.lr.ph290.preheader, label %._crit_edge291 + %indvars.iv344 = phi i64 [ %148, %.preheader266.lr.ph ], [ %indvars.iv.next345, %.preheader266.backedge ] + %.0214298 = phi i32 [ %144, %.preheader266.lr.ph ], [ %.0214298.be, %.preheader266.backedge ] + br i1 %146, label %.lr.ph290.preheader, label %._crit_edge291 .lr.ph290.preheader: ; preds = %.preheader266 %invariant.gep = getelementptr i32, ptr %.0, i64 %indvars.iv344 @@ -6267,290 +6263,290 @@ define internal fastcc void @_ZN2cvL7DFTInitEiiPKiPiiPvi(i32 noundef %0, i32 nou .lr.ph290: ; preds = %.lr.ph290.preheader, %.lr.ph290 %indvars.iv336 = phi i64 [ 0, %.lr.ph290.preheader ], [ %indvars.iv.next337, %.lr.ph290 ] - %151 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv336 - %152 = load i32, ptr %151, align 4 - %153 = add nsw i32 %152, %.0214298 + %150 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv336 + %151 = load i32, ptr %150, align 4 + %152 = add nsw i32 %151, %.0214298 %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv336 - store i32 %153, ptr %gep, align 4 + store i32 %152, ptr %gep, align 4 %indvars.iv.next337 = add nuw nsw i64 %indvars.iv336, 1 %exitcond340.not = icmp eq i64 %indvars.iv.next337, %wide.trip.count339 br i1 %exitcond340.not, label %._crit_edge291, label %.lr.ph290, !llvm.loop !59 ._crit_edge291: ; preds = %.lr.ph290, %.preheader266 - %indvars.iv.next345 = add nsw i64 %indvars.iv344, %149 - %.not240 = icmp slt i64 %indvars.iv.next345, %150 - br i1 %.not240, label %154, label %.loopexit267 - -154: ; preds = %._crit_edge291 - %155 = add nsw i32 %.0214298, %145 - %156 = load i32, ptr %139, align 4 - %157 = add nsw i32 %156, 1 - store i32 %157, ptr %139, align 4 - %158 = load i32, ptr %148, align 4 - %.not241292 = icmp slt i32 %157, %158 + %indvars.iv.next345 = add nsw i64 %indvars.iv344, %148 + %.not240 = icmp slt i64 %indvars.iv.next345, %149 + br i1 %.not240, label %153, label %.loopexit267 + +153: ; preds = %._crit_edge291 + %154 = add nsw i32 %.0214298, %144 + %155 = load i32, ptr %138, align 4 + %156 = add nsw i32 %155, 1 + store i32 %156, ptr %138, align 4 + %157 = load i32, ptr %147, align 4 + %.not241292 = icmp slt i32 %156, %157 br i1 %.not241292, label %.preheader266.backedge, label %.lr.ph296 -.preheader266.backedge: ; preds = %.lr.ph296, %154 - %.0214298.be = phi i32 [ %155, %154 ], [ %166, %.lr.ph296 ] +.preheader266.backedge: ; preds = %.lr.ph296, %153 + %.0214298.be = phi i32 [ %154, %153 ], [ %165, %.lr.ph296 ] br label %.preheader266 -.lr.ph296: ; preds = %154, %.lr.ph296 - %indvars.iv341 = phi i64 [ %indvars.iv.next342, %.lr.ph296 ], [ 1, %154 ] - %159 = phi ptr [ %167, %.lr.ph296 ], [ %139, %154 ] - %.1215294 = phi i32 [ %166, %.lr.ph296 ], [ %155, %154 ] - store i32 0, ptr %159, align 4 - %160 = add nuw nsw i64 %indvars.iv341, 2 - %161 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %160 - %162 = load i32, ptr %161, align 4 - %163 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv341 - %164 = load i32, ptr %163, align 4 - %165 = add i32 %162, %.1215294 - %166 = sub i32 %165, %164 +.lr.ph296: ; preds = %153, %.lr.ph296 + %indvars.iv341 = phi i64 [ %indvars.iv.next342, %.lr.ph296 ], [ 1, %153 ] + %158 = phi ptr [ %166, %.lr.ph296 ], [ %138, %153 ] + %.1215294 = phi i32 [ %165, %.lr.ph296 ], [ %154, %153 ] + store i32 0, ptr %158, align 4 + %159 = add nuw nsw i64 %indvars.iv341, 2 + %160 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %159 + %161 = load i32, ptr %160, align 4 + %162 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv341 + %163 = load i32, ptr %162, align 4 + %164 = add i32 %161, %.1215294 + %165 = sub i32 %164, %163 %indvars.iv.next342 = add nuw nsw i64 %indvars.iv341, 1 - %167 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next342 - %168 = load i32, ptr %167, align 4 - %169 = add nsw i32 %168, 1 - store i32 %169, ptr %167, align 4 - %170 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next342 - %171 = load i32, ptr %170, align 4 - %.not241 = icmp slt i32 %169, %171 + %166 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next342 + %167 = load i32, ptr %166, align 4 + %168 = add nsw i32 %167, 1 + store i32 %168, ptr %166, align 4 + %169 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next342 + %170 = load i32, ptr %169, align 4 + %.not241 = icmp slt i32 %168, %170 br i1 %.not241, label %.preheader266.backedge, label %.lr.ph296, !llvm.loop !60 -.loopexit270: ; preds = %.lr.ph278, %173 - %.3217.lcssa = phi i32 [ %174, %173 ], [ %185, %.lr.ph278 ] - %172 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv325 - store i32 %.3217.lcssa, ptr %172, align 4 +.loopexit270: ; preds = %.lr.ph278, %172 + %.3217.lcssa = phi i32 [ %173, %172 ], [ %184, %.lr.ph278 ] + %171 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv325 + store i32 %.3217.lcssa, ptr %171, align 4 %indvars.iv.next326 = add nuw nsw i64 %indvars.iv325, 1 %exitcond329.not = icmp eq i64 %indvars.iv.next326, %wide.trip.count328 - br i1 %exitcond329.not, label %.loopexit267, label %173, !llvm.loop !61 + br i1 %exitcond329.not, label %.loopexit267, label %172, !llvm.loop !61 -173: ; preds = %.lr.ph281, %.loopexit270 +172: ; preds = %.lr.ph281, %.loopexit270 %indvars.iv325 = phi i64 [ 1, %.lr.ph281 ], [ %indvars.iv.next326, %.loopexit270 ] %.2216280 = phi i32 [ 0, %.lr.ph281 ], [ %.3217.lcssa, %.loopexit270 ] - %174 = add nsw i32 %61, %.2216280 - %175 = load i32, ptr %8, align 16 - %176 = add nsw i32 %175, 1 - store i32 %176, ptr %8, align 16 - %177 = load i32, ptr %2, align 4 - %.not238274 = icmp slt i32 %176, %177 + %173 = add nsw i32 %61, %.2216280 + %174 = load i32, ptr %8, align 16 + %175 = add nsw i32 %174, 1 + store i32 %175, ptr %8, align 16 + %176 = load i32, ptr %2, align 4 + %.not238274 = icmp slt i32 %175, %176 br i1 %.not238274, label %.loopexit270, label %.lr.ph278 -.lr.ph278: ; preds = %173, %.lr.ph278 - %indvars.iv322 = phi i64 [ %indvars.iv.next323, %.lr.ph278 ], [ 0, %173 ] - %178 = phi ptr [ %186, %.lr.ph278 ], [ %8, %173 ] - %.3217276 = phi i32 [ %185, %.lr.ph278 ], [ %174, %173 ] - store i32 0, ptr %178, align 4 - %179 = add nuw nsw i64 %indvars.iv322, 2 - %180 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %179 - %181 = load i32, ptr %180, align 4 - %182 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv322 - %183 = load i32, ptr %182, align 4 - %184 = add i32 %181, %.3217276 - %185 = sub i32 %184, %183 +.lr.ph278: ; preds = %172, %.lr.ph278 + %indvars.iv322 = phi i64 [ %indvars.iv.next323, %.lr.ph278 ], [ 0, %172 ] + %177 = phi ptr [ %185, %.lr.ph278 ], [ %8, %172 ] + %.3217276 = phi i32 [ %184, %.lr.ph278 ], [ %173, %172 ] + store i32 0, ptr %177, align 4 + %178 = add nuw nsw i64 %indvars.iv322, 2 + %179 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %178 + %180 = load i32, ptr %179, align 4 + %181 = getelementptr inbounds nuw [34 x i32], ptr %9, i64 0, i64 %indvars.iv322 + %182 = load i32, ptr %181, align 4 + %183 = add i32 %180, %.3217276 + %184 = sub i32 %183, %182 %indvars.iv.next323 = add nuw nsw i64 %indvars.iv322, 1 - %186 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next323 - %187 = load i32, ptr %186, align 4 - %188 = add nsw i32 %187, 1 - store i32 %188, ptr %186, align 4 - %189 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next323 - %190 = load i32, ptr %189, align 4 - %.not238 = icmp slt i32 %188, %190 + %185 = getelementptr inbounds nuw [34 x i32], ptr %8, i64 0, i64 %indvars.iv.next323 + %186 = load i32, ptr %185, align 4 + %187 = add nsw i32 %186, 1 + store i32 %187, ptr %185, align 4 + %188 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next323 + %189 = load i32, ptr %188, align 4 + %.not238 = icmp slt i32 %187, %189 br i1 %.not238, label %.loopexit270, label %.lr.ph278, !llvm.loop !62 -.loopexit267: ; preds = %.loopexit270, %._crit_edge291, %143, %.loopexit268 - %.2 = phi i32 [ %.1, %.loopexit268 ], [ %.1, %143 ], [ %.1, %._crit_edge291 ], [ 0, %.loopexit270 ] +.loopexit267: ; preds = %.loopexit270, %._crit_edge291, %142, %.loopexit268 + %.2 = phi i32 [ %.1, %.loopexit268 ], [ %.1, %142 ], [ %.1, %._crit_edge291 ], [ 0, %.loopexit270 ] %.not242 = icmp eq ptr %.0, %3 br i1 %.not242, label %.loopexit, label %.lr.ph303.preheader .lr.ph303.preheader: ; preds = %.loopexit267 store i32 0, ptr %3, align 4 - %191 = and i32 %0, 1 - %192 = zext nneg i32 %191 to i64 - %193 = zext nneg i32 %0 to i64 + %190 = and i32 %0, 1 + %191 = zext nneg i32 %190 to i64 + %192 = zext nneg i32 %0 to i64 br label %.lr.ph303 .lr.ph303: ; preds = %.lr.ph303.preheader, %.lr.ph303 - %indvars.iv347 = phi i64 [ %192, %.lr.ph303.preheader ], [ %indvars.iv.next348, %.lr.ph303 ] - %194 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv347 - %195 = load i32, ptr %194, align 4 - %196 = add nuw nsw i64 %indvars.iv347, 1 - %197 = getelementptr inbounds nuw i32, ptr %.0, i64 %196 - %198 = load i32, ptr %197, align 4 - %199 = sext i32 %195 to i64 - %200 = getelementptr inbounds i32, ptr %3, i64 %199 - %201 = trunc nuw nsw i64 %indvars.iv347 to i32 - store i32 %201, ptr %200, align 4 - %202 = sext i32 %198 to i64 - %203 = getelementptr inbounds i32, ptr %3, i64 %202 - %204 = trunc nuw nsw i64 %196 to i32 - store i32 %204, ptr %203, align 4 + %indvars.iv347 = phi i64 [ %191, %.lr.ph303.preheader ], [ %indvars.iv.next348, %.lr.ph303 ] + %193 = getelementptr inbounds nuw i32, ptr %.0, i64 %indvars.iv347 + %194 = load i32, ptr %193, align 4 + %195 = add nuw nsw i64 %indvars.iv347, 1 + %196 = getelementptr inbounds nuw i32, ptr %.0, i64 %195 + %197 = load i32, ptr %196, align 4 + %198 = sext i32 %194 to i64 + %199 = getelementptr inbounds i32, ptr %3, i64 %198 + %200 = trunc nuw nsw i64 %indvars.iv347 to i32 + store i32 %200, ptr %199, align 4 + %201 = sext i32 %197 to i64 + %202 = getelementptr inbounds i32, ptr %3, i64 %201 + %203 = trunc nuw nsw i64 %195 to i32 + store i32 %203, ptr %202, align 4 %indvars.iv.next348 = add nuw nsw i64 %indvars.iv347, 2 - %205 = icmp samesign ult i64 %indvars.iv.next348, %193 - br i1 %205, label %.lr.ph303, label %.loopexit, !llvm.loop !63 + %204 = icmp samesign ult i64 %indvars.iv.next348, %192 + br i1 %204, label %.lr.ph303, label %.loopexit, !llvm.loop !63 .loopexit: ; preds = %.lr.ph303, %.thread262, %.loopexit267 %.0210 = phi i32 [ %.2, %.loopexit267 ], [ 2, %.thread262 ], [ %.2, %.lr.ph303 ] - %206 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %0) - %207 = icmp samesign ult i32 %206, 2 - br i1 %207, label %208, label %215 - -208: ; preds = %.loopexit - %209 = sext i32 %.0210 to i64 - %210 = getelementptr inbounds [32 x [2 x double]], ptr @_ZN2cvL6DFTTabE, i64 0, i64 %209 - %211 = load double, ptr %210, align 16 - %212 = getelementptr inbounds nuw i8, ptr %210, i64 8 - %213 = load double, ptr %212, align 8 - %214 = fneg double %213 - br label %222 - -215: ; preds = %.loopexit - %216 = sitofp i32 %0 to double - %217 = fdiv double 0xC01921FB54442D18, %216 - %218 = tail call double @sin(double noundef %217) #19 - %219 = fneg double %218 - %220 = tail call double @llvm.fmuladd.f64(double %219, double %218, double 1.000000e+00) - %221 = tail call double @sqrt(double noundef %220) #19 - br label %222 - -222: ; preds = %215, %208 - %.sroa.5.0 = phi double [ %214, %208 ], [ %218, %215 ] - %.sroa.0250.0 = phi double [ %211, %208 ], [ %221, %215 ] - %223 = add nsw i32 %0, 1 - %224 = sdiv i32 %223, 2 - switch i32 %4, label %247 [ - i32 16, label %225 - i32 8, label %254 + %205 = tail call range(i32 0, 33) i32 @llvm.ctpop.i32(i32 %0) + %206 = icmp samesign ult i32 %205, 2 + br i1 %206, label %207, label %214 + +207: ; preds = %.loopexit + %208 = sext i32 %.0210 to i64 + %209 = getelementptr inbounds [32 x [2 x double]], ptr @_ZN2cvL6DFTTabE, i64 0, i64 %208 + %210 = load double, ptr %209, align 16 + %211 = getelementptr inbounds nuw i8, ptr %209, i64 8 + %212 = load double, ptr %211, align 8 + %213 = fneg double %212 + br label %221 + +214: ; preds = %.loopexit + %215 = sitofp i32 %0 to double + %216 = fdiv double 0xC01921FB54442D18, %215 + %217 = tail call double @sin(double noundef %216) #19 + %218 = fneg double %217 + %219 = tail call double @llvm.fmuladd.f64(double %218, double %217, double 1.000000e+00) + %220 = tail call double @sqrt(double noundef %219) #19 + br label %221 + +221: ; preds = %214, %207 + %.sroa.5.0 = phi double [ %213, %207 ], [ %217, %214 ] + %.sroa.0250.0 = phi double [ %210, %207 ], [ %220, %214 ] + %222 = add nsw i32 %0, 1 + %223 = sdiv i32 %222, 2 + switch i32 %4, label %246 [ + i32 16, label %224 + i32 8, label %253 ] -225: ; preds = %222 +224: ; preds = %221 store double 1.000000e+00, ptr %5, align 8 - %226 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store double 0.000000e+00, ptr %226, align 8 - %227 = and i32 %0, 1 - %228 = icmp eq i32 %227, 0 - br i1 %228, label %229, label %233 - -229: ; preds = %225 - %230 = sext i32 %224 to i64 - %231 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %230 - store double -1.000000e+00, ptr %231, align 8 - %232 = getelementptr inbounds nuw i8, ptr %231, i64 8 - store double 0.000000e+00, ptr %232, align 8 - br label %233 - -233: ; preds = %229, %225 - %234 = icmp sgt i32 %0, 2 - br i1 %234, label %.lr.ph316, label %.thread261 - -.lr.ph316: ; preds = %233 - %235 = fneg double %.sroa.5.0 - %236 = zext nneg i32 %0 to i64 - %smax364 = tail call i32 @llvm.smax.i32(i32 %224, i32 2) + %225 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store double 0.000000e+00, ptr %225, align 8 + %226 = and i32 %0, 1 + %227 = icmp eq i32 %226, 0 + br i1 %227, label %228, label %232 + +228: ; preds = %224 + %229 = sext i32 %223 to i64 + %230 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %229 + store double -1.000000e+00, ptr %230, align 8 + %231 = getelementptr inbounds nuw i8, ptr %230, i64 8 + store double 0.000000e+00, ptr %231, align 8 + br label %232 + +232: ; preds = %228, %224 + %233 = icmp sgt i32 %0, 2 + br i1 %233, label %.lr.ph316, label %.thread261 + +.lr.ph316: ; preds = %232 + %234 = fneg double %.sroa.5.0 + %235 = zext nneg i32 %0 to i64 + %smax364 = tail call i32 @llvm.smax.i32(i32 %223, i32 2) %wide.trip.count365 = zext nneg i32 %smax364 to i64 - br label %237 - -237: ; preds = %.lr.ph316, %237 - %indvars.iv361 = phi i64 [ 1, %.lr.ph316 ], [ %indvars.iv.next362, %237 ] - %.sroa.0253.1313 = phi double [ %.sroa.0250.0, %.lr.ph316 ], [ %244, %237 ] - %.sroa.11.1312 = phi double [ %.sroa.5.0, %.lr.ph316 ], [ %246, %237 ] - %238 = getelementptr inbounds nuw %"class.cv::Complex", ptr %5, i64 %indvars.iv361 - store double %.sroa.0253.1313, ptr %238, align 8 - %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %238, i64 8 + br label %236 + +236: ; preds = %.lr.ph316, %236 + %indvars.iv361 = phi i64 [ 1, %.lr.ph316 ], [ %indvars.iv.next362, %236 ] + %.sroa.0253.1313 = phi double [ %.sroa.0250.0, %.lr.ph316 ], [ %243, %236 ] + %.sroa.11.1312 = phi double [ %.sroa.5.0, %.lr.ph316 ], [ %245, %236 ] + %237 = getelementptr inbounds nuw %"class.cv::Complex", ptr %5, i64 %indvars.iv361 + store double %.sroa.0253.1313, ptr %237, align 8 + %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %237, i64 8 store double %.sroa.11.1312, ptr %.sroa.11.0..sroa_idx, align 8 - %239 = sub nsw i64 %236, %indvars.iv361 - %240 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %239 - store double %.sroa.0253.1313, ptr %240, align 8 - %241 = fneg double %.sroa.11.1312 - %242 = getelementptr inbounds nuw i8, ptr %240, i64 8 - store double %241, ptr %242, align 8 - %243 = fmul double %.sroa.11.1312, %235 - %244 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.0250.0, double %243) - %245 = fmul double %.sroa.0250.0, %.sroa.11.1312 - %246 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.5.0, double %245) + %238 = sub nsw i64 %235, %indvars.iv361 + %239 = getelementptr inbounds %"class.cv::Complex", ptr %5, i64 %238 + store double %.sroa.0253.1313, ptr %239, align 8 + %240 = fneg double %.sroa.11.1312 + %241 = getelementptr inbounds nuw i8, ptr %239, i64 8 + store double %240, ptr %241, align 8 + %242 = fmul double %.sroa.11.1312, %234 + %243 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.0250.0, double %242) + %244 = fmul double %.sroa.0250.0, %.sroa.11.1312 + %245 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.1313, double %.sroa.5.0, double %244) %indvars.iv.next362 = add nuw nsw i64 %indvars.iv361, 1 %exitcond366.not = icmp eq i64 %indvars.iv.next362, %wide.trip.count365 - br i1 %exitcond366.not, label %.thread261, label %237, !llvm.loop !64 + br i1 %exitcond366.not, label %.thread261, label %236, !llvm.loop !64 -247: ; preds = %222 +246: ; preds = %221 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #19 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %13) - to label %248 unwind label %250 + to label %247 unwind label %249 -248: ; preds = %247 +247: ; preds = %246 invoke void @_ZN2cv5errorEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcS9_i(i32 noundef -215, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @__func__._ZN2cvL7DFTInitEiiPKiPiiPvi, ptr noundef nonnull @.str.1, i32 noundef 375) #21 - to label %249 unwind label %252 + to label %248 unwind label %251 -249: ; preds = %248 +248: ; preds = %247 unreachable -250: ; preds = %247 - %251 = landingpad { ptr, i32 } +249: ; preds = %246 + %250 = landingpad { ptr, i32 } cleanup - br label %279 + br label %278 -252: ; preds = %248 - %253 = landingpad { ptr, i32 } +251: ; preds = %247 + %252 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #19 - br label %279 + br label %278 -254: ; preds = %222 +253: ; preds = %221 store float 1.000000e+00, ptr %5, align 4 - %255 = getelementptr inbounds nuw i8, ptr %5, i64 4 - store float 0.000000e+00, ptr %255, align 4 - %256 = and i32 %0, 1 - %257 = icmp eq i32 %256, 0 - br i1 %257, label %258, label %262 - -258: ; preds = %254 - %259 = sext i32 %224 to i64 - %260 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %259 - store float -1.000000e+00, ptr %260, align 4 - %261 = getelementptr inbounds nuw i8, ptr %260, i64 4 - store float 0.000000e+00, ptr %261, align 4 - br label %262 - -262: ; preds = %258, %254 - %263 = icmp sgt i32 %0, 2 - br i1 %263, label %.lr.ph311, label %.thread261 - -.lr.ph311: ; preds = %262 - %264 = fneg double %.sroa.5.0 - %265 = zext nneg i32 %0 to i64 - %smax358 = tail call i32 @llvm.smax.i32(i32 %224, i32 2) + %254 = getelementptr inbounds nuw i8, ptr %5, i64 4 + store float 0.000000e+00, ptr %254, align 4 + %255 = and i32 %0, 1 + %256 = icmp eq i32 %255, 0 + br i1 %256, label %257, label %261 + +257: ; preds = %253 + %258 = sext i32 %223 to i64 + %259 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %258 + store float -1.000000e+00, ptr %259, align 4 + %260 = getelementptr inbounds nuw i8, ptr %259, i64 4 + store float 0.000000e+00, ptr %260, align 4 + br label %261 + +261: ; preds = %257, %253 + %262 = icmp sgt i32 %0, 2 + br i1 %262, label %.lr.ph311, label %.thread261 + +.lr.ph311: ; preds = %261 + %263 = fneg double %.sroa.5.0 + %264 = zext nneg i32 %0 to i64 + %smax358 = tail call i32 @llvm.smax.i32(i32 %223, i32 2) %wide.trip.count359 = zext nneg i32 %smax358 to i64 - br label %266 - -266: ; preds = %.lr.ph311, %266 - %indvars.iv355 = phi i64 [ 1, %.lr.ph311 ], [ %indvars.iv.next356, %266 ] - %.sroa.0253.2308 = phi double [ %.sroa.0250.0, %.lr.ph311 ], [ %276, %266 ] - %.sroa.11.2307 = phi double [ %.sroa.5.0, %.lr.ph311 ], [ %278, %266 ] - %267 = fptrunc double %.sroa.0253.2308 to float - %268 = getelementptr inbounds nuw %"class.cv::Complex.13", ptr %5, i64 %indvars.iv355 - store float %267, ptr %268, align 4 - %269 = fptrunc double %.sroa.11.2307 to float - %270 = getelementptr inbounds nuw i8, ptr %268, i64 4 - store float %269, ptr %270, align 4 - %271 = sub nsw i64 %265, %indvars.iv355 - %272 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %271 - store float %267, ptr %272, align 4 - %273 = fneg float %269 - %274 = getelementptr inbounds nuw i8, ptr %272, i64 4 - store float %273, ptr %274, align 4 - %275 = fmul double %.sroa.11.2307, %264 - %276 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.0250.0, double %275) - %277 = fmul double %.sroa.0250.0, %.sroa.11.2307 - %278 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.5.0, double %277) + br label %265 + +265: ; preds = %.lr.ph311, %265 + %indvars.iv355 = phi i64 [ 1, %.lr.ph311 ], [ %indvars.iv.next356, %265 ] + %.sroa.0253.2308 = phi double [ %.sroa.0250.0, %.lr.ph311 ], [ %275, %265 ] + %.sroa.11.2307 = phi double [ %.sroa.5.0, %.lr.ph311 ], [ %277, %265 ] + %266 = fptrunc double %.sroa.0253.2308 to float + %267 = getelementptr inbounds nuw %"class.cv::Complex.13", ptr %5, i64 %indvars.iv355 + store float %266, ptr %267, align 4 + %268 = fptrunc double %.sroa.11.2307 to float + %269 = getelementptr inbounds nuw i8, ptr %267, i64 4 + store float %268, ptr %269, align 4 + %270 = sub nsw i64 %264, %indvars.iv355 + %271 = getelementptr inbounds %"class.cv::Complex.13", ptr %5, i64 %270 + store float %266, ptr %271, align 4 + %272 = fneg float %268 + %273 = getelementptr inbounds nuw i8, ptr %271, i64 4 + store float %272, ptr %273, align 4 + %274 = fmul double %.sroa.11.2307, %263 + %275 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.0250.0, double %274) + %276 = fmul double %.sroa.0250.0, %.sroa.11.2307 + %277 = tail call double @llvm.fmuladd.f64(double %.sroa.0253.2308, double %.sroa.5.0, double %276) %indvars.iv.next356 = add nuw nsw i64 %indvars.iv355, 1 %exitcond360.not = icmp eq i64 %indvars.iv.next356, %wide.trip.count359 - br i1 %exitcond360.not, label %.thread261, label %266, !llvm.loop !65 + br i1 %exitcond360.not, label %.thread261, label %265, !llvm.loop !65 -.thread261: ; preds = %266, %237, %.preheader, %262, %233, %._crit_edge306, %29, %28 +.thread261: ; preds = %265, %236, %.preheader, %261, %232, %._crit_edge306, %29, %28 ret void -279: ; preds = %250, %252, %35, %37 - %.sink = phi ptr [ %11, %37 ], [ %11, %35 ], [ %13, %252 ], [ %13, %250 ] - %.pn244.pn = phi { ptr, i32 } [ %38, %37 ], [ %36, %35 ], [ %253, %252 ], [ %251, %250 ] +278: ; preds = %249, %251, %35, %37 + %.sink = phi ptr [ %11, %37 ], [ %11, %35 ], [ %13, %251 ], [ %13, %249 ] + %.pn244.pn = phi { ptr, i32 } [ %38, %37 ], [ %36, %35 ], [ %252, %251 ], [ %250, %249 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %.sink) #19 resume { ptr, i32 } %.pn244.pn } diff --git a/bench/opencv/optimized/loadsave.cpp.ll b/bench/opencv/optimized/loadsave.cpp.ll index 4104b0e9735..5057b343fdb 100644 --- a/bench/opencv/optimized/loadsave.cpp.ll +++ b/bench/opencv/optimized/loadsave.cpp.ll @@ -9459,15 +9459,15 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5) #27 br label %81 -79: ; preds = %.invoke, %115 +79: ; preds = %.invoke, %116 %80 = landingpad { ptr, i32 } cleanup - br label %129 + br label %130 81: ; preds = %78, %56 %.pn.pn = phi { ptr, i32 } [ %.pn, %78 ], [ %57, %56 ] invoke void @__cxa_end_catch() - to label %129 unwind label %130 + to label %130 unwind label %131 82: ; preds = %89, %52 %83 = landingpad { ptr, i32 } @@ -9535,9 +9535,9 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 br label %111 .invoke.sink.split: ; preds = %104, %72 - %.sink42 = phi ptr [ %6, %72 ], [ %8, %104 ] + %.sink40 = phi ptr [ %6, %72 ], [ %8, %104 ] %.sink = phi ptr [ %5, %72 ], [ %7, %104 ] - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink42) #27 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink40) #27 call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %.sink) #27 br label %.invoke @@ -9547,72 +9547,72 @@ _ZN2cvL8calcTypeEii.exit: ; preds = %2, %28, %31 .critedge: ; preds = %.invoke, %44 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %0) #27 - br label %128 + br label %129 111: ; preds = %110, %82 %.pn33.pn = phi { ptr, i32 } [ %.pn33, %110 ], [ %83, %82 ] invoke void @__cxa_end_catch() - to label %129 unwind label %130 + to label %130 unwind label %131 112: ; preds = %44 %113 = load i32, ptr %17, align 8 %114 = and i32 %113, 128 - %.not41 = icmp eq i32 %114, 0 - br i1 %.not41, label %115, label %_ZN2cv11ExifEntry_tD2Ev.exit - -115: ; preds = %112 - %116 = load ptr, ptr %11, align 8 - invoke void @_ZNK2cv16BaseImageDecoder10getExifTagENS_11ExifTagNameE(ptr dead_on_unwind nonnull writable sret(%"struct.cv::ExifEntry_t") align 8 %9, ptr noundef nonnull align 8 dereferenceable(272) %116, i32 noundef 274) - to label %117 unwind label %79 - -117: ; preds = %115 - %118 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %119 = getelementptr inbounds nuw i8, ptr %10, i64 16 - store i64 0, ptr %119, align 8 + %115 = icmp eq i32 %114, 0 + br i1 %115, label %116, label %_ZN2cv11ExifEntry_tD2Ev.exit + +116: ; preds = %112 + %117 = load ptr, ptr %11, align 8 + invoke void @_ZNK2cv16BaseImageDecoder10getExifTagENS_11ExifTagNameE(ptr dead_on_unwind nonnull writable sret(%"struct.cv::ExifEntry_t") align 8 %9, ptr noundef nonnull align 8 dereferenceable(272) %117, i32 noundef 274) + to label %118 unwind label %79 + +118: ; preds = %116 + %119 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %120 = getelementptr inbounds nuw i8, ptr %10, i64 16 + store i64 0, ptr %120, align 8 store i32 33619968, ptr %10, align 8 - store ptr %4, ptr %118, align 8 - %120 = getelementptr inbounds nuw i8, ptr %9, i64 80 - %.val = load i16, ptr %120, align 8 - %121 = getelementptr inbounds nuw i8, ptr %9, i64 82 - %.val40 = load i16, ptr %121, align 2 - invoke fastcc void @_ZN2cvL20ApplyExifOrientationENS_11ExifEntry_tERKNS_12_OutputArrayE(i16 %.val, i16 %.val40, ptr noundef nonnull align 8 dereferenceable(24) %10) - to label %122 unwind label %126 + store ptr %4, ptr %119, align 8 + %121 = getelementptr inbounds nuw i8, ptr %9, i64 80 + %.val = load i16, ptr %121, align 8 + %122 = getelementptr inbounds nuw i8, ptr %9, i64 82 + %.val39 = load i16, ptr %122, align 2 + invoke fastcc void @_ZN2cvL20ApplyExifOrientationENS_11ExifEntry_tERKNS_12_OutputArrayE(i16 %.val, i16 %.val39, ptr noundef nonnull align 8 dereferenceable(24) %10) + to label %123 unwind label %127 -122: ; preds = %117 - %123 = getelementptr inbounds nuw i8, ptr %9, i64 24 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #27 - %124 = load ptr, ptr %9, align 8 - %.not.i.i.i.i = icmp eq ptr %124, null - br i1 %.not.i.i.i.i, label %_ZN2cv11ExifEntry_tD2Ev.exit, label %125 - -125: ; preds = %122 - call void @_ZdlPv(ptr noundef nonnull %124) #30 +123: ; preds = %118 + %124 = getelementptr inbounds nuw i8, ptr %9, i64 24 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #27 + %125 = load ptr, ptr %9, align 8 + %.not.i.i.i.i = icmp eq ptr %125, null + br i1 %.not.i.i.i.i, label %_ZN2cv11ExifEntry_tD2Ev.exit, label %126 + +126: ; preds = %123 + call void @_ZdlPv(ptr noundef nonnull %125) #30 br label %_ZN2cv11ExifEntry_tD2Ev.exit -126: ; preds = %117 - %127 = landingpad { ptr, i32 } +127: ; preds = %118 + %128 = landingpad { ptr, i32 } cleanup call void @_ZN2cv11ExifEntry_tD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %9) #27 - br label %129 + br label %130 -_ZN2cv11ExifEntry_tD2Ev.exit: ; preds = %125, %122, %112 +_ZN2cv11ExifEntry_tD2Ev.exit: ; preds = %126, %123, %112 call void @_ZN2cv3MatC1EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull align 8 dereferenceable(96) %4) #27 - br label %128 + br label %129 -128: ; preds = %_ZN2cv11ExifEntry_tD2Ev.exit, %.critedge +129: ; preds = %_ZN2cv11ExifEntry_tD2Ev.exit, %.critedge call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #27 ret void -129: ; preds = %111, %81, %126, %79 - %.pn37.pn = phi { ptr, i32 } [ %127, %126 ], [ %80, %79 ], [ %.pn33.pn, %111 ], [ %.pn.pn, %81 ] +130: ; preds = %111, %81, %127, %79 + %.pn36.pn = phi { ptr, i32 } [ %128, %127 ], [ %80, %79 ], [ %.pn33.pn, %111 ], [ %.pn.pn, %81 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #27 - resume { ptr, i32 } %.pn37.pn + resume { ptr, i32 } %.pn36.pn -130: ; preds = %111, %81 - %131 = landingpad { ptr, i32 } +131: ; preds = %111, %81 + %132 = landingpad { ptr, i32 } catch ptr null - %132 = extractvalue { ptr, i32 } %131, 0 - call void @__clang_call_terminate(ptr %132) #28 + %133 = extractvalue { ptr, i32 } %132, 0 + call void @__clang_call_terminate(ptr %133) #28 unreachable } diff --git a/bench/opencv/optimized/qrcode_encoder.cpp.ll b/bench/opencv/optimized/qrcode_encoder.cpp.ll index 290436e954a..284ae25aeca 100644 --- a/bench/opencv/optimized/qrcode_encoder.cpp.ll +++ b/bench/opencv/optimized/qrcode_encoder.cpp.ll @@ -2086,8 +2086,8 @@ _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i: ; preds = %.lr.ph.i.i invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %19, ptr nonnull %5, ptr nonnull %6) to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit unwind label %20 -common.resume: ; preds = %127, %88, %20 - %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %89, %88 ], [ %128, %127 ] +common.resume: ; preds = %128, %87, %20 + %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %88, %87 ], [ %129, %128 ] resume { ptr, i32 } %common.resume.op 20: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i @@ -2236,160 +2236,160 @@ _ZN2cvL9mapSymbolEc.exit: ; preds = %33, %37, %39, %40, _ZN2cvL9mapSymbolEc.exit34: ; preds = %54, %58, %60, %61, %62, %63, %64, %65, %66, %67, %68 %.0.i33 = phi i32 [ %55, %54 ], [ %59, %58 ], [ 44, %68 ], [ 43, %67 ], [ 42, %66 ], [ 41, %65 ], [ 40, %64 ], [ 39, %63 ], [ 38, %62 ], [ 37, %61 ], [ 36, %60 ] %69 = icmp eq i32 %.0.i, -1 - %70 = icmp eq i32 %.0.i33, -1 - %or.cond = select i1 %69, i1 true, i1 %70 - br i1 %or.cond, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %71 - -71: ; preds = %_ZN2cvL9mapSymbolEc.exit34 - %72 = mul nuw nsw i32 %.0.i, 45 - %73 = add nsw i32 %.0.i33, %72 - %74 = tail call noalias noundef nonnull dereferenceable(11) ptr @_Znwm(i64 noundef 11) #28 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 11 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %74, i8 0, i64 11, i1 false) + br i1 %69, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %70 + +70: ; preds = %_ZN2cvL9mapSymbolEc.exit34 + %71 = mul nuw nsw i32 %.0.i, 45 + %72 = add nsw i32 %.0.i33, %71 + %73 = tail call noalias noundef nonnull dereferenceable(11) ptr @_Znwm(i64 noundef 11) #28 + %74 = getelementptr inbounds nuw i8, ptr %73, i64 11 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(11) %73, i8 0, i64 11, i1 false) br label %.lr.ph.i.i35 -.lr.ph.i.i35: ; preds = %.lr.ph.i.i35, %71 - %indvars.iv.i.i36 = phi i64 [ 0, %71 ], [ %indvars.iv.next.i.i37, %.lr.ph.i.i35 ] - %76 = trunc nuw nsw i64 %indvars.iv.i.i36 to i32 - %77 = ashr i32 %73, %76 - %78 = srem i32 %77, 2 - %79 = trunc nsw i32 %78 to i8 - %80 = xor i64 %indvars.iv.i.i36, -1 - %81 = getelementptr i8, ptr %75, i64 %80 - store i8 %79, ptr %81, align 1 +.lr.ph.i.i35: ; preds = %.lr.ph.i.i35, %70 + %indvars.iv.i.i36 = phi i64 [ 0, %70 ], [ %indvars.iv.next.i.i37, %.lr.ph.i.i35 ] + %75 = trunc nuw nsw i64 %indvars.iv.i.i36 to i32 + %76 = ashr i32 %72, %75 + %77 = srem i32 %76, 2 + %78 = trunc nsw i32 %77 to i8 + %79 = xor i64 %indvars.iv.i.i36, -1 + %80 = getelementptr i8, ptr %74, i64 %79 + store i8 %78, ptr %80, align 1 %indvars.iv.next.i.i37 = add nuw nsw i64 %indvars.iv.i.i36, 1 %exitcond.not.i.i38 = icmp eq i64 %indvars.iv.next.i.i37, 11 br i1 %exitcond.not.i.i38, label %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39, label %.lr.ph.i.i35, !llvm.loop !10 _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39: ; preds = %.lr.ph.i.i35 - %82 = load ptr, ptr %13, align 8 - %83 = load ptr, ptr %2, align 8 + %81 = load ptr, ptr %13, align 8 + %82 = load ptr, ptr %2, align 8 + %83 = ptrtoint ptr %81 to i64 %84 = ptrtoint ptr %82 to i64 - %85 = ptrtoint ptr %83 to i64 - %86 = sub i64 %84, %85 - %87 = getelementptr inbounds i8, ptr %83, i64 %86 - invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %87, ptr nonnull %74, ptr nonnull %75) - to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40 unwind label %88 + %85 = sub i64 %83, %84 + %86 = getelementptr inbounds i8, ptr %82, i64 %85 + invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %86, ptr nonnull %73, ptr nonnull %74) + to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40 unwind label %87 -88: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 - %89 = landingpad { ptr, i32 } +87: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 + %88 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %74) #29 + tail call void @_ZdlPv(ptr noundef nonnull %73) #29 br label %common.resume _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i39 - tail call void @_ZdlPv(ptr noundef nonnull %74) #29 + tail call void @_ZdlPv(ptr noundef nonnull %73) #29 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2 - %90 = trunc nuw i64 %indvars.iv.next to i32 - %91 = icmp sgt i32 %27, %90 - br i1 %91, label %.lr.ph, label %._crit_edge, !llvm.loop !14 + %89 = trunc nuw i64 %indvars.iv.next to i32 + %90 = icmp sgt i32 %27, %89 + br i1 %90, label %.lr.ph, label %._crit_edge, !llvm.loop !14 ._crit_edge: ; preds = %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit40, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit - %92 = and i32 %26, 1 - %.not = icmp eq i32 %92, 0 - br i1 %.not, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %93 + %91 = and i32 %26, 1 + %.not = icmp eq i32 %91, 0 + br i1 %.not, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %92 -93: ; preds = %._crit_edge +92: ; preds = %._crit_edge call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv(ptr dead_on_unwind nonnull writable sret(%"class.std::reverse_iterator") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %94 = load i64, ptr %4, align 8 - %95 = inttoptr i64 %94 to ptr - %96 = getelementptr inbounds i8, ptr %95, i64 -1 - %97 = load i8, ptr %96, align 1 - %98 = sext i8 %97 to i32 - %99 = add i8 %97, -48 - %or.cond.i41 = icmp ult i8 %99, 10 - br i1 %or.cond.i41, label %_ZN2cvL9mapSymbolEc.exit44, label %100 - -100: ; preds = %93 - %101 = add i8 %97, -65 - %or.cond5.i42 = icmp ult i8 %101, 26 - br i1 %or.cond5.i42, label %_ZN2cvL9mapSymbolEc.exit44, label %102 - -102: ; preds = %100 - switch i8 %97, label %_ZN2cvL9mapSymbolEc.exit44.thread53 [ + %93 = load i64, ptr %4, align 8 + %94 = inttoptr i64 %93 to ptr + %95 = getelementptr inbounds i8, ptr %94, i64 -1 + %96 = load i8, ptr %95, align 1 + %97 = sext i8 %96 to i32 + %98 = add i8 %96, -48 + %or.cond.i41 = icmp ult i8 %98, 10 + br i1 %or.cond.i41, label %99, label %101 + +99: ; preds = %92 + %100 = add nsw i32 %97, -48 + br label %_ZN2cvL9mapSymbolEc.exit44.thread + +101: ; preds = %92 + %102 = add i8 %96, -65 + %or.cond5.i42 = icmp ult i8 %102, 26 + br i1 %or.cond5.i42, label %103, label %105 + +103: ; preds = %101 + %104 = add nsw i32 %97, -55 + br label %_ZN2cvL9mapSymbolEc.exit44.thread + +105: ; preds = %101 + switch i8 %96, label %_ZN2cvL9mapSymbolEc.exit44.thread53 [ i8 32, label %_ZN2cvL9mapSymbolEc.exit44.thread - i8 36, label %103 - i8 37, label %104 - i8 42, label %105 - i8 43, label %106 - i8 45, label %107 - i8 46, label %108 - i8 47, label %109 - i8 58, label %110 + i8 36, label %106 + i8 37, label %107 + i8 42, label %108 + i8 43, label %109 + i8 45, label %110 + i8 46, label %111 + i8 47, label %112 + i8 58, label %113 ] -103: ; preds = %102 +106: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -104: ; preds = %102 +107: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -105: ; preds = %102 +108: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -106: ; preds = %102 +109: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -107: ; preds = %102 +110: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -108: ; preds = %102 +111: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -109: ; preds = %102 +112: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -110: ; preds = %102 +113: ; preds = %105 br label %_ZN2cvL9mapSymbolEc.exit44.thread -_ZN2cvL9mapSymbolEc.exit44: ; preds = %100, %93 - %.sink = phi i32 [ -48, %93 ], [ -55, %100 ] - %111 = add nsw i32 %.sink, %98 - %112 = icmp eq i32 %111, -1 - br i1 %112, label %_ZN2cvL9mapSymbolEc.exit44.thread53, label %_ZN2cvL9mapSymbolEc.exit44.thread - -_ZN2cvL9mapSymbolEc.exit44.thread: ; preds = %102, %103, %104, %105, %106, %107, %108, %109, %110, %_ZN2cvL9mapSymbolEc.exit44 - %.0.i4352 = phi i32 [ %111, %_ZN2cvL9mapSymbolEc.exit44 ], [ 36, %102 ], [ 37, %103 ], [ 38, %104 ], [ 39, %105 ], [ 40, %106 ], [ 41, %107 ], [ 42, %108 ], [ 43, %109 ], [ 44, %110 ] - %113 = call noalias noundef nonnull dereferenceable(6) ptr @_Znwm(i64 noundef 6) #28 - %114 = getelementptr inbounds nuw i8, ptr %113, i64 6 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %113, i8 0, i64 6, i1 false) +_ZN2cvL9mapSymbolEc.exit44.thread: ; preds = %103, %99, %105, %106, %107, %108, %109, %110, %111, %112, %113 + %.0.i4352 = phi i32 [ 36, %105 ], [ 37, %106 ], [ 38, %107 ], [ 39, %108 ], [ 40, %109 ], [ 41, %110 ], [ 42, %111 ], [ 43, %112 ], [ 44, %113 ], [ %100, %99 ], [ %104, %103 ] + %114 = call noalias noundef nonnull dereferenceable(6) ptr @_Znwm(i64 noundef 6) #28 + %115 = getelementptr inbounds nuw i8, ptr %114, i64 6 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %114, i8 0, i64 6, i1 false) br label %.lr.ph.i.i45 .lr.ph.i.i45: ; preds = %.lr.ph.i.i45, %_ZN2cvL9mapSymbolEc.exit44.thread %indvars.iv.i.i46 = phi i64 [ 0, %_ZN2cvL9mapSymbolEc.exit44.thread ], [ %indvars.iv.next.i.i47, %.lr.ph.i.i45 ] - %115 = trunc nuw nsw i64 %indvars.iv.i.i46 to i32 - %116 = ashr i32 %.0.i4352, %115 - %117 = srem i32 %116, 2 - %118 = trunc nsw i32 %117 to i8 - %119 = xor i64 %indvars.iv.i.i46, -1 - %120 = getelementptr i8, ptr %114, i64 %119 - store i8 %118, ptr %120, align 1 + %116 = trunc nuw nsw i64 %indvars.iv.i.i46 to i32 + %117 = ashr i32 %.0.i4352, %116 + %118 = srem i32 %117, 2 + %119 = trunc nsw i32 %118 to i8 + %120 = xor i64 %indvars.iv.i.i46, -1 + %121 = getelementptr i8, ptr %115, i64 %120 + store i8 %119, ptr %121, align 1 %indvars.iv.next.i.i47 = add nuw nsw i64 %indvars.iv.i.i46, 1 %exitcond.not.i.i48 = icmp eq i64 %indvars.iv.next.i.i47, 6 br i1 %exitcond.not.i.i48, label %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49, label %.lr.ph.i.i45, !llvm.loop !10 _ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49: ; preds = %.lr.ph.i.i45 - %121 = load ptr, ptr %13, align 8 - %122 = load ptr, ptr %2, align 8 - %123 = ptrtoint ptr %121 to i64 + %122 = load ptr, ptr %13, align 8 + %123 = load ptr, ptr %2, align 8 %124 = ptrtoint ptr %122 to i64 - %125 = sub i64 %123, %124 - %126 = getelementptr inbounds i8, ptr %122, i64 %125 - invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %126, ptr nonnull %113, ptr nonnull %114) - to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 unwind label %127 + %125 = ptrtoint ptr %123 to i64 + %126 = sub i64 %124, %125 + %127 = getelementptr inbounds i8, ptr %123, i64 %126 + invoke void @_ZNSt6vectorIhSaIhEE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPhS1_EEEEvS6_T_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %127, ptr nonnull %114, ptr nonnull %115) + to label %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 unwind label %128 -127: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 - %128 = landingpad { ptr, i32 } +128: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 + %129 = landingpad { ptr, i32 } cleanup - call void @_ZdlPv(ptr noundef nonnull %113) #29 + call void @_ZdlPv(ptr noundef nonnull %114) #29 br label %common.resume _ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50: ; preds = %_ZN2cvL8decToBinEiiRSt6vectorIhSaIhEE.exit.i49 - call void @_ZdlPv(ptr noundef nonnull %113) #29 + call void @_ZdlPv(ptr noundef nonnull %114) #29 br label %_ZN2cvL9mapSymbolEc.exit44.thread53 -_ZN2cvL9mapSymbolEc.exit44.thread53: ; preds = %_ZN2cvL9mapSymbolEc.exit34, %60, %102, %._crit_edge, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50, %_ZN2cvL9mapSymbolEc.exit44 - %.0 = phi i1 [ false, %_ZN2cvL9mapSymbolEc.exit44 ], [ true, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 ], [ true, %._crit_edge ], [ false, %102 ], [ false, %60 ], [ false, %_ZN2cvL9mapSymbolEc.exit34 ] +_ZN2cvL9mapSymbolEc.exit44.thread53: ; preds = %_ZN2cvL9mapSymbolEc.exit34, %60, %105, %._crit_edge, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 + %.0 = phi i1 [ true, %_ZN2cvL14writeDecNumberEiiRSt6vectorIhSaIhEE.exit50 ], [ true, %._crit_edge ], [ false, %105 ], [ false, %60 ], [ false, %_ZN2cvL9mapSymbolEc.exit34 ] ret i1 %.0 } @@ -3275,20 +3275,17 @@ define hidden noundef zeroext i1 @_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKN br i1 %4, label %_ZN2cvL9mapSymbolEc.exit.thread7, label %.lr.ph .lr.ph: ; preds = %2, %_ZN2cvL9mapSymbolEc.exit.thread - %.09 = phi i64 [ %14, %_ZN2cvL9mapSymbolEc.exit.thread ], [ 0, %2 ] + %.09 = phi i64 [ %10, %_ZN2cvL9mapSymbolEc.exit.thread ], [ 0, %2 ] %5 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %.09) #26 %6 = load i8, ptr %5, align 1 - %7 = sext i8 %6 to i32 - %8 = add i8 %6, -48 - %or.cond.i = icmp ult i8 %8, 10 - br i1 %or.cond.i, label %_ZN2cvL9mapSymbolEc.exit, label %9 + %7 = add i8 %6, -48 + %or.cond.i = icmp ult i8 %7, 10 + %8 = add i8 %6, -65 + %or.cond5.i = icmp ult i8 %8, 26 + %or.cond = or i1 %or.cond.i, %or.cond5.i + br i1 %or.cond, label %_ZN2cvL9mapSymbolEc.exit.thread, label %9 9: ; preds = %.lr.ph - %10 = add i8 %6, -65 - %or.cond5.i = icmp ult i8 %10, 26 - br i1 %or.cond5.i, label %_ZN2cvL9mapSymbolEc.exit, label %11 - -11: ; preds = %9 switch i8 %6, label %_ZN2cvL9mapSymbolEc.exit.thread7 [ i8 32, label %_ZN2cvL9mapSymbolEc.exit.thread i8 36, label %_ZN2cvL9mapSymbolEc.exit.thread @@ -3301,20 +3298,14 @@ define hidden noundef zeroext i1 @_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKN i8 58, label %_ZN2cvL9mapSymbolEc.exit.thread ] -_ZN2cvL9mapSymbolEc.exit: ; preds = %9, %.lr.ph - %.sink = phi i32 [ -48, %.lr.ph ], [ -55, %9 ] - %12 = add nsw i32 %.sink, %7 - %13 = icmp eq i32 %12, -1 - br i1 %13, label %_ZN2cvL9mapSymbolEc.exit.thread7, label %_ZN2cvL9mapSymbolEc.exit.thread - -_ZN2cvL9mapSymbolEc.exit.thread: ; preds = %11, %11, %11, %11, %11, %11, %11, %11, %11, %_ZN2cvL9mapSymbolEc.exit - %14 = add nuw i64 %.09, 1 - %15 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %.not = icmp ult i64 %14, %15 +_ZN2cvL9mapSymbolEc.exit.thread: ; preds = %.lr.ph, %9, %9, %9, %9, %9, %9, %9, %9, %9 + %10 = add nuw i64 %.09, 1 + %11 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %.not = icmp ult i64 %10, %11 br i1 %.not, label %.lr.ph, label %_ZN2cvL9mapSymbolEc.exit.thread7, !llvm.loop !19 -_ZN2cvL9mapSymbolEc.exit.thread7: ; preds = %_ZN2cvL9mapSymbolEc.exit, %_ZN2cvL9mapSymbolEc.exit.thread, %11, %2 - %.lcssa = phi i1 [ true, %2 ], [ false, %11 ], [ true, %_ZN2cvL9mapSymbolEc.exit.thread ], [ false, %_ZN2cvL9mapSymbolEc.exit ] +_ZN2cvL9mapSymbolEc.exit.thread7: ; preds = %_ZN2cvL9mapSymbolEc.exit.thread, %9, %2 + %.lcssa = phi i1 [ true, %2 ], [ false, %9 ], [ true, %_ZN2cvL9mapSymbolEc.exit.thread ] ret i1 %.lcssa } @@ -3349,20 +3340,17 @@ _ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_trait br i1 %16, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %.lr.ph.i3 .lr.ph.i3: ; preds = %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %_ZN2cvL9mapSymbolEc.exit.thread.i - %.09.i = phi i64 [ %26, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 0, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] + %.09.i = phi i64 [ %22, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 0, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ] %17 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %.09.i) #26 %18 = load i8, ptr %17, align 1 - %19 = sext i8 %18 to i32 - %20 = add i8 %18, -48 - %or.cond.i.i = icmp ult i8 %20, 10 - br i1 %or.cond.i.i, label %_ZN2cvL9mapSymbolEc.exit.i, label %21 + %19 = add i8 %18, -48 + %or.cond.i.i = icmp ult i8 %19, 10 + %20 = add i8 %18, -65 + %or.cond5.i.i = icmp ult i8 %20, 26 + %or.cond.i = or i1 %or.cond.i.i, %or.cond5.i.i + br i1 %or.cond.i, label %_ZN2cvL9mapSymbolEc.exit.thread.i, label %21 21: ; preds = %.lr.ph.i3 - %22 = add i8 %18, -65 - %or.cond5.i.i = icmp ult i8 %22, 26 - br i1 %or.cond5.i.i, label %_ZN2cvL9mapSymbolEc.exit.i, label %23 - -23: ; preds = %21 switch i8 %18, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit [ i8 32, label %_ZN2cvL9mapSymbolEc.exit.thread.i i8 36, label %_ZN2cvL9mapSymbolEc.exit.thread.i @@ -3375,20 +3363,14 @@ _ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_trait i8 58, label %_ZN2cvL9mapSymbolEc.exit.thread.i ] -_ZN2cvL9mapSymbolEc.exit.i: ; preds = %21, %.lr.ph.i3 - %.sink.i = phi i32 [ -48, %.lr.ph.i3 ], [ -55, %21 ] - %24 = add nsw i32 %.sink.i, %19 - %25 = icmp eq i32 %24, -1 - br i1 %25, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %_ZN2cvL9mapSymbolEc.exit.thread.i - -_ZN2cvL9mapSymbolEc.exit.thread.i: ; preds = %_ZN2cvL9mapSymbolEc.exit.i, %23, %23, %23, %23, %23, %23, %23, %23, %23 - %26 = add nuw i64 %.09.i, 1 - %27 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 - %.not.i4 = icmp ult i64 %26, %27 +_ZN2cvL9mapSymbolEc.exit.thread.i: ; preds = %21, %21, %21, %21, %21, %21, %21, %21, %21, %.lr.ph.i3 + %22 = add nuw i64 %.09.i, 1 + %23 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #26 + %.not.i4 = icmp ult i64 %22, %23 br i1 %.not.i4, label %.lr.ph.i3, label %_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, !llvm.loop !19 -_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %5, %23, %_ZN2cvL9mapSymbolEc.exit.i, %_ZN2cvL9mapSymbolEc.exit.thread.i, %2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit - %.0 = phi i32 [ 2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 1, %2 ], [ 2, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 4, %_ZN2cvL9mapSymbolEc.exit.i ], [ 4, %23 ], [ 1, %5 ] +_ZNK2cv17QRCodeEncoderImpl14isAlphaNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit: ; preds = %5, %21, %_ZN2cvL9mapSymbolEc.exit.thread.i, %2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit + %.0 = phi i32 [ 2, %_ZNK2cv17QRCodeEncoderImpl9isNumericERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 1, %2 ], [ 2, %_ZN2cvL9mapSymbolEc.exit.thread.i ], [ 4, %21 ], [ 1, %5 ] ret i32 %.0 } diff --git a/bench/openjdk/optimized/jfrModuleEvent.ll b/bench/openjdk/optimized/jfrModuleEvent.ll index f843a6c42a0..a7565562787 100644 --- a/bench/openjdk/optimized/jfrModuleEvent.ll +++ b/bench/openjdk/optimized/jfrModuleEvent.ll @@ -227,51 +227,49 @@ define internal void @_ZL28module_export_event_callbackP12PackageEntry(ptr nound br i1 %.not.i, label %_ZNK12PackageEntry11is_exportedEv.exit, label %_ZNK12PackageEntry11is_exportedEv.exit.thread _ZNK12PackageEntry11is_exportedEv.exit: ; preds = %9 - %13 = icmp ne i32 %11, 1 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %15 = load ptr, ptr %14, align 8 - %16 = icmp ne ptr %15, null - %17 = select i1 %13, i1 %16, i1 false - br i1 %17, label %_ZNK12PackageEntry11is_exportedEv.exit.thread, label %33 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %14 = load ptr, ptr %13, align 8 + %.not = icmp eq ptr %14, null + br i1 %.not, label %30, label %_ZNK12PackageEntry11is_exportedEv.exit.thread _ZNK12PackageEntry11is_exportedEv.exit.thread: ; preds = %9, %_ZNK12PackageEntry11is_exportedEv.exit - %18 = icmp ne i32 %11, 1 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %20 = load ptr, ptr %19, align 8 - %21 = icmp ne ptr %20, null - %22 = select i1 %18, i1 %21, i1 false - br i1 %22, label %23, label %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread + %15 = icmp ne i32 %11, 1 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %17 = load ptr, ptr %16, align 8 + %18 = icmp ne ptr %17, null + %19 = select i1 %15, i1 %18, i1 false + br i1 %19, label %20, label %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread -23: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread - %24 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr @_ZL25write_module_export_eventPKvPK11ModuleEntry, ptr %24, align 8 +20: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread + %21 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr @_ZL25write_module_export_eventPKvPK11ModuleEntry, ptr %21, align 8 store ptr getelementptr inbounds nuw inrange(-16, 8) (i8, ptr @_ZTV19ModuleExportClosure, i64 16), ptr %3, align 8 - %25 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store ptr %0, ptr %25, align 8 + %22 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store ptr %0, ptr %22, align 8 call void @_ZN12PackageEntry18package_exports_doEP13ModuleClosure(ptr noundef nonnull align 8 dereferenceable(44) %0, ptr noundef nonnull %3) #7 - br label %33 + br label %30 _ZNK12PackageEntry11is_exportedEv.exit.thread.thread: ; preds = %1, %_ZNK12PackageEntry11is_exportedEv.exit.thread call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %2) - %26 = getelementptr inbounds nuw i8, ptr %2, i64 16 - store i8 1, ptr %26, align 8 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 17 - store i8 0, ptr %27, align 1 - %28 = getelementptr inbounds nuw i8, ptr %2, i64 18 - store i8 0, ptr %28, align 2 - %29 = load i64, ptr @_ZL15invocation_time.0, align 8 - store i64 %29, ptr %2, align 8 - %30 = getelementptr inbounds nuw i8, ptr %2, i64 8 - store i64 %29, ptr %30, align 8 - %31 = getelementptr inbounds nuw i8, ptr %2, i64 24 - store ptr %0, ptr %31, align 8 - %32 = getelementptr inbounds nuw i8, ptr %2, i64 32 - store ptr null, ptr %32, align 8 + %23 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store i8 1, ptr %23, align 8 + %24 = getelementptr inbounds nuw i8, ptr %2, i64 17 + store i8 0, ptr %24, align 1 + %25 = getelementptr inbounds nuw i8, ptr %2, i64 18 + store i8 0, ptr %25, align 2 + %26 = load i64, ptr @_ZL15invocation_time.0, align 8 + store i64 %26, ptr %2, align 8 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i64 %26, ptr %27, align 8 + %28 = getelementptr inbounds nuw i8, ptr %2, i64 24 + store ptr %0, ptr %28, align 8 + %29 = getelementptr inbounds nuw i8, ptr %2, i64 32 + store ptr null, ptr %29, align 8 call void @_ZN8JfrEventI17EventModuleExportE6commitEv(ptr noundef nonnull align 8 dereferenceable(19) %2) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %2) - br label %33 + br label %30 -33: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread, %23, %_ZNK12PackageEntry11is_exportedEv.exit +30: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit.thread.thread, %20, %_ZNK12PackageEntry11is_exportedEv.exit ret void } diff --git a/bench/openjdk/optimized/jfrTypeSet.ll b/bench/openjdk/optimized/jfrTypeSet.ll index eb39a55894f..9cfad76f8dc 100644 --- a/bench/openjdk/optimized/jfrTypeSet.ll +++ b/bench/openjdk/optimized/jfrTypeSet.ll @@ -734,78 +734,76 @@ _ZL9module_idPK12PackageEntryb.exit: ; preds = %_ZL10get_modulePK12 br i1 %.not.i10, label %77, label %_ZNK12PackageEntry11is_exportedEv.exit 77: ; preds = %73 - %78 = icmp ne i32 %75, 1 - %79 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %80 = load ptr, ptr %79, align 8 - %81 = icmp ne ptr %80, null - %82 = select i1 %78, i1 %81, i1 false - %83 = zext i1 %82 to i8 + %78 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %79 = load ptr, ptr %78, align 8 + %80 = icmp ne ptr %79, null + %81 = zext i1 %80 to i8 br label %_ZNK12PackageEntry11is_exportedEv.exit _ZNK12PackageEntry11is_exportedEv.exit: ; preds = %_ZL9module_idPK12PackageEntryb.exit, %73, %77 - %84 = phi i8 [ 1, %73 ], [ 1, %_ZL9module_idPK12PackageEntryb.exit ], [ %83, %77 ] - %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %86 = load ptr, ptr %85, align 8 - %.not.i.i.i.i11 = icmp eq ptr %86, null - br i1 %.not.i.i.i.i11, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %87 - -87: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit - %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %89 = load ptr, ptr %88, align 8 - %90 = icmp eq ptr %86, %89 - br i1 %90, label %91, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i - -91: ; preds = %87 - %92 = ptrtoint ptr %86 to i64 - %93 = load ptr, ptr %0, align 8 - %94 = ptrtoint ptr %93 to i64 - %95 = sub i64 %92, %94 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %82 = phi i8 [ 1, %73 ], [ 1, %_ZL9module_idPK12PackageEntryb.exit ], [ %81, %77 ] + %83 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %84 = load ptr, ptr %83, align 8 + %.not.i.i.i.i11 = icmp eq ptr %84, null + br i1 %.not.i.i.i.i11, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %85 + +85: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit + %86 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %87 = load ptr, ptr %86, align 8 + %88 = icmp eq ptr %84, %87 + br i1 %88, label %89, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i + +89: ; preds = %85 + %90 = ptrtoint ptr %84 to i64 + %91 = load ptr, ptr %0, align 8 + %92 = ptrtoint ptr %91 to i64 + %93 = sub i64 %90, %92 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) + %95 = load ptr, ptr %94, align 8 + %96 = getelementptr inbounds nuw i8, ptr %0, i64 32 %97 = load ptr, ptr %96, align 8 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %99 = load ptr, ptr %98, align 8 - call void @_ZN18JfrCheckpointFlushC1EP9JfrBuffermmP6Thread(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %97, i64 noundef %95, i64 noundef 1, ptr noundef %99) #9 - %100 = load ptr, ptr %4, align 8 - store ptr %100, ptr %96, align 8 - %.not5.i.i.i.i = icmp eq ptr %100, null + call void @_ZN18JfrCheckpointFlushC1EP9JfrBuffermmP6Thread(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %95, i64 noundef %93, i64 noundef 1, ptr noundef %97) #9 + %98 = load ptr, ptr %4, align 8 + store ptr %98, ptr %94, align 8 + %.not5.i.i.i.i = icmp eq ptr %98, null call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) br i1 %.not5.i.i.i.i, label %.sink.split.i.i.i.i, label %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i -_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i: ; preds = %91 - %101 = getelementptr inbounds nuw i8, ptr %100, i64 16 - %102 = load ptr, ptr %101, align 8 - store ptr %102, ptr %0, align 8 - store ptr %102, ptr %88, align 8 - %103 = getelementptr inbounds nuw i8, ptr %100, i64 40 - %104 = load i16, ptr %103, align 8 - %105 = zext i16 %104 to i64 - %106 = getelementptr inbounds nuw i8, ptr %100, i64 %105 - %107 = getelementptr inbounds nuw i8, ptr %100, i64 32 - %108 = load i64, ptr %107, align 8 - %109 = getelementptr inbounds i8, ptr %106, i64 %108 - %110 = getelementptr inbounds i8, ptr %102, i64 %95 - store ptr %110, ptr %88, align 8 +_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i: ; preds = %89 + %99 = getelementptr inbounds nuw i8, ptr %98, i64 16 + %100 = load ptr, ptr %99, align 8 + store ptr %100, ptr %0, align 8 + store ptr %100, ptr %86, align 8 + %101 = getelementptr inbounds nuw i8, ptr %98, i64 40 + %102 = load i16, ptr %101, align 8 + %103 = zext i16 %102 to i64 + %104 = getelementptr inbounds nuw i8, ptr %98, i64 %103 + %105 = getelementptr inbounds nuw i8, ptr %98, i64 32 + %106 = load i64, ptr %105, align 8 + %107 = getelementptr inbounds i8, ptr %104, i64 %106 + %108 = getelementptr inbounds i8, ptr %100, i64 %93 + store ptr %108, ptr %86, align 8 br label %.sink.split.i.i.i.i -.sink.split.i.i.i.i: ; preds = %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i, %91 - %.sink.i.i.i.i13 = phi ptr [ %109, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %91 ] - %.0.ph.i.i.i.i = phi ptr [ %110, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %91 ] - store ptr %.sink.i.i.i.i13, ptr %85, align 8 +.sink.split.i.i.i.i: ; preds = %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i, %89 + %.sink.i.i.i.i13 = phi ptr [ %107, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %89 ] + %.0.ph.i.i.i.i = phi ptr [ %108, %_ZN11StorageHostI7AdapterI18JfrCheckpointFlushE8StackObjE11accommodateEmm.exit.thread.i.i.i.i ], [ null, %89 ] + store ptr %.sink.i.i.i.i13, ptr %83, align 8 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i -_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i: ; preds = %.sink.split.i.i.i.i, %87 - %.0.i.i.i.i = phi ptr [ %89, %87 ], [ %.0.ph.i.i.i.i, %.sink.split.i.i.i.i ] +_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i: ; preds = %.sink.split.i.i.i.i, %85 + %.0.i.i.i.i = phi ptr [ %87, %85 ], [ %.0.ph.i.i.i.i, %.sink.split.i.i.i.i ] %.not.i.i.i12 = icmp eq ptr %.0.i.i.i.i, null - br i1 %.not.i.i.i12, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %111 + br i1 %.not.i.i.i12, label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit, label %109 -111: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i - store i8 %84, ptr %.0.i.i.i.i, align 1 - %112 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 1 - store ptr %112, ptr %88, align 8 +109: ; preds = %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i + store i8 %82, ptr %.0.i.i.i.i, align 1 + %110 = getelementptr inbounds nuw i8, ptr %.0.i.i.i.i, i64 1 + store ptr %110, ptr %86, align 8 br label %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit -_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i, %111 +_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE5writeEb.exit: ; preds = %_ZNK12PackageEntry11is_exportedEv.exit, %_ZN10WriterHostI11EncoderHostI20BigEndianEncoderImplS1_ES0_I20Varint128EncoderImplS1_E30AcquireReleaseMemoryWriterHostI7AdapterI18JfrCheckpointFlushE8StackObjEE11ensure_sizeEm.exit.i.i.i, %109 ret void } diff --git a/bench/openjdk/optimized/loopTransform.ll b/bench/openjdk/optimized/loopTransform.ll index 86c1fa5523c..91ae63e540a 100644 --- a/bench/openjdk/optimized/loopTransform.ll +++ b/bench/openjdk/optimized/loopTransform.ll @@ -23486,14 +23486,14 @@ _ZN9VectorSet3setEj.exit265: ; preds = %710, %715 %wide.trip.count335 = zext i32 %724 to i64 br label %728 -728: ; preds = %.lr.ph305, %756 - %indvars.iv332 = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next333, %756 ] +728: ; preds = %.lr.ph305, %754 + %indvars.iv332 = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next333, %754 ] %729 = getelementptr inbounds nuw ptr, ptr %725, i64 %indvars.iv332 %730 = load ptr, ptr %729, align 8 %731 = getelementptr inbounds nuw i8, ptr %730, i64 32 %732 = load i32, ptr %731, align 8 %733 = icmp eq i32 %732, 0 - br i1 %733, label %756, label %734 + br i1 %733, label %754, label %734 734: ; preds = %728 %735 = getelementptr inbounds nuw i8, ptr %730, i64 40 @@ -23510,176 +23510,173 @@ _ZNK9VectorSet4testEj.exit: ; preds = %734 %742 = load i32, ptr %741, align 4 %743 = and i32 %742, %739 %.not285 = icmp eq i32 %743, 0 - br i1 %.not285, label %_ZNK9VectorSet4testEj.exit.thread, label %756 + br i1 %.not285, label %_ZNK9VectorSet4testEj.exit.thread, label %754 _ZNK9VectorSet4testEj.exit.thread: ; preds = %734, %_ZNK9VectorSet4testEj.exit %744 = getelementptr inbounds nuw i8, ptr %730, i64 44 %745 = load i32, ptr %744, align 4 %746 = and i32 %745, 255 %747 = icmp eq i32 %746, 200 - br i1 %747, label %748, label %755 + br i1 %747, label %748, label %753 748: ; preds = %_ZNK9VectorSet4testEj.exit.thread %749 = getelementptr inbounds nuw i8, ptr %730, i64 8 %750 = load ptr, ptr %749, align 8 %751 = load ptr, ptr %750, align 8 %752 = icmp eq ptr %751, %.0.i.i.i234 - %753 = and i32 %745, 968 - %754 = icmp eq i32 %753, 512 - %or.cond283 = or i1 %754, %752 - br i1 %or.cond283, label %756, label %.critedge201 + br i1 %752, label %754, label %.critedge201 -755: ; preds = %_ZNK9VectorSet4testEj.exit.thread +753: ; preds = %_ZNK9VectorSet4testEj.exit.thread %.old = and i32 %745, 1023 %.old282 = icmp eq i32 %.old, 512 - br i1 %.old282, label %756, label %.critedge201 + br i1 %.old282, label %754, label %.critedge201 -756: ; preds = %755, %748, %_ZNK9VectorSet4testEj.exit, %728 +754: ; preds = %753, %748, %_ZNK9VectorSet4testEj.exit, %728 %indvars.iv.next333 = add nuw nsw i64 %indvars.iv332, 1 %exitcond336.not = icmp eq i64 %indvars.iv.next333, %wide.trip.count335 br i1 %exitcond336.not, label %.lr.ph318, label %728, !llvm.loop !62 -.lr.ph318: ; preds = %756, %723 - %757 = load i32, ptr %12, align 8 - %.not372386.not = icmp eq i32 %757, 0 +.lr.ph318: ; preds = %754, %723 + %755 = load i32, ptr %12, align 8 + %.not372386.not = icmp eq i32 %755, 0 br i1 %.not372386.not, label %.critedge201, label %.lr.ph388 .lr.ph388: ; preds = %.lr.ph318, %_ZNK9Node_List8containsEPK4Node.exit.thread %indvars.iv337387 = phi i64 [ %indvars.iv.next338, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ 0, %.lr.ph318 ] - %758 = load ptr, ptr %13, align 8 - %759 = getelementptr inbounds nuw ptr, ptr %758, i64 %indvars.iv337387 - %760 = load ptr, ptr %759, align 8 - %761 = load ptr, ptr %2, align 8 - %762 = icmp eq ptr %760, %761 - %763 = icmp eq ptr %760, %.0.i.i.i234 - %or.cond209 = or i1 %763, %762 - br i1 %or.cond209, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %764 - -764: ; preds = %.lr.ph388 - %765 = load ptr, ptr %14, align 8 - %766 = getelementptr inbounds nuw i8, ptr %765, i64 16 - %767 = load ptr, ptr %766, align 8 - %768 = icmp eq ptr %767, null - br i1 %768, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %769 - -769: ; preds = %764 - %770 = getelementptr inbounds nuw i8, ptr %767, i64 8 - %771 = load ptr, ptr %770, align 8 - %772 = load ptr, ptr %771, align 8 - %773 = getelementptr inbounds nuw i8, ptr %772, i64 44 - %774 = load i32, ptr %773, align 4 - %775 = and i32 %774, 63 - %776 = icmp eq i32 %775, 53 - br i1 %776, label %777, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 - -777: ; preds = %769 - %778 = load ptr, ptr %772, align 8 - %779 = getelementptr inbounds nuw i8, ptr %778, i64 208 - %780 = load ptr, ptr %779, align 8 - %781 = call noundef zeroext i8 %780(ptr noundef nonnull align 8 dereferenceable(60) %772) #11 - %782 = load ptr, ptr %11, align 8 - %783 = getelementptr inbounds nuw i8, ptr %782, i64 232 - %784 = load ptr, ptr %783, align 8 - %785 = call noundef zeroext i8 %784(ptr noundef nonnull align 8 dereferenceable(72) %11) #11 - %.not.i.i268 = icmp eq i8 %781, %785 + %756 = load ptr, ptr %13, align 8 + %757 = getelementptr inbounds nuw ptr, ptr %756, i64 %indvars.iv337387 + %758 = load ptr, ptr %757, align 8 + %759 = load ptr, ptr %2, align 8 + %760 = icmp eq ptr %758, %759 + %761 = icmp eq ptr %758, %.0.i.i.i234 + %or.cond209 = or i1 %761, %760 + br i1 %or.cond209, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %762 + +762: ; preds = %.lr.ph388 + %763 = load ptr, ptr %14, align 8 + %764 = getelementptr inbounds nuw i8, ptr %763, i64 16 + %765 = load ptr, ptr %764, align 8 + %766 = icmp eq ptr %765, null + br i1 %766, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %767 + +767: ; preds = %762 + %768 = getelementptr inbounds nuw i8, ptr %765, i64 8 + %769 = load ptr, ptr %768, align 8 + %770 = load ptr, ptr %769, align 8 + %771 = getelementptr inbounds nuw i8, ptr %770, i64 44 + %772 = load i32, ptr %771, align 4 + %773 = and i32 %772, 63 + %774 = icmp eq i32 %773, 53 + br i1 %774, label %775, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + +775: ; preds = %767 + %776 = load ptr, ptr %770, align 8 + %777 = getelementptr inbounds nuw i8, ptr %776, i64 208 + %778 = load ptr, ptr %777, align 8 + %779 = call noundef zeroext i8 %778(ptr noundef nonnull align 8 dereferenceable(60) %770) #11 + %780 = load ptr, ptr %11, align 8 + %781 = getelementptr inbounds nuw i8, ptr %780, i64 232 + %782 = load ptr, ptr %781, align 8 + %783 = call noundef zeroext i8 %782(ptr noundef nonnull align 8 dereferenceable(72) %11) #11 + %.not.i.i268 = icmp eq i8 %779, %783 br i1 %.not.i.i268, label %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 -_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269: ; preds = %777 - %786 = getelementptr inbounds nuw i8, ptr %772, i64 8 +_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269: ; preds = %775 + %784 = getelementptr inbounds nuw i8, ptr %770, i64 8 + %785 = load ptr, ptr %784, align 8 + %786 = getelementptr inbounds nuw i8, ptr %785, i64 8 %787 = load ptr, ptr %786, align 8 - %788 = getelementptr inbounds nuw i8, ptr %787, i64 8 - %789 = load ptr, ptr %788, align 8 - %790 = getelementptr inbounds nuw i8, ptr %789, i64 24 - %791 = load i32, ptr %790, align 8 - %792 = icmp ugt i32 %791, 1 - br i1 %792, label %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + %788 = getelementptr inbounds nuw i8, ptr %787, i64 24 + %789 = load i32, ptr %788, align 8 + %790 = icmp ugt i32 %789, 1 + br i1 %790, label %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 _ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270: ; preds = %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 - %793 = getelementptr inbounds nuw i8, ptr %789, i64 8 + %791 = getelementptr inbounds nuw i8, ptr %787, i64 8 + %792 = load ptr, ptr %791, align 8 + %793 = getelementptr inbounds nuw i8, ptr %792, i64 8 %794 = load ptr, ptr %793, align 8 - %795 = getelementptr inbounds nuw i8, ptr %794, i64 8 - %796 = load ptr, ptr %795, align 8 - %.not.i3.i271 = icmp eq ptr %796, null - br i1 %.not.i3.i271, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %797 - -797: ; preds = %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 - %798 = getelementptr inbounds nuw i8, ptr %796, i64 24 - %799 = load i32, ptr %798, align 8 - %800 = icmp eq i32 %799, 3 - br i1 %800, label %801, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 - -801: ; preds = %797 - %802 = getelementptr inbounds nuw i8, ptr %796, i64 8 + %.not.i3.i271 = icmp eq ptr %794, null + br i1 %.not.i3.i271, label %_ZNK19BaseCountedLoopNode4incrEv.exit272, label %795 + +795: ; preds = %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 + %796 = getelementptr inbounds nuw i8, ptr %794, i64 24 + %797 = load i32, ptr %796, align 8 + %798 = icmp eq i32 %797, 3 + br i1 %798, label %799, label %_ZNK19BaseCountedLoopNode4incrEv.exit272 + +799: ; preds = %795 + %800 = getelementptr inbounds nuw i8, ptr %794, i64 8 + %801 = load ptr, ptr %800, align 8 + %802 = getelementptr inbounds nuw i8, ptr %801, i64 8 %803 = load ptr, ptr %802, align 8 - %804 = getelementptr inbounds nuw i8, ptr %803, i64 8 - %805 = load ptr, ptr %804, align 8 br label %_ZNK19BaseCountedLoopNode4incrEv.exit272 -_ZNK19BaseCountedLoopNode4incrEv.exit272: ; preds = %764, %769, %777, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, %797, %801 - %806 = phi ptr [ %805, %801 ], [ null, %797 ], [ null, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 ], [ null, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 ], [ null, %764 ], [ null, %769 ], [ null, %777 ] - %807 = icmp eq ptr %760, %806 - br i1 %807, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %808 +_ZNK19BaseCountedLoopNode4incrEv.exit272: ; preds = %762, %767, %775, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270, %795, %799 + %804 = phi ptr [ %803, %799 ], [ null, %795 ], [ null, %_ZNK22BaseCountedLoopEndNode8cmp_nodeEv.exit.i.i270 ], [ null, %_ZNK19BaseCountedLoopNode16loopexit_or_nullEv.exit.i269 ], [ null, %762 ], [ null, %767 ], [ null, %775 ] + %805 = icmp eq ptr %758, %804 + br i1 %805, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %806 -808: ; preds = %_ZNK19BaseCountedLoopNode4incrEv.exit272 - %809 = load ptr, ptr %2, align 8 +806: ; preds = %_ZNK19BaseCountedLoopNode4incrEv.exit272 + %807 = load ptr, ptr %2, align 8 + %808 = getelementptr inbounds nuw i8, ptr %807, i64 8 + %809 = load ptr, ptr %808, align 8 %810 = getelementptr inbounds nuw i8, ptr %809, i64 8 %811 = load ptr, ptr %810, align 8 - %812 = getelementptr inbounds nuw i8, ptr %811, i64 8 - %813 = load ptr, ptr %812, align 8 - %814 = icmp eq ptr %760, %813 - br i1 %814, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %815 - -815: ; preds = %808 - %816 = getelementptr inbounds nuw i8, ptr %760, i64 16 - %817 = load ptr, ptr %816, align 8 - %818 = getelementptr inbounds nuw i8, ptr %760, i64 32 - %819 = load i32, ptr %818, align 8 - %820 = zext i32 %819 to i64 - %821 = getelementptr inbounds nuw ptr, ptr %817, i64 %820 - %.not325 = icmp eq i32 %819, 0 + %812 = icmp eq ptr %758, %811 + br i1 %812, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %813 + +813: ; preds = %806 + %814 = getelementptr inbounds nuw i8, ptr %758, i64 16 + %815 = load ptr, ptr %814, align 8 + %816 = getelementptr inbounds nuw i8, ptr %758, i64 32 + %817 = load i32, ptr %816, align 8 + %818 = zext i32 %817 to i64 + %819 = getelementptr inbounds nuw ptr, ptr %815, i64 %818 + %.not325 = icmp eq i32 %817, 0 br i1 %.not325, label %_ZNK9Node_List8containsEPK4Node.exit.thread, label %.lr.ph313 -.lr.ph313: ; preds = %815 - %822 = load i32, ptr %12, align 8 - %.not.i273 = icmp eq i32 %822, 0 - %wide.trip.count.i = zext i32 %822 to i64 +.lr.ph313: ; preds = %813 + %820 = load i32, ptr %12, align 8 + %.not.i273 = icmp eq i32 %820, 0 + %wide.trip.count.i = zext i32 %820 to i64 br i1 %.not.i273, label %.critedge201, label %.lr.ph313.split .lr.ph313.split: ; preds = %.lr.ph313 - %823 = load ptr, ptr %13, align 8 + %821 = load ptr, ptr %13, align 8 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph313.split, %_ZNK9Node_List8containsEPK4Node.exit - %.sroa.3.0311 = phi ptr [ %817, %.lr.ph313.split ], [ %830, %_ZNK9Node_List8containsEPK4Node.exit ] - %824 = load ptr, ptr %.sroa.3.0311, align 8 - br label %826 + %.sroa.3.0311 = phi ptr [ %815, %.lr.ph313.split ], [ %828, %_ZNK9Node_List8containsEPK4Node.exit ] + %822 = load ptr, ptr %.sroa.3.0311, align 8 + br label %824 -825: ; preds = %826 +823: ; preds = %824 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %.critedge201, label %826, !llvm.loop !63 + br i1 %exitcond.not.i, label %.critedge201, label %824, !llvm.loop !63 -826: ; preds = %825, %.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %825 ] - %827 = getelementptr inbounds nuw ptr, ptr %823, i64 %indvars.iv.i - %828 = load ptr, ptr %827, align 8 - %829 = icmp eq ptr %828, %824 - br i1 %829, label %_ZNK9Node_List8containsEPK4Node.exit, label %825 +824: ; preds = %823, %.lr.ph.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %823 ] + %825 = getelementptr inbounds nuw ptr, ptr %821, i64 %indvars.iv.i + %826 = load ptr, ptr %825, align 8 + %827 = icmp eq ptr %826, %822 + br i1 %827, label %_ZNK9Node_List8containsEPK4Node.exit, label %823 -_ZNK9Node_List8containsEPK4Node.exit: ; preds = %826 - %830 = getelementptr inbounds nuw i8, ptr %.sroa.3.0311, i64 8 - %831 = icmp ult ptr %830, %821 - br i1 %831, label %.lr.ph.i, label %_ZNK9Node_List8containsEPK4Node.exit.thread, !llvm.loop !64 +_ZNK9Node_List8containsEPK4Node.exit: ; preds = %824 + %828 = getelementptr inbounds nuw i8, ptr %.sroa.3.0311, i64 8 + %829 = icmp ult ptr %828, %819 + br i1 %829, label %.lr.ph.i, label %_ZNK9Node_List8containsEPK4Node.exit.thread, !llvm.loop !64 -_ZNK9Node_List8containsEPK4Node.exit.thread: ; preds = %_ZNK9Node_List8containsEPK4Node.exit, %815, %.lr.ph388, %_ZNK19BaseCountedLoopNode4incrEv.exit272, %808 +_ZNK9Node_List8containsEPK4Node.exit.thread: ; preds = %_ZNK9Node_List8containsEPK4Node.exit, %813, %.lr.ph388, %_ZNK19BaseCountedLoopNode4incrEv.exit272, %806 %indvars.iv.next338 = add nuw nsw i64 %indvars.iv337387, 1 - %832 = load i32, ptr %12, align 8 - %833 = zext i32 %832 to i64 - %.not372 = icmp samesign ult i64 %indvars.iv.next338, %833 + %830 = load i32, ptr %12, align 8 + %831 = zext i32 %830 to i64 + %.not372 = icmp samesign ult i64 %indvars.iv.next338, %831 br i1 %.not372, label %.lr.ph388, label %.critedge201, !llvm.loop !65 -.critedge201: ; preds = %748, %755, %_ZNK9Node_List8containsEPK4Node.exit.thread, %.lr.ph313, %825, %.lr.ph318, %175, %.thread.thread, %.critedge.thread, %._crit_edge, %switch.early.test, %169, %.critedge - %.0 = phi i1 [ false, %.critedge ], [ false, %169 ], [ false, %switch.early.test ], [ false, %._crit_edge ], [ false, %.critedge.thread ], [ false, %.thread.thread ], [ false, %175 ], [ true, %.lr.ph318 ], [ false, %825 ], [ false, %.lr.ph313 ], [ true, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ false, %755 ], [ false, %748 ] +.critedge201: ; preds = %748, %753, %_ZNK9Node_List8containsEPK4Node.exit.thread, %.lr.ph313, %823, %.lr.ph318, %175, %.thread.thread, %.critedge.thread, %._crit_edge, %switch.early.test, %169, %.critedge + %.0 = phi i1 [ false, %.critedge ], [ false, %169 ], [ false, %switch.early.test ], [ false, %._crit_edge ], [ false, %.critedge.thread ], [ false, %.thread.thread ], [ false, %175 ], [ true, %.lr.ph318 ], [ false, %823 ], [ false, %.lr.ph313 ], [ true, %_ZNK9Node_List8containsEPK4Node.exit.thread ], [ false, %753 ], [ false, %748 ] ret i1 %.0 } diff --git a/bench/openmpi/optimized/coll_base_allgather.ll b/bench/openmpi/optimized/coll_base_allgather.ll index 714e68b2a61..5977dbd7387 100644 --- a/bench/openmpi/optimized/coll_base_allgather.ll +++ b/bench/openmpi/optimized/coll_base_allgather.ll @@ -651,107 +651,95 @@ define i32 @ompi_coll_base_allgather_intra_neighborexchange(ptr noundef %0, i32 %35 = srem i32 %34, %.val.val %36 = add i32 %.val.val, -1 %37 = add i32 %36, %.val96 - br label %43 + br label %ompi_coll_base_sendrecv.exit 38: ; preds = %31 %39 = add i32 %.val.val, -1 %40 = add i32 %39, %.val96 %41 = srem i32 %40, %.val.val %42 = add nsw i32 %.val96, 1 - br label %43 + br label %ompi_coll_base_sendrecv.exit -43: ; preds = %38, %33 +ompi_coll_base_sendrecv.exit: ; preds = %38, %33 %.sink108 = phi i32 [ %35, %33 ], [ %41, %38 ] %.pn = phi i32 [ %37, %33 ], [ %42, %38 ] - %44 = phi i32 [ %.val96, %33 ], [ %41, %38 ] + %43 = phi i32 [ %.val96, %33 ], [ %41, %38 ] %.sink104 = phi i32 [ 2, %33 ], [ -2, %38 ] %.sink = phi i32 [ -2, %33 ], [ 2, %38 ] %.sink107 = srem i32 %.pn, %.val.val store i32 %.sink108, ptr %9, align 4 - %45 = getelementptr inbounds nuw i8, ptr %9, i64 4 - store i32 %.sink107, ptr %45, align 4 - store i32 %44, ptr %11, align 4 - %46 = getelementptr inbounds nuw i8, ptr %11, i64 4 - store i32 %44, ptr %46, align 4 + %44 = getelementptr inbounds nuw i8, ptr %9, i64 4 + store i32 %.sink107, ptr %44, align 4 + store i32 %43, ptr %11, align 4 + %45 = getelementptr inbounds nuw i8, ptr %11, i64 4 + store i32 %43, ptr %45, align 4 store i32 %.sink104, ptr %10, align 4 - %47 = getelementptr inbounds nuw i8, ptr %10, i64 4 - store i32 %.sink, ptr %47, align 4 + %46 = getelementptr inbounds nuw i8, ptr %10, i64 4 + store i32 %.sink, ptr %46, align 4 + %47 = mul i64 %23, %25 %48 = sext i32 %.sink108 to i64 - %49 = mul i64 %23, %25 - %50 = mul i64 %49, %48 - %51 = getelementptr inbounds i8, ptr %3, i64 %50 - %52 = mul nsw i64 %23, %26 - %53 = getelementptr inbounds i8, ptr %3, i64 %52 - %54 = icmp eq i32 %.sink108, %.val96 - br i1 %54, label %55, label %57 - -55: ; preds = %43 - %56 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %53, i32 noundef %4, ptr noundef nonnull %5, ptr noundef %51, i32 noundef %4, ptr noundef nonnull %5) #8 - br label %ompi_coll_base_sendrecv.exit - -57: ; preds = %43 - %58 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %53, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef %51, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 - br label %ompi_coll_base_sendrecv.exit + %49 = mul i64 %47, %48 + %50 = getelementptr inbounds i8, ptr %3, i64 %49 + %51 = mul nsw i64 %23, %26 + %52 = getelementptr inbounds i8, ptr %3, i64 %51 + %53 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %52, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef %50, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %25, ptr noundef nonnull %5, i32 noundef %.sink108, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 + %.not94 = icmp eq i32 %53, 0 + br i1 %.not94, label %54, label %.loopexit + +54: ; preds = %ompi_coll_base_sendrecv.exit + %55 = ashr exact i32 %.val.val, 1 + %56 = icmp sgt i32 %55, 1 + br i1 %56, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %54 + %57 = shl nsw i64 %25, 1 + %58 = trunc i64 %57 to i32 + br label %61 + +59: ; preds = %ompi_coll_base_sendrecv.exit98 + %60 = add nuw nsw i32 %.085101, 1 + %exitcond.not = icmp eq i32 %60, %55 + br i1 %exitcond.not, label %.loopexit, label %61, !llvm.loop !11 + +61: ; preds = %.lr.ph, %59 + %.1102 = phi i32 [ %43, %.lr.ph ], [ %70, %59 ] + %.085101 = phi i32 [ 1, %.lr.ph ], [ %60, %59 ] + %62 = and i32 %.085101, 1 + %63 = zext nneg i32 %62 to i64 + %64 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %63 + %65 = load i32, ptr %64, align 4 + %66 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %63 + %67 = load i32, ptr %66, align 4 + %68 = add i32 %65, %.val.val + %69 = add i32 %68, %67 + %70 = srem i32 %69, %.val.val + store i32 %70, ptr %64, align 4 + %71 = sext i32 %70 to i64 + %72 = mul i64 %47, %71 + %73 = getelementptr inbounds i8, ptr %3, i64 %72 + %74 = sext i32 %.1102 to i64 + %75 = mul i64 %47, %74 + %76 = getelementptr inbounds i8, ptr %3, i64 %75 + %77 = getelementptr inbounds nuw [2 x i32], ptr %9, i64 0, i64 %63 + %78 = load i32, ptr %77, align 4 + %79 = icmp eq i32 %78, %.val96 + br i1 %79, label %80, label %82 -ompi_coll_base_sendrecv.exit: ; preds = %55, %57 - %.0.i = phi i32 [ %56, %55 ], [ %58, %57 ] - %.not94 = icmp eq i32 %.0.i, 0 - br i1 %.not94, label %59, label %.loopexit - -59: ; preds = %ompi_coll_base_sendrecv.exit - %60 = ashr exact i32 %.val.val, 1 - %61 = icmp sgt i32 %60, 1 - br i1 %61, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %59 - %62 = shl nsw i64 %25, 1 - %63 = trunc i64 %62 to i32 - br label %66 - -64: ; preds = %ompi_coll_base_sendrecv.exit98 - %65 = add nuw nsw i32 %.085101, 1 - %exitcond.not = icmp eq i32 %65, %60 - br i1 %exitcond.not, label %.loopexit, label %66, !llvm.loop !11 - -66: ; preds = %.lr.ph, %64 - %.1102 = phi i32 [ %44, %.lr.ph ], [ %75, %64 ] - %.085101 = phi i32 [ 1, %.lr.ph ], [ %65, %64 ] - %67 = and i32 %.085101, 1 - %68 = zext nneg i32 %67 to i64 - %69 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %68 - %70 = load i32, ptr %69, align 4 - %71 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %68 - %72 = load i32, ptr %71, align 4 - %73 = add i32 %70, %.val.val - %74 = add i32 %73, %72 - %75 = srem i32 %74, %.val.val - store i32 %75, ptr %69, align 4 - %76 = sext i32 %75 to i64 - %77 = mul i64 %49, %76 - %78 = getelementptr inbounds i8, ptr %3, i64 %77 - %79 = sext i32 %.1102 to i64 - %80 = mul i64 %49, %79 - %81 = getelementptr inbounds i8, ptr %3, i64 %80 - %82 = getelementptr inbounds nuw [2 x i32], ptr %9, i64 0, i64 %68 - %83 = load i32, ptr %82, align 4 - %84 = icmp eq i32 %83, %.val96 - br i1 %84, label %85, label %87 - -85: ; preds = %66 - %86 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %81, i32 noundef %63, ptr noundef %5, ptr noundef %78, i32 noundef %63, ptr noundef %5) #8 +80: ; preds = %61 + %81 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %76, i32 noundef %58, ptr noundef nonnull %5, ptr noundef %73, i32 noundef %58, ptr noundef nonnull %5) #8 br label %ompi_coll_base_sendrecv.exit98 -87: ; preds = %66 - %88 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %81, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %62, ptr noundef %5, i32 noundef %83, i32 noundef -10, ptr noundef %78, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %62, ptr noundef %5, i32 noundef %83, i32 noundef -10, ptr noundef %6, ptr noundef null) #8 +82: ; preds = %61 + %83 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %76, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %57, ptr noundef nonnull %5, i32 noundef %78, i32 noundef -10, ptr noundef %73, i64 noundef range(i64 -4611686016279904256, 4611686018427387905) %57, ptr noundef nonnull %5, i32 noundef %78, i32 noundef -10, ptr noundef nonnull %6, ptr noundef null) #8 br label %ompi_coll_base_sendrecv.exit98 -ompi_coll_base_sendrecv.exit98: ; preds = %85, %87 - %.0.i97 = phi i32 [ %86, %85 ], [ %88, %87 ] +ompi_coll_base_sendrecv.exit98: ; preds = %80, %82 + %.0.i97 = phi i32 [ %81, %80 ], [ %83, %82 ] %.not95 = icmp eq i32 %.0.i97, 0 - br i1 %.not95, label %64, label %.loopexit + br i1 %.not95, label %59, label %.loopexit -.loopexit: ; preds = %64, %ompi_coll_base_sendrecv.exit98, %59, %27, %ompi_coll_base_sendrecv.exit, %16 - %.0 = phi i32 [ %17, %16 ], [ %30, %27 ], [ %.0.i, %ompi_coll_base_sendrecv.exit ], [ 0, %59 ], [ 0, %64 ], [ %.0.i97, %ompi_coll_base_sendrecv.exit98 ] +.loopexit: ; preds = %59, %ompi_coll_base_sendrecv.exit98, %54, %27, %ompi_coll_base_sendrecv.exit, %16 + %.0 = phi i32 [ %17, %16 ], [ %30, %27 ], [ %53, %ompi_coll_base_sendrecv.exit ], [ 0, %54 ], [ 0, %59 ], [ %.0.i97, %ompi_coll_base_sendrecv.exit98 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/coll_base_allgatherv.ll b/bench/openmpi/optimized/coll_base_allgatherv.ll index d5cbdd697cb..e6e0aea3857 100644 --- a/bench/openmpi/optimized/coll_base_allgatherv.ll +++ b/bench/openmpi/optimized/coll_base_allgatherv.ll @@ -508,167 +508,155 @@ define i32 @ompi_coll_base_allgatherv_intra_neighborexchange(ptr noundef %0, i32 %45 = srem i32 %44, %.val.val %46 = add i32 %.val.val, -1 %47 = add i32 %46, %.val121 - br label %53 + br label %ompi_coll_base_sendrecv.exit 48: ; preds = %41 %49 = add i32 %.val.val, -1 %50 = add i32 %49, %.val121 %51 = srem i32 %50, %.val.val %52 = add nsw i32 %.val121, 1 - br label %53 + br label %ompi_coll_base_sendrecv.exit -53: ; preds = %48, %43 +ompi_coll_base_sendrecv.exit: ; preds = %48, %43 %.sink142 = phi i32 [ %45, %43 ], [ %51, %48 ] %.pn = phi i32 [ %47, %43 ], [ %52, %48 ] - %54 = phi i32 [ %.val121, %43 ], [ %51, %48 ] + %53 = phi i32 [ %.val121, %43 ], [ %51, %48 ] %.sink138 = phi i32 [ 2, %43 ], [ -2, %48 ] %.sink = phi i32 [ -2, %43 ], [ 2, %48 ] %.sink141 = srem i32 %.pn, %.val.val store i32 %.sink142, ptr %10, align 4 - %55 = getelementptr inbounds nuw i8, ptr %10, i64 4 - store i32 %.sink141, ptr %55, align 4 - store i32 %54, ptr %12, align 4 - %56 = getelementptr inbounds nuw i8, ptr %12, i64 4 - store i32 %54, ptr %56, align 4 + %54 = getelementptr inbounds nuw i8, ptr %10, i64 4 + store i32 %.sink141, ptr %54, align 4 + store i32 %53, ptr %12, align 4 + %55 = getelementptr inbounds nuw i8, ptr %12, i64 4 + store i32 %53, ptr %55, align 4 store i32 %.sink138, ptr %11, align 4 - %57 = getelementptr inbounds nuw i8, ptr %11, i64 4 - store i32 %.sink, ptr %57, align 4 - %58 = sext i32 %.sink142 to i64 - %59 = getelementptr inbounds i32, ptr %5, i64 %58 - %60 = load i32, ptr %59, align 4 - %61 = sext i32 %60 to i64 - %62 = mul nsw i64 %30, %61 - %63 = getelementptr inbounds i8, ptr %3, i64 %62 - %64 = load i32, ptr %32, align 4 - %65 = sext i32 %64 to i64 - %66 = mul nsw i64 %30, %65 - %67 = getelementptr inbounds i8, ptr %3, i64 %66 - %68 = getelementptr inbounds i32, ptr %4, i64 %31 - %69 = load i32, ptr %68, align 4 - %70 = getelementptr inbounds i32, ptr %4, i64 %58 - %71 = load i32, ptr %70, align 4 - %72 = icmp eq i32 %.sink142, %.val121 - br i1 %72, label %73, label %75 - -73: ; preds = %53 - %74 = tail call i32 @ompi_datatype_sndrcv(ptr noundef %67, i32 noundef %69, ptr noundef nonnull %6, ptr noundef %63, i32 noundef %71, ptr noundef nonnull %6) #7 - br label %ompi_coll_base_sendrecv.exit - -75: ; preds = %53 - %76 = sext i32 %71 to i64 - %77 = sext i32 %69 to i64 - %78 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %67, i64 noundef range(i64 -2147483648, 2147483648) %77, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef %63, i64 noundef range(i64 -2147483648, 2147483648) %76, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 - br label %ompi_coll_base_sendrecv.exit - -ompi_coll_base_sendrecv.exit: ; preds = %73, %75 - %.0.i = phi i32 [ %74, %73 ], [ %78, %75 ] - %.not115 = icmp eq i32 %.0.i, 0 - br i1 %.not115, label %79, label %.loopexit - -79: ; preds = %ompi_coll_base_sendrecv.exit - %80 = ashr exact i32 %.val.val, 1 - %81 = icmp sgt i32 %80, 1 - br i1 %81, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %79 - %82 = getelementptr inbounds nuw i8, ptr %13, i64 4 - %83 = getelementptr inbounds nuw i8, ptr %14, i64 4 - %84 = getelementptr inbounds nuw i8, ptr %15, i64 4 - %85 = getelementptr inbounds nuw i8, ptr %16, i64 4 - br label %86 - -86: ; preds = %.lr.ph, %133 - %.1128 = phi i32 [ %54, %.lr.ph ], [ %95, %133 ] - %.0102127 = phi i32 [ 1, %.lr.ph ], [ %136, %133 ] - %87 = and i32 %.0102127, 1 - %88 = zext nneg i32 %87 to i64 - %89 = getelementptr inbounds nuw [2 x i32], ptr %12, i64 0, i64 %88 - %90 = load i32, ptr %89, align 4 - %91 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %88 - %92 = load i32, ptr %91, align 4 - %93 = add i32 %90, %.val.val - %94 = add i32 %93, %92 - %95 = srem i32 %94, %.val.val - store i32 %95, ptr %89, align 4 - %96 = sext i32 %.1128 to i64 - %97 = getelementptr inbounds i32, ptr %4, i64 %96 - %98 = load i32, ptr %97, align 4 - store i32 %98, ptr %13, align 4 - %99 = add nsw i32 %.1128, 1 - %100 = sext i32 %99 to i64 - %101 = getelementptr inbounds i32, ptr %4, i64 %100 - %102 = load i32, ptr %101, align 4 - store i32 %102, ptr %82, align 4 - %103 = getelementptr inbounds i32, ptr %5, i64 %96 - %104 = load i32, ptr %103, align 4 - store i32 %104, ptr %14, align 4 - %105 = getelementptr inbounds i32, ptr %5, i64 %100 - %106 = load i32, ptr %105, align 4 - store i32 %106, ptr %83, align 4 - %107 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %6, ptr noundef nonnull %18) #7 - %.not116 = icmp eq i32 %107, 0 - br i1 %.not116, label %108, label %.loopexit - -108: ; preds = %86 + %56 = getelementptr inbounds nuw i8, ptr %11, i64 4 + store i32 %.sink, ptr %56, align 4 + %57 = sext i32 %.sink142 to i64 + %58 = getelementptr inbounds i32, ptr %4, i64 %57 + %59 = load i32, ptr %58, align 4 + %60 = getelementptr inbounds i32, ptr %5, i64 %57 + %61 = load i32, ptr %60, align 4 + %62 = sext i32 %61 to i64 + %63 = mul nsw i64 %30, %62 + %64 = getelementptr inbounds i8, ptr %3, i64 %63 + %65 = getelementptr inbounds i32, ptr %4, i64 %31 + %66 = load i32, ptr %65, align 4 + %67 = load i32, ptr %32, align 4 + %68 = sext i32 %67 to i64 + %69 = mul nsw i64 %30, %68 + %70 = getelementptr inbounds i8, ptr %3, i64 %69 + %71 = sext i32 %59 to i64 + %72 = sext i32 %66 to i64 + %73 = tail call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %70, i64 noundef range(i64 -2147483648, 2147483648) %72, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef %64, i64 noundef range(i64 -2147483648, 2147483648) %71, ptr noundef nonnull %6, i32 noundef %.sink142, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 + %.not115 = icmp eq i32 %73, 0 + br i1 %.not115, label %74, label %.loopexit + +74: ; preds = %ompi_coll_base_sendrecv.exit + %75 = ashr exact i32 %.val.val, 1 + %76 = icmp sgt i32 %75, 1 + br i1 %76, label %.lr.ph, label %.loopexit + +.lr.ph: ; preds = %74 + %77 = getelementptr inbounds nuw i8, ptr %13, i64 4 + %78 = getelementptr inbounds nuw i8, ptr %14, i64 4 + %79 = getelementptr inbounds nuw i8, ptr %15, i64 4 + %80 = getelementptr inbounds nuw i8, ptr %16, i64 4 + br label %81 + +81: ; preds = %.lr.ph, %128 + %.1128 = phi i32 [ %53, %.lr.ph ], [ %90, %128 ] + %.0102127 = phi i32 [ 1, %.lr.ph ], [ %131, %128 ] + %82 = and i32 %.0102127, 1 + %83 = zext nneg i32 %82 to i64 + %84 = getelementptr inbounds nuw [2 x i32], ptr %12, i64 0, i64 %83 + %85 = load i32, ptr %84, align 4 + %86 = getelementptr inbounds nuw [2 x i32], ptr %11, i64 0, i64 %83 + %87 = load i32, ptr %86, align 4 + %88 = add i32 %85, %.val.val + %89 = add i32 %88, %87 + %90 = srem i32 %89, %.val.val + store i32 %90, ptr %84, align 4 + %91 = sext i32 %.1128 to i64 + %92 = getelementptr inbounds i32, ptr %4, i64 %91 + %93 = load i32, ptr %92, align 4 + store i32 %93, ptr %13, align 4 + %94 = add nsw i32 %.1128, 1 + %95 = sext i32 %94 to i64 + %96 = getelementptr inbounds i32, ptr %4, i64 %95 + %97 = load i32, ptr %96, align 4 + store i32 %97, ptr %77, align 4 + %98 = getelementptr inbounds i32, ptr %5, i64 %91 + %99 = load i32, ptr %98, align 4 + store i32 %99, ptr %14, align 4 + %100 = getelementptr inbounds i32, ptr %5, i64 %95 + %101 = load i32, ptr %100, align 4 + store i32 %101, ptr %78, align 4 + %102 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %6, ptr noundef nonnull %18) #7 + %.not116 = icmp eq i32 %102, 0 + br i1 %.not116, label %103, label %.loopexit + +103: ; preds = %81 %.val123 = load ptr, ptr %18, align 8 - %109 = call i32 @opal_datatype_commit(ptr noundef %.val123) #7 - %.not117 = icmp eq i32 %109, 0 - br i1 %.not117, label %110, label %.loopexit - -110: ; preds = %108 - %111 = sext i32 %95 to i64 - %112 = getelementptr inbounds i32, ptr %4, i64 %111 - %113 = load i32, ptr %112, align 4 - store i32 %113, ptr %15, align 4 - %114 = getelementptr i8, ptr %112, i64 4 - %115 = load i32, ptr %114, align 4 - store i32 %115, ptr %84, align 4 - %116 = getelementptr inbounds i32, ptr %5, i64 %111 - %117 = load i32, ptr %116, align 4 - store i32 %117, ptr %16, align 4 - %118 = getelementptr i8, ptr %116, i64 4 - %119 = load i32, ptr %118, align 4 - store i32 %119, ptr %85, align 4 - %120 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %6, ptr noundef nonnull %17) #7 - %.not118 = icmp eq i32 %120, 0 - br i1 %.not118, label %121, label %.loopexit - -121: ; preds = %110 + %104 = call i32 @opal_datatype_commit(ptr noundef %.val123) #7 + %.not117 = icmp eq i32 %104, 0 + br i1 %.not117, label %105, label %.loopexit + +105: ; preds = %103 + %106 = sext i32 %90 to i64 + %107 = getelementptr inbounds i32, ptr %4, i64 %106 + %108 = load i32, ptr %107, align 4 + store i32 %108, ptr %15, align 4 + %109 = getelementptr i8, ptr %107, i64 4 + %110 = load i32, ptr %109, align 4 + store i32 %110, ptr %79, align 4 + %111 = getelementptr inbounds i32, ptr %5, i64 %106 + %112 = load i32, ptr %111, align 4 + store i32 %112, ptr %16, align 4 + %113 = getelementptr i8, ptr %111, i64 4 + %114 = load i32, ptr %113, align 4 + store i32 %114, ptr %80, align 4 + %115 = call i32 @ompi_datatype_create_indexed(i32 noundef 2, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull %17) #7 + %.not118 = icmp eq i32 %115, 0 + br i1 %.not118, label %116, label %.loopexit + +116: ; preds = %105 %.val122 = load ptr, ptr %17, align 8 - %122 = call i32 @opal_datatype_commit(ptr noundef %.val122) #7 - %.not119 = icmp eq i32 %122, 0 - br i1 %.not119, label %123, label %.loopexit - -123: ; preds = %121 - %124 = load ptr, ptr %18, align 8 - %125 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %88 - %126 = load i32, ptr %125, align 4 - %127 = load ptr, ptr %17, align 8 - %128 = icmp eq i32 %126, %.val121 - br i1 %128, label %129, label %131 - -129: ; preds = %123 - %130 = call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef 1, ptr noundef %124, ptr noundef %3, i32 noundef 1, ptr noundef %127) #7 + %117 = call i32 @opal_datatype_commit(ptr noundef %.val122) #7 + %.not119 = icmp eq i32 %117, 0 + br i1 %.not119, label %118, label %.loopexit + +118: ; preds = %116 + %119 = load ptr, ptr %18, align 8 + %120 = getelementptr inbounds nuw [2 x i32], ptr %10, i64 0, i64 %83 + %121 = load i32, ptr %120, align 4 + %122 = load ptr, ptr %17, align 8 + %123 = icmp eq i32 %121, %.val121 + br i1 %123, label %124, label %126 + +124: ; preds = %118 + %125 = call i32 @ompi_datatype_sndrcv(ptr noundef %3, i32 noundef 1, ptr noundef %119, ptr noundef %3, i32 noundef 1, ptr noundef %122) #7 br label %ompi_coll_base_sendrecv.exit125 -131: ; preds = %123 - %132 = call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef 1, ptr noundef %124, i32 noundef %126, i32 noundef -11, ptr noundef %3, i64 noundef 1, ptr noundef %127, i32 noundef %126, i32 noundef -11, ptr noundef %7, ptr noundef null) #7 +126: ; preds = %118 + %127 = call i32 @ompi_coll_base_sendrecv_actual(ptr noundef %3, i64 noundef 1, ptr noundef %119, i32 noundef %121, i32 noundef -11, ptr noundef %3, i64 noundef 1, ptr noundef %122, i32 noundef %121, i32 noundef -11, ptr noundef nonnull %7, ptr noundef null) #7 br label %ompi_coll_base_sendrecv.exit125 -ompi_coll_base_sendrecv.exit125: ; preds = %129, %131 - %.0.i124 = phi i32 [ %130, %129 ], [ %132, %131 ] +ompi_coll_base_sendrecv.exit125: ; preds = %124, %126 + %.0.i124 = phi i32 [ %125, %124 ], [ %127, %126 ] %.not120 = icmp eq i32 %.0.i124, 0 - br i1 %.not120, label %133, label %.loopexit + br i1 %.not120, label %128, label %.loopexit -133: ; preds = %ompi_coll_base_sendrecv.exit125 - %134 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %18) #7 - %135 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %17) #7 - %136 = add nuw nsw i32 %.0102127, 1 - %exitcond.not = icmp eq i32 %136, %80 - br i1 %exitcond.not, label %.loopexit, label %86, !llvm.loop !10 +128: ; preds = %ompi_coll_base_sendrecv.exit125 + %129 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %18) #7 + %130 = call i32 @ompi_datatype_destroy(ptr noundef nonnull %17) #7 + %131 = add nuw nsw i32 %.0102127, 1 + %exitcond.not = icmp eq i32 %131, %75 + br i1 %exitcond.not, label %.loopexit, label %81, !llvm.loop !10 -.loopexit: ; preds = %133, %ompi_coll_base_sendrecv.exit125, %121, %110, %108, %86, %79, %33, %ompi_coll_base_sendrecv.exit, %23 - %.0 = phi i32 [ %24, %23 ], [ %40, %33 ], [ %.0.i, %ompi_coll_base_sendrecv.exit ], [ 0, %79 ], [ 0, %133 ], [ %.0.i124, %ompi_coll_base_sendrecv.exit125 ], [ %122, %121 ], [ %120, %110 ], [ %109, %108 ], [ %107, %86 ] +.loopexit: ; preds = %128, %ompi_coll_base_sendrecv.exit125, %116, %105, %103, %81, %74, %33, %ompi_coll_base_sendrecv.exit, %23 + %.0 = phi i32 [ %24, %23 ], [ %40, %33 ], [ %73, %ompi_coll_base_sendrecv.exit ], [ 0, %74 ], [ 0, %128 ], [ %.0.i124, %ompi_coll_base_sendrecv.exit125 ], [ %117, %116 ], [ %115, %105 ], [ %104, %103 ], [ %102, %81 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/mpl_trmem.ll b/bench/openmpi/optimized/mpl_trmem.ll index a6cc02823a2..154d49e88cb 100644 --- a/bench/openmpi/optimized/mpl_trmem.ll +++ b/bench/openmpi/optimized/mpl_trmem.ll @@ -311,38 +311,34 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef %14 = alloca [6 x i64], align 16 %15 = alloca i64, align 8 %16 = icmp eq i64 %0, 0 - br i1 %16, label %.loopexit, label %17 + br i1 %16, label %is_valid_alignment.exit, label %17 17: ; preds = %5 %18 = and i64 %0, 7 %.not.i = icmp eq i64 %18, 0 - br i1 %.not.i, label %.preheader.i, label %is_valid_alignment.exit - -.preheader.i: ; preds = %17 - %.not12.i = icmp eq i64 %0, 1 - br i1 %.not12.i, label %.loopexit, label %.lr.ph.i + br i1 %.not.i, label %.lr.ph.i, label %is_valid_alignment.exit.thread 19: ; preds = %.lr.ph.i %20 = lshr exact i64 %.09.i, 1 %21 = icmp ugt i64 %.09.i, 2 - br i1 %21, label %.lr.ph.i, label %.loopexit, !llvm.loop !4 + br i1 %21, label %.lr.ph.i, label %is_valid_alignment.exit, !llvm.loop !4 -.lr.ph.i: ; preds = %.preheader.i, %19 - %.09.i = phi i64 [ %20, %19 ], [ %0, %.preheader.i ] +.lr.ph.i: ; preds = %17, %19 + %.09.i = phi i64 [ %20, %19 ], [ %0, %17 ] %22 = and i64 %.09.i, 1 %.not8.i = icmp eq i64 %22, 0 - br i1 %.not8.i, label %19, label %is_valid_alignment.exit + br i1 %.not8.i, label %19, label %is_valid_alignment.exit.thread -.loopexit: ; preds = %19, %5, %.preheader.i +is_valid_alignment.exit: ; preds = %19, %5 %.b83 = load i1, ptr @TRdebugLevel, align 4 br i1 %.b83, label %23, label %25 -23: ; preds = %.loopexit +23: ; preds = %is_valid_alignment.exit %24 = tail call i32 @MPL_trvalid2(ptr noundef nonnull @.str.29, i32 noundef %3, ptr noundef %4) %.not86 = icmp eq i32 %24, 0 - br i1 %.not86, label %25, label %is_valid_alignment.exit + br i1 %.not86, label %25, label %is_valid_alignment.exit.thread -25: ; preds = %23, %.loopexit +25: ; preds = %23, %is_valid_alignment.exit %.biased = add i64 %1, 7 %.076 = and i64 %.biased, -8 %26 = load volatile i64, ptr @allocated, align 8 @@ -359,14 +355,14 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef 32: ; preds = %30 %33 = load ptr, ptr @stderr, align 8 %34 = tail call i64 @fwrite(ptr nonnull @.str.30, i64 25, i64 1, ptr %33) #19 - br label %is_valid_alignment.exit + br label %is_valid_alignment.exit.thread 35: ; preds = %30, %25 %36 = add i64 %0, 168 %37 = add i64 %36, %.076 %38 = tail call noalias ptr @malloc(i64 noundef %37) #20 %.not89 = icmp eq ptr %38, null - br i1 %.not89, label %is_valid_alignment.exit, label %39 + br i1 %.not89, label %is_valid_alignment.exit.thread, label %39 39: ; preds = %35 %.b = load i1, ptr @TRSetBytes, align 4 @@ -411,7 +407,7 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef %59 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 44, i64 1, ptr %58) #19 %60 = load ptr, ptr %51, align 8 tail call void @free(ptr noundef %60) #17 - br label %is_valid_alignment.exit + br label %is_valid_alignment.exit.thread 61: ; preds = %55 %62 = load volatile ptr, ptr getelementptr inbounds nuw (i8, ptr @TRhead, i64 8), align 8 @@ -626,9 +622,9 @@ define internal fastcc ptr @trmalloc(i64 noundef %0, i64 noundef %1, i32 noundef %176 = call i64 asm sideeffect "rolq $$3, %rdi ; rolq $$13, %rdi\0A\09rolq $$61, %rdi ; rolq $$51, %rdi\0A\09xchgq %rbx,%rbx", "={dx},{ax},0,~{cc},~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull %14, i64 0) #17, !srcloc !10 store volatile i64 %176, ptr %15, align 8 %.0..0..0..0. = load volatile i64, ptr %15, align 8 - br label %is_valid_alignment.exit + br label %is_valid_alignment.exit.thread -is_valid_alignment.exit: ; preds = %.lr.ph.i, %17, %35, %23, %154, %57, %32 +is_valid_alignment.exit.thread: ; preds = %.lr.ph.i, %17, %35, %23, %154, %57, %32 %.075 = phi ptr [ null, %23 ], [ null, %32 ], [ null, %57 ], [ %53, %154 ], [ null, %35 ], [ null, %17 ], [ null, %.lr.ph.i ] ret ptr %.075 } diff --git a/bench/openspiel/optimized/cards.cc.ll b/bench/openspiel/optimized/cards.cc.ll index 8adf8c678f0..87853628b0e 100644 --- a/bench/openspiel/optimized/cards.cc.ll +++ b/bench/openspiel/optimized/cards.cc.ll @@ -4936,9 +4936,9 @@ _ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i: ; preds = % %42 = getelementptr inbounds nuw i8, ptr %5, i64 16 %43 = mul nuw nsw i64 %39, 24 %44 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %43) #19 - to label %.lr.ph unwind label %104 + to label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph unwind label %104 -.lr.ph: ; preds = %_ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph: ; preds = %_ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i %45 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %44, ptr %5, align 8 store ptr %44, ptr %45, align 8 @@ -4951,10 +4951,10 @@ _ZNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE11_M_allocateEm.exit.i: ; preds = % %51 = call i32 @llvm.umax.i32(i32 %1, i32 1) br label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit -_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit: ; preds = %.lr.ph, %_ZNSt6vectorIlSaIlEED2Ev.exit - %.019102 = phi i32 [ 0, %.lr.ph ], [ %103, %_ZNSt6vectorIlSaIlEED2Ev.exit ] - %.sroa.0.0101 = phi ptr [ %30, %.lr.ph ], [ %52, %_ZNSt6vectorIlSaIlEED2Ev.exit ] - %.sroa.070.0100 = phi ptr [ %30, %.lr.ph ], [ %96, %_ZNSt6vectorIlSaIlEED2Ev.exit ] +_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph, %_ZNSt6vectorIlSaIlEED2Ev.exit + %.019102 = phi i32 [ 0, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph ], [ %103, %_ZNSt6vectorIlSaIlEED2Ev.exit ] + %.sroa.0.0101 = phi ptr [ %30, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph ], [ %52, %_ZNSt6vectorIlSaIlEED2Ev.exit ] + %.sroa.070.0100 = phi ptr [ %30, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEiEvRT_T0_.exit.lr.ph ], [ %97, %_ZNSt6vectorIlSaIlEED2Ev.exit ] %52 = getelementptr inbounds nuw i64, ptr %.sroa.0.0101, i64 %47 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) %53 = ptrtoint ptr %52 to i64 @@ -4998,16 +4998,16 @@ _ZNSt12_Vector_baseIlSaIlEE11_M_allocateEm.exit.thread.i.i34: ; preds = %_ZNSt6v 62: ; preds = %57 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - %.pre = load ptr, ptr %6, align 8 - %.not.i.i6.i31 = icmp eq ptr %.pre, null + %.pre109 = load ptr, ptr %6, align 8 + %.not.i.i6.i31 = icmp eq ptr %.pre109, null br i1 %.not.i.i6.i31, label %.body36, label %63 63: ; preds = %62 %64 = load ptr, ptr %48, align 8 %65 = ptrtoint ptr %64 to i64 - %66 = ptrtoint ptr %.pre to i64 + %66 = ptrtoint ptr %.pre109 to i64 %67 = sub i64 %65, %66 - call void @_ZdlPvm(ptr noundef nonnull %.pre, i64 noundef %67) #21 + call void @_ZdlPvm(ptr noundef nonnull %.pre109, i64 noundef %67) #21 br label %.body36 68: ; preds = %.noexc5.i33, %_ZNSt12_Vector_baseIlSaIlEE11_M_allocateEm.exit.thread.i.i34 @@ -5078,20 +5078,24 @@ _ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpO 95: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEEvT_S7_.exit invoke void @_ZNSt6vectorIS_IlSaIlEESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr %71, ptr noundef nonnull align 8 dereferenceable(24) %6) - to label %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit unwind label %.loopexit85 + to label %._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge unwind label %.loopexit85 + +._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge: ; preds = %95 + %.pre = load ptr, ptr %6, align 8 + br label %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit -_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit: ; preds = %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %95 - %96 = getelementptr inbounds nuw i64, ptr %.sroa.070.0100, i64 %47 - %97 = load ptr, ptr %6, align 8 - %.not.i.i.i48 = icmp eq ptr %97, null +_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit: ; preds = %._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge, %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i + %96 = phi ptr [ %.pre, %._ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit_crit_edge ], [ %86, %_ZNSt16allocator_traitsISaISt6vectorIlSaIlEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i ] + %97 = getelementptr inbounds nuw i64, ptr %.sroa.070.0100, i64 %47 + %.not.i.i.i48 = icmp eq ptr %96, null br i1 %.not.i.i.i48, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %98 98: ; preds = %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit %99 = load ptr, ptr %48, align 8 %100 = ptrtoint ptr %99 to i64 - %101 = ptrtoint ptr %97 to i64 + %101 = ptrtoint ptr %96 to i64 %102 = sub i64 %100, %101 - call void @_ZdlPvm(ptr noundef nonnull %97, i64 noundef %102) #21 + call void @_ZdlPvm(ptr noundef nonnull %96, i64 noundef %102) #21 br label %_ZNSt6vectorIlSaIlEED2Ev.exit _ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %_ZNSt6vectorIS_IlSaIlEESaIS1_EE9push_backERKS1_.exit, %98 diff --git a/bench/openssl/optimized/libcrypto-lib-conf_def.ll b/bench/openssl/optimized/libcrypto-lib-conf_def.ll index 6582d6bccba..af63a24f604 100644 --- a/bench/openssl/optimized/libcrypto-lib-conf_def.ll +++ b/bench/openssl/optimized/libcrypto-lib-conf_def.ll @@ -189,34 +189,34 @@ if.then11: ; preds = %if.end8 br label %err if.then14: ; preds = %for.cond.outer, %if.end328, %for.cond.backedge - %biosk.1.ph361.lcssa464 = phi ptr [ %biosk.1.ph361500, %for.cond.backedge ], [ %biosk.2, %if.end328 ], [ %biosk.1.ph, %for.cond.outer ] + %biosk.1.ph361.lcssa465 = phi ptr [ %biosk.1.ph361501, %for.cond.backedge ], [ %biosk.2, %if.end328 ], [ %biosk.1.ph, %for.cond.outer ] %eline.1.lcssa = phi i64 [ %eline.2, %for.cond.backedge ], [ %eline.2, %if.end328 ], [ %eline.1.ph, %for.cond.outer ] - %in.addr.1.lcssa = phi ptr [ %.us-phi479695, %for.cond.backedge ], [ %in.addr.3, %if.end328 ], [ %in.addr.1.ph, %for.cond.outer ] + %in.addr.1.lcssa = phi ptr [ %.us-phi480697, %for.cond.backedge ], [ %in.addr.3, %if.end328 ], [ %in.addr.1.ph, %for.cond.outer ] call void @ERR_new() #13 call void @ERR_set_debug(ptr noundef nonnull @.str.1, i32 noundef 257, ptr noundef nonnull @__func__.def_load_bio) #13 call void (i32, i32, ptr, ...) @ERR_set_error(i32 noundef 14, i32 noundef 524295, ptr noundef null) #13 br label %err if.end15: ; preds = %if.end15.lr.ph, %for.cond.backedge - %in.addr.1489 = phi ptr [ %in.addr.1.ph362501, %if.end15.lr.ph ], [ %.us-phi479695, %for.cond.backedge ] - %bufnum.0488 = phi i32 [ 0, %if.end15.lr.ph ], [ %bufnum.0.be, %for.cond.backedge ] - %eline.1486 = phi i64 [ %eline.1.ph360499, %if.end15.lr.ph ], [ %eline.2, %for.cond.backedge ] - %1 = phi i1 [ %.ph359498, %if.end15.lr.ph ], [ false, %for.cond.backedge ] - %tobool47485 = phi i1 [ false, %if.end15.lr.ph ], [ %tobool113.not701, %for.cond.backedge ] + %in.addr.1490 = phi ptr [ %in.addr.1.ph362502, %if.end15.lr.ph ], [ %.us-phi480697, %for.cond.backedge ] + %bufnum.0489 = phi i32 [ 0, %if.end15.lr.ph ], [ %bufnum.0.be, %for.cond.backedge ] + %eline.1487 = phi i64 [ %eline.1.ph360500, %if.end15.lr.ph ], [ %eline.2, %for.cond.backedge ] + %1 = phi i1 [ %.ph359499, %if.end15.lr.ph ], [ false, %for.cond.backedge ] + %tobool47486 = phi i1 [ false, %if.end15.lr.ph ], [ %tobool113.not703, %for.cond.backedge ] %2 = load ptr, ptr %data16, align 8 - %idxprom = sext i32 %bufnum.0488 to i64 + %idxprom = sext i32 %bufnum.0489 to i64 %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom store i8 0, ptr %arrayidx, align 1 %arrayidx24 = getelementptr inbounds nuw i8, ptr %arrayidx, i64 511 %add.ptr = getelementptr inbounds nuw i8, ptr %arrayidx, i64 3 - br i1 %tobool47485, label %if.end15.split.us, label %read_retry + br i1 %tobool47486, label %if.end15.split.us, label %read_retry if.end15.split.us: ; preds = %if.end15 - %cmp17.not.us = icmp eq ptr %in.addr.1489, null + %cmp17.not.us = icmp eq ptr %in.addr.1490, null br i1 %cmp17.not.us, label %if.end23.us, label %land.lhs.true.us land.lhs.true.us: ; preds = %if.end15.split.us - %call19.us = call i32 @BIO_gets(ptr noundef nonnull %in.addr.1489, ptr noundef nonnull %arrayidx, i32 noundef 511) #13 + %call19.us = call i32 @BIO_gets(ptr noundef nonnull %in.addr.1490, ptr noundef nonnull %arrayidx, i32 noundef 511) #13 %cmp20.us = icmp slt i32 %call19.us, 0 br i1 %cmp20.us, label %err, label %if.end23.us @@ -248,7 +248,7 @@ if.end43.us: ; preds = %if.then35.us, %land read_retry: ; preds = %if.end15, %read_retry.backedge %first_call.1 = phi i1 [ false, %read_retry.backedge ], [ %1, %if.end15 ] - %in.addr.2 = phi ptr [ %in.addr.2.be, %read_retry.backedge ], [ %in.addr.1489, %if.end15 ] + %in.addr.2 = phi ptr [ %in.addr.2.be, %read_retry.backedge ], [ %in.addr.1490, %if.end15 ] %cmp17.not = icmp eq ptr %in.addr.2, null br i1 %cmp17.not, label %if.end23, label %land.lhs.true @@ -284,18 +284,18 @@ if.end43: ; preds = %if.then35, %if.end2 br i1 %cmp44.not, label %if.then48, label %while.cond.preheader while.cond.preheader: ; preds = %if.end43, %if.end43.us - %.us-phi477 = phi i32 [ %i.0.us, %if.end43.us ], [ %i.0, %if.end43 ] - %.us-phi478 = phi i1 [ %cmp44.us, %if.end43.us ], [ true, %if.end43 ] - %.us-phi479 = phi ptr [ %in.addr.1489, %if.end43.us ], [ %in.addr.2, %if.end43 ] - %cmp65480 = icmp sgt i32 %.us-phi477, 0 - br i1 %cmp65480, label %while.body.preheader, label %while.end + %.us-phi478 = phi i32 [ %i.0.us, %if.end43.us ], [ %i.0, %if.end43 ] + %.us-phi479 = phi i1 [ %cmp44.us, %if.end43.us ], [ true, %if.end43 ] + %.us-phi480 = phi ptr [ %in.addr.1490, %if.end43.us ], [ %in.addr.2, %if.end43 ] + %cmp65481 = icmp sgt i32 %.us-phi478, 0 + br i1 %cmp65481, label %while.body.preheader, label %while.end while.body.preheader: ; preds = %land.lhs.true31, %while.cond.preheader - %.us-phi479696 = phi ptr [ %.us-phi479, %while.cond.preheader ], [ %in.addr.2, %land.lhs.true31 ] - %.us-phi478694 = phi i1 [ %.us-phi478, %while.cond.preheader ], [ true, %land.lhs.true31 ] - %.us-phi477692 = phi i32 [ %.us-phi477, %while.cond.preheader ], [ %conv26, %land.lhs.true31 ] - %invariant.gep697 = getelementptr i8, ptr %arrayidx, i64 -1 - %3 = zext nneg i32 %.us-phi477692 to i64 + %.us-phi480698 = phi ptr [ %.us-phi480, %while.cond.preheader ], [ %in.addr.2, %land.lhs.true31 ] + %.us-phi479696 = phi i1 [ %.us-phi479, %while.cond.preheader ], [ true, %land.lhs.true31 ] + %.us-phi478694 = phi i32 [ %.us-phi478, %while.cond.preheader ], [ %conv26, %land.lhs.true31 ] + %invariant.gep699 = getelementptr i8, ptr %arrayidx, i64 -1 + %3 = zext nneg i32 %.us-phi478694 to i64 br label %while.body if.then48: ; preds = %if.end43 @@ -320,13 +320,13 @@ if.else: ; preds = %if.then51 br label %if.end57 if.end57: ; preds = %if.else, %if.then48 - %call59 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.1.ph361500) #13 + %call59 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.1.ph361501) #13 %cmp60 = icmp eq ptr %call59, null br i1 %cmp60, label %for.end, label %read_retry.backedge while.body: ; preds = %while.body.preheader, %if.else81 %indvars.iv = phi i64 [ %3, %while.body.preheader ], [ %indvars.iv.next, %if.else81 ] - %gep = getelementptr i8, ptr %invariant.gep697, i64 %indvars.iv + %gep = getelementptr i8, ptr %invariant.gep699, i64 %indvars.iv %6 = load i8, ptr %gep, align 1 switch i8 %6, label %while.end.loopexit.split.loop.exit [ i8 13, label %if.else81 @@ -343,24 +343,24 @@ while.end.loopexit.split.loop.exit: ; preds = %while.body br label %while.end while.end: ; preds = %if.else81, %while.end.loopexit.split.loop.exit, %while.cond.preheader - %.us-phi479695 = phi ptr [ %.us-phi479, %while.cond.preheader ], [ %.us-phi479696, %while.end.loopexit.split.loop.exit ], [ %.us-phi479696, %if.else81 ] - %.us-phi478693 = phi i1 [ %.us-phi478, %while.cond.preheader ], [ %.us-phi478694, %while.end.loopexit.split.loop.exit ], [ %.us-phi478694, %if.else81 ] - %.us-phi477691 = phi i32 [ %.us-phi477, %while.cond.preheader ], [ %.us-phi477692, %while.end.loopexit.split.loop.exit ], [ %.us-phi477692, %if.else81 ] - %i.2.lcssa = phi i32 [ %.us-phi477, %while.cond.preheader ], [ %7, %while.end.loopexit.split.loop.exit ], [ 0, %if.else81 ] - %cmp85 = icmp eq i32 %i.2.lcssa, %.us-phi477691 - %or.cond183 = and i1 %.us-phi478693, %cmp85 + %.us-phi480697 = phi ptr [ %.us-phi480, %while.cond.preheader ], [ %.us-phi480698, %while.end.loopexit.split.loop.exit ], [ %.us-phi480698, %if.else81 ] + %.us-phi479695 = phi i1 [ %.us-phi479, %while.cond.preheader ], [ %.us-phi479696, %while.end.loopexit.split.loop.exit ], [ %.us-phi479696, %if.else81 ] + %.us-phi478693 = phi i32 [ %.us-phi478, %while.cond.preheader ], [ %.us-phi478694, %while.end.loopexit.split.loop.exit ], [ %.us-phi478694, %if.else81 ] + %i.2.lcssa = phi i32 [ %.us-phi478, %while.cond.preheader ], [ %7, %while.end.loopexit.split.loop.exit ], [ 0, %if.else81 ] + %cmp85 = icmp eq i32 %i.2.lcssa, %.us-phi478693 + %or.cond183 = and i1 %.us-phi479695, %cmp85 br i1 %or.cond183, label %if.end91, label %if.else88 if.else88: ; preds = %while.end %idxprom89 = sext i32 %i.2.lcssa to i64 %arrayidx90 = getelementptr inbounds i8, ptr %arrayidx, i64 %idxprom89 store i8 0, ptr %arrayidx90, align 1 - %inc = add nsw i64 %eline.1486, 1 + %inc = add nsw i64 %eline.1487, 1 br label %if.end91 if.end91: ; preds = %while.end, %if.else88 - %eline.2 = phi i64 [ %inc, %if.else88 ], [ %eline.1486, %while.end ] - %add92 = add nsw i32 %i.2.lcssa, %bufnum.0488 + %eline.2 = phi i64 [ %inc, %if.else88 ], [ %eline.1487, %while.end ] + %add92 = add nsw i32 %i.2.lcssa, %bufnum.0489 %cmp93 = icmp sgt i32 %add92, 0 br i1 %cmp93, label %if.then95, label %if.end112 @@ -410,8 +410,8 @@ if.end112: ; preds = %if.then95, %is_keyt if.end115: ; preds = %if.end112 %18 = load ptr, ptr %data16, align 8 %19 = load i8, ptr %18, align 1 - %cmp.i133.i = icmp slt i8 %19, 0 - br i1 %cmp.i133.i, label %for.cond5.i.preheader, label %is_keytype.exit.lr.ph.i + %cmp.i134.i = icmp slt i8 %19, 0 + br i1 %cmp.i134.i, label %for.cond5.i.preheader, label %is_keytype.exit.lr.ph.i is_keytype.exit.lr.ph.i: ; preds = %if.end115 %20 = load ptr, ptr %meth_data.i, align 8 @@ -419,7 +419,7 @@ is_keytype.exit.lr.ph.i: ; preds = %if.end115 is_keytype.exit.i: ; preds = %if.end4.i, %is_keytype.exit.lr.ph.i %21 = phi i8 [ %19, %is_keytype.exit.lr.ph.i ], [ %26, %if.end4.i ] - %p.addr.0134.i = phi ptr [ %18, %is_keytype.exit.lr.ph.i ], [ %incdec.ptr.i, %if.end4.i ] + %p.addr.0135.i = phi ptr [ %18, %is_keytype.exit.lr.ph.i ], [ %incdec.ptr.i, %if.end4.i ] %idxprom.i.i = zext nneg i8 %21 to i64 %arrayidx.i.i = getelementptr inbounds nuw i16, ptr %20, i64 %idxprom.i.i %22 = load i16, ptr %arrayidx.i.i, align 2 @@ -433,14 +433,14 @@ if.end.i26.i: ; preds = %is_keytype.exit.i br i1 %25, label %for.cond5.i.preheader, label %if.end4.i if.end4.i: ; preds = %if.end.i26.i - %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %p.addr.0134.i, i64 1 + %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %p.addr.0135.i, i64 1 %26 = load i8, ptr %incdec.ptr.i, align 1 %cmp.i.i = icmp slt i8 %26, 0 br i1 %cmp.i.i, label %for.cond5.i.preheader, label %is_keytype.exit.i for.cond5.i.preheader: ; preds = %if.end4.i, %if.end.i26.i, %if.end115 %.ph = phi i8 [ %19, %if.end115 ], [ %21, %if.end.i26.i ], [ %26, %if.end4.i ] - %p.addr.1.i.ph = phi ptr [ %18, %if.end115 ], [ %p.addr.0134.i, %if.end.i26.i ], [ %incdec.ptr.i, %if.end4.i ] + %p.addr.1.i.ph = phi ptr [ %18, %if.end115 ], [ %p.addr.0135.i, %if.end.i26.i ], [ %incdec.ptr.i, %if.end4.i ] br label %for.cond5.i for.cond5.i: ; preds = %for.cond5.i.preheader, %for.cond5.backedge.i @@ -514,7 +514,7 @@ while.cond.i68.i: ; preds = %is_keytype.exit66.i %p.addr.0.i70.i = getelementptr inbounds nuw i8, ptr %p.pn.i69.i, i64 1 %37 = load i8, ptr %p.addr.0.i70.i, align 1 %cmp.i.i71.i = icmp slt i8 %37, 0 - br i1 %cmp.i.i71.i, label %land.rhs.i.i, label %is_keytype.exit.i72.i + br i1 %cmp.i.i71.i, label %while.cond.i68.i.backedge, label %is_keytype.exit.i72.i is_keytype.exit.i72.i: ; preds = %while.cond.i68.i %idxprom.i.i73.i = zext nneg i8 %37 to i64 @@ -526,10 +526,6 @@ is_keytype.exit.i72.i: ; preds = %while.cond.i68.i %or.cond.i.i = or i1 %cmp.not37.i.i, %tobool.not.i75.i br i1 %or.cond.i.i, label %while.end.i.i, label %is_keytype.exit24.i.i -land.rhs.i.i: ; preds = %while.cond.i68.i - %cmp.not.i.i = icmp eq i8 %37, %27 - br i1 %cmp.not.i.i, label %while.end.i.i, label %while.cond.i68.i.backedge - is_keytype.exit24.i.i: ; preds = %is_keytype.exit.i72.i %40 = and i16 %38, 32 %tobool4.not.i.i = icmp eq i16 %40, 0 @@ -549,15 +545,13 @@ is_keytype.exit34.i.i: ; preds = %if.then.i76.i %tobool7.not.i.i = icmp eq i16 %43, 0 br i1 %tobool7.not.i.i, label %while.cond.i68.i.backedge, label %for.cond5.backedge.i -while.cond.i68.i.backedge: ; preds = %is_keytype.exit34.i.i, %if.then.i76.i, %is_keytype.exit24.i.i, %land.rhs.i.i - %p.pn.i69.i.be = phi ptr [ %incdec.ptr5.i.i, %is_keytype.exit34.i.i ], [ %p.addr.0.i70.i, %is_keytype.exit24.i.i ], [ %p.addr.0.i70.i, %land.rhs.i.i ], [ %incdec.ptr5.i.i, %if.then.i76.i ] +while.cond.i68.i.backedge: ; preds = %is_keytype.exit34.i.i, %if.then.i76.i, %is_keytype.exit24.i.i, %while.cond.i68.i + %p.pn.i69.i.be = phi ptr [ %incdec.ptr5.i.i, %is_keytype.exit34.i.i ], [ %p.addr.0.i70.i, %is_keytype.exit24.i.i ], [ %incdec.ptr5.i.i, %if.then.i76.i ], [ %p.addr.0.i70.i, %while.cond.i68.i ] br label %while.cond.i68.i, !llvm.loop !7 -while.end.i.i: ; preds = %land.rhs.i.i, %is_keytype.exit.i72.i - %.lcssa.i79.i = phi i8 [ %37, %is_keytype.exit.i72.i ], [ %27, %land.rhs.i.i ] - %cmp12.i.i = icmp eq i8 %.lcssa.i79.i, %27 +while.end.i.i: ; preds = %is_keytype.exit.i72.i %incdec.ptr15.i.i = getelementptr inbounds nuw i8, ptr %p.pn.i69.i, i64 2 - %spec.select.i80.i = select i1 %cmp12.i.i, ptr %incdec.ptr15.i.i, ptr %p.addr.0.i70.i + %spec.select.i80.i = select i1 %cmp.not37.i.i, ptr %incdec.ptr15.i.i, ptr %p.addr.0.i70.i br label %for.cond5.backedge.i is_keytype.exit90.i: ; preds = %is_keytype.exit66.i @@ -596,7 +590,7 @@ if.else.i: ; preds = %is_keytype.exit110. br label %for.cond5.backedge.i return.sink.split.i: ; preds = %is_keytype.exit.i, %is_keytype.exit44.i - %p.addr.1.lcssa.sink.i = phi ptr [ %p.addr.1.i, %is_keytype.exit44.i ], [ %p.addr.0134.i, %is_keytype.exit.i ] + %p.addr.1.lcssa.sink.i = phi ptr [ %p.addr.1.i, %is_keytype.exit44.i ], [ %p.addr.0135.i, %is_keytype.exit.i ] store i8 0, ptr %p.addr.1.lcssa.sink.i, align 1 %.pre = load i8, ptr %18, align 1 br label %clear_comments.exit @@ -663,17 +657,17 @@ eat_ws.exit227: ; preds = %is_keytype.exit.i21 br label %again127 again127: ; preds = %land.lhs.true137, %eat_ws.exit227 - %.pr344676 = phi i8 [ %.pr344677, %land.lhs.true137 ], [ %.pr339, %eat_ws.exit227 ] - %.pr340670 = phi i8 [ %.pr340671, %land.lhs.true137 ], [ %.pr339, %eat_ws.exit227 ] + %.pr344678 = phi i8 [ %.pr344679, %land.lhs.true137 ], [ %.pr339, %eat_ws.exit227 ] + %.pr340672 = phi i8 [ %.pr340673, %land.lhs.true137 ], [ %.pr339, %eat_ws.exit227 ] %ss.0 = phi ptr [ %p.addr.0.lcssa.i248, %land.lhs.true137 ], [ %p.addr.0.lcssa.i223, %eat_ws.exit227 ] - %cmp.i56.i228 = icmp slt i8 %.pr340670, 0 + %cmp.i56.i228 = icmp slt i8 %.pr340672, 0 br i1 %cmp.i56.i228, label %eat_ws.exit252, label %is_keytype.exit.i230 is_keytype.exit.i230: ; preds = %again127, %for.cond.backedge.i - %.pr344674 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr344676, %again127 ] - %.pr340673 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr340670, %again127 ] + %.pr344676 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr344678, %again127 ] + %.pr340675 = phi i8 [ %65, %for.cond.backedge.i ], [ %.pr340672, %again127 ] %p.addr.057.i = phi ptr [ %p.addr.0.be.i, %for.cond.backedge.i ], [ %ss.0, %again127 ] - %idxprom.i.i231 = zext nneg i8 %.pr340673 to i64 + %idxprom.i.i231 = zext nneg i8 %.pr340675 to i64 %arrayidx.i.i232 = getelementptr inbounds nuw i16, ptr %50, i64 %idxprom.i.i231 %60 = load i16, ptr %arrayidx.i.i232, align 2 %61 = and i16 %60, 32 @@ -725,12 +719,12 @@ if.end10.i: ; preds = %lor.lhs.false.threa br label %for.cond.backedge.i is_keytype.exit.lr.ph.i241: ; preds = %lor.lhs.false.thread.i - %idxprom.i.i2451074 = zext nneg i8 %.pr340673 to i64 - %arrayidx.i.i2461075 = getelementptr inbounds nuw i16, ptr %50, i64 %idxprom.i.i2451074 - %68 = load i16, ptr %arrayidx.i.i2461075, align 2 + %idxprom.i.i2451078 = zext nneg i8 %.pr340675 to i64 + %arrayidx.i.i2461079 = getelementptr inbounds nuw i16, ptr %50, i64 %idxprom.i.i2451078 + %68 = load i16, ptr %arrayidx.i.i2461079, align 2 %69 = and i16 %68, 24 - %or.cond.i2471076 = icmp eq i16 %69, 16 - br i1 %or.cond.i2471076, label %while.body.i249, label %eat_ws.exit252 + %or.cond.i2471080 = icmp eq i16 %69, 16 + br i1 %or.cond.i2471080, label %while.body.i249, label %eat_ws.exit252 is_keytype.exit.i243: ; preds = %while.body.i249 %idxprom.i.i245 = zext nneg i8 %72 to i64 @@ -741,18 +735,18 @@ is_keytype.exit.i243: ; preds = %while.body.i249 br i1 %or.cond.i247, label %while.body.i249, label %eat_ws.exit252, !llvm.loop !8 while.body.i249: ; preds = %is_keytype.exit.lr.ph.i241, %is_keytype.exit.i243 - %p.addr.018.i2441077 = phi ptr [ %incdec.ptr.i250, %is_keytype.exit.i243 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ] - %incdec.ptr.i250 = getelementptr inbounds nuw i8, ptr %p.addr.018.i2441077, i64 1 + %p.addr.018.i2441081 = phi ptr [ %incdec.ptr.i250, %is_keytype.exit.i243 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ] + %incdec.ptr.i250 = getelementptr inbounds nuw i8, ptr %p.addr.018.i2441081, i64 1 %72 = load i8, ptr %incdec.ptr.i250, align 1 %cmp.i.i251 = icmp slt i8 %72, 0 br i1 %cmp.i.i251, label %eat_ws.exit252, label %is_keytype.exit.i243, !llvm.loop !8 eat_ws.exit252: ; preds = %for.cond.backedge.i, %is_keytype.exit.i243, %while.body.i249, %is_keytype.exit.lr.ph.i241, %again127 - %.pr344677 = phi i8 [ %.pr344676, %again127 ], [ %.pr344674, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] - %.pr340671 = phi i8 [ %.pr340670, %again127 ], [ %.pr344674, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] + %.pr344679 = phi i8 [ %.pr344678, %again127 ], [ %.pr344676, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] + %.pr340673 = phi i8 [ %.pr340672, %again127 ], [ %.pr344676, %is_keytype.exit.lr.ph.i241 ], [ %72, %while.body.i249 ], [ %72, %is_keytype.exit.i243 ], [ %65, %for.cond.backedge.i ] %p.addr.0.lcssa.i237343 = phi ptr [ %ss.0, %again127 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ], [ %p.addr.057.i, %while.body.i249 ], [ %p.addr.057.i, %is_keytype.exit.i243 ], [ %p.addr.0.be.i, %for.cond.backedge.i ] %p.addr.0.lcssa.i248 = phi ptr [ %ss.0, %again127 ], [ %p.addr.057.i, %is_keytype.exit.lr.ph.i241 ], [ %incdec.ptr.i250, %while.body.i249 ], [ %incdec.ptr.i250, %is_keytype.exit.i243 ], [ %p.addr.0.be.i, %for.cond.backedge.i ] - switch i8 %.pr340671, label %land.lhs.true137 [ + switch i8 %.pr340673, label %land.lhs.true137 [ i8 93, label %if.end142 i8 0, label %if.end141 ] @@ -792,11 +786,11 @@ for.cond.outer: ; preds = %for.cond.preheader, %.ph357 = phi i1 [ true, %for.cond.preheader ], [ false, %if.end152 ] %eline.1.ph = phi i64 [ 0, %for.cond.preheader ], [ %eline.2, %if.end152 ] %sv.0.ph = phi ptr [ %call9, %for.cond.preheader ], [ %sv.1, %if.end152 ] - %biosk.1.ph = phi ptr [ null, %for.cond.preheader ], [ %biosk.1.ph361500, %if.end152 ] - %in.addr.1.ph = phi ptr [ %in, %for.cond.preheader ], [ %.us-phi479695, %if.end152 ] - %call13483496 = call i64 @BUF_MEM_grow(ptr noundef nonnull %call, i64 noundef 512) #13 - %tobool.not484497 = icmp eq i64 %call13483496, 0 - br i1 %tobool.not484497, label %if.then14, label %if.end15.lr.ph + %biosk.1.ph = phi ptr [ null, %for.cond.preheader ], [ %biosk.1.ph361501, %if.end152 ] + %in.addr.1.ph = phi ptr [ %in, %for.cond.preheader ], [ %.us-phi480697, %if.end152 ] + %call13484497 = call i64 @BUF_MEM_grow(ptr noundef nonnull %call, i64 noundef 512) #13 + %tobool.not485498 = icmp eq i64 %call13484497, 0 + br i1 %tobool.not485498, label %if.then14, label %if.end15.lr.ph if.then155: ; preds = %if.end152 call void @ERR_new() #13 @@ -821,7 +815,7 @@ if.then168: ; preds = %land.lhs.true163 store i8 0, ptr %call158, align 1 %add.ptr169 = getelementptr inbounds nuw i8, ptr %call158, i64 2 %call170 = call fastcc ptr @eat_alpha_numeric(ptr noundef nonnull %conf, ptr noundef nonnull %add.ptr169) - %.pre679 = load i8, ptr %call170, align 1 + %.pre681 = load i8, ptr %call170, align 1 br label %if.end172 if.else171: ; preds = %land.lhs.true163, %if.else157 @@ -829,7 +823,7 @@ if.else171: ; preds = %land.lhs.true163, % br label %if.end172 if.end172: ; preds = %if.else171, %if.then168 - %77 = phi i8 [ %.pre679, %if.then168 ], [ %74, %if.else171 ] + %77 = phi i8 [ %.pre681, %if.then168 ], [ %74, %if.else171 ] %end.0 = phi ptr [ %call170, %if.then168 ], [ %call158, %if.else171 ] %psection.0 = phi ptr [ %p.addr.0.lcssa.i202330335338, %if.then168 ], [ %76, %if.else171 ] %pname.0 = phi ptr [ %add.ptr169, %if.then168 ], [ %p.addr.0.lcssa.i202330335338, %if.else171 ] @@ -857,9 +851,9 @@ while.body.i262: ; preds = %is_keytype.exit.i25 br i1 %cmp.i.i264, label %eat_ws.exit265.loopexit, label %is_keytype.exit.i256, !llvm.loop !8 eat_ws.exit265.loopexit: ; preds = %while.body.i262, %is_keytype.exit.i256 - %.pr345681 = phi i8 [ %82, %while.body.i262 ], [ %79, %is_keytype.exit.i256 ] + %.pr345683 = phi i8 [ %82, %while.body.i262 ], [ %79, %is_keytype.exit.i256 ] %p.addr.0.lcssa.i261.ph = phi ptr [ %incdec.ptr.i263, %while.body.i262 ], [ %p.addr.018.i257, %is_keytype.exit.i256 ] - %83 = icmp eq i8 %.pr345681, 61 + %83 = icmp eq i8 %.pr345683, 61 br label %eat_ws.exit265 eat_ws.exit265: ; preds = %eat_ws.exit265.loopexit, %if.end172 @@ -989,7 +983,7 @@ if.then229: ; preds = %if.else225 br i1 %cmp232, label %err, label %for.cond.backedge for.cond.backedge: ; preds = %if.end112.thread, %if.then211, %if.else225, %if.then229, %if.then220, %if.end112, %is_keytype.exit214, %if.end370 - %tobool113.not701 = phi i1 [ true, %if.end112 ], [ false, %is_keytype.exit214 ], [ false, %if.end370 ], [ false, %if.then220 ], [ false, %if.then229 ], [ false, %if.else225 ], [ false, %if.then211 ], [ true, %if.end112.thread ] + %tobool113.not703 = phi i1 [ true, %if.end112 ], [ false, %is_keytype.exit214 ], [ false, %if.end370 ], [ false, %if.then220 ], [ false, %if.then229 ], [ false, %if.else225 ], [ false, %if.then211 ], [ true, %if.end112.thread ] %bufnum.0.be = phi i32 [ %add92, %if.end112 ], [ 0, %is_keytype.exit214 ], [ 0, %if.end370 ], [ 0, %if.then220 ], [ 0, %if.then229 ], [ 0, %if.else225 ], [ 0, %if.then211 ], [ %dec110, %if.end112.thread ] %add = add nsw i32 %bufnum.0.be, 512 %conv = sext i32 %add to i64 @@ -1003,11 +997,11 @@ if.else239: ; preds = %eat_ws.exit265 br i1 %cmp241, label %cond.true243, label %if.else329 if.else239.thread: ; preds = %lor.lhs.false181 - %call240707 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %add.ptr177, ptr noundef nonnull dereferenceable(9) @.str.7, i64 noundef 8) #14 - %cmp241708 = icmp ne i32 %call240707, 0 - %add.ptr244713 = getelementptr inbounds nuw i8, ptr %pname.0, i64 15 - %cmp247.not714 = icmp eq ptr %p.addr.0.lcssa.i261, %add.ptr244713 - %or.cond = select i1 %cmp241708, i1 true, i1 %cmp247.not714 + %call240709 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %add.ptr177, ptr noundef nonnull dereferenceable(9) @.str.7, i64 noundef 8) #14 + %cmp241710 = icmp ne i32 %call240709, 0 + %add.ptr244715 = getelementptr inbounds nuw i8, ptr %pname.0, i64 15 + %cmp247.not716 = icmp eq ptr %p.addr.0.lcssa.i261, %add.ptr244715 + %or.cond = select i1 %cmp241710, i1 true, i1 %cmp247.not716 br i1 %or.cond, label %if.then333, label %if.then253 cond.true243: ; preds = %if.else239 @@ -1067,17 +1061,17 @@ if.end267: ; preds = %while.body.i301, %i if.end271: ; preds = %if.end267 %cmp272.not = icmp eq ptr %include_dir.0, null - %.pre682 = load ptr, ptr %include, align 8 + %.pre684 = load ptr, ptr %include, align 8 br i1 %cmp272.not, label %if.end295, label %land.lhs.true274 land.lhs.true274: ; preds = %if.end271 - %.val = load i8, ptr %.pre682, align 1 + %.val = load i8, ptr %.pre684, align 1 %cmp.i305.not = icmp eq i8 %.val, 47 br i1 %cmp.i305.not, label %if.end295, label %if.then277 if.then277: ; preds = %land.lhs.true274 %call278 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %include_dir.0) #14 - %call279 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pre682) #14 + %call279 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.pre684) #14 %add280 = add i64 %call278, 2 %add281 = add i64 %add280, %call279 %call282 = call noalias ptr @CRYPTO_malloc(i64 noundef %add281, ptr noundef nonnull @.str.1, i32 noundef 472) #13 @@ -1085,7 +1079,7 @@ if.then277: ; preds = %land.lhs.true274 br i1 %cmp283, label %if.then285, label %if.end286 if.then285: ; preds = %if.then277 - call void @CRYPTO_free(ptr noundef nonnull %.pre682, ptr noundef nonnull @.str.1, i32 noundef 474) #13 + call void @CRYPTO_free(ptr noundef nonnull %.pre684, ptr noundef nonnull @.str.1, i32 noundef 474) #13 br label %err if.end286: ; preds = %if.then277 @@ -1107,12 +1101,12 @@ if.then290: ; preds = %if.end286, %ossl_en br label %if.end292 if.end292: ; preds = %if.then290, %ossl_ends_with_dirsep.exit - %call293 = call i64 @OPENSSL_strlcat(ptr noundef nonnull %call282, ptr noundef nonnull %.pre682, i64 noundef %add281) #13 - call void @CRYPTO_free(ptr noundef nonnull %.pre682, ptr noundef nonnull @.str.1, i32 noundef 482) #13 + %call293 = call i64 @OPENSSL_strlcat(ptr noundef nonnull %call282, ptr noundef nonnull %.pre684, i64 noundef %add281) #13 + call void @CRYPTO_free(ptr noundef nonnull %.pre684, ptr noundef nonnull @.str.1, i32 noundef 482) #13 br label %if.end295 if.end295: ; preds = %if.end271, %land.lhs.true274, %if.end292 - %include_path.0 = phi ptr [ %call282, %if.end292 ], [ %.pre682, %land.lhs.true274 ], [ %.pre682, %if.end271 ] + %include_path.0 = phi ptr [ %call282, %if.end292 ], [ %.pre684, %land.lhs.true274 ], [ %.pre684, %if.end271 ] %108 = load i32, ptr %flag_abspath, align 4 %tobool297.not = icmp eq i32 %108, 0 br i1 %tobool297.not, label %if.end302, label %land.lhs.true298 @@ -1144,7 +1138,7 @@ if.end307: ; preds = %if.then306, %if.end br i1 %cmp308.not, label %if.end328, label %if.then310 if.then310: ; preds = %if.end307 - %cmp311 = icmp eq ptr %biosk.1.ph361500, null + %cmp311 = icmp eq ptr %biosk.1.ph361501, null br i1 %cmp311, label %if.then313, label %if.end320 if.then313: ; preds = %if.then310 @@ -1160,8 +1154,8 @@ if.then317: ; preds = %if.then313 br label %err if.end320: ; preds = %if.then313, %if.then310 - %biosk.3 = phi ptr [ %call314, %if.then313 ], [ %biosk.1.ph361500, %if.then310 ] - %call323 = call i32 @OPENSSL_sk_push(ptr noundef nonnull %biosk.3, ptr noundef %.us-phi479695) #13 + %biosk.3 = phi ptr [ %call314, %if.then313 ], [ %biosk.1.ph361501, %if.then310 ] + %call323 = call i32 @OPENSSL_sk_push(ptr noundef nonnull %biosk.3, ptr noundef %.us-phi480697) #13 %tobool324.not = icmp eq i32 %call323, 0 br i1 %tobool324.not, label %if.then325, label %if.end328 @@ -1173,17 +1167,17 @@ if.then325: ; preds = %if.end320 br label %err if.end328: ; preds = %if.end320, %if.end307 - %biosk.2 = phi ptr [ %biosk.1.ph361500, %if.end307 ], [ %biosk.3, %if.end320 ] - %in.addr.3 = phi ptr [ %.us-phi479695, %if.end307 ], [ %call303, %if.end320 ] - %call13483 = call i64 @BUF_MEM_grow(ptr noundef nonnull %call, i64 noundef 512) #13 - %tobool.not484 = icmp eq i64 %call13483, 0 - br i1 %tobool.not484, label %if.then14, label %if.end15.lr.ph + %biosk.2 = phi ptr [ %biosk.1.ph361501, %if.end307 ], [ %biosk.3, %if.end320 ] + %in.addr.3 = phi ptr [ %.us-phi480697, %if.end307 ], [ %call303, %if.end320 ] + %call13484 = call i64 @BUF_MEM_grow(ptr noundef nonnull %call, i64 noundef 512) #13 + %tobool.not485 = icmp eq i64 %call13484, 0 + br i1 %tobool.not485, label %if.then14, label %if.end15.lr.ph if.end15.lr.ph: ; preds = %for.cond.outer, %if.end328 - %in.addr.1.ph362501 = phi ptr [ %in.addr.3, %if.end328 ], [ %in.addr.1.ph, %for.cond.outer ] - %biosk.1.ph361500 = phi ptr [ %biosk.2, %if.end328 ], [ %biosk.1.ph, %for.cond.outer ] - %eline.1.ph360499 = phi i64 [ %eline.2, %if.end328 ], [ %eline.1.ph, %for.cond.outer ] - %.ph359498 = phi i1 [ false, %if.end328 ], [ %.ph357, %for.cond.outer ] + %in.addr.1.ph362502 = phi ptr [ %in.addr.3, %if.end328 ], [ %in.addr.1.ph, %for.cond.outer ] + %biosk.1.ph361501 = phi ptr [ %biosk.2, %if.end328 ], [ %biosk.1.ph, %for.cond.outer ] + %eline.1.ph360500 = phi i64 [ %eline.2, %if.end328 ], [ %eline.1.ph, %for.cond.outer ] + %.ph359499 = phi i1 [ false, %if.end328 ], [ %.ph357, %for.cond.outer ] br label %if.end15 if.else329: ; preds = %if.else239 @@ -1281,25 +1275,25 @@ for.end: ; preds = %if.end57 call void @BUF_MEM_free(ptr noundef nonnull %call) #13 %117 = load ptr, ptr %section, align 8 call void @CRYPTO_free(ptr noundef %117, ptr noundef nonnull @.str.1, i32 noundef 562) #13 - call void @OPENSSL_sk_free(ptr noundef %biosk.1.ph361500) #13 + call void @OPENSSL_sk_free(ptr noundef %biosk.1.ph361501) #13 br label %return err: ; preds = %if.end142, %if.end267, %if.end349, %if.end343, %eat_ws.exit323, %if.then229, %if.then220, %if.then211, %land.lhs.true.us, %land.lhs.true, %if.end, %if.then374, %if.then367, %if.then333, %if.then325, %if.then317, %if.then301, %if.then285, %if.then204, %if.then155, %if.end141, %if.then14, %if.then11, %if.then7, %if.then - %eline.0 = phi i64 [ 0, %if.then ], [ 0, %if.end ], [ 0, %if.then7 ], [ 0, %if.then11 ], [ %eline.2, %if.end141 ], [ %eline.2, %if.then155 ], [ %eline.2, %if.then204 ], [ %eline.2, %if.then317 ], [ %eline.2, %if.then325 ], [ %eline.2, %if.then301 ], [ %eline.2, %if.then285 ], [ %eline.2, %if.then333 ], [ %eline.2, %if.then367 ], [ %eline.2, %if.then374 ], [ %eline.1.lcssa, %if.then14 ], [ %eline.1486, %land.lhs.true ], [ %eline.1486, %land.lhs.true.us ], [ %eline.2, %if.then211 ], [ %eline.2, %if.then220 ], [ %eline.2, %if.then229 ], [ %eline.2, %eat_ws.exit323 ], [ %eline.2, %if.end343 ], [ %eline.2, %if.end349 ], [ %eline.2, %if.end267 ], [ %eline.2, %if.end142 ] + %eline.0 = phi i64 [ 0, %if.then ], [ 0, %if.end ], [ 0, %if.then7 ], [ 0, %if.then11 ], [ %eline.2, %if.end141 ], [ %eline.2, %if.then155 ], [ %eline.2, %if.then204 ], [ %eline.2, %if.then317 ], [ %eline.2, %if.then325 ], [ %eline.2, %if.then301 ], [ %eline.2, %if.then285 ], [ %eline.2, %if.then333 ], [ %eline.2, %if.then367 ], [ %eline.2, %if.then374 ], [ %eline.1.lcssa, %if.then14 ], [ %eline.1487, %land.lhs.true ], [ %eline.1487, %land.lhs.true.us ], [ %eline.2, %if.then211 ], [ %eline.2, %if.then220 ], [ %eline.2, %if.then229 ], [ %eline.2, %eat_ws.exit323 ], [ %eline.2, %if.end343 ], [ %eline.2, %if.end349 ], [ %eline.2, %if.end267 ], [ %eline.2, %if.end142 ] %v.0 = phi ptr [ null, %if.then ], [ null, %if.end ], [ null, %if.then7 ], [ null, %if.then11 ], [ null, %if.end141 ], [ null, %if.then155 ], [ null, %if.then204 ], [ null, %if.then317 ], [ null, %if.then325 ], [ null, %if.then301 ], [ null, %if.then285 ], [ null, %if.then333 ], [ %call339, %if.then367 ], [ %call339, %if.then374 ], [ null, %if.then14 ], [ null, %land.lhs.true ], [ null, %land.lhs.true.us ], [ null, %if.then211 ], [ null, %if.then220 ], [ null, %if.then229 ], [ null, %eat_ws.exit323 ], [ %call339, %if.end343 ], [ %call339, %if.end349 ], [ null, %if.end267 ], [ null, %if.end142 ] - %biosk.0 = phi ptr [ null, %if.then ], [ null, %if.end ], [ null, %if.then7 ], [ null, %if.then11 ], [ %biosk.1.ph361500, %if.end141 ], [ %biosk.1.ph361500, %if.then155 ], [ %biosk.1.ph361500, %if.then204 ], [ null, %if.then317 ], [ %biosk.3, %if.then325 ], [ %biosk.1.ph361500, %if.then301 ], [ %biosk.1.ph361500, %if.then285 ], [ %biosk.1.ph361500, %if.then333 ], [ %biosk.1.ph361500, %if.then367 ], [ %biosk.1.ph361500, %if.then374 ], [ %biosk.1.ph361.lcssa464, %if.then14 ], [ %biosk.1.ph361500, %land.lhs.true ], [ %biosk.1.ph361500, %land.lhs.true.us ], [ %biosk.1.ph361500, %if.then211 ], [ %biosk.1.ph361500, %if.then220 ], [ %biosk.1.ph361500, %if.then229 ], [ %biosk.1.ph361500, %eat_ws.exit323 ], [ %biosk.1.ph361500, %if.end343 ], [ %biosk.1.ph361500, %if.end349 ], [ %biosk.1.ph361500, %if.end267 ], [ %biosk.1.ph361500, %if.end142 ] - %in.addr.0 = phi ptr [ %in, %if.then ], [ %in, %if.end ], [ %in, %if.then7 ], [ %in, %if.then11 ], [ %.us-phi479695, %if.end141 ], [ %.us-phi479695, %if.then155 ], [ %.us-phi479695, %if.then204 ], [ %.us-phi479695, %if.then317 ], [ %.us-phi479695, %if.then325 ], [ %.us-phi479695, %if.then301 ], [ %.us-phi479695, %if.then285 ], [ %.us-phi479695, %if.then333 ], [ %.us-phi479695, %if.then367 ], [ %.us-phi479695, %if.then374 ], [ %in.addr.1.lcssa, %if.then14 ], [ %in.addr.2, %land.lhs.true ], [ %in.addr.1489, %land.lhs.true.us ], [ %.us-phi479695, %if.then211 ], [ %.us-phi479695, %if.then220 ], [ %.us-phi479695, %if.then229 ], [ %.us-phi479695, %eat_ws.exit323 ], [ %.us-phi479695, %if.end343 ], [ %.us-phi479695, %if.end349 ], [ %.us-phi479695, %if.end267 ], [ %.us-phi479695, %if.end142 ] + %biosk.0 = phi ptr [ null, %if.then ], [ null, %if.end ], [ null, %if.then7 ], [ null, %if.then11 ], [ %biosk.1.ph361501, %if.end141 ], [ %biosk.1.ph361501, %if.then155 ], [ %biosk.1.ph361501, %if.then204 ], [ null, %if.then317 ], [ %biosk.3, %if.then325 ], [ %biosk.1.ph361501, %if.then301 ], [ %biosk.1.ph361501, %if.then285 ], [ %biosk.1.ph361501, %if.then333 ], [ %biosk.1.ph361501, %if.then367 ], [ %biosk.1.ph361501, %if.then374 ], [ %biosk.1.ph361.lcssa465, %if.then14 ], [ %biosk.1.ph361501, %land.lhs.true ], [ %biosk.1.ph361501, %land.lhs.true.us ], [ %biosk.1.ph361501, %if.then211 ], [ %biosk.1.ph361501, %if.then220 ], [ %biosk.1.ph361501, %if.then229 ], [ %biosk.1.ph361501, %eat_ws.exit323 ], [ %biosk.1.ph361501, %if.end343 ], [ %biosk.1.ph361501, %if.end349 ], [ %biosk.1.ph361501, %if.end267 ], [ %biosk.1.ph361501, %if.end142 ] + %in.addr.0 = phi ptr [ %in, %if.then ], [ %in, %if.end ], [ %in, %if.then7 ], [ %in, %if.then11 ], [ %.us-phi480697, %if.end141 ], [ %.us-phi480697, %if.then155 ], [ %.us-phi480697, %if.then204 ], [ %.us-phi480697, %if.then317 ], [ %.us-phi480697, %if.then325 ], [ %.us-phi480697, %if.then301 ], [ %.us-phi480697, %if.then285 ], [ %.us-phi480697, %if.then333 ], [ %.us-phi480697, %if.then367 ], [ %.us-phi480697, %if.then374 ], [ %in.addr.1.lcssa, %if.then14 ], [ %in.addr.2, %land.lhs.true ], [ %in.addr.1490, %land.lhs.true.us ], [ %.us-phi480697, %if.then211 ], [ %.us-phi480697, %if.then220 ], [ %.us-phi480697, %if.then229 ], [ %.us-phi480697, %eat_ws.exit323 ], [ %.us-phi480697, %if.end343 ], [ %.us-phi480697, %if.end349 ], [ %.us-phi480697, %if.end267 ], [ %.us-phi480697, %if.end142 ] call void @BUF_MEM_free(ptr noundef %call) #13 %118 = load ptr, ptr %section, align 8 call void @CRYPTO_free(ptr noundef %118, ptr noundef nonnull @.str.1, i32 noundef 572) #13 - %call380508 = call i32 @OPENSSL_sk_num(ptr noundef %biosk.0) #13 - %cmp381509 = icmp sgt i32 %call380508, 0 - br i1 %cmp381509, label %while.body383, label %while.end386 + %call380509 = call i32 @OPENSSL_sk_num(ptr noundef %biosk.0) #13 + %cmp381510 = icmp sgt i32 %call380509, 0 + br i1 %cmp381510, label %while.body383, label %while.end386 while.body383: ; preds = %err, %while.body383 - %in.addr.4510 = phi ptr [ %call385, %while.body383 ], [ %in.addr.0, %err ] + %in.addr.4511 = phi ptr [ %call385, %while.body383 ], [ %in.addr.0, %err ] %call385 = call ptr @OPENSSL_sk_pop(ptr noundef %biosk.0) #13 - call void @BIO_vfree(ptr noundef %in.addr.4510) #13 + call void @BIO_vfree(ptr noundef %in.addr.4511) #13 %call380 = call i32 @OPENSSL_sk_num(ptr noundef %biosk.0) #13 %cmp381 = icmp sgt i32 %call380, 0 br i1 %cmp381, label %while.body383, label %while.end386, !llvm.loop !9 @@ -1670,7 +1664,7 @@ while.cond: ; preds = %while.cond.preheade %from.addr.1 = getelementptr inbounds nuw i8, ptr %from.addr.0.pn110, i64 1 %5 = load i8, ptr %from.addr.1, align 1 %cmp.i113 = icmp slt i8 %5, 0 - br i1 %cmp.i113, label %land.rhs, label %is_keytype.exit122 + br i1 %cmp.i113, label %if.end23, label %is_keytype.exit122 is_keytype.exit122: ; preds = %while.cond %6 = load ptr, ptr %meth_data.i, align 8 @@ -1683,10 +1677,6 @@ is_keytype.exit122: ; preds = %while.cond %or.cond = or i1 %cmp13.not237, %tobool11.not br i1 %or.cond, label %while.end, label %is_keytype.exit132 -land.rhs: ; preds = %while.cond - %cmp13.not = icmp eq i8 %5, %0 - br i1 %cmp13.not, label %while.end, label %if.end23 - is_keytype.exit132: ; preds = %is_keytype.exit122 %9 = and i16 %7, 32 %tobool16.not = icmp eq i16 %9, 0 @@ -1706,18 +1696,18 @@ is_keytype.exit142: ; preds = %if.then17 %tobool20.not = icmp eq i16 %12, 0 br i1 %tobool20.not, label %if.end23, label %while.end -if.end23: ; preds = %if.then17, %land.rhs, %is_keytype.exit142, %is_keytype.exit132 - %13 = phi i8 [ %10, %is_keytype.exit142 ], [ %5, %is_keytype.exit132 ], [ %5, %land.rhs ], [ %10, %if.then17 ] - %from.addr.3 = phi ptr [ %incdec.ptr18, %is_keytype.exit142 ], [ %from.addr.1, %is_keytype.exit132 ], [ %from.addr.1, %land.rhs ], [ %incdec.ptr18, %if.then17 ] +if.end23: ; preds = %while.cond, %if.then17, %is_keytype.exit142, %is_keytype.exit132 + %13 = phi i8 [ %10, %is_keytype.exit142 ], [ %5, %is_keytype.exit132 ], [ %10, %if.then17 ], [ %5, %while.cond ] + %from.addr.3 = phi ptr [ %incdec.ptr18, %is_keytype.exit142 ], [ %from.addr.1, %is_keytype.exit132 ], [ %incdec.ptr18, %if.then17 ], [ %from.addr.1, %while.cond ] %14 = load ptr, ptr %data, align 8 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %arrayidx = getelementptr inbounds i8, ptr %14, i64 %indvars.iv store i8 %13, ptr %arrayidx, align 1 br label %while.cond, !llvm.loop !11 -while.end: ; preds = %is_keytype.exit122, %is_keytype.exit142, %land.rhs - %15 = phi i8 [ %5, %is_keytype.exit122 ], [ %10, %is_keytype.exit142 ], [ %0, %land.rhs ] - %16 = phi i64 [ 1, %is_keytype.exit122 ], [ 2, %is_keytype.exit142 ], [ 1, %land.rhs ] +while.end: ; preds = %is_keytype.exit122, %is_keytype.exit142 + %15 = phi i8 [ %5, %is_keytype.exit122 ], [ %10, %is_keytype.exit142 ] + %16 = phi i64 [ 1, %is_keytype.exit122 ], [ 2, %is_keytype.exit142 ] %17 = trunc nsw i64 %indvars.iv to i32 %18 = getelementptr inbounds nuw i8, ptr %from.addr.0.pn110, i64 %16 %cmp26 = icmp eq i8 %15, %0 diff --git a/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll b/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll index 62d627aff3a..689aea9a384 100644 --- a/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll +++ b/bench/openssl/optimized/libdefault-lib-ecx_kmgmt.ll @@ -1101,7 +1101,7 @@ if.end15: ; preds = %if.end8 if.end15.thread: ; preds = %if.end8 %and1617 = and i32 %selection, 1 %cmp17.not18 = icmp eq i32 %and1617, 0 - br i1 %cmp17.not18, label %if.end26.thread, label %land.rhs21 + br i1 %cmp17.not18, label %return, label %land.rhs21 if.then19: ; preds = %if.end15 %tobool20.not = icmp eq i8 %bf.clear, 0 @@ -1119,15 +1119,11 @@ if.end26: ; preds = %land.rhs21, %if.end %cmp28 = icmp eq i32 %and, 3 br i1 %cmp28, label %if.then30, label %return -if.end26.thread: ; preds = %if.end15.thread - %cmp2823 = icmp eq i32 %and, 3 - br i1 %cmp2823, label %land.rhs32, label %return - if.then30: ; preds = %if.end26 %tobool31.not = icmp eq i32 %ok.1, 0 br i1 %tobool31.not, label %return, label %land.rhs32 -land.rhs32: ; preds = %if.end26.thread, %if.then30 +land.rhs32: ; preds = %if.then30 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %pub.i) switch i32 %type, label %default.unreachable [ i32 0, label %sw.bb.i @@ -1184,8 +1180,8 @@ ecx_key_pairwise_check.exit: ; preds = %sw.bb4.i, %sw.bb7.i call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %pub.i) br label %return -return: ; preds = %if.end26.thread, %if.then19, %if.end26, %ecx_key_pairwise_check.exit, %if.then30, %if.end, %entry, %if.then7 - %retval.0 = phi i32 [ 0, %if.then7 ], [ 0, %entry ], [ 1, %if.end ], [ %ok.1, %if.end26 ], [ 0, %if.then30 ], [ %retval.0.i, %ecx_key_pairwise_check.exit ], [ 0, %if.then19 ], [ 1, %if.end26.thread ] +return: ; preds = %if.end15.thread, %if.then19, %if.end26, %ecx_key_pairwise_check.exit, %if.then30, %if.end, %entry, %if.then7 + %retval.0 = phi i32 [ 0, %if.then7 ], [ 0, %entry ], [ 1, %if.end ], [ %ok.1, %if.end26 ], [ 0, %if.then30 ], [ %retval.0.i, %ecx_key_pairwise_check.exit ], [ 0, %if.then19 ], [ 1, %if.end15.thread ] ret i32 %retval.0 } diff --git a/bench/openssl/optimized/libssl-lib-extensions_srvr.ll b/bench/openssl/optimized/libssl-lib-extensions_srvr.ll index 8e0c19450dc..a4183f651d2 100644 --- a/bench/openssl/optimized/libssl-lib-extensions_srvr.ll +++ b/bench/openssl/optimized/libssl-lib-extensions_srvr.ll @@ -1037,28 +1037,23 @@ if.end8: ; preds = %lor.lhs.false4 %srtp_profile = getelementptr inbounds nuw i8, ptr %s, i64 2808 store ptr null, ptr %srtp_profile, align 8 %call11 = tail call i32 @OPENSSL_sk_num(ptr noundef %call9) #10 - br label %while.cond - -while.cond: ; preds = %for.end, %if.end8 - %subpkt.sroa.5.0 = phi i64 [ %conv, %if.end8 ], [ %sub.i.i32, %for.end ] - %subpkt.sroa.0.0 = phi ptr [ %add.ptr.i2.i, %if.end8 ], [ %add.ptr.i2.i31, %for.end ] - %srtp_pref.0 = phi i32 [ %call11, %if.end8 ], [ %srtp_pref.1, %for.end ] - switch i64 %subpkt.sroa.5.0, label %PACKET_get_net_2.exit34 [ - i64 0, label %while.end - i64 1, label %return.sink.split - ] - -PACKET_get_net_2.exit34: ; preds = %while.cond - %4 = load i8, ptr %subpkt.sroa.0.0, align 1 + %tobool13.not68 = icmp eq i32 %or.i.i, 0 + br i1 %tobool13.not68, label %while.end, label %PACKET_get_net_2.exit34 + +PACKET_get_net_2.exit34: ; preds = %if.end8, %for.end + %srtp_pref.071 = phi i32 [ %srtp_pref.1, %for.end ], [ %call11, %if.end8 ] + %subpkt.sroa.0.070 = phi ptr [ %add.ptr.i2.i31, %for.end ], [ %add.ptr.i2.i, %if.end8 ] + %subpkt.sroa.5.069 = phi i64 [ %sub.i.i32, %for.end ], [ %conv, %if.end8 ] + %4 = load i8, ptr %subpkt.sroa.0.070, align 1 %conv.i.i26 = zext i8 %4 to i64 %shl.i.i27 = shl nuw nsw i64 %conv.i.i26, 8 - %add.ptr.i.i28 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.0, i64 1 + %add.ptr.i.i28 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.070, i64 1 %5 = load i8, ptr %add.ptr.i.i28, align 1 %conv2.i.i29 = zext i8 %5 to i64 %or.i.i30 = or disjoint i64 %shl.i.i27, %conv2.i.i29 - %add.ptr.i2.i31 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.0, i64 2 - %sub.i.i32 = add i64 %subpkt.sroa.5.0, -2 - %cmp1866 = icmp sgt i32 %srtp_pref.0, 0 + %add.ptr.i2.i31 = getelementptr inbounds nuw i8, ptr %subpkt.sroa.0.070, i64 2 + %sub.i.i32 = add i64 %subpkt.sroa.5.069, -2 + %cmp1866 = icmp sgt i32 %srtp_pref.071, 0 br i1 %cmp1866, label %for.body, label %for.end for.body: ; preds = %PACKET_get_net_2.exit34, %for.inc @@ -1075,14 +1070,15 @@ if.then26: ; preds = %for.body for.inc: ; preds = %for.body %inc = add nuw nsw i32 %i.067, 1 - %exitcond.not = icmp eq i32 %inc, %srtp_pref.0 + %exitcond.not = icmp eq i32 %inc, %srtp_pref.071 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !7 for.end: ; preds = %for.inc, %PACKET_get_net_2.exit34, %if.then26 - %srtp_pref.1 = phi i32 [ %i.067, %if.then26 ], [ %srtp_pref.0, %PACKET_get_net_2.exit34 ], [ %srtp_pref.0, %for.inc ] - br label %while.cond, !llvm.loop !8 + %srtp_pref.1 = phi i32 [ %i.067, %if.then26 ], [ %srtp_pref.071, %PACKET_get_net_2.exit34 ], [ %srtp_pref.071, %for.inc ] + %tobool13.not = icmp eq i64 %sub.i.i32, 0 + br i1 %tobool13.not, label %while.end, label %PACKET_get_net_2.exit34, !llvm.loop !8 -while.end: ; preds = %while.cond +while.end: ; preds = %for.end, %if.end8 %pkt.val.i.i35 = load i64, ptr %0, align 8 %tobool.not.i.i = icmp eq i64 %pkt.val.i.i35, 0 br i1 %tobool.not.i.i, label %return.sink.split, label %if.end32 @@ -1106,11 +1102,11 @@ lor.lhs.false36: ; preds = %if.end32 %tobool38.not = icmp eq i64 %sub.i.i39, %conv33 br i1 %tobool38.not, label %return, label %return.sink.split -return.sink.split: ; preds = %while.cond, %lor.lhs.false36, %if.end32, %while.end, %lor.lhs.false, %if.end, %lor.lhs.false4 - %.sink72 = phi i32 [ 491, %lor.lhs.false4 ], [ 491, %if.end ], [ 491, %lor.lhs.false ], [ 528, %while.end ], [ 534, %if.end32 ], [ 534, %lor.lhs.false36 ], [ 503, %while.cond ] - %.sink = phi i32 [ 353, %lor.lhs.false4 ], [ 353, %if.end ], [ 353, %lor.lhs.false ], [ 353, %while.end ], [ 352, %if.end32 ], [ 352, %lor.lhs.false36 ], [ 353, %while.cond ] +return.sink.split: ; preds = %lor.lhs.false36, %if.end32, %while.end, %lor.lhs.false, %if.end, %lor.lhs.false4 + %.sink76 = phi i32 [ 491, %lor.lhs.false4 ], [ 491, %if.end ], [ 491, %lor.lhs.false ], [ 528, %while.end ], [ 534, %if.end32 ], [ 534, %lor.lhs.false36 ] + %.sink = phi i32 [ 353, %lor.lhs.false4 ], [ 353, %if.end ], [ 353, %lor.lhs.false ], [ 353, %while.end ], [ 352, %if.end32 ], [ 352, %lor.lhs.false36 ] tail call void @ERR_new() #10 - tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink72, ptr noundef nonnull @__func__.tls_parse_ctos_use_srtp) #10 + tail call void @ERR_set_debug(ptr noundef nonnull @.str, i32 noundef %.sink76, ptr noundef nonnull @__func__.tls_parse_ctos_use_srtp) #10 tail call void (ptr, i32, i32, ptr, ...) @ossl_statem_fatal(ptr noundef %s, i32 noundef 50, i32 noundef %.sink, ptr noundef null) #10 br label %return diff --git a/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll b/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll index 7fb2211acd3..f734a266f4e 100644 --- a/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll +++ b/bench/openssl/optimized/libssl-lib-quic_wire_pkt.ll @@ -1336,7 +1336,7 @@ if.end49: ; preds = %lor.lhs.false43 %conv59 = zext nneg i8 %narrow32 to i64 %6 = and i32 %bf.load, 253 %switch.selectcmp.i.i.not = icmp eq i32 %6, 4 - br i1 %switch.selectcmp.i.i.not, label %if.end83, label %if.then64 + br i1 %switch.selectcmp.i.i.not, label %if.end113, label %if.then64 if.then64: ; preds = %if.end49 %bf.lshr66 = lshr i32 %bf.load, 10 @@ -1345,18 +1345,13 @@ if.then64: ; preds = %if.end49 %or.cond34 = icmp ult i32 %7, -4 br i1 %or.cond34, label %return, label %if.end83.thread -if.end83: ; preds = %if.end49 - %cmp86 = icmp eq i32 %bf.clear2, 1 - br i1 %cmp86, label %if.then88, label %if.end113 - if.end83.thread: ; preds = %if.then64 %conv81 = zext nneg i32 %bf.clear67 to i64 %add82 = add nuw nsw i64 %conv59, %conv81 %cmp8659 = icmp eq i32 %bf.clear2, 1 br i1 %cmp8659, label %if.then88, label %if.then101 -if.then88: ; preds = %if.end83.thread, %if.end83 - %len.061 = phi i64 [ %add82, %if.end83.thread ], [ %conv59, %if.end83 ] +if.then88: ; preds = %if.end83.thread %token_len = getelementptr inbounds nuw i8, ptr %hdr, i64 64 %8 = load i64, ptr %token_len, align 8 %cmp.i = icmp ult i64 %8, 64 @@ -1376,7 +1371,7 @@ if.end6.i: ; preds = %if.end3.i if.end96.thread: ; preds = %if.end3.i, %if.end.i, %if.then88, %if.end6.i %retval.0.i.ph = phi i64 [ 4, %if.end3.i ], [ 2, %if.end.i ], [ 1, %if.then88 ], [ 8, %if.end6.i ] - %add94 = add nuw nsw i64 %8, %len.061 + %add94 = add nuw nsw i64 %8, %add82 %add95 = add nuw nsw i64 %add94, %retval.0.i.ph br label %if.then101 @@ -1408,8 +1403,8 @@ if.end111: ; preds = %if.end6.i41, %if.th %add112 = add nuw nsw i64 %retval.0.i44.ph, %len.153 br label %if.end113 -if.end113: ; preds = %if.end83, %if.end111 - %len.2 = phi i64 [ %add112, %if.end111 ], [ %conv59, %if.end83 ] +if.end113: ; preds = %if.end49, %if.end111 + %len.2 = phi i64 [ %add112, %if.end111 ], [ %conv59, %if.end49 ] %conv114 = trunc i64 %len.2 to i32 br label %return diff --git a/bench/openusd/optimized/strtod.cc.ll b/bench/openusd/optimized/strtod.cc.ll index 42cc92c0e43..65797822f88 100644 --- a/bench/openusd/optimized/strtod.cc.ll +++ b/bench/openusd/optimized/strtod.cc.ll @@ -67,29 +67,25 @@ define noundef double @_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_convers br i1 %38, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %39 39: ; preds = %36 - %40 = icmp eq i64 %8, 9218868437227405312 - br i1 %40, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %41 + %40 = icmp slt i64 %8, 0 + br i1 %40, label %41, label %46 41: ; preds = %39 - %42 = icmp slt i64 %8, 0 - br i1 %42, label %43, label %48 + %42 = fcmp oeq double %6, 0.000000e+00 + br i1 %42, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %43 43: ; preds = %41 - %44 = fcmp oeq double %6, 0.000000e+00 - br i1 %44, label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit, label %45 - -45: ; preds = %43 - %46 = add nsw i64 %8, -1 - %47 = bitcast i64 %46 to double + %44 = add nsw i64 %8, -1 + %45 = bitcast i64 %44 to double br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit -48: ; preds = %41 - %49 = add nuw i64 %8, 1 - %50 = bitcast i64 %49 to double +46: ; preds = %39 + %47 = add nuw i64 %8, 1 + %48 = bitcast i64 %47 to double br label %_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit -_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit: ; preds = %3, %48, %45, %43, %39, %36, %33, %30, %28, %24, %7 - %.0 = phi double [ %6, %7 ], [ %32, %30 ], [ %35, %33 ], [ 0.000000e+00, %28 ], [ 0x7FF0000000000000, %24 ], [ %6, %36 ], [ %47, %45 ], [ %50, %48 ], [ 0.000000e+00, %43 ], [ 0x7FF0000000000000, %39 ], [ %6, %3 ] +_ZNK32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion6Double10NextDoubleEv.exit: ; preds = %3, %46, %43, %41, %36, %33, %30, %28, %24, %7 + %.0 = phi double [ %6, %7 ], [ %32, %30 ], [ %35, %33 ], [ 0.000000e+00, %28 ], [ 0x7FF0000000000000, %24 ], [ %6, %36 ], [ %45, %43 ], [ %48, %46 ], [ 0.000000e+00, %41 ], [ %6, %3 ] ret double %.0 } @@ -734,29 +730,25 @@ _ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6V br i1 %62, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %63 63: ; preds = %60 - %64 = icmp eq i64 %32, 9218868437227405312 - br i1 %64, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %65 + %64 = icmp slt i64 %32, 0 + br i1 %64, label %65, label %70 65: ; preds = %63 - %66 = icmp slt i64 %32, 0 - br i1 %66, label %67, label %72 + %66 = fcmp oeq double %30, 0.000000e+00 + br i1 %66, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %67 67: ; preds = %65 - %68 = fcmp oeq double %30, 0.000000e+00 - br i1 %68, label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit, label %69 - -69: ; preds = %67 - %70 = add nsw i64 %32, -1 - %71 = bitcast i64 %70 to double + %68 = add nsw i64 %32, -1 + %69 = bitcast i64 %68 to double br label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -72: ; preds = %65 - %73 = add nuw i64 %32, 1 - %74 = bitcast i64 %73 to double +70: ; preds = %63 + %71 = add nuw i64 %32, 1 + %72 = bitcast i64 %71 to double br label %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit -_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %31, %48, %52, %54, %57, %60, %63, %67, %69, %72 - %.0.i = phi double [ %30, %31 ], [ %56, %54 ], [ %59, %57 ], [ 0.000000e+00, %52 ], [ 0x7FF0000000000000, %48 ], [ %30, %60 ], [ %71, %69 ], [ %74, %72 ], [ 0.000000e+00, %67 ], [ 0x7FF0000000000000, %63 ], [ %30, %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] +_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversion13StrtodTrimmedENS0_6VectorIKcEEi.exit: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit, %31, %48, %52, %54, %57, %60, %65, %67, %70 + %.0.i = phi double [ %30, %31 ], [ %56, %54 ], [ %59, %57 ], [ 0.000000e+00, %52 ], [ 0x7FF0000000000000, %48 ], [ %30, %60 ], [ %69, %67 ], [ %72, %70 ], [ 0.000000e+00, %65 ], [ %30, %_ZN32pxrInternal_v0_24__pxrReserved__21pxr_double_conversionL10TrimAndCutENS0_6VectorIKcEEiPciPS3_Pi.exit ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) ret double %.0.i } diff --git a/bench/pbrt-v4/optimized/paramdict.cpp.ll b/bench/pbrt-v4/optimized/paramdict.cpp.ll index b9906c96db8..7c9ea46aa5d 100644 --- a/bench/pbrt-v4/optimized/paramdict.cpp.ll +++ b/bench/pbrt-v4/optimized/paramdict.cpp.ll @@ -3589,10 +3589,6 @@ if.then.i.i.i.i: ; preds = %if.end5.i.i _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i: ; preds = %if.end5.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false), !alias.scope !83 - %cmp.not.i.i.i.i.i.i = icmp eq i64 %5, 1 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %for.body.lr.ph.i.i - -for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i %mul.i.i.i.i.i.i.i.i = shl nuw nsw i64 %5, 2 %call5.i.i.i.i2.i.i15.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i.i.i) #26, !noalias !83 store ptr %call5.i.i.i.i2.i.i15.i.i, ptr %agg.result, align 8, !alias.scope !83 @@ -3607,8 +3603,8 @@ for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt %.pre = load ptr, ptr %ptr.i.i11.i, align 8, !noalias !83 br label %invoke.cont13.i.i -invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %invoke.cont13.i.i - %i.017.i.i = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] +invoke.cont13.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %invoke.cont13.i.i + %i.017.i.i = phi i64 [ 0, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] %arrayidx.i.i.i.idx = shl i64 %i.017.i.i, 3 %arrayidx.i.i.i = getelementptr inbounds i8, ptr %.pre, i64 %arrayidx.i.i.i.idx %7 = load float, ptr %arrayidx.i.i.i, align 4, !noalias !83 @@ -3622,7 +3618,7 @@ invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %exitcond.not = icmp eq i64 %inc.i.i, %div.i.i1 br i1 %exitcond.not, label %_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %invoke.cont13.i.i, !llvm.loop !84 -_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i +_ZN4pbrtL11returnArrayINS_6Point2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %nPerItem.addr.i.i), !noalias !77 br label %_ZNK4pbrt19ParameterDictionary11lookupArrayINS_6Point2IfEEPFRKN4pstd6vectorIfNS4_3pmr21polymorphic_allocatorIfEEEERKNS_15ParsedParameterEEPFS3_PKfPKNS_7FileLocEEEESt6vectorIT_SaISP_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13ParameterTypeEPKciT0_T1_.exit @@ -3725,10 +3721,6 @@ if.then.i.i.i.i: ; preds = %if.end5.i.i _ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i: ; preds = %if.end5.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false), !alias.scope !91 - %cmp.not.i.i.i.i.i.i = icmp eq i64 %5, 1 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %for.body.lr.ph.i.i - -for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i %mul.i.i.i.i.i.i.i.i = shl nuw nsw i64 %5, 2 %call5.i.i.i.i2.i.i15.i.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i.i.i) #26, !noalias !91 store ptr %call5.i.i.i.i2.i.i15.i.i, ptr %agg.result, align 8, !alias.scope !91 @@ -3743,8 +3735,8 @@ for.body.lr.ph.i.i: ; preds = %_ZNSt6vectorIN4pbrt %.pre = load ptr, ptr %ptr.i.i11.i, align 8, !noalias !91 br label %invoke.cont13.i.i -invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %invoke.cont13.i.i - %i.017.i.i = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] +invoke.cont13.i.i: ; preds = %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %invoke.cont13.i.i + %i.017.i.i = phi i64 [ 0, %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ], [ %inc.i.i, %invoke.cont13.i.i ] %arrayidx.i.i.i.idx = shl i64 %i.017.i.i, 3 %arrayidx.i.i.i = getelementptr inbounds i8, ptr %.pre, i64 %arrayidx.i.i.i.idx %7 = load float, ptr %arrayidx.i.i.i, align 4, !noalias !91 @@ -3758,7 +3750,7 @@ invoke.cont13.i.i: ; preds = %for.body.lr.ph.i.i, %exitcond.not = icmp eq i64 %inc.i.i, %div.i.i1 br i1 %exitcond.not, label %_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i, label %invoke.cont13.i.i, !llvm.loop !92 -_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i, %_ZNSt6vectorIN4pbrt7Vector2IfEESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i +_ZN4pbrtL11returnArrayINS_7Vector2IfEEN4pstd6vectorIfNS3_3pmr21polymorphic_allocatorIfEEEEPFS2_PKfPKNS_7FileLocEEEESt6vectorIT_SaISH_EERKT0_RKNS_15ParsedParameterEiT1_.exit.i: ; preds = %invoke.cont13.i.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %nPerItem.addr.i.i), !noalias !85 br label %_ZNK4pbrt19ParameterDictionary11lookupArrayINS_7Vector2IfEEPFRKN4pstd6vectorIfNS4_3pmr21polymorphic_allocatorIfEEEERKNS_15ParsedParameterEEPFS3_PKfPKNS_7FileLocEEEESt6vectorIT_SaISP_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_13ParameterTypeEPKciT0_T1_.exit diff --git a/bench/php/optimized/php_reflection.ll b/bench/php/optimized/php_reflection.ll index 0584935f4b2..ed4b8c0a248 100644 --- a/bench/php/optimized/php_reflection.ll +++ b/bench/php/optimized/php_reflection.ll @@ -7954,99 +7954,97 @@ define internal fastcc void @reflection_type_factory(ptr %0, i32 %1, ptr noundef %6 = and i32 %1, 262141 %7 = and i32 %1, 4194304 %.not.i = icmp eq i32 %7, 0 - br i1 %.not.i, label %13, label %8 + br i1 %.not.i, label %11, label %8 8: ; preds = %4 %9 = and i32 %1, 524288 %.not16.i = icmp eq i32 %9, 0 %10 = icmp eq i32 %5, 1022 - %11 = and i32 %1, 29622271 - %12 = icmp ne i32 %11, 2 %spec.select = select i1 %.not16.i, ptr @reflection_union_type_ptr, ptr @reflection_intersection_type_ptr br label %get_type_kind.exit.thread27 -13: ; preds = %4 - %14 = and i32 %1, 25165824 - %.not12.i = icmp eq i32 %14, 0 - br i1 %.not12.i, label %21, label %15 +11: ; preds = %4 + %12 = and i32 %1, 25165824 + %.not12.i = icmp eq i32 %12, 0 + br i1 %.not12.i, label %19, label %13 -15: ; preds = %13 - %16 = and i32 %1, 2097152 - %.not14.i = icmp eq i32 %16, 0 - br i1 %.not14.i, label %17, label %get_type_kind.exit.thread +13: ; preds = %11 + %14 = and i32 %1, 2097152 + %.not14.i = icmp eq i32 %14, 0 + br i1 %.not14.i, label %15, label %get_type_kind.exit.thread -17: ; preds = %15 +15: ; preds = %13 %.not15.i.not = icmp eq i32 %6, 0 - %18 = icmp eq i32 %5, 1022 - %19 = and i32 %1, 25427967 - %20 = icmp ne i32 %19, 2 - br i1 %.not15.i.not, label %30, label %get_type_kind.exit.thread27 - -21: ; preds = %13 - %22 = icmp eq i32 %6, 12 - %23 = icmp eq i32 %5, 1022 - %or.cond.i = or i1 %22, %23 + %16 = icmp eq i32 %5, 1022 + %17 = and i32 %1, 25427967 + %18 = icmp ne i32 %17, 2 + br i1 %.not15.i.not, label %28, label %get_type_kind.exit.thread27 + +19: ; preds = %11 + %20 = icmp eq i32 %6, 12 + %21 = icmp eq i32 %5, 1022 + %or.cond.i = or i1 %20, %21 br i1 %or.cond.i, label %get_type_kind.exit.thread, label %get_type_kind.exit -get_type_kind.exit.thread: ; preds = %15, %21 - %24 = icmp eq i32 %5, 1022 - %25 = and i32 %1, 25427967 - %26 = icmp ne i32 %25, 2 - br label %30 +get_type_kind.exit.thread: ; preds = %13, %19 + %22 = icmp eq i32 %5, 1022 + %23 = and i32 %1, 25427967 + %24 = icmp ne i32 %23, 2 + br label %28 -get_type_kind.exit: ; preds = %21 - %27 = tail call range(i32 0, 18) i32 @llvm.ctpop.i32(i32 %6) - %.not13.i = icmp samesign ugt i32 %27, 1 - %28 = and i32 %1, 262143 - %29 = icmp ne i32 %28, 2 - br i1 %.not13.i, label %get_type_kind.exit.thread27, label %30 +get_type_kind.exit: ; preds = %19 + %25 = tail call range(i32 0, 18) i32 @llvm.ctpop.i32(i32 %6) + %.not13.i = icmp samesign ugt i32 %25, 1 + %26 = and i32 %1, 262143 + %27 = icmp ne i32 %26, 2 + br i1 %.not13.i, label %get_type_kind.exit.thread27, label %28 -30: ; preds = %17, %get_type_kind.exit, %get_type_kind.exit.thread - %31 = phi i1 [ %26, %get_type_kind.exit.thread ], [ %29, %get_type_kind.exit ], [ %20, %17 ] - %32 = phi i1 [ %24, %get_type_kind.exit.thread ], [ false, %get_type_kind.exit ], [ %18, %17 ] +28: ; preds = %15, %get_type_kind.exit, %get_type_kind.exit.thread + %29 = phi i1 [ %24, %get_type_kind.exit.thread ], [ %27, %get_type_kind.exit ], [ %18, %15 ] + %30 = phi i1 [ %22, %get_type_kind.exit.thread ], [ false, %get_type_kind.exit ], [ %16, %15 ] br label %get_type_kind.exit.thread27 -get_type_kind.exit.thread27: ; preds = %8, %get_type_kind.exit, %17, %30 - %reflection_named_type_ptr.sink = phi ptr [ @reflection_named_type_ptr, %30 ], [ @reflection_union_type_ptr, %17 ], [ @reflection_union_type_ptr, %get_type_kind.exit ], [ %spec.select, %8 ] - %33 = phi i1 [ %31, %30 ], [ %20, %17 ], [ %29, %get_type_kind.exit ], [ %12, %8 ] - %34 = phi i1 [ %32, %30 ], [ %18, %17 ], [ false, %get_type_kind.exit ], [ %10, %8 ] - %35 = phi i1 [ true, %30 ], [ false, %17 ], [ false, %get_type_kind.exit ], [ false, %8 ] - %36 = load ptr, ptr %reflection_named_type_ptr.sink, align 8 - %37 = tail call i32 @object_init_ex(ptr noundef %2, ptr noundef %36) #13 - %38 = load ptr, ptr %2, align 8 - %39 = tail call noalias ptr @_emalloc_24() #13 - store ptr %0, ptr %39, align 8 - %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %39, i64 8 +get_type_kind.exit.thread27: ; preds = %8, %get_type_kind.exit, %15, %28 + %reflection_named_type_ptr.sink = phi ptr [ @reflection_named_type_ptr, %28 ], [ @reflection_union_type_ptr, %15 ], [ @reflection_union_type_ptr, %get_type_kind.exit ], [ %spec.select, %8 ] + %31 = phi i1 [ %29, %28 ], [ %18, %15 ], [ %27, %get_type_kind.exit ], [ true, %8 ] + %32 = phi i1 [ %30, %28 ], [ %16, %15 ], [ false, %get_type_kind.exit ], [ %10, %8 ] + %33 = phi i1 [ true, %28 ], [ false, %15 ], [ false, %get_type_kind.exit ], [ false, %8 ] + %34 = load ptr, ptr %reflection_named_type_ptr.sink, align 8 + %35 = tail call i32 @object_init_ex(ptr noundef %2, ptr noundef %34) #13 + %36 = load ptr, ptr %2, align 8 + %37 = tail call noalias ptr @_emalloc_24() #13 + store ptr %0, ptr %37, align 8 + %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %37, i64 8 store i32 %1, ptr %.sroa.4.0..sroa_idx, align 8 - %or.cond = and i1 %3, %35 - %not. = xor i1 %34, true - %narrow = and i1 %33, %not. + %or.cond = and i1 %3, %33 + %not. = xor i1 %32, true + %narrow = and i1 %31, %not. %narrow33 = and i1 %narrow, %or.cond - %40 = zext i1 %narrow33 to i8 - %41 = getelementptr inbounds nuw i8, ptr %39, i64 16 - store i8 %40, ptr %41, align 8 - %42 = getelementptr inbounds i8, ptr %38, i64 -24 - store ptr %39, ptr %42, align 8 - %43 = getelementptr inbounds i8, ptr %38, i64 -8 - store i32 5, ptr %43, align 8 - %44 = and i32 %1, 16777216 - %.not = icmp eq i32 %44, 0 - br i1 %.not, label %52, label %45 - -45: ; preds = %get_type_kind.exit.thread27 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %47 = load i32, ptr %46, align 4 - %48 = and i32 %47, 64 - %.not23 = icmp eq i32 %48, 0 - br i1 %.not23, label %49, label %52 + %38 = zext i1 %narrow33 to i8 + %39 = getelementptr inbounds nuw i8, ptr %37, i64 16 + store i8 %38, ptr %39, align 8 + %40 = getelementptr inbounds i8, ptr %36, i64 -24 + store ptr %37, ptr %40, align 8 + %41 = getelementptr inbounds i8, ptr %36, i64 -8 + store i32 5, ptr %41, align 8 + %42 = and i32 %1, 16777216 + %.not = icmp eq i32 %42, 0 + br i1 %.not, label %50, label %43 + +43: ; preds = %get_type_kind.exit.thread27 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %45 = load i32, ptr %44, align 4 + %46 = and i32 %45, 64 + %.not23 = icmp eq i32 %46, 0 + br i1 %.not23, label %47, label %50 -49: ; preds = %45 - %50 = load i32, ptr %0, align 4 - %51 = add i32 %50, 1 - store i32 %51, ptr %0, align 4 - br label %52 +47: ; preds = %43 + %48 = load i32, ptr %0, align 4 + %49 = add i32 %48, 1 + store i32 %49, ptr %0, align 4 + br label %50 -52: ; preds = %45, %49, %get_type_kind.exit.thread27 +50: ; preds = %43, %47, %get_type_kind.exit.thread27 ret void } diff --git a/bench/portaudio/optimized/pa_linux_alsa.c.ll b/bench/portaudio/optimized/pa_linux_alsa.c.ll index 1183a051109..ecc719ad2bc 100644 --- a/bench/portaudio/optimized/pa_linux_alsa.c.ll +++ b/bench/portaudio/optimized/pa_linux_alsa.c.ll @@ -4285,112 +4285,108 @@ sub_2: ; preds = %sub_1 %55 = tail call fastcc i32 @AlsaOpen(ptr noundef %1, ptr noundef nonnull %2, i32 noundef %3, ptr noundef %54) store i32 %55, ptr @paUtilErr_, align 4 %56 = icmp slt i32 %55, 0 - br i1 %56, label %.thread, label %58 + br i1 %56, label %57, label %59 -.thread: ; preds = %.thread64 +57: ; preds = %.thread64 tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.111) #25 - %57 = load i32, ptr @paUtilErr_, align 4 - br label %99 - -58: ; preds = %.thread64 - %59 = load ptr, ptr %54, align 8 - %60 = tail call i32 @snd_pcm_poll_descriptors_count(ptr noundef %59) #25, !callees !77 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 84 - store i32 %60, ptr %61, align 4 - %62 = load ptr, ptr %54, align 8 - %63 = tail call fastcc i64 @GetAvailableFormats(ptr noundef %62) - %64 = tail call i64 @PaUtil_SelectClosestAvailableFormat(i64 noundef %63, i64 noundef %7) #25 - %65 = trunc i64 %64 to i32 - store i32 %65, ptr @paUtilErr_, align 4 - %66 = icmp slt i32 %65, 0 - br i1 %66, label %67, label %69 - -67: ; preds = %58 - tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.112) #25 - %68 = load i32, ptr @paUtilErr_, align 4 - br label %95 + %58 = load i32, ptr @paUtilErr_, align 4 + br label %.thread -69: ; preds = %58 - store i64 %64, ptr %0, align 8 - switch i64 %64, label %75 [ +59: ; preds = %.thread64 + %60 = load ptr, ptr %54, align 8 + %61 = tail call i32 @snd_pcm_poll_descriptors_count(ptr noundef %60) #25, !callees !77 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 84 + store i32 %61, ptr %62, align 4 + %63 = load ptr, ptr %54, align 8 + %64 = tail call fastcc i64 @GetAvailableFormats(ptr noundef %63) + %65 = tail call i64 @PaUtil_SelectClosestAvailableFormat(i64 noundef %64, i64 noundef %7) #25 + %66 = trunc i64 %65 to i32 + store i32 %66, ptr @paUtilErr_, align 4 + %67 = icmp slt i32 %66, 0 + br i1 %67, label %94, label %68 + +68: ; preds = %59 + store i64 %65, ptr %0, align 8 + switch i64 %65, label %74 [ i64 1, label %Pa2AlsaFormat.exit - i64 8, label %70 - i64 4, label %71 - i64 2, label %72 - i64 16, label %73 - i64 32, label %74 + i64 8, label %69 + i64 4, label %70 + i64 2, label %71 + i64 16, label %72 + i64 32, label %73 ] -70: ; preds = %69 +69: ; preds = %68 br label %Pa2AlsaFormat.exit -71: ; preds = %69 +70: ; preds = %68 br label %Pa2AlsaFormat.exit -72: ; preds = %69 +71: ; preds = %68 br label %Pa2AlsaFormat.exit -73: ; preds = %69 +72: ; preds = %68 br label %Pa2AlsaFormat.exit -74: ; preds = %69 +73: ; preds = %68 br label %Pa2AlsaFormat.exit -75: ; preds = %69 +74: ; preds = %68 br label %Pa2AlsaFormat.exit -Pa2AlsaFormat.exit: ; preds = %69, %70, %71, %72, %73, %74, %75 - %.0.i = phi i32 [ -1, %75 ], [ 1, %74 ], [ 0, %73 ], [ 10, %72 ], [ 32, %71 ], [ 2, %70 ], [ 14, %69 ] - %76 = getelementptr inbounds nuw i8, ptr %0, i64 80 - store i32 %.0.i, ptr %76, align 8 - %77 = and i64 %7, 2147483648 - %.not56 = icmp eq i64 %77, 0 - %78 = zext i1 %.not56 to i32 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i32 %78, ptr %79, align 8 - %80 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %78, ptr %80, align 4 - %81 = getelementptr inbounds nuw i8, ptr %2, i64 4 - %82 = load i32, ptr %81, align 4 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %82, ptr %83, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 112 - store i32 %3, ptr %84, align 8 - %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i32 0, ptr %85, align 8 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store ptr null, ptr %86, align 8 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i32 0, ptr %87, align 8 +Pa2AlsaFormat.exit: ; preds = %68, %69, %70, %71, %72, %73, %74 + %.0.i = phi i32 [ -1, %74 ], [ 1, %73 ], [ 0, %72 ], [ 10, %71 ], [ 32, %70 ], [ 2, %69 ], [ 14, %68 ] + %75 = getelementptr inbounds nuw i8, ptr %0, i64 80 + store i32 %.0.i, ptr %75, align 8 + %76 = and i64 %7, 2147483648 + %.not56 = icmp eq i64 %76, 0 + %77 = zext i1 %.not56 to i32 + %78 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i32 %77, ptr %78, align 8 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %77, ptr %79, align 4 + %80 = getelementptr inbounds nuw i8, ptr %2, i64 4 + %81 = load i32, ptr %80, align 4 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %81, ptr %82, align 8 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 112 + store i32 %3, ptr %83, align 8 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i32 0, ptr %84, align 8 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store ptr null, ptr %85, align 8 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 40 + store i32 0, ptr %86, align 8 %.not57 = icmp ne i32 %4, 0 %or.cond.not = select i1 %.not57, i1 true, i1 %.not56 - br i1 %or.cond.not, label %95, label %88 - -88: ; preds = %Pa2AlsaFormat.exit - %89 = sext i32 %82 to i64 - %90 = shl nsw i64 %89, 3 - %91 = tail call ptr @PaUtil_AllocateZeroInitializedMemory(i64 noundef %90) #25 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 96 - store ptr %91, ptr %92, align 8 - %93 = icmp eq ptr %91, null - br i1 %93, label %94, label %95 - -94: ; preds = %88 + br i1 %or.cond.not, label %.thread, label %87 + +87: ; preds = %Pa2AlsaFormat.exit + %88 = sext i32 %81 to i64 + %89 = shl nsw i64 %88, 3 + %90 = tail call ptr @PaUtil_AllocateZeroInitializedMemory(i64 noundef %89) #25 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 96 + store ptr %90, ptr %91, align 8 + %92 = icmp eq ptr %90, null + br i1 %92, label %93, label %.thread + +93: ; preds = %87 tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.113) #25 - br label %95 + br label %.thread -95: ; preds = %Pa2AlsaFormat.exit, %88, %94, %67 - %.0 = phi i32 [ %68, %67 ], [ 0, %Pa2AlsaFormat.exit ], [ -9992, %94 ], [ 0, %88 ] - %96 = icmp eq i64 %64, -9994 - br i1 %96, label %97, label %99 +94: ; preds = %59 + tail call void (ptr, ...) @PaUtil_DebugPrint(ptr noundef nonnull @.str.112) #25 + %95 = load i32, ptr @paUtilErr_, align 4 + %96 = icmp eq i64 %65, -9994 + br i1 %96, label %97, label %.thread -97: ; preds = %95 +97: ; preds = %94 %98 = load ptr, ptr %54, align 8 tail call fastcc void @LogAllAvailableFormats(ptr noundef %98) - br label %99 + br label %.thread -99: ; preds = %.thread, %97, %95 - %.061 = phi i32 [ %57, %.thread ], [ %.0, %97 ], [ %.0, %95 ] +.thread: ; preds = %87, %93, %Pa2AlsaFormat.exit, %57, %97, %94 + %.061 = phi i32 [ %95, %97 ], [ %95, %94 ], [ 0, %87 ], [ -9992, %93 ], [ 0, %Pa2AlsaFormat.exit ], [ %58, %57 ] ret i32 %.061 } diff --git a/bench/qemu/optimized/block_vvfat.c.ll b/bench/qemu/optimized/block_vvfat.c.ll index e9f1790ba1e..234bf37125f 100644 --- a/bench/qemu/optimized/block_vvfat.c.ll +++ b/bench/qemu/optimized/block_vvfat.c.ll @@ -4283,8 +4283,8 @@ if.then.i: ; preds = %if.end br i1 %tobool2.not.i, label %vvfat_close_current_file.exit.thread, label %vvfat_close_current_file.exit vvfat_close_current_file.exit.thread: ; preds = %if.end, %if.then.i - %current_cluster.i120 = getelementptr inbounds nuw i8, ptr %s, i64 32992 - store i32 -1, ptr %current_cluster.i120, align 8 + %current_cluster.i119 = getelementptr inbounds nuw i8, ptr %s, i64 32992 + store i32 -1, ptr %current_cluster.i119, align 8 br label %for.body.lr.ph.lr.ph.i vvfat_close_current_file.exit: ; preds = %if.then.i @@ -4293,12 +4293,12 @@ vvfat_close_current_file.exit: ; preds = %if.then.i %.pre = load i32, ptr %next, align 4 %current_cluster.i = getelementptr inbounds nuw i8, ptr %s, i64 32992 store i32 -1, ptr %current_cluster.i, align 8 - %cmp197204.not.i = icmp eq i32 %.pre, 0 - br i1 %cmp197204.not.i, label %if.end3, label %for.body.lr.ph.lr.ph.i + %cmp196203.not.i = icmp eq i32 %.pre, 0 + br i1 %cmp196203.not.i, label %if.end3, label %for.body.lr.ph.lr.ph.i for.body.lr.ph.lr.ph.i: ; preds = %vvfat_close_current_file.exit.thread, %vvfat_close_current_file.exit %3 = phi i32 [ %0, %vvfat_close_current_file.exit.thread ], [ %.pre, %vvfat_close_current_file.exit ] - %commits.i123 = getelementptr inbounds nuw i8, ptr %s, i64 33032 + %commits.i122 = getelementptr inbounds nuw i8, ptr %s, i64 33032 %item_size.i.i = getelementptr inbounds nuw i8, ptr %s, i64 33048 %next99.i = getelementptr inbounds nuw i8, ptr %s, i64 32868 %sectors_per_cluster106.i = getelementptr inbounds nuw i8, ptr %s, i64 32924 @@ -4312,14 +4312,14 @@ for.body.lr.ph.lr.ph.i: ; preds = %vvfat_close_current for.body.lr.ph.i: ; preds = %if.end159.i, %for.body.lr.ph.lr.ph.i %5 = phi i32 [ %3, %for.body.lr.ph.lr.ph.i ], [ %6, %if.end159.i ] - %i.0.ph205.i = phi i32 [ 0, %for.body.lr.ph.lr.ph.i ], [ %add.i.i158.i, %if.end159.i ] - %cmp.i.i152.i = icmp sgt i32 %i.0.ph205.i, -1 - %add.i.i158.i = add nuw i32 %i.0.ph205.i, 1 + %i.0.ph204.i = phi i32 [ 0, %for.body.lr.ph.lr.ph.i ], [ %add.i.i158.i, %if.end159.i ] + %cmp.i.i152.i = icmp sgt i32 %i.0.ph204.i, -1 + %add.i.i158.i = add nuw i32 %i.0.ph204.i, 1 br label %for.body.i for.body.i: ; preds = %for.cond.backedge.i, %for.body.lr.ph.i %6 = phi i32 [ %5, %for.body.lr.ph.i ], [ %storemerge.i, %for.cond.backedge.i ] - %cmp.i.i = icmp ult i32 %i.0.ph205.i, %6 + %cmp.i.i = icmp ult i32 %i.0.ph204.i, %6 br i1 %cmp.i.i, label %if.end.i.i, label %if.else.i.i if.else.i.i: ; preds = %for.body.i @@ -4327,7 +4327,7 @@ if.else.i.i: ; preds = %for.body.i unreachable if.end.i.i: ; preds = %for.body.i - %7 = load ptr, ptr %commits.i123, align 8 + %7 = load ptr, ptr %commits.i122, align 8 %tobool.not.i.i = icmp eq ptr %7, null br i1 %tobool.not.i.i, label %if.else2.i.i, label %array_get.exit.i @@ -4337,7 +4337,7 @@ if.else2.i.i: ; preds = %if.end.i.i array_get.exit.i: ; preds = %if.end.i.i %8 = load i32, ptr %item_size.i.i, align 8 - %mul.i.i = mul i32 %8, %i.0.ph205.i + %mul.i.i = mul i32 %8, %i.0.ph204.i %idx.ext.i.i = zext i32 %mul.i.i to i64 %add.ptr.i.i = getelementptr i8, ptr %7, i64 %idx.ext.i.i %action.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i, i64 16 @@ -4439,10 +4439,10 @@ array_get.exit98.i: ; preds = %if.end.i91.i %idx.ext.i95.i = zext i32 %mul.i94.i to i64 %add.ptr.i96.i = getelementptr i8, ptr %23, i64 %idx.ext.i95.i %25 = load i32, ptr %add.ptr.i.i.i, align 8 - %s.val192.i = load i32, ptr %4, align 4 - %sub.i193.i = add i32 %s.val192.i, -8 - %cmp.i99.not194.i = icmp ugt i32 %25, %sub.i193.i - br i1 %cmp.i99.not194.i, label %if.end70.i, label %do.body.preheader.lr.ph.i + %s.val191.i = load i32, ptr %4, align 4 + %sub.i192.i = add i32 %s.val191.i, -8 + %cmp.i99.not193.i = icmp ugt i32 %25, %sub.i192.i + br i1 %cmp.i99.not193.i, label %if.end70.i, label %do.body.preheader.lr.ph.i do.body.preheader.lr.ph.i: ; preds = %array_get.exit98.i %sub.i = add i32 %conv.i, 1 @@ -4454,12 +4454,12 @@ do.body.preheader.lr.ph.i: ; preds = %array_get.exit98.i br label %do.body.preheader.i do.body.preheader.i: ; preds = %do.end.i, %do.body.preheader.lr.ph.i - %c.0196.i = phi i32 [ %25, %do.body.preheader.lr.ph.i ], [ %call69.i, %do.end.i ] - %j.0195.i = phi i32 [ 0, %do.body.preheader.lr.ph.i ], [ %inc.i, %do.end.i ] + %c.0195.i = phi i32 [ %25, %do.body.preheader.lr.ph.i ], [ %call69.i, %do.end.i ] + %j.0194.i = phi i32 [ 0, %do.body.preheader.lr.ph.i ], [ %inc.i, %do.end.i ] br label %do.body.i do.body.i: ; preds = %if.end66.i, %do.body.preheader.i - %j.1.i = phi i32 [ %inc.i, %if.end66.i ], [ %j.0195.i, %do.body.preheader.i ] + %j.1.i = phi i32 [ %inc.i, %if.end66.i ], [ %j.0194.i, %do.body.preheader.i ] %idx.ext.i = sext i32 %j.1.i to i64 %add.ptr.i = getelementptr %struct.direntry_t, ptr %add.ptr.i96.i, i64 %idx.ext.i %26 = getelementptr i8, ptr %add.ptr.i, i64 11 @@ -4490,16 +4490,12 @@ lor.lhs.false.i: ; preds = %land.rhs.i.i, %is_s is_directory.exit.i: ; preds = %lor.lhs.false.i %29 = load i8, ptr %add.ptr.i, align 1 - %cmp.i103.not.i = icmp eq i8 %29, -27 - br i1 %cmp.i103.not.i, label %if.end66.i, label %land.lhs.true.i - -land.lhs.true.i: ; preds = %is_directory.exit.i - %cond.i = icmp ne i8 %direntry.val.i.i.i, 40 - %cond185.i = icmp eq i8 %29, 46 - %or.cond241.i = and i1 %cond.i, %cond185.i - br i1 %or.cond241.i, label %if.end66.i, label %if.then33.i + switch i8 %29, label %if.then33.i [ + i8 -27, label %if.end66.i + i8 46, label %if.end66.i + ] -if.then33.i: ; preds = %land.lhs.true.i, %land.rhs.i.i +if.then33.i: ; preds = %is_directory.exit.i, %land.rhs.i.i %30 = getelementptr i8, ptr %add.ptr.i, i64 20 %add.ptr.val.i = load i16, ptr %30, align 1 %31 = getelementptr i8, ptr %add.ptr.i, i64 26 @@ -4568,7 +4564,7 @@ if.end53.i: ; preds = %if.end39.i %add.ptr64.i = getelementptr i8, ptr %41, i64 %conv48.i tail call void @pstrcpy(ptr noundef %add.ptr58.i, i32 noundef %sub61.i, ptr noundef %add.ptr64.i) #20 %42 = load i32, ptr %add.ptr.i.i122.i, align 8 - %call.i130.i = tail call fastcc ptr @array_get_next(ptr noundef nonnull %commits.i123) + %call.i130.i = tail call fastcc ptr @array_get_next(ptr noundef nonnull %commits.i122) store ptr %call45.i, ptr %call.i130.i, align 8 %param.i.i = getelementptr inbounds nuw i8, ptr %call.i130.i, i64 8 store i32 %42, ptr %param.i.i, align 8 @@ -4576,7 +4572,7 @@ if.end53.i: ; preds = %if.end39.i store i32 0, ptr %action.i.i, align 8 br label %if.end66.i -if.end66.i: ; preds = %if.end53.i, %land.lhs.true.i, %is_directory.exit.i, %lor.lhs.false.i +if.end66.i: ; preds = %if.end53.i, %is_directory.exit.i, %is_directory.exit.i, %lor.lhs.false.i %inc.i = add i32 %j.1.i, 1 %43 = load i32, ptr %sectors_per_cluster106.i, align 4 %mul.i = shl i32 %43, 4 @@ -4585,7 +4581,7 @@ if.end66.i: ; preds = %if.end53.i, %land.l br i1 %cmp67.not.i, label %do.end.i, label %do.body.i, !llvm.loop !26 do.end.i: ; preds = %if.end66.i - %call69.i = tail call fastcc i32 @fat_get(ptr noundef nonnull %s, i32 noundef %c.0196.i) + %call69.i = tail call fastcc i32 @fat_get(ptr noundef nonnull %s, i32 noundef %c.0195.i) %s.val.i = load i32, ptr %4, align 4 %sub.i.i = add i32 %s.val.i, -8 %cmp.i99.not.i = icmp ugt i32 %call69.i, %sub.i.i @@ -4601,7 +4597,7 @@ if.else.i.i.i: ; preds = %if.end70.i if.end.i.i132.i: ; preds = %if.end70.i %44 = load i32, ptr %next, align 4 - %cmp5.not.i.not.i.i = icmp ult i32 %i.0.ph205.i, %44 + %cmp5.not.i.not.i.i = icmp ult i32 %i.0.ph204.i, %44 br i1 %cmp5.not.i.not.i.i, label %for.cond.backedge.i, label %if.else7.i.i.i if.else7.i.i.i: ; preds = %if.end.i.i132.i @@ -4609,23 +4605,23 @@ if.else7.i.i.i: ; preds = %if.end.i.i132.i unreachable for.cond.backedge.i: ; preds = %if.end.i.i154.i, %if.end.i.i132.i - %.sink242.i = phi i32 [ %62, %if.end.i.i154.i ], [ %44, %if.end.i.i132.i ] - %45 = load ptr, ptr %commits.i123, align 8 + %.sink240.i = phi i32 [ %62, %if.end.i.i154.i ], [ %44, %if.end.i.i132.i ] + %45 = load ptr, ptr %commits.i122, align 8 %46 = load i32, ptr %item_size.i.i, align 8 - %mul.i.i134.i = mul i32 %46, %i.0.ph205.i + %mul.i.i134.i = mul i32 %46, %i.0.ph204.i %idx.ext.i.i135.i = zext i32 %mul.i.i134.i to i64 %add.ptr.i.i136.i = getelementptr i8, ptr %45, i64 %idx.ext.i.i135.i %mul12.i.i.i = mul i32 %46, %add.i.i158.i %idx.ext13.i.i.i = zext i32 %mul12.i.i.i to i64 %add.ptr14.i.i.i = getelementptr i8, ptr %45, i64 %idx.ext13.i.i.i - %sub16.i.i.i = sub nuw i32 %.sink242.i, %add.i.i158.i + %sub16.i.i.i = sub nuw i32 %.sink240.i, %add.i.i158.i %mul18.i.i.i = mul i32 %46, %sub16.i.i.i %conv.i.i.i = zext i32 %mul18.i.i.i to i64 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i136.i, ptr align 1 %add.ptr14.i.i.i, i64 %conv.i.i.i, i1 false) %storemerge.in.i = load i32, ptr %next, align 4 %storemerge.i = add i32 %storemerge.in.i, -1 store i32 %storemerge.i, ptr %next, align 4 - %cmp.i = icmp ult i32 %i.0.ph205.i, %storemerge.i + %cmp.i = icmp ult i32 %i.0.ph204.i, %storemerge.i br i1 %cmp.i, label %for.body.i, label %if.end3, !llvm.loop !28 if.then77.i: ; preds = %array_get.exit.i @@ -4666,8 +4662,8 @@ if.end103.i: ; preds = %if.end94.i %first_dir_index110.i = getelementptr inbounds nuw i8, ptr %call90.i, i64 20 store i32 %50, ptr %first_dir_index110.i, align 4 %52 = load i32, ptr %next121.i, align 4 - %cmp122190.not.i = icmp eq i32 %52, 0 - br i1 %cmp122190.not.i, label %if.else153.i, label %for.body124.lr.ph.i + %cmp122189.not.i = icmp eq i32 %52, 0 + br i1 %cmp122189.not.i, label %if.else153.i, label %for.body124.lr.ph.i for.body124.lr.ph.i: ; preds = %if.end103.i %53 = load ptr, ptr %add.ptr.i.i, align 8 @@ -4722,8 +4718,8 @@ land.lhs.true139.i: ; preds = %land.lhs.true133.i for.inc.i: ; preds = %land.lhs.true139.i, %land.lhs.true133.i, %if.end.i144.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond213.not.i = icmp eq i64 %indvars.iv.next, %57 - br i1 %exitcond213.not.i, label %if.else153.i, label %if.end.i144.i, !llvm.loop !29 + %exitcond212.not.i = icmp eq i64 %indvars.iv.next, %57 + br i1 %exitcond212.not.i, label %if.else153.i, label %if.end.i144.i, !llvm.loop !29 if.else153.i: ; preds = %if.end103.i, %for.inc.i tail call void @__assert_fail(ptr noundef nonnull @.str.99, ptr noundef nonnull @.str.13, i32 noundef 2760, ptr noundef nonnull @__PRETTY_FUNCTION__.handle_renames_and_mkdirs) #22 @@ -4739,7 +4735,7 @@ if.else.i.i153.i: ; preds = %if.end154.i if.end.i.i154.i: ; preds = %if.end154.i %62 = load i32, ptr %next, align 4 - %cmp5.not.i.not.i156.i = icmp ult i32 %i.0.ph205.i, %62 + %cmp5.not.i.not.i156.i = icmp ult i32 %i.0.ph204.i, %62 br i1 %cmp5.not.i.not.i156.i, label %for.cond.backedge.i, label %if.else7.i.i157.i if.else7.i.i157.i: ; preds = %if.end.i.i154.i @@ -4747,8 +4743,8 @@ if.else7.i.i157.i: ; preds = %if.end.i.i154.i unreachable if.end159.i: ; preds = %array_get.exit.i - %cmp197.i = icmp ult i32 %add.i.i158.i, %6 - br i1 %cmp197.i, label %for.body.lr.ph.i, label %if.end3, !llvm.loop !28 + %cmp196.i = icmp ult i32 %add.i.i158.i, %6 + br i1 %cmp196.i, label %for.body.lr.ph.i, label %if.end3, !llvm.loop !28 if.then1: ; preds = %if.end8.i, %if.then77.i, %if.end84.i, %if.then.i20, %array_get.exit.i.i, %if.then33.i, %array_get.exit.i118.i %retval.0.i.ph = phi i32 [ -1, %array_get.exit.i118.i ], [ -1, %if.then33.i ], [ -2, %if.end8.i ], [ -5, %if.then77.i ], [ -6, %if.end84.i ], [ -1, %if.then.i20 ], [ -1, %array_get.exit.i.i ] @@ -4825,9 +4821,9 @@ if.else.i.i28: ; preds = %for.body.i26 if.end.i.i29: ; preds = %for.body.i26 %76 = load ptr, ptr %mapping.i, align 8 %tobool.not.i.i30 = icmp eq ptr %76, null - br i1 %tobool.not.i.i30, label %if.else2.i.i48, label %array_get.exit.i31 + br i1 %tobool.not.i.i30, label %if.else2.i.i47, label %array_get.exit.i31 -if.else2.i.i48: ; preds = %if.end.i.i29 +if.else2.i.i47: ; preds = %if.end.i.i29 tail call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.13, i32 noundef 106, ptr noundef nonnull @__PRETTY_FUNCTION__.array_get) #22 unreachable @@ -4898,18 +4894,18 @@ for.body27.i.preheader: ; preds = %for.cond23.preheade br label %if.end.i42.i if.then19.i: ; preds = %if.then13.i - %call20.i45 = tail call ptr @__errno_location() #23 - %87 = load i32, ptr %call20.i45, align 4 + %call20.i44 = tail call ptr @__errno_location() #23 + %87 = load i32, ptr %call20.i44, align 4 %cmp21.i = icmp eq i32 %87, 39 br i1 %cmp21.i, label %if.then22.i, label %if.then16 if.then22.i: ; preds = %if.then19.i - %inc.i46 = add i32 %deferred.172.i, 1 + %inc.i45 = add i32 %deferred.172.i, 1 br label %for.inc58.i -if.end.i42.i: ; preds = %for.inc.i44, %for.body27.i.preheader - %next_dir_index.069.i = phi i32 [ %next_dir_index.1.i, %for.inc.i44 ], [ %80, %for.body27.i.preheader ] - %j.068.i = phi i32 [ %inc44.i, %for.inc.i44 ], [ 1, %for.body27.i.preheader ] +if.end.i42.i: ; preds = %for.inc.i43, %for.body27.i.preheader + %next_dir_index.069.i = phi i32 [ %next_dir_index.1.i, %for.inc.i43 ], [ %80, %for.body27.i.preheader ] + %j.068.i = phi i32 [ %inc44.i, %for.inc.i43 ], [ 1, %for.body27.i.preheader ] br i1 %tobool.not.i43.i, label %if.else2.i48.i, label %array_get.exit49.i if.else2.i48.i: ; preds = %if.end.i42.i @@ -4925,24 +4921,24 @@ array_get.exit49.i: ; preds = %if.end.i42.i %89 = load i32, ptr %mode30.i, align 8 %and31.i = and i32 %89, 4 %tobool32.not.i = icmp eq i32 %and31.i, 0 - br i1 %tobool32.not.i, label %for.inc.i44, label %land.lhs.true.i43 + br i1 %tobool32.not.i, label %for.inc.i43, label %land.lhs.true.i -land.lhs.true.i43: ; preds = %array_get.exit49.i +land.lhs.true.i: ; preds = %array_get.exit49.i %first_dir_index34.i = getelementptr inbounds nuw i8, ptr %add.ptr.i47.i, i64 20 %90 = load i32, ptr %first_dir_index34.i, align 4 %cmp35.i = icmp sgt i32 %90, %83 %91 = tail call i32 @llvm.smin.i32(i32 %90, i32 %next_dir_index.069.i) %spec.select.i = select i1 %cmp35.i, i32 %91, i32 %next_dir_index.069.i - br label %for.inc.i44 + br label %for.inc.i43 -for.inc.i44: ; preds = %land.lhs.true.i43, %array_get.exit49.i - %next_dir_index.1.i = phi i32 [ %next_dir_index.069.i, %array_get.exit49.i ], [ %spec.select.i, %land.lhs.true.i43 ] +for.inc.i43: ; preds = %land.lhs.true.i, %array_get.exit49.i + %next_dir_index.1.i = phi i32 [ %next_dir_index.069.i, %array_get.exit49.i ], [ %spec.select.i, %land.lhs.true.i ] %inc44.i = add nuw i32 %j.068.i, 1 %exitcond77.not.i = icmp eq i32 %inc44.i, %85 br i1 %exitcond77.not.i, label %for.end.i, label %if.end.i42.i, !llvm.loop !32 -for.end.i: ; preds = %for.inc.i44, %for.cond23.preheader.i - %next_dir_index.0.lcssa.i = phi i32 [ %80, %for.cond23.preheader.i ], [ %next_dir_index.1.i, %for.inc.i44 ] +for.end.i: ; preds = %for.inc.i43, %for.cond23.preheader.i + %next_dir_index.0.lcssa.i = phi i32 [ %80, %for.cond23.preheader.i ], [ %next_dir_index.1.i, %for.inc.i43 ] %sub.i39 = sub i32 %next_dir_index.0.lcssa.i, %83 tail call fastcc void @remove_direntries(ptr noundef nonnull %s, i32 noundef %83, i32 noundef %sub.i39) %inc46.i = add i32 %deleted.171.i, 1 @@ -4953,20 +4949,20 @@ if.else48.i: ; preds = %array_get.exit37.i %92 = load ptr, ptr %path49.i, align 8 %call50.i = tail call i32 @unlink(ptr noundef %92) #20 %tobool51.not.i = icmp eq i32 %call50.i, 0 - br i1 %tobool51.not.i, label %if.end53.i47, label %if.then16 + br i1 %tobool51.not.i, label %if.end53.i46, label %if.then16 -if.end53.i47: ; preds = %if.else48.i +if.end53.i46: ; preds = %if.else48.i %inc54.i = add i32 %deleted.171.i, 1 br label %if.end55.i -if.end55.i: ; preds = %if.end53.i47, %for.end.i, %if.then9.i - %deleted.3.i = phi i32 [ %inc46.i, %for.end.i ], [ %deleted.171.i, %if.then9.i ], [ %inc54.i, %if.end53.i47 ] +if.end55.i: ; preds = %if.end53.i46, %for.end.i, %if.then9.i + %deleted.3.i = phi i32 [ %inc46.i, %for.end.i ], [ %deleted.171.i, %if.then9.i ], [ %inc54.i, %if.end53.i46 ] tail call fastcc void @remove_mapping(ptr noundef nonnull %s, i32 noundef %i.073.i) br label %for.inc58.i for.inc58.i: ; preds = %if.end55.i, %if.then22.i, %array_get.exit.i31 %deleted.2.i = phi i32 [ %deleted.171.i, %if.then22.i ], [ %deleted.3.i, %if.end55.i ], [ %deleted.171.i, %array_get.exit.i31 ] - %deferred.2.i = phi i32 [ %inc.i46, %if.then22.i ], [ %deferred.172.i, %if.end55.i ], [ %deferred.172.i, %array_get.exit.i31 ] + %deferred.2.i = phi i32 [ %inc.i45, %if.then22.i ], [ %deferred.172.i, %if.end55.i ], [ %deferred.172.i, %array_get.exit.i31 ] %inc59.i = add nuw i32 %i.073.i, 1 %93 = load i32, ptr %next.i22, align 4 %cmp.i41 = icmp ult i32 %inc59.i, %93 @@ -4991,10 +4987,10 @@ if.end18: ; preds = %for.cond.preheader. %s.val = load i32, ptr %99, align 4 %100 = getelementptr i8, ptr %s, i64 32956 %s.val19 = load i32, ptr %100, align 4 - %conv.i49 = zext i32 %s.val19 to i64 - %sub.i50 = sub nsw i64 %conv20, %conv.i49 + %conv.i48 = zext i32 %s.val19 to i64 + %sub.i49 = sub nsw i64 %conv20, %conv.i48 %conv1.i = zext i32 %s.val to i64 - %div.i = sdiv i64 %sub.i50, %conv1.i + %div.i = sdiv i64 %sub.i49, %conv1.i %sext = shl i64 %div.i, 32 %conv22 = ashr exact i64 %sext, 32 tail call void @llvm.memset.p0.i64(ptr align 1 %97, i8 0, i64 %conv22, i1 false) @@ -6823,16 +6819,12 @@ array_get.exit157: ; preds = %if.end.i150 is_directory.exit163: ; preds = %array_get.exit157 %48 = load i8, ptr %add.ptr.i155, align 1 - %cmp.i161.not = icmp eq i8 %48, -27 - br i1 %cmp.i161.not, label %for.inc130, label %land.lhs.true - -land.lhs.true: ; preds = %is_directory.exit163 - %cond210 = icmp ne i8 %46, 40 - %cond211 = icmp eq i8 %48, 46 - %or.cond = and i1 %cond210, %cond211 - br i1 %or.cond, label %for.inc130, label %if.then110 + switch i8 %48, label %if.then110 [ + i8 -27, label %for.inc130 + i8 46, label %for.inc130 + ] -if.then110: ; preds = %land.lhs.true +if.then110: ; preds = %is_directory.exit163 %49 = load i32, ptr %next.i87, align 4 %call.i168 = tail call fastcc i32 @find_mapping_for_cluster_aux(ptr noundef nonnull readonly %s, i32 noundef %cond, i32 noundef %49) %50 = load i32, ptr %next.i87, align 4 @@ -6901,7 +6893,7 @@ array_index.exit: ; preds = %if.end.i190 %tobool126.not = icmp eq i32 %call125, 0 br i1 %tobool126.not, label %for.inc130, label %return -for.inc130: ; preds = %land.lhs.true, %array_get.exit157, %is_directory.exit163, %array_index.exit +for.inc130: ; preds = %is_directory.exit163, %is_directory.exit163, %array_get.exit157, %array_index.exit %inc131 = add nuw nsw i32 %i.0231, 1 %exitcond.not = icmp eq i32 %inc131, %mul98 br i1 %exitcond.not, label %return, label %for.body101, !llvm.loop !47 diff --git a/bench/qemu/optimized/hw_ufs_lu.c.ll b/bench/qemu/optimized/hw_ufs_lu.c.ll index 730799aad12..6ebeda642e0 100644 --- a/bench/qemu/optimized/hw_ufs_lu.c.ll +++ b/bench/qemu/optimized/hw_ufs_lu.c.ll @@ -132,8 +132,7 @@ ufs_emulate_report_luns.exit: ; preds = %for.inc.i %sub.i = add nsw i32 %len.1.i, -8 %5 = tail call i32 @llvm.bswap.i32(i32 %sub.i) store i32 %5, ptr %outbuf, align 16 - %cmp = icmp eq i32 %len.1.i, -1 - br i1 %cmp, label %sw.epilog.thread, label %sw.epilog + br label %sw.epilog sw.bb5: ; preds = %entry %arrayidx.i = getelementptr i8, ptr %req, i64 65 @@ -209,9 +208,9 @@ sw.bb19: ; preds = %entry %cmp21 = icmp eq i8 %10, -48 br i1 %cmp21, label %sw.epilog, label %sw.epilog.thread -sw.epilog.thread: ; preds = %entry, %sw.bb19, %if.then1.i, %if.end2.i, %ufs_emulate_report_luns.exit, %sw.bb - %sense_code_INVALID_OPCODE.sink = phi ptr [ @sense_code_INVALID_FIELD, %sw.bb ], [ @sense_code_INVALID_FIELD, %ufs_emulate_report_luns.exit ], [ @sense_code_INVALID_FIELD, %if.end2.i ], [ @sense_code_INVALID_FIELD, %if.then1.i ], [ @sense_code_INVALID_OPCODE, %sw.bb19 ], [ @sense_code_INVALID_OPCODE, %entry ] - %len.0.ph = phi i32 [ -1, %sw.bb ], [ -1, %ufs_emulate_report_luns.exit ], [ -1, %if.end2.i ], [ -1, %if.then1.i ], [ 0, %sw.bb19 ], [ 0, %entry ] +sw.epilog.thread: ; preds = %entry, %sw.bb19, %if.then1.i, %if.end2.i, %sw.bb + %sense_code_INVALID_OPCODE.sink = phi ptr [ @sense_code_INVALID_FIELD, %sw.bb ], [ @sense_code_INVALID_FIELD, %if.end2.i ], [ @sense_code_INVALID_FIELD, %if.then1.i ], [ @sense_code_INVALID_OPCODE, %sw.bb19 ], [ @sense_code_INVALID_OPCODE, %entry ] + %len.0.ph = phi i32 [ -1, %sw.bb ], [ -1, %if.end2.i ], [ -1, %if.then1.i ], [ 0, %sw.bb19 ], [ 0, %entry ] %sense_code_INVALID_OPCODE.coerce.0.copyload = load i24, ptr %sense_code_INVALID_OPCODE.sink, align 1 %call26 = call i32 @scsi_build_sense(ptr noundef nonnull %sense_buf, i24 %sense_code_INVALID_OPCODE.coerce.0.copyload) #9 %data_len43 = getelementptr inbounds nuw i8, ptr %req, i64 632 @@ -219,7 +218,7 @@ sw.epilog.thread: ; preds = %entry, %sw.bb19, %i %cond44 = call i32 @llvm.smin.i32(i32 %len.0.ph, i32 %11) br label %if.end68 -sw.epilog: ; preds = %if.end10.i, %if.end.i.i, %ufs_emulate_report_luns.exit.thread34, %sw.bb19, %ufs_emulate_report_luns.exit, %sw.bb16 +sw.epilog: ; preds = %ufs_emulate_report_luns.exit, %if.end10.i, %if.end.i.i, %ufs_emulate_report_luns.exit.thread34, %sw.bb19, %sw.bb16 %len.0 = phi i32 [ %call18, %sw.bb16 ], [ %len.1.i, %ufs_emulate_report_luns.exit ], [ 0, %sw.bb19 ], [ %len.01.i, %ufs_emulate_report_luns.exit.thread34 ], [ 36, %if.end10.i ], [ %buflen.0.i.i, %if.end.i.i ] %data_len = getelementptr inbounds nuw i8, ptr %req, i64 632 %12 = load i32, ptr %data_len, align 8 diff --git a/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll b/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll index 379004bf209..9b1ab33b460 100644 --- a/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll +++ b/bench/qemu/optimized/hw_usb_dev-smartcard-reader.c.ll @@ -415,11 +415,9 @@ do.end: ; preds = %entry, %if.then br i1 %tobool.i.not, label %if.end7, label %if.then6 if.then6: ; preds = %do.end - %5 = and i8 %call2.val, -2 - %cmp.not.i = icmp eq i8 %call2.val, %5 - %6 = or i8 %5, 2 - %storemerge7.i = select i1 %cmp.not.i, i8 %5, i8 %6 - store i8 %storemerge7.i, ptr %3, align 8 + %5 = and i8 %call2.val, -4 + %6 = or disjoint i8 %5, 2 + store i8 %6, ptr %3, align 8 %notify_slot_change.i = getelementptr inbounds nuw i8, ptr %call.i5, i64 75010 store i8 1, ptr %notify_slot_change.i, align 2 %intr.i = getelementptr inbounds nuw i8, ptr %call.i5, i64 5864 diff --git a/bench/qemu/optimized/system_physmem.c.ll b/bench/qemu/optimized/system_physmem.c.ll index 1772514d072..5966d0b9598 100644 --- a/bench/qemu/optimized/system_physmem.c.ll +++ b/bench/qemu/optimized/system_physmem.c.ll @@ -10006,8 +10006,8 @@ for.body60.lr.ph: ; preds = %for.end %nodes = getelementptr inbounds nuw i8, ptr %d, i64 48 br label %for.body60 -for.body60: ; preds = %for.body60.lr.ph, %for.inc104 - %i.178 = phi i32 [ 0, %for.body60.lr.ph ], [ %inc105, %for.inc104 ] +for.body60: ; preds = %for.body60.lr.ph, %mtree_print_phys_entries.exit71 + %i.178 = phi i32 [ 0, %for.body60.lr.ph ], [ %inc105, %mtree_print_phys_entries.exit71 ] %15 = load ptr, ptr %nodes, align 8 %idx.ext62 = sext i32 %i.178 to i64 %add.ptr63 = getelementptr [512 x %struct.PhysPageEntry], ptr %15, i64 %idx.ext62 @@ -10079,13 +10079,9 @@ for.inc92: ; preds = %land.lhs.true, %mtr %prev.sroa.0.1 = phi i32 [ %prev.sroa.0.075, %land.lhs.true ], [ %prev.sroa.0.0.copyload7, %mtree_print_phys_entries.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 512 - br i1 %exitcond.not, label %for.end94, label %for.body70, !llvm.loop !85 + br i1 %exitcond.not, label %if.then98, label %for.body70, !llvm.loop !85 -for.end94: ; preds = %for.inc92 - %cmp96.not = icmp eq i32 %jprev.1, 512 - br i1 %cmp96.not, label %for.inc104, label %if.then98 - -if.then98: ; preds = %for.end94 +if.then98: ; preds = %for.inc92 %bf.clear100 = and i32 %prev.sroa.0.1, 63 %bf.lshr102 = lshr i32 %prev.sroa.0.1, 6 %cmp.i54 = icmp eq i32 %jprev.1, 511 @@ -10122,15 +10118,12 @@ if.else10.i62: ; preds = %if.else7.i60 mtree_print_phys_entries.exit71: ; preds = %if.then5.i67, %if.then8.i65, %if.else10.i62 %call14.i64 = tail call i32 (ptr, ...) @qemu_printf(ptr noundef nonnull @.str.75) #28 - br label %for.inc104 - -for.inc104: ; preds = %for.end94, %mtree_print_phys_entries.exit71 %inc105 = add nuw i32 %i.178, 1 %21 = load i32, ptr %nodes_nb, align 8 %cmp58 = icmp ult i32 %inc105, %21 br i1 %cmp58, label %for.body60, label %for.end106, !llvm.loop !86 -for.end106: ; preds = %for.inc104, %for.end +for.end106: ; preds = %mtree_print_phys_entries.exit71, %for.end ret void } diff --git a/bench/qemu/optimized/tcg-op-ldst.c.ll b/bench/qemu/optimized/tcg-op-ldst.c.ll index 28adcbd7354..d5919ce4ed7 100644 --- a/bench/qemu/optimized/tcg-op-ldst.c.ll +++ b/bench/qemu/optimized/tcg-op-ldst.c.ll @@ -2103,7 +2103,7 @@ get_alignment_bits.exit.i.i: ; preds = %if.else4.i.i.i, %if %a.0.i.i.i = phi i32 [ 3, %if.then2.i.i.i ], [ %shr.i.i.i, %if.else4.i.i.i ], [ 0, %if.then2.i ] %5 = load i8, ptr @tcg_use_softmmu, align 1 %tobool.i.i.i = trunc i8 %5 to i1 - br i1 %tobool.i.i.i, label %do.body.i.i.i, label %sw.bb10.i.i + br i1 %tobool.i.i.i, label %do.body.i.i.i, label %if.then5.i do.body.i.i.i: ; preds = %get_alignment_bits.exit.i.i %add.i.i.i = add nuw nsw i32 %a.0.i.i.i, 5 @@ -2112,17 +2112,13 @@ do.body.i.i.i: ; preds = %get_alignment_bits. %conv.i.i.i = zext i8 %6 to i32 %cmp.i.i.i = icmp samesign ule i32 %add.i.i.i, %conv.i.i.i tail call void @llvm.assume(i1 %cmp.i.i.i) - br label %sw.bb10.i.i + br label %if.then5.i -sw.bb10.i.i: ; preds = %do.body.i.i.i, %get_alignment_bits.exit.i.i +if.then5.i: ; preds = %do.body.i.i.i, %get_alignment_bits.exit.i.i %cmp.i.i = icmp eq i32 %a.0.i.i.i, 3 %or.i.i = or i32 %memop, 224 %spec.select.i.i = select i1 %cmp.i.i, i32 %or.i.i, i32 %memop %and3.i = and i32 %spec.select.i.i, 19 - %.not.i = icmp eq i32 %and3.i, 16 - br i1 %.not.i, label %if.end9.i, label %if.then5.i - -if.then5.i: ; preds = %sw.bb10.i.i %idxprom.i = zext nneg i32 %and3.i to i64 %arrayidx.i = getelementptr [24 x ptr], ptr @table_cmpxchg, i64 0, i64 %idxprom.i %7 = load ptr, ptr %arrayidx.i, align 8 @@ -2165,14 +2161,6 @@ if.then.i34.i: ; preds = %maybe_extend_addr64 tail call void @tcg_temp_free_i64(ptr noundef %retval.0.i.i) #5 br label %tcg_gen_atomic_cmpxchg_i64_int.exit -if.end9.i: ; preds = %sw.bb10.i.i - %14 = load ptr, ptr @tcg_env, align 8 - %15 = ptrtoint ptr %14 to i64 - %add.ptr.i.i.i.i = getelementptr i8, ptr %1, i64 %15 - tail call void @tcg_gen_call1(ptr noundef nonnull @helper_info_exit_atomic, ptr noundef null, ptr noundef %add.ptr.i.i.i.i) #5 - tail call void @tcg_gen_movi_i64(ptr noundef %retv, i64 noundef 0) #5 - br label %tcg_gen_atomic_cmpxchg_i64_int.exit - if.end10.i: ; preds = %if.end.i %call11.i = tail call ptr @tcg_temp_ebb_new_i32() #5 %call12.i = tail call ptr @tcg_temp_ebb_new_i32() #5 @@ -2193,7 +2181,7 @@ if.then17.i: ; preds = %if.end10.i tail call void @tcg_gen_ext_i64(ptr noundef %retv, ptr noundef %retv, i32 noundef %memop) br label %tcg_gen_atomic_cmpxchg_i64_int.exit -tcg_gen_atomic_cmpxchg_i64_int.exit: ; preds = %if.then.i, %maybe_extend_addr64.exit.i, %if.then.i34.i, %if.end9.i, %if.end10.i, %if.then17.i +tcg_gen_atomic_cmpxchg_i64_int.exit: ; preds = %if.then.i, %maybe_extend_addr64.exit.i, %if.then.i34.i, %if.end10.i, %if.then17.i ret void } diff --git a/bench/redis/optimized/sentinel.ll b/bench/redis/optimized/sentinel.ll index 05559ac73de..6ea4113ee6e 100644 --- a/bench/redis/optimized/sentinel.ll +++ b/bench/redis/optimized/sentinel.ll @@ -10568,11 +10568,7 @@ if.else353: ; preds = %if.end346 %call355 = call ptr (ptr, ptr, ...) @sdscatfmt(ptr noundef %call351, ptr noundef nonnull @.str.370, i32 noundef %72) #29 %and356 = and i32 %call347, 1 %tobool357.not = icmp eq i32 %and356, 0 - br i1 %tobool357.not, label %if.end360, label %if.end360.thread - -if.end360: ; preds = %if.else353 - %tobool362.not = icmp eq i32 %call347, 1 - br i1 %tobool362.not, label %if.end370, label %if.end368 + br i1 %tobool357.not, label %if.end368, label %if.end360.thread if.end360.thread: ; preds = %if.else353 %call359 = call ptr @sdscat(ptr noundef %call355, ptr noundef nonnull @.str.371) #29 @@ -10583,13 +10579,13 @@ if.then366: ; preds = %if.end360.thread %call367 = call ptr @sdscat(ptr noundef %call359, ptr noundef nonnull @.str.372) #29 br label %if.end368 -if.end368: ; preds = %if.end360, %if.then366 - %e.2 = phi ptr [ %call367, %if.then366 ], [ %call355, %if.end360 ] +if.end368: ; preds = %if.else353, %if.then366 + %e.2 = phi ptr [ %call367, %if.then366 ], [ %call355, %if.else353 ] %call369 = call ptr @sdscat(ptr noundef %e.2, ptr noundef nonnull @.str.373) #29 br label %if.end370 -if.end370: ; preds = %if.end360.thread, %if.end368, %if.end360 - %e.1 = phi ptr [ %call369, %if.end368 ], [ %call355, %if.end360 ], [ %call359, %if.end360.thread ] +if.end370: ; preds = %if.end360.thread, %if.end368 + %e.1 = phi ptr [ %call369, %if.end368 ], [ %call359, %if.end360.thread ] call void @addReplyErrorSds(ptr noundef nonnull %c, ptr noundef %e.1) #29 br label %return diff --git a/bench/ruby/optimized/enum.ll b/bench/ruby/optimized/enum.ll index c5c050ce027..24f0691e0fe 100644 --- a/bench/ruby/optimized/enum.ll +++ b/bench/ruby/optimized/enum.ll @@ -5185,7 +5185,7 @@ declare i32 @rb_method_basic_definition_p(i64 noundef, i64 noundef) local_unname define internal noundef i64 @grep_regexp_i(i64 %0, i64 noundef %1, i32 noundef %2, ptr noundef %3, i64 %4) #0 { %6 = inttoptr i64 %1 to ptr switch i32 %2, label %9 [ - i32 0, label %RB_SYMBOL_P.exit.thread + i32 0, label %23 i32 1, label %7 ] @@ -5209,48 +5209,43 @@ rb_enum_values_pack.exit: ; preds = %7, %9 %16 = icmp ne i64 %15, 0 %17 = icmp eq i64 %.0.i, 0 %18 = or i1 %17, %16 - br i1 %18, label %RB_SYMBOL_P.exit.thread, label %RB_SYMBOL_P.exit + br i1 %18, label %23, label %RB_SYMBOL_P.exit RB_SYMBOL_P.exit: ; preds = %14 %19 = inttoptr i64 %.0.i to ptr %20 = load i64, ptr %19, align 8 %21 = and i64 %20, 31 %22 = icmp eq i64 %21, 20 - br i1 %22, label %24, label %RB_SYMBOL_P.exit.thread + br i1 %22, label %.thread21, label %23 -RB_SYMBOL_P.exit.thread: ; preds = %5, %14, %RB_SYMBOL_P.exit +23: ; preds = %RB_SYMBOL_P.exit, %14, %5 %.0.i1417 = phi i64 [ %.0.i, %RB_SYMBOL_P.exit ], [ %.0.i, %14 ], [ 4, %5 ] - %23 = tail call i64 @rb_check_string_type(i64 noundef %.0.i1417) #13 - br label %24 - -24: ; preds = %RB_SYMBOL_P.exit, %RB_SYMBOL_P.exit.thread - %.0.i1418 = phi i64 [ %.0.i1417, %RB_SYMBOL_P.exit.thread ], [ %.0.i, %RB_SYMBOL_P.exit ] - %25 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %.0.i, %RB_SYMBOL_P.exit ] - %26 = icmp eq i64 %25, 4 - br i1 %26, label %30, label %.thread21 + %24 = tail call i64 @rb_check_string_type(i64 noundef %.0.i1417) #13 + %25 = icmp eq i64 %24, 4 + br i1 %25, label %29, label %.thread21 -.thread21: ; preds = %rb_enum_values_pack.exit, %24 - %.0.i141823 = phi i64 [ %.0.i1418, %24 ], [ %.0.i, %rb_enum_values_pack.exit ] - %27 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %28 = load i64, ptr %27, align 8 - %29 = tail call i64 @rb_reg_match_p(i64 noundef %28, i64 noundef %.0.i141823, i64 noundef 0) #13 - br label %30 +.thread21: ; preds = %RB_SYMBOL_P.exit, %rb_enum_values_pack.exit, %23 + %.0.i141823 = phi i64 [ %.0.i1417, %23 ], [ %.0.i, %rb_enum_values_pack.exit ], [ %.0.i, %RB_SYMBOL_P.exit ] + %26 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %27 = load i64, ptr %26, align 8 + %28 = tail call i64 @rb_reg_match_p(i64 noundef %27, i64 noundef %.0.i141823, i64 noundef 0) #13 + br label %29 -30: ; preds = %24, %.thread21 - %.0.i141824 = phi i64 [ %.0.i141823, %.thread21 ], [ %.0.i1418, %24 ] - %31 = phi i64 [ %29, %.thread21 ], [ 0, %24 ] - %32 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %33 = load i64, ptr %32, align 8 - %34 = icmp eq i64 %31, %33 - br i1 %34, label %35, label %39 +29: ; preds = %23, %.thread21 + %.0.i141824 = phi i64 [ %.0.i141823, %.thread21 ], [ %.0.i1417, %23 ] + %30 = phi i64 [ %28, %.thread21 ], [ 0, %23 ] + %31 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %32 = load i64, ptr %31, align 8 + %33 = icmp eq i64 %30, %32 + br i1 %33, label %34, label %38 -35: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %6, i64 24 - %37 = load i64, ptr %36, align 8 - %38 = tail call i64 @rb_ary_push(i64 noundef %37, i64 noundef %.0.i141824) #13 - br label %39 +34: ; preds = %29 + %35 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %36 = load i64, ptr %35, align 8 + %37 = tail call i64 @rb_ary_push(i64 noundef %36, i64 noundef %.0.i141824) #13 + br label %38 -39: ; preds = %35, %30 +38: ; preds = %34, %29 ret i64 4 } @@ -9584,7 +9579,7 @@ RARRAY_AREF.exit: ; preds = %.thread, %14 br label %rb_num2long_inline.exit rb_num2long_inline.exit: ; preds = %23, %21, %rb_array_len.exit.thread, %RARRAY_AREF.exit, %rb_array_len.exit, %3 - %25 = phi i64 [ 4, %RARRAY_AREF.exit ], [ 4, %rb_array_len.exit ], [ 4, %3 ], [ 4, %rb_array_len.exit.thread ], [ %17, %21 ], [ %17, %23 ] + %25 = phi i1 [ true, %RARRAY_AREF.exit ], [ true, %rb_array_len.exit ], [ true, %3 ], [ true, %rb_array_len.exit.thread ], [ false, %21 ], [ false, %23 ] %.012 = phi i64 [ 0, %RARRAY_AREF.exit ], [ 0, %rb_array_len.exit ], [ 0, %3 ], [ 0, %rb_array_len.exit.thread ], [ %22, %21 ], [ %24, %23 ] %26 = tail call i64 @rb_check_funcall_default(i64 noundef %0, i64 noundef 2993, i32 noundef 0, ptr noundef null, i64 noundef 4) #13 switch i64 %26, label %27 [ @@ -9593,26 +9588,25 @@ rb_num2long_inline.exit: ; preds = %23, %21, %rb_array_ ] 27: ; preds = %rb_num2long_inline.exit - %28 = icmp eq i64 %25, 4 - br i1 %28, label %29, label %31 + br i1 %25, label %28, label %30 -29: ; preds = %27 - %30 = tail call i64 @rb_float_new_in_heap(double noundef 0x7FF0000000000000) #13 +28: ; preds = %27 + %29 = tail call i64 @rb_float_new_in_heap(double noundef 0x7FF0000000000000) #13 br label %.fold.split -31: ; preds = %27 - %32 = icmp slt i64 %.012, 1 - br i1 %32, label %.fold.split, label %33 - -33: ; preds = %31 - %34 = shl nuw i64 %.012, 1 - %35 = or disjoint i64 %34, 1 - store i64 %35, ptr %4, align 8 - %36 = call i64 @rb_funcallv(i64 noundef %26, i64 noundef 42, i32 noundef 1, ptr noundef nonnull %4) #13 +30: ; preds = %27 + %31 = icmp slt i64 %.012, 1 + br i1 %31, label %.fold.split, label %32 + +32: ; preds = %30 + %33 = shl nuw i64 %.012, 1 + %34 = or disjoint i64 %33, 1 + store i64 %34, ptr %4, align 8 + %35 = call i64 @rb_funcallv(i64 noundef %26, i64 noundef 42, i32 noundef 1, ptr noundef nonnull %4) #13 br label %.fold.split -.fold.split: ; preds = %rb_num2long_inline.exit, %rb_num2long_inline.exit, %31, %33, %29 - %.0 = phi i64 [ %30, %29 ], [ %36, %33 ], [ %26, %rb_num2long_inline.exit ], [ 1, %31 ], [ %26, %rb_num2long_inline.exit ] +.fold.split: ; preds = %rb_num2long_inline.exit, %rb_num2long_inline.exit, %30, %32, %28 + %.0 = phi i64 [ %29, %28 ], [ %35, %32 ], [ %26, %rb_num2long_inline.exit ], [ 1, %30 ], [ %26, %rb_num2long_inline.exit ] ret i64 %.0 } diff --git a/bench/ruby/optimized/io.ll b/bench/ruby/optimized/io.ll index d22f8e638af..7389b3c23cb 100644 --- a/bench/ruby/optimized/io.ll +++ b/bench/ruby/optimized/io.ll @@ -11485,180 +11485,173 @@ rb_io_check_closed.exit: ; preds = %rb_io_check_initial %76 = call i64 @rb_protect(ptr noundef nonnull @io_new_instance, i64 noundef %26, ptr noundef nonnull %5) #24 %77 = load i32, ptr %5, align 4 %.not22 = icmp eq i32 %77, 0 - br i1 %.not22, label %86, label %78 + br i1 %.not22, label %83, label %78 78: ; preds = %72 %79 = load i32, ptr %66, align 4 %80 = call i32 @close(i32 noundef %79) #24 - %81 = icmp eq i64 %27, 4 - br i1 %81, label %84, label %82 - -82: ; preds = %78 - %83 = call i64 @rb_io_close(i64 noundef %27) - br label %84 - -84: ; preds = %82, %78 - %85 = load i32, ptr %5, align 4 - call void @rb_jump_tag(i32 noundef %85) #26 + %81 = call i64 @rb_io_close(i64 noundef %27) + %82 = load i32, ptr %5, align 4 + call void @rb_jump_tag(i32 noundef %82) #26 unreachable -86: ; preds = %72 - %87 = and i64 %76, 7 - %88 = icmp ne i64 %87, 0 - %89 = icmp eq i64 %76, 0 - %90 = or i1 %89, %88 - br i1 %90, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %91 +83: ; preds = %72 + %84 = and i64 %76, 7 + %85 = icmp ne i64 %84, 0 + %86 = icmp eq i64 %76, 0 + %87 = or i1 %86, %85 + br i1 %87, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %88 -91: ; preds = %86 - %92 = inttoptr i64 %76 to ptr - %93 = load i64, ptr %92, align 8 - %94 = and i64 %93, 31 - %95 = icmp eq i64 %94, 27 - %96 = and i64 %93, 2048 - %97 = icmp ne i64 %96, 0 - %or.cond.i.i25 = or i1 %95, %97 +88: ; preds = %83 + %89 = inttoptr i64 %76 to ptr + %90 = load i64, ptr %89, align 8 + %91 = and i64 %90, 31 + %92 = icmp eq i64 %91, 27 + %93 = and i64 %90, 2048 + %94 = icmp ne i64 %93, 0 + %or.cond.i.i25 = or i1 %92, %94 br i1 %or.cond.i.i25, label %RB_OBJ_FROZEN.exit.thread.i.i26, label %rb_io_taint_check.exit27 -RB_OBJ_FROZEN.exit.thread.i.i26: ; preds = %91, %86 +RB_OBJ_FROZEN.exit.thread.i.i26: ; preds = %88, %83 call void @rb_error_frozen_object(i64 noundef %76) #26 unreachable -rb_io_taint_check.exit27: ; preds = %91 - %98 = getelementptr inbounds nuw i8, ptr %92, i64 16 - %99 = load ptr, ptr %98, align 8 - %.not.i.i28 = icmp eq ptr %99, null - br i1 %.not.i.i28, label %100, label %rb_io_check_initialized.exit.i29 +rb_io_taint_check.exit27: ; preds = %88 + %95 = getelementptr inbounds nuw i8, ptr %89, i64 16 + %96 = load ptr, ptr %95, align 8 + %.not.i.i28 = icmp eq ptr %96, null + br i1 %.not.i.i28, label %97, label %rb_io_check_initialized.exit.i29 -100: ; preds = %rb_io_taint_check.exit27 - %101 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %101, ptr noundef nonnull @.str.4) #26 +97: ; preds = %rb_io_taint_check.exit27 + %98 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %98, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i29: ; preds = %rb_io_taint_check.exit27 - %102 = getelementptr inbounds nuw i8, ptr %99, i64 16 - %103 = load i32, ptr %102, align 8 - %104 = icmp slt i32 %103, 0 - br i1 %104, label %105, label %rb_io_synchronized.exit + %99 = getelementptr inbounds nuw i8, ptr %96, i64 16 + %100 = load i32, ptr %99, align 8 + %101 = icmp slt i32 %100, 0 + br i1 %101, label %102, label %rb_io_synchronized.exit -105: ; preds = %rb_io_check_initialized.exit.i29 +102: ; preds = %rb_io_check_initialized.exit.i29 call void @rb_thread_check_ints() #24 - %106 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %106, ptr noundef nonnull @closed_stream) #26 + %103 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %103, ptr noundef nonnull @closed_stream) #26 unreachable rb_io_synchronized.exit: ; preds = %rb_io_check_initialized.exit.i29 - %107 = getelementptr inbounds nuw i8, ptr %99, i64 20 - %108 = load i32, ptr %107, align 4 - %109 = or i32 %108, 8 - store i32 %109, ptr %107, align 4 - %110 = load i64, ptr %9, align 8 - call fastcc void @extract_binmode(i64 noundef %110, ptr noundef %11) - %111 = load i32, ptr %11, align 4 - %112 = and i32 %111, 4 - %.not23 = icmp ne i32 %112, 0 - %113 = load i64, ptr %7, align 8 - %114 = icmp eq i64 %113, 4 - %or.cond = select i1 %.not23, i1 %114, i1 false - br i1 %or.cond, label %115, label %143 - -115: ; preds = %rb_io_synchronized.exit - %116 = load i64, ptr %42, align 8 - %117 = and i64 %116, 31 - %118 = icmp eq i64 %117, 27 - %119 = and i64 %116, 2048 - %120 = icmp ne i64 %119, 0 - %or.cond.i.i.i = or i1 %118, %120 + %104 = getelementptr inbounds nuw i8, ptr %96, i64 20 + %105 = load i32, ptr %104, align 4 + %106 = or i32 %105, 8 + store i32 %106, ptr %104, align 4 + %107 = load i64, ptr %9, align 8 + call fastcc void @extract_binmode(i64 noundef %107, ptr noundef %11) + %108 = load i32, ptr %11, align 4 + %109 = and i32 %108, 4 + %.not23 = icmp ne i32 %109, 0 + %110 = load i64, ptr %7, align 8 + %111 = icmp eq i64 %110, 4 + %or.cond = select i1 %.not23, i1 %111, i1 false + br i1 %or.cond, label %112, label %140 + +112: ; preds = %rb_io_synchronized.exit + %113 = load i64, ptr %42, align 8 + %114 = and i64 %113, 31 + %115 = icmp eq i64 %114, 27 + %116 = and i64 %113, 2048 + %117 = icmp ne i64 %116, 0 + %or.cond.i.i.i = or i1 %115, %117 br i1 %or.cond.i.i.i, label %RB_OBJ_FROZEN.exit.thread.i.i.i, label %rb_io_taint_check.exit.i -RB_OBJ_FROZEN.exit.thread.i.i.i: ; preds = %115 +RB_OBJ_FROZEN.exit.thread.i.i.i: ; preds = %112 call void @rb_error_frozen_object(i64 noundef %27) #26 unreachable -rb_io_taint_check.exit.i: ; preds = %115 - %121 = load ptr, ptr %48, align 8 - %.not.i.i.i = icmp eq ptr %121, null - br i1 %.not.i.i.i, label %122, label %rb_io_check_initialized.exit.i.i +rb_io_taint_check.exit.i: ; preds = %112 + %118 = load ptr, ptr %48, align 8 + %.not.i.i.i = icmp eq ptr %118, null + br i1 %.not.i.i.i, label %119, label %rb_io_check_initialized.exit.i.i -122: ; preds = %rb_io_taint_check.exit.i - %123 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %123, ptr noundef nonnull @.str.4) #26 +119: ; preds = %rb_io_taint_check.exit.i + %120 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %120, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i.i: ; preds = %rb_io_taint_check.exit.i - %124 = getelementptr inbounds nuw i8, ptr %121, i64 16 - %125 = load i32, ptr %124, align 8 - %126 = icmp slt i32 %125, 0 - br i1 %126, label %127, label %129 + %121 = getelementptr inbounds nuw i8, ptr %118, i64 16 + %122 = load i32, ptr %121, align 8 + %123 = icmp slt i32 %122, 0 + br i1 %123, label %124, label %126 -127: ; preds = %rb_io_check_initialized.exit.i.i +124: ; preds = %rb_io_check_initialized.exit.i.i call void @rb_thread_check_ints() #24 - %128 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %128, ptr noundef nonnull @closed_stream) #26 - unreachable - -129: ; preds = %rb_io_check_initialized.exit.i.i - call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %121) - %130 = load i64, ptr %92, align 8 - %131 = and i64 %130, 31 - %132 = icmp eq i64 %131, 27 - %133 = and i64 %130, 2048 - %134 = icmp ne i64 %133, 0 - %or.cond.i.i.i33 = or i1 %132, %134 + %125 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %125, ptr noundef nonnull @closed_stream) #26 + unreachable + +126: ; preds = %rb_io_check_initialized.exit.i.i + call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %118) + %127 = load i64, ptr %89, align 8 + %128 = and i64 %127, 31 + %129 = icmp eq i64 %128, 27 + %130 = and i64 %127, 2048 + %131 = icmp ne i64 %130, 0 + %or.cond.i.i.i33 = or i1 %129, %131 br i1 %or.cond.i.i.i33, label %RB_OBJ_FROZEN.exit.thread.i.i.i37, label %rb_io_taint_check.exit.i34 -RB_OBJ_FROZEN.exit.thread.i.i.i37: ; preds = %129 +RB_OBJ_FROZEN.exit.thread.i.i.i37: ; preds = %126 call void @rb_error_frozen_object(i64 noundef %76) #26 unreachable -rb_io_taint_check.exit.i34: ; preds = %129 - %135 = load ptr, ptr %98, align 8 - %.not.i.i.i35 = icmp eq ptr %135, null - br i1 %.not.i.i.i35, label %136, label %rb_io_check_initialized.exit.i.i36 +rb_io_taint_check.exit.i34: ; preds = %126 + %132 = load ptr, ptr %95, align 8 + %.not.i.i.i35 = icmp eq ptr %132, null + br i1 %.not.i.i.i35, label %133, label %rb_io_check_initialized.exit.i.i36 -136: ; preds = %rb_io_taint_check.exit.i34 - %137 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %137, ptr noundef nonnull @.str.4) #26 +133: ; preds = %rb_io_taint_check.exit.i34 + %134 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %134, ptr noundef nonnull @.str.4) #26 unreachable rb_io_check_initialized.exit.i.i36: ; preds = %rb_io_taint_check.exit.i34 - %138 = getelementptr inbounds nuw i8, ptr %135, i64 16 - %139 = load i32, ptr %138, align 8 - %140 = icmp slt i32 %139, 0 - br i1 %140, label %141, label %rb_io_ascii8bit_binmode.exit38 + %135 = getelementptr inbounds nuw i8, ptr %132, i64 16 + %136 = load i32, ptr %135, align 8 + %137 = icmp slt i32 %136, 0 + br i1 %137, label %138, label %rb_io_ascii8bit_binmode.exit38 -141: ; preds = %rb_io_check_initialized.exit.i.i36 +138: ; preds = %rb_io_check_initialized.exit.i.i36 call void @rb_thread_check_ints() #24 - %142 = load i64, ptr @rb_eIOError, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %142, ptr noundef nonnull @closed_stream) #26 + %139 = load i64, ptr @rb_eIOError, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %139, ptr noundef nonnull @closed_stream) #26 unreachable rb_io_ascii8bit_binmode.exit38: ; preds = %rb_io_check_initialized.exit.i.i36 - call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %135) - br label %143 - -143: ; preds = %rb_io_ascii8bit_binmode.exit38, %rb_io_synchronized.exit - %144 = getelementptr inbounds nuw i8, ptr %49, i64 20 - %145 = load i32, ptr %144, align 4 - %146 = or i32 %145, %111 - store i32 %146, ptr %144, align 4 - %147 = load i32, ptr %107, align 4 - %148 = or i32 %147, %111 - store i32 %148, ptr %107, align 4 - %149 = call i64 @rb_assoc_new(i64 noundef %27, i64 noundef %76) #24 - %150 = call i32 @rb_block_given_p() #24 - %.not24 = icmp eq i32 %150, 0 - br i1 %.not24, label %155, label %151 - -151: ; preds = %143 + call fastcc void @io_ascii8bit_binmode(ptr noundef nonnull %132) + br label %140 + +140: ; preds = %rb_io_ascii8bit_binmode.exit38, %rb_io_synchronized.exit + %141 = getelementptr inbounds nuw i8, ptr %49, i64 20 + %142 = load i32, ptr %141, align 4 + %143 = or i32 %142, %108 + store i32 %143, ptr %141, align 4 + %144 = load i32, ptr %104, align 4 + %145 = or i32 %144, %108 + store i32 %145, ptr %104, align 4 + %146 = call i64 @rb_assoc_new(i64 noundef %27, i64 noundef %76) #24 + %147 = call i32 @rb_block_given_p() #24 + %.not24 = icmp eq i32 %147, 0 + br i1 %.not24, label %152, label %148 + +148: ; preds = %140 store i64 %27, ptr %12, align 16 - %152 = getelementptr inbounds nuw i8, ptr %12, i64 8 - store i64 %76, ptr %152, align 8 - %153 = ptrtoint ptr %12 to i64 - %154 = call i64 @rb_ensure(ptr noundef nonnull @rb_yield, i64 noundef %149, ptr noundef nonnull @pipe_pair_close, i64 noundef %153) #24 - br label %155 - -155: ; preds = %143, %151 - %.0 = phi i64 [ %154, %151 ], [ %149, %143 ] + %149 = getelementptr inbounds nuw i8, ptr %12, i64 8 + store i64 %76, ptr %149, align 8 + %150 = ptrtoint ptr %12 to i64 + %151 = call i64 @rb_ensure(ptr noundef nonnull @rb_yield, i64 noundef %146, ptr noundef nonnull @pipe_pair_close, i64 noundef %150) #24 + br label %152 + +152: ; preds = %140, %148 + %.0 = phi i64 [ %151, %148 ], [ %146, %140 ] ret i64 %.0 } diff --git a/bench/ruby/optimized/numeric.ll b/bench/ruby/optimized/numeric.ll index caf8bc9ce15..daa3232df9a 100644 --- a/bench/ruby/optimized/numeric.ll +++ b/bench/ruby/optimized/numeric.ll @@ -219,7 +219,7 @@ declare void @rb_raise(i64 noundef, ptr noundef, ...) local_unnamed_addr #1 define hidden range(i32 0, 3) i32 @rb_num_get_rounding_option(i64 noundef %0) local_unnamed_addr #2 { %2 = alloca i64, align 8 %3 = icmp eq i64 %0, 4 - br i1 %3, label %53, label %4 + br i1 %3, label %51, label %4 4: ; preds = %1 %5 = load i64, ptr @rb_num_get_rounding_option.round_kwds, align 8 @@ -234,7 +234,7 @@ define hidden range(i32 0, 3) i32 @rb_num_get_rounding_option(i64 noundef %0) lo 8: ; preds = %6, %4 %9 = call i32 @rb_get_kwargs(i64 noundef %0, ptr noundef nonnull @rb_num_get_rounding_option.round_kwds, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %2) #23 %.not30 = icmp eq i32 %9, 0 - br i1 %.not30, label %53, label %10 + br i1 %.not30, label %51, label %10 10: ; preds = %8 %11 = load i64, ptr %2, align 8 @@ -258,74 +258,70 @@ RB_SYMBOL_P.exit: ; preds = %14 RB_SYMBOL_P.exit.thread: ; preds = %10, %RB_SYMBOL_P.exit %23 = call i64 @rb_sym2str(i64 noundef %11) #23 - br label %33 + br label %31 RB_SYMBOL_P.exit.thread31: ; preds = %14 %24 = icmp eq i64 %11, 4 - br i1 %24, label %53, label %.critedge + br i1 %24, label %51, label %.critedge RB_SYMBOL_P.exit.thread31.thread: ; preds = %RB_SYMBOL_P.exit - %25 = icmp eq i64 %11, 4 - br i1 %25, label %53, label %26 - -26: ; preds = %RB_SYMBOL_P.exit.thread31.thread - %27 = inttoptr i64 %11 to ptr - %28 = load i64, ptr %27, align 8 - %29 = and i64 %28, 31 - %30 = icmp eq i64 %29, 5 - br i1 %30, label %33, label %.critedge + %25 = inttoptr i64 %11 to ptr + %26 = load i64, ptr %25, align 8 + %27 = and i64 %26, 31 + %28 = icmp eq i64 %27, 5 + br i1 %28, label %31, label %.critedge -.critedge: ; preds = %RB_SYMBOL_P.exit.thread31, %26 - %31 = call i64 @rb_check_string_type(i64 noundef %11) #23 - %32 = icmp eq i64 %31, 4 - br i1 %32, label %50, label %33 +.critedge: ; preds = %RB_SYMBOL_P.exit.thread31, %RB_SYMBOL_P.exit.thread31.thread + %29 = call i64 @rb_check_string_type(i64 noundef %11) #23 + %30 = icmp eq i64 %29, 4 + br i1 %30, label %48, label %31 -33: ; preds = %.critedge, %26, %RB_SYMBOL_P.exit.thread - %.027 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %11, %26 ], [ %31, %.critedge ] +31: ; preds = %.critedge, %RB_SYMBOL_P.exit.thread31.thread, %RB_SYMBOL_P.exit.thread + %.027 = phi i64 [ %23, %RB_SYMBOL_P.exit.thread ], [ %11, %RB_SYMBOL_P.exit.thread31.thread ], [ %29, %.critedge ] call void @rb_must_asciicompat(i64 noundef %.027) #23 - %34 = inttoptr i64 %.027 to ptr - %35 = load i64, ptr %34, align 8, !noalias !7 - %36 = and i64 %35, 8192 - %.not.i.i = icmp eq i64 %36, 0 - %37 = getelementptr inbounds nuw i8, ptr %34, i64 24 - br i1 %.not.i.i, label %RSTRING_PTR.exit, label %38 + %32 = inttoptr i64 %.027 to ptr + %33 = load i64, ptr %32, align 8, !noalias !7 + %34 = and i64 %33, 8192 + %.not.i.i = icmp eq i64 %34, 0 + %35 = getelementptr inbounds nuw i8, ptr %32, i64 24 + br i1 %.not.i.i, label %RSTRING_PTR.exit, label %36 -38: ; preds = %33 - %.sroa.2.0.copyload.i = load ptr, ptr %37, align 8 +36: ; preds = %31 + %.sroa.2.0.copyload.i = load ptr, ptr %35, align 8 br label %RSTRING_PTR.exit -RSTRING_PTR.exit: ; preds = %33, %38 - %.sroa.2.0.i = phi ptr [ %.sroa.2.0.copyload.i, %38 ], [ %37, %33 ] - %39 = getelementptr inbounds nuw i8, ptr %34, i64 16 - %40 = load i64, ptr %39, align 8 - switch i64 %40, label %50 [ - i64 2, label %41 - i64 4, label %44 +RSTRING_PTR.exit: ; preds = %31, %36 + %.sroa.2.0.i = phi ptr [ %.sroa.2.0.copyload.i, %36 ], [ %35, %31 ] + %37 = getelementptr inbounds nuw i8, ptr %32, i64 16 + %38 = load i64, ptr %37, align 8 + switch i64 %38, label %48 [ + i64 2, label %39 + i64 4, label %42 ] -41: ; preds = %RSTRING_PTR.exit - %42 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.2, i64 noundef 2) #23 - %43 = icmp eq i32 %42, 0 - br i1 %43, label %53, label %50 +39: ; preds = %RSTRING_PTR.exit + %40 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.2, i64 noundef 2) #23 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %51, label %48 -44: ; preds = %RSTRING_PTR.exit - %45 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.3, i64 noundef 4) #23 - %46 = icmp eq i32 %45, 0 - br i1 %46, label %53, label %47 +42: ; preds = %RSTRING_PTR.exit + %43 = call i32 @rb_memcicmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.3, i64 noundef 4) #23 + %44 = icmp eq i32 %43, 0 + br i1 %44, label %51, label %45 -47: ; preds = %44 - %48 = call i32 @strncasecmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.4, i64 noundef 4) #24 - %49 = icmp eq i32 %48, 0 - br i1 %49, label %53, label %50 +45: ; preds = %42 + %46 = call i32 @strncasecmp(ptr noundef %.sroa.2.0.i, ptr noundef nonnull @.str.4, i64 noundef 4) #24 + %47 = icmp eq i32 %46, 0 + br i1 %47, label %51, label %48 -50: ; preds = %RSTRING_PTR.exit, %41, %47, %.critedge - %51 = load i64, ptr @rb_eArgError, align 8 - %52 = load i64, ptr %2, align 8 - call void (i64, ptr, ...) @rb_raise(i64 noundef %51, ptr noundef nonnull @.str.5, i64 noundef %52) #22 +48: ; preds = %RSTRING_PTR.exit, %39, %45, %.critedge + %49 = load i64, ptr @rb_eArgError, align 8 + %50 = load i64, ptr %2, align 8 + call void (i64, ptr, ...) @rb_raise(i64 noundef %49, ptr noundef nonnull @.str.5, i64 noundef %50) #22 unreachable -53: ; preds = %RB_SYMBOL_P.exit.thread31.thread, %8, %RB_SYMBOL_P.exit.thread31, %1, %47, %44, %41 - %.028 = phi i32 [ 0, %41 ], [ 1, %44 ], [ 2, %47 ], [ 0, %1 ], [ 0, %RB_SYMBOL_P.exit.thread31 ], [ 0, %8 ], [ 0, %RB_SYMBOL_P.exit.thread31.thread ] +51: ; preds = %8, %RB_SYMBOL_P.exit.thread31, %1, %45, %42, %39 + %.028 = phi i32 [ 0, %39 ], [ 1, %42 ], [ 2, %45 ], [ 0, %1 ], [ 0, %RB_SYMBOL_P.exit.thread31 ], [ 0, %8 ] ret i32 %.028 } diff --git a/bench/ruby/optimized/range.ll b/bench/ruby/optimized/range.ll index b7730e8deb9..87101807042 100644 --- a/bench/ruby/optimized/range.ll +++ b/bench/ruby/optimized/range.ll @@ -2079,7 +2079,7 @@ RANGE_EXCL.exit: ; preds = %7, %14 28: ; preds = %25 %29 = and i64 %17, 1 %.not66 = icmp eq i64 %29, 0 - br i1 %.not66, label %.thread, label %30 + br i1 %.not66, label %rb_integer_type_p.exit.thread, label %30 30: ; preds = %28 br i1 %.not65, label %35, label %31 @@ -2121,187 +2121,183 @@ RANGE_EXCL.exit: ; preds = %7, %14 46: ; preds = %25 %47 = icmp eq i64 %10, 4 - br i1 %47, label %rb_integer_type_p.exit.thread, label %49 + br i1 %47, label %rb_integer_type_p.exit.thread, label %48 -.thread: ; preds = %28 - %48 = icmp eq i64 %10, 4 - br label %rb_integer_type_p.exit.thread - -49: ; preds = %46 - %50 = and i64 %10, 6 - %51 = icmp ne i64 %50, 0 - %52 = icmp eq i64 %10, 0 - %53 = or i1 %52, %51 - br i1 %53, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit +48: ; preds = %46 + %49 = and i64 %10, 6 + %50 = icmp ne i64 %49, 0 + %51 = icmp eq i64 %10, 0 + %52 = or i1 %51, %50 + br i1 %52, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit -rb_integer_type_p.exit: ; preds = %49 - %54 = inttoptr i64 %10 to ptr - %55 = load i64, ptr %54, align 8 - %56 = and i64 %55, 31 - %57 = icmp eq i64 %56, 10 - br i1 %57, label %rb_integer_type_p.exit.thread, label %rb_integer_type_p.exit.thread58 - -rb_integer_type_p.exit.thread: ; preds = %.thread, %rb_integer_type_p.exit, %46 - %58 = phi i1 [ false, %rb_integer_type_p.exit ], [ true, %46 ], [ %48, %.thread ] - %59 = and i64 %17, 1 - %.not.i31 = icmp eq i64 %59, 0 - br i1 %.not.i31, label %60, label %rb_integer_type_p.exit33.thread - -60: ; preds = %rb_integer_type_p.exit.thread - %61 = and i64 %17, 6 - %62 = icmp ne i64 %61, 0 - %63 = icmp eq i64 %17, 0 - %64 = or i1 %63, %62 - br i1 %64, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit33 - -rb_integer_type_p.exit33: ; preds = %60 - %65 = inttoptr i64 %17 to ptr - %66 = load i64, ptr %65, align 8 - %67 = and i64 %66, 31 - %68 = icmp eq i64 %67, 10 - br i1 %68, label %rb_integer_type_p.exit33.thread, label %rb_integer_type_p.exit.thread58 +rb_integer_type_p.exit: ; preds = %48 + %53 = inttoptr i64 %10 to ptr + %54 = load i64, ptr %53, align 8 + %55 = and i64 %54, 31 + %56 = icmp eq i64 %55, 10 + br i1 %56, label %rb_integer_type_p.exit.thread, label %rb_integer_type_p.exit.thread58 + +rb_integer_type_p.exit.thread: ; preds = %28, %rb_integer_type_p.exit, %46 + %57 = phi i1 [ false, %rb_integer_type_p.exit ], [ true, %46 ], [ false, %28 ] + %58 = and i64 %17, 1 + %.not.i31 = icmp eq i64 %58, 0 + br i1 %.not.i31, label %59, label %rb_integer_type_p.exit33.thread + +59: ; preds = %rb_integer_type_p.exit.thread + %60 = and i64 %17, 6 + %61 = icmp ne i64 %60, 0 + %62 = icmp eq i64 %17, 0 + %63 = or i1 %62, %61 + br i1 %63, label %rb_integer_type_p.exit.thread58, label %rb_integer_type_p.exit33 + +rb_integer_type_p.exit33: ; preds = %59 + %64 = inttoptr i64 %17 to ptr + %65 = load i64, ptr %64, align 8 + %66 = and i64 %65, 31 + %67 = icmp eq i64 %66, 10 + br i1 %67, label %rb_integer_type_p.exit33.thread, label %rb_integer_type_p.exit.thread58 rb_integer_type_p.exit33.thread: ; preds = %rb_integer_type_p.exit.thread, %rb_integer_type_p.exit33 - br i1 %.not65, label %71, label %69 - -69: ; preds = %rb_integer_type_p.exit33.thread - %70 = tail call i64 @rb_int_minus(i64 noundef %17, i64 noundef 3) #10 - br label %71 - -71: ; preds = %69, %rb_integer_type_p.exit33.thread - %.1 = phi i64 [ %70, %69 ], [ %17, %rb_integer_type_p.exit33.thread ] - %72 = and i64 %.1, 1 - %.not.i34 = icmp eq i64 %72, 0 - br i1 %.not.i34, label %73, label %range_reverse_each_positive_bignum_section.exit - -73: ; preds = %71 - %74 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not.i.i35 = icmp eq i32 %74, 0 - br i1 %.not.i.i35, label %range_reverse_each_positive_bignum_section.exit, label %75 - -75: ; preds = %73 - %or.cond.i = or i1 %27, %58 - br i1 %or.cond.i, label %78, label %76 - -76: ; preds = %75 - %77 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not.i7.i = icmp eq i32 %77, 0 - br i1 %.not.i7.i, label %78, label %80 - -78: ; preds = %76, %75 - %79 = tail call i64 @rb_int2big(i64 noundef 4611686018427387904) #10 - br label %80 - -80: ; preds = %78, %76 - %.0.i36 = phi i64 [ %79, %78 ], [ %10, %76 ] - %81 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %.1) #10 - %.not6.i.i = icmp eq i64 %81, 3 + br i1 %.not65, label %70, label %68 + +68: ; preds = %rb_integer_type_p.exit33.thread + %69 = tail call i64 @rb_int_minus(i64 noundef %17, i64 noundef 3) #10 + br label %70 + +70: ; preds = %68, %rb_integer_type_p.exit33.thread + %.1 = phi i64 [ %69, %68 ], [ %17, %rb_integer_type_p.exit33.thread ] + %71 = and i64 %.1, 1 + %.not.i34 = icmp eq i64 %71, 0 + br i1 %.not.i34, label %72, label %range_reverse_each_positive_bignum_section.exit + +72: ; preds = %70 + %73 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not.i.i35 = icmp eq i32 %73, 0 + br i1 %.not.i.i35, label %range_reverse_each_positive_bignum_section.exit, label %74 + +74: ; preds = %72 + %or.cond.i = or i1 %27, %57 + br i1 %or.cond.i, label %77, label %75 + +75: ; preds = %74 + %76 = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not.i7.i = icmp eq i32 %76, 0 + br i1 %.not.i7.i, label %77, label %79 + +77: ; preds = %75, %74 + %78 = tail call i64 @rb_int2big(i64 noundef 4611686018427387904) #10 + br label %79 + +79: ; preds = %77, %75 + %.0.i36 = phi i64 [ %78, %77 ], [ %10, %75 ] + %80 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %.1) #10 + %.not6.i.i = icmp eq i64 %80, 3 br i1 %.not6.i.i, label %range_reverse_each_positive_bignum_section.exit, label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %80, %85 - %82 = phi i64 [ %87, %85 ], [ %81, %80 ] - %.07.i.i = phi i64 [ %86, %85 ], [ %.1, %80 ] - %83 = tail call i64 @rb_yield(i64 noundef %.07.i.i) #10 - %84 = icmp eq i64 %82, 1 - br i1 %84, label %range_reverse_each_positive_bignum_section.exit, label %85 - -85: ; preds = %.lr.ph.i.i - %86 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i, i64 noundef 3) #10 - %87 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %86) #10 - %.not.i8.i = icmp eq i64 %87, 3 +.lr.ph.i.i: ; preds = %79, %84 + %81 = phi i64 [ %86, %84 ], [ %80, %79 ] + %.07.i.i = phi i64 [ %85, %84 ], [ %.1, %79 ] + %82 = tail call i64 @rb_yield(i64 noundef %.07.i.i) #10 + %83 = icmp eq i64 %81, 1 + br i1 %83, label %range_reverse_each_positive_bignum_section.exit, label %84 + +84: ; preds = %.lr.ph.i.i + %85 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i, i64 noundef 3) #10 + %86 = tail call i64 @rb_big_cmp(i64 noundef %.0.i36, i64 noundef %85) #10 + %.not.i8.i = icmp eq i64 %86, 3 br i1 %.not.i8.i, label %range_reverse_each_positive_bignum_section.exit, label %.lr.ph.i.i, !llvm.loop !20 -range_reverse_each_positive_bignum_section.exit: ; preds = %.lr.ph.i.i, %85, %71, %73, %80 - %brmerge = or i1 %27, %58 +range_reverse_each_positive_bignum_section.exit: ; preds = %.lr.ph.i.i, %84, %70, %72, %79 + %brmerge = or i1 %27, %57 %.mux = select i1 %27, i64 %10, i64 -9223372036854775807 - br i1 %brmerge, label %90, label %88 - -88: ; preds = %range_reverse_each_positive_bignum_section.exit - %89 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not15.i46 = icmp eq i32 %89, 0 - br i1 %.not15.i46, label %90, label %range_reverse_each_fixnum_section.exit47 - -90: ; preds = %range_reverse_each_positive_bignum_section.exit, %88 - %.012.i38 = phi i64 [ %.mux, %range_reverse_each_positive_bignum_section.exit ], [ -9223372036854775807, %88 ] - br i1 %.not.i34, label %91, label %93 - -91: ; preds = %90 - %92 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not.i.i45 = icmp eq i32 %92, 0 - br i1 %.not.i.i45, label %range_reverse_each_fixnum_section.exit47.thread, label %93 - -93: ; preds = %91, %90 - %.013.i40 = phi i64 [ %.1, %90 ], [ 9223372036854775807, %91 ] - %94 = ashr i64 %.012.i38, 1 - %95 = ashr i64 %.013.i40, 1 - %.not17.i41 = icmp slt i64 %95, %94 + br i1 %brmerge, label %89, label %87 + +87: ; preds = %range_reverse_each_positive_bignum_section.exit + %88 = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not15.i46 = icmp eq i32 %88, 0 + br i1 %.not15.i46, label %89, label %range_reverse_each_fixnum_section.exit47 + +89: ; preds = %range_reverse_each_positive_bignum_section.exit, %87 + %.012.i38 = phi i64 [ %.mux, %range_reverse_each_positive_bignum_section.exit ], [ -9223372036854775807, %87 ] + br i1 %.not.i34, label %90, label %92 + +90: ; preds = %89 + %91 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not.i.i45 = icmp eq i32 %91, 0 + br i1 %.not.i.i45, label %range_reverse_each_fixnum_section.exit47.thread, label %92 + +92: ; preds = %90, %89 + %.013.i40 = phi i64 [ %.1, %89 ], [ 9223372036854775807, %90 ] + %93 = ashr i64 %.012.i38, 1 + %94 = ashr i64 %.013.i40, 1 + %.not17.i41 = icmp slt i64 %94, %93 br i1 %.not17.i41, label %range_reverse_each_fixnum_section.exit47, label %.lr.ph.i42 -.lr.ph.i42: ; preds = %93, %.lr.ph.i42 - %.018.i43 = phi i64 [ %99, %.lr.ph.i42 ], [ %95, %93 ] - %96 = shl i64 %.018.i43, 1 - %97 = or disjoint i64 %96, 1 - %98 = tail call i64 @rb_yield(i64 noundef %97) #10 - %99 = add nsw i64 %.018.i43, -1 - %.not.not.i44 = icmp sgt i64 %.018.i43, %94 +.lr.ph.i42: ; preds = %92, %.lr.ph.i42 + %.018.i43 = phi i64 [ %98, %.lr.ph.i42 ], [ %94, %92 ] + %95 = shl i64 %.018.i43, 1 + %96 = or disjoint i64 %95, 1 + %97 = tail call i64 @rb_yield(i64 noundef %96) #10 + %98 = add nsw i64 %.018.i43, -1 + %.not.not.i44 = icmp sgt i64 %.018.i43, %93 br i1 %.not.not.i44, label %.lr.ph.i42, label %range_reverse_each_fixnum_section.exit47, !llvm.loop !19 -range_reverse_each_fixnum_section.exit47: ; preds = %.lr.ph.i42, %88, %93 - %100 = phi i1 [ false, %88 ], [ %58, %93 ], [ %58, %.lr.ph.i42 ] - br i1 %.not.i34, label %range_reverse_each_fixnum_section.exit47.thread, label %103 +range_reverse_each_fixnum_section.exit47: ; preds = %.lr.ph.i42, %87, %92 + %99 = phi i1 [ false, %87 ], [ %57, %92 ], [ %57, %.lr.ph.i42 ] + br i1 %.not.i34, label %range_reverse_each_fixnum_section.exit47.thread, label %102 -range_reverse_each_fixnum_section.exit47.thread: ; preds = %91, %range_reverse_each_fixnum_section.exit47 - %101 = phi i1 [ %100, %range_reverse_each_fixnum_section.exit47 ], [ %58, %91 ] - %102 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 - %.not8.i = icmp eq i32 %102, 0 - br i1 %.not8.i, label %106, label %103 +range_reverse_each_fixnum_section.exit47.thread: ; preds = %90, %range_reverse_each_fixnum_section.exit47 + %100 = phi i1 [ %99, %range_reverse_each_fixnum_section.exit47 ], [ %57, %90 ] + %101 = tail call i32 @rb_big_sign(i64 noundef %.1) #10 + %.not8.i = icmp eq i32 %101, 0 + br i1 %.not8.i, label %105, label %102 -103: ; preds = %range_reverse_each_fixnum_section.exit47.thread, %range_reverse_each_fixnum_section.exit47 - %104 = phi i1 [ %101, %range_reverse_each_fixnum_section.exit47.thread ], [ %100, %range_reverse_each_fixnum_section.exit47 ] - %105 = tail call i64 @rb_int2big(i64 noundef -4611686018427387905) #10 - br i1 %104, label %107, label %108 +102: ; preds = %range_reverse_each_fixnum_section.exit47.thread, %range_reverse_each_fixnum_section.exit47 + %103 = phi i1 [ %100, %range_reverse_each_fixnum_section.exit47.thread ], [ %99, %range_reverse_each_fixnum_section.exit47 ] + %104 = tail call i64 @rb_int2big(i64 noundef -4611686018427387905) #10 + br i1 %103, label %106, label %107 -106: ; preds = %range_reverse_each_fixnum_section.exit47.thread - br i1 %101, label %107, label %108 +105: ; preds = %range_reverse_each_fixnum_section.exit47.thread + br i1 %100, label %106, label %107 -107: ; preds = %103, %106 - %.0.i4964 = phi i64 [ %105, %103 ], [ %.1, %106 ] +106: ; preds = %102, %105 + %.0.i4964 = phi i64 [ %104, %102 ], [ %.1, %105 ] tail call fastcc void @range_reverse_each_bignum_beginless(i64 noundef %.0.i4964) #12 unreachable -108: ; preds = %103, %106 - %.0.i4963 = phi i64 [ %105, %103 ], [ %.1, %106 ] - br i1 %27, label %range_reverse_each_fixnum_section.exit, label %109 +107: ; preds = %102, %105 + %.0.i4963 = phi i64 [ %104, %102 ], [ %.1, %105 ] + br i1 %27, label %range_reverse_each_fixnum_section.exit, label %108 -109: ; preds = %108 - %110 = tail call i32 @rb_big_sign(i64 noundef %10) #10 - %.not10.i = icmp eq i32 %110, 0 - br i1 %.not10.i, label %111, label %range_reverse_each_fixnum_section.exit +108: ; preds = %107 + %109 = tail call i32 @rb_big_sign(i64 noundef %10) #10 + %.not10.i = icmp eq i32 %109, 0 + br i1 %.not10.i, label %110, label %range_reverse_each_fixnum_section.exit -111: ; preds = %109 - %112 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %.0.i4963) #10 - %.not6.i.i50 = icmp eq i64 %112, 3 +110: ; preds = %108 + %111 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %.0.i4963) #10 + %.not6.i.i50 = icmp eq i64 %111, 3 br i1 %.not6.i.i50, label %range_reverse_each_fixnum_section.exit, label %.lr.ph.i.i51 -.lr.ph.i.i51: ; preds = %111, %116 - %113 = phi i64 [ %118, %116 ], [ %112, %111 ] - %.07.i.i52 = phi i64 [ %117, %116 ], [ %.0.i4963, %111 ] - %114 = tail call i64 @rb_yield(i64 noundef %.07.i.i52) #10 - %115 = icmp eq i64 %113, 1 - br i1 %115, label %range_reverse_each_fixnum_section.exit, label %116 - -116: ; preds = %.lr.ph.i.i51 - %117 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i52, i64 noundef 3) #10 - %118 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %117) #10 - %.not.i.i53 = icmp eq i64 %118, 3 +.lr.ph.i.i51: ; preds = %110, %115 + %112 = phi i64 [ %117, %115 ], [ %111, %110 ] + %.07.i.i52 = phi i64 [ %116, %115 ], [ %.0.i4963, %110 ] + %113 = tail call i64 @rb_yield(i64 noundef %.07.i.i52) #10 + %114 = icmp eq i64 %112, 1 + br i1 %114, label %range_reverse_each_fixnum_section.exit, label %115 + +115: ; preds = %.lr.ph.i.i51 + %116 = tail call i64 @rb_big_minus(i64 noundef %.07.i.i52, i64 noundef 3) #10 + %117 = tail call i64 @rb_big_cmp(i64 noundef %10, i64 noundef %116) #10 + %.not.i.i53 = icmp eq i64 %117, 3 br i1 %.not.i.i53, label %range_reverse_each_fixnum_section.exit, label %.lr.ph.i.i51, !llvm.loop !20 -rb_integer_type_p.exit.thread58: ; preds = %60, %49, %rb_integer_type_p.exit33, %rb_integer_type_p.exit - %119 = tail call i64 @rb_call_super(i32 noundef 0, ptr noundef null) #10 +rb_integer_type_p.exit.thread58: ; preds = %59, %48, %rb_integer_type_p.exit33, %rb_integer_type_p.exit + %118 = tail call i64 @rb_call_super(i32 noundef 0, ptr noundef null) #10 br label %range_reverse_each_fixnum_section.exit -range_reverse_each_fixnum_section.exit: ; preds = %.lr.ph.i, %116, %.lr.ph.i.i51, %111, %109, %108, %39, %37, %31, %rb_integer_type_p.exit.thread58, %3 - %.0 = phi i64 [ %119, %rb_integer_type_p.exit.thread58 ], [ %6, %3 ], [ %0, %31 ], [ %0, %37 ], [ %0, %39 ], [ %0, %108 ], [ %0, %109 ], [ %0, %111 ], [ %0, %.lr.ph.i.i51 ], [ %0, %116 ], [ %0, %.lr.ph.i ] +range_reverse_each_fixnum_section.exit: ; preds = %.lr.ph.i, %115, %.lr.ph.i.i51, %110, %108, %107, %39, %37, %31, %rb_integer_type_p.exit.thread58, %3 + %.0 = phi i64 [ %118, %rb_integer_type_p.exit.thread58 ], [ %6, %3 ], [ %0, %31 ], [ %0, %37 ], [ %0, %39 ], [ %0, %107 ], [ %0, %108 ], [ %0, %110 ], [ %0, %.lr.ph.i.i51 ], [ %0, %115 ], [ %0, %.lr.ph.i ] ret i64 %.0 } diff --git a/bench/ruby/optimized/rational.ll b/bench/ruby/optimized/rational.ll index bf840de37b6..f576da06cbe 100644 --- a/bench/ruby/optimized/rational.ll +++ b/bench/ruby/optimized/rational.ll @@ -7000,68 +7000,64 @@ rb_integer_type_p.exit.i: ; preds = %4 ] rb_integer_type_p.exit.thread.i: ; preds = %rb_integer_type_p.exit.i, %2 - switch i64 %1, label %25 [ + switch i64 %1, label %23 [ i64 1, label %18 - i64 3, label %23 + i64 3, label %21 ] 12: ; preds = %rb_integer_type_p.exit.i %13 = getelementptr inbounds nuw i8, ptr %9, i64 16 %14 = load i64, ptr %13, align 8 %.not = icmp eq i64 %14, 1 - br i1 %.not, label %18, label %21 + br i1 %.not, label %18, label %23 f_zero_p.exit: ; preds = %4, %rb_integer_type_p.exit.i %15 = tail call i64 @rb_equal(i64 noundef %1, i64 noundef 1) #16 %16 = and i64 %15, 4294967295 %17 = icmp eq i64 %16, 0 - br i1 %17, label %21, label %18 + br i1 %17, label %23, label %18 18: ; preds = %rb_integer_type_p.exit.thread.i, %12, %f_zero_p.exit %19 = tail call i64 @nurat_to_f(i64 noundef %0) %20 = tail call i64 @rb_flo_div_flo(i64 noundef %19, i64 noundef -9223372036854775806) #16 br label %RB_FLOAT_TYPE_P.exit.thread -21: ; preds = %12, %f_zero_p.exit - %22 = icmp eq i64 %1, 3 - br i1 %22, label %23, label %25 - -23: ; preds = %rb_integer_type_p.exit.thread.i, %21 - %24 = tail call i64 @nurat_to_f(i64 noundef %0) +21: ; preds = %rb_integer_type_p.exit.thread.i + %22 = tail call i64 @nurat_to_f(i64 noundef %0) br label %RB_FLOAT_TYPE_P.exit.thread -25: ; preds = %rb_integer_type_p.exit.thread.i, %21 - %26 = tail call i64 @rb_rational_div(i64 noundef %0, i64 noundef %1) - %27 = and i64 %26, 7 - %28 = icmp ne i64 %27, 0 - %29 = icmp eq i64 %26, 0 - %30 = or i1 %29, %28 - br i1 %30, label %.critedge, label %31 +23: ; preds = %f_zero_p.exit, %12, %rb_integer_type_p.exit.thread.i + %24 = tail call i64 @rb_rational_div(i64 noundef %0, i64 noundef %1) + %25 = and i64 %24, 7 + %26 = icmp ne i64 %25, 0 + %27 = icmp eq i64 %24, 0 + %28 = or i1 %27, %26 + br i1 %28, label %.critedge, label %29 -31: ; preds = %25 - %32 = inttoptr i64 %26 to ptr - %33 = load i64, ptr %32, align 8 - %34 = and i64 %33, 31 - switch i64 %34, label %RB_FLOAT_TYPE_P.exit.thread32 [ - i64 15, label %35 +29: ; preds = %23 + %30 = inttoptr i64 %24 to ptr + %31 = load i64, ptr %30, align 8 + %32 = and i64 %31, 31 + switch i64 %32, label %RB_FLOAT_TYPE_P.exit.thread32 [ + i64 15, label %33 i64 4, label %RB_FLOAT_TYPE_P.exit.thread ] -35: ; preds = %31 - %36 = tail call i64 @nurat_to_f(i64 noundef %26) +33: ; preds = %29 + %34 = tail call i64 @nurat_to_f(i64 noundef %24) br label %RB_FLOAT_TYPE_P.exit.thread -.critedge: ; preds = %25 - %37 = and i64 %26, 3 - %38 = icmp eq i64 %37, 2 - br i1 %38, label %RB_FLOAT_TYPE_P.exit.thread, label %RB_FLOAT_TYPE_P.exit.thread32 +.critedge: ; preds = %23 + %35 = and i64 %24, 3 + %36 = icmp eq i64 %35, 2 + br i1 %36, label %RB_FLOAT_TYPE_P.exit.thread, label %RB_FLOAT_TYPE_P.exit.thread32 -RB_FLOAT_TYPE_P.exit.thread32: ; preds = %31, %.critedge - %39 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %26, i64 noundef 3361, i32 noundef 0) #16 +RB_FLOAT_TYPE_P.exit.thread32: ; preds = %29, %.critedge + %37 = tail call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %24, i64 noundef 3361, i32 noundef 0) #16 br label %RB_FLOAT_TYPE_P.exit.thread -RB_FLOAT_TYPE_P.exit.thread: ; preds = %31, %.critedge, %RB_FLOAT_TYPE_P.exit.thread32, %35, %23, %18 - %.030 = phi i64 [ %20, %18 ], [ %24, %23 ], [ %36, %35 ], [ %39, %RB_FLOAT_TYPE_P.exit.thread32 ], [ %26, %.critedge ], [ %26, %31 ] +RB_FLOAT_TYPE_P.exit.thread: ; preds = %29, %.critedge, %RB_FLOAT_TYPE_P.exit.thread32, %33, %21, %18 + %.030 = phi i64 [ %20, %18 ], [ %22, %21 ], [ %34, %33 ], [ %37, %RB_FLOAT_TYPE_P.exit.thread32 ], [ %24, %.critedge ], [ %24, %29 ] ret i64 %.030 } diff --git a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll index 77023d01f48..12efda878b0 100644 --- a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll +++ b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll @@ -24604,11 +24604,11 @@ define internal fastcc void @_ZN15rustfmt_nightly7imports7UseTree5merge17h22a21d %41 = getelementptr inbounds nuw i8, ptr %1, i64 16 %42 = load i64, ptr %41, align 8, !noundef !4 %.0.sroa.speculated.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %38, i64 %42) - %.not295 = icmp eq i64 %.0.sroa.speculated.i.i.i, 0 - br i1 %.not295, label %.critedge, label %.lr.ph + %.not292 = icmp eq i64 %.0.sroa.speculated.i.i.i, 0 + br i1 %.not292, label %.critedge, label %.lr.ph .critedge: ; preds = %548, %545, %547, %3 - %.036.lcssa = phi i64 [ 0, %3 ], [ %.036290, %548 ], [ %.036290, %545 ], [ %.0.sroa.speculated.i.i.i, %547 ] + %.036.lcssa = phi i64 [ 0, %3 ], [ %.036287, %548 ], [ %.036287, %545 ], [ %.0.sroa.speculated.i.i.i, %547 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !6668) tail call void @llvm.experimental.noalias.scope.decl(metadata !6671) %43 = icmp eq i64 %38, %.036.lcssa @@ -24792,7 +24792,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru %107 = getelementptr inbounds nuw i8, ptr %7, i64 16 %108 = getelementptr { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %.pn.i, i64 %.sroa.596.0.in.i %109 = icmp eq i64 %104, 0 - br i1 %109, label %.loopexit270, label %.lr.ph.i125 + br i1 %109, label %.loopexit267, label %.lr.ph.i125 .lr.ph.i125: ; preds = %.noexc132, %113 %.sroa.10.032.i126 = phi i64 [ %110, %113 ], [ %104, %.noexc132 ] @@ -24800,7 +24800,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru %.sroa.7.030.i128 = phi i64 [ %114, %113 ], [ 0, %.noexc132 ] %110 = add i64 %.sroa.10.032.i126, -1 %111 = icmp eq ptr %.sroa.013.031.i127, %108 - br i1 %111, label %.loopexit270, label %112 + br i1 %111, label %.loopexit267, label %112 112: ; preds = %.lr.ph.i125 tail call void @llvm.experimental.noalias.scope.decl(metadata !6704), !noalias !6678 @@ -24826,7 +24826,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.07.sroa.0.i123) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.07.sroa.5.i124) %119 = icmp eq i64 %110, 0 - br i1 %119, label %.loopexit270, label %.lr.ph.i125 + br i1 %119, label %.loopexit267, label %.lr.ph.i125 120: ; preds = %112 %lpad.loopexit.i129 = landingpad { ptr, i32 } @@ -24913,8 +24913,8 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #58, !noalias !6678 unreachable -149: ; preds = %.loopexit270, %._crit_edge.i110 - %150 = phi i64 [ %.pre.i111, %._crit_edge.i110 ], [ %165, %.loopexit270 ] +149: ; preds = %.loopexit267, %._crit_edge.i110 + %150 = phi i64 [ %.pre.i111, %._crit_edge.i110 ], [ %165, %.loopexit267 ] %151 = load ptr, ptr %96, align 8, !alias.scope !6734, !noalias !6737, !nonnull !4, !noundef !4 %152 = getelementptr inbounds { { { i64, ptr }, i64 }, { i64, [9 x i64] }, { i8, [31 x i8] }, { i32, i16, i16 }, { ptr } }, ptr %151, i64 %150 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %152, ptr noundef nonnull align 8 dereferenceable(152) %27, i64 152, i1 false), !noalias !6678 @@ -24941,7 +24941,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru .noexc114: ; preds = %160 unreachable -.loopexit270: ; preds = %.lr.ph.i125, %113, %.noexc132 +.loopexit267: ; preds = %.lr.ph.i125, %113, %.noexc132 store i64 %.sroa.596.0.i, ptr %107, align 8, !noalias !6702 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false), !noalias !6678 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !6702 @@ -24958,7 +24958,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit139: ; preds = %_ZN15ru %167 = icmp eq i64 %165, %166 br i1 %167, label %168, label %149 -168: ; preds = %.loopexit270 +168: ; preds = %.loopexit267 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17he626549c7e1cbd89E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %165) to label %._crit_edge.i110 unwind label %169, !noalias !6737 @@ -24985,7 +24985,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread: ; preds = % %173 = phi ptr [ %155, %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115 ], [ %158, %.thread ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20), !noalias !6673 invoke fastcc void @"_ZN79_$LT$rustfmt_nightly..imports..UseSegmentKind$u20$as$u20$core..clone..Clone$GT$5clone17h2859a0c849c5d862E"(ptr noalias noundef align 8 captures(none) dereferenceable(48) %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %40) - to label %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347 unwind label %175, !noalias !6678 + to label %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344 unwind label %175, !noalias !6678 174: ; preds = %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115 invoke void @_ZN4core9panicking18panic_bounds_check17h87898f2af235819bE(i64 noundef 0, i64 noundef 0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.03ffb4fcd013e89489cd0a268123d966.168) #60 @@ -24998,7 +24998,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread: ; preds = % call void @__rust_dealloc(ptr noundef nonnull %176, i64 noundef 112, i64 noundef 8) #61, !noalias !6678 br label %.body112 -_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347: ; preds = %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread +_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344: ; preds = %_ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit115.thread %178 = getelementptr inbounds nuw i8, ptr %40, i64 48 %179 = load i8, ptr %178, align 8, !range !74, !alias.scope !6671, !noalias !6745, !noundef !4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %173, ptr noundef nonnull align 8 dereferenceable(48) %20, i64 48, i1 false), !noalias !6678 @@ -25093,7 +25093,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 %210 = getelementptr inbounds nuw i8, ptr %9, i64 16 %211 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %40, i64 %42 %212 = icmp eq i64 %207, 0 - br i1 %212, label %.loopexit266, label %.lr.ph.i99 + br i1 %212, label %.loopexit263, label %.lr.ph.i99 .lr.ph.i99: ; preds = %.noexc106, %216 %.sroa.10.032.i100 = phi i64 [ %213, %216 ], [ %207, %.noexc106 ] @@ -25101,7 +25101,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 %.sroa.7.030.i102 = phi i64 [ %217, %216 ], [ 0, %.noexc106 ] %213 = add i64 %.sroa.10.032.i100, -1 %214 = icmp eq ptr %.sroa.013.031.i101, %211 - br i1 %214, label %.loopexit266, label %215 + br i1 %214, label %.loopexit263, label %215 215: ; preds = %.lr.ph.i99 tail call void @llvm.experimental.noalias.scope.decl(metadata !6757), !noalias !6678 @@ -25127,7 +25127,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.07.sroa.0.i97) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.07.sroa.5.i98) %222 = icmp eq i64 %213, 0 - br i1 %222, label %.loopexit266, label %.lr.ph.i99 + br i1 %222, label %.loopexit263, label %.lr.ph.i99 223: ; preds = %215 %lpad.loopexit.i103 = landingpad { ptr, i32 } @@ -25151,7 +25151,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 cleanup br label %.thread200 -.loopexit266: ; preds = %.lr.ph.i99, %216, %.noexc106 +.loopexit263: ; preds = %.lr.ph.i99, %216, %.noexc106 store i64 %204, ptr %210, align 8, !noalias !6755 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !6678 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !6755 @@ -25177,14 +25177,14 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 %or.cond.i91 = and i1 %241, %240 br i1 %or.cond.i91, label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i.i", label %270 -"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i.i": ; preds = %.loopexit266, %.noexc.i - %242 = phi ptr [ %246, %.noexc.i ], [ %234, %.loopexit266 ] +"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i.i": ; preds = %.loopexit263, %.noexc.i + %242 = phi ptr [ %246, %.noexc.i ], [ %234, %.loopexit263 ] %243 = icmp eq ptr %242, %237 br i1 %243, label %_ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.thread, label %244 244: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i.i" %245 = invoke fastcc noundef zeroext i1 @_ZN15rustfmt_nightly7imports7UseTree12share_prefix17hf36c8bc515770df7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %242, ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %33, i8 noundef 0) - to label %.noexc.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 + to label %.noexc.i unwind label %.loopexit.split-lp.loopexit, !noalias !6776 .noexc.i: ; preds = %244 %246 = getelementptr inbounds nuw i8, ptr %242, i64 152 @@ -25209,7 +25209,7 @@ _ZN5alloc5alloc15exchange_malloc17hf73c64118470f50eE.exit: ; preds = %184 %.0.i.i.i.i.i.i.i = phi i64 [ %254, %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17haddb2d577e9aab5cE.exit.i.i.i.i.i.i.i" ], [ 0, %.thread.i.i.i.i ] %252 = getelementptr inbounds { { { i64, ptr }, i64 }, { i64, [9 x i64] }, { i8, [31 x i8] }, { i32, i16, i16 }, { ptr } }, ptr %246, i64 %.0.i.i.i.i.i.i.i %253 = invoke fastcc noundef zeroext i1 @_ZN15rustfmt_nightly7imports7UseTree12share_prefix17hf36c8bc515770df7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %252, ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %33, i8 noundef 0) - to label %.noexc26.i unwind label %.loopexit.split-lp.loopexit, !noalias !6776 + to label %.noexc26.i unwind label %.loopexit247, !noalias !6776 .noexc26.i: ; preds = %.split.i.i.i.i.i.i.i br i1 %253, label %"._ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h785cff24ceee13ffE.exit_crit_edge.i.i.i.i.i11.i.i.i.i", label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17haddb2d577e9aab5cE.exit.i.i.i.i.i.i.i" @@ -25287,20 +25287,20 @@ _ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.th invoke void @_ZN4core5slice4sort10merge_sort17h390146cf9f77c78bE(ptr noalias noundef nonnull align 8 %267, i64 noundef %269, ptr noalias noundef nonnull align 1 %4) to label %_ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i unwind label %.body.i, !noalias !6678 -270: ; preds = %.loopexit266 +270: ; preds = %.loopexit263 %271 = icmp eq i8 %2, 2 br i1 %271, label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader", label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i104.i" "_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader": ; preds = %270 %272 = icmp eq i64 %236, 0 - br i1 %272, label %_ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.thread, label %.lr.ph373 + br i1 %272, label %_ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.thread, label %.lr.ph370 -.lr.ph373: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader" +.lr.ph370: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i34.i.preheader" %273 = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %274 -274: ; preds = %.lr.ph373, %.noexc94.i - %275 = phi ptr [ %234, %.lr.ph373 ], [ %314, %.noexc94.i ] +274: ; preds = %.lr.ph370, %.noexc94.i + %275 = phi ptr [ %234, %.lr.ph370 ], [ %314, %.noexc94.i ] call void @llvm.experimental.noalias.scope.decl(metadata !6833), !noalias !6678 call void @llvm.experimental.noalias.scope.decl(metadata !6836) call void @llvm.experimental.noalias.scope.decl(metadata !6839) @@ -25382,12 +25382,12 @@ _ZN15rustfmt_nightly7imports7UseTree16contains_comment17hd6a183ede1e96395E.exit. 312: ; preds = %308 %313 = invoke noundef zeroext i1 @_ZN15rustfmt_nightly5utils18is_same_visibility17hd2ef40591ab1179dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %304, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %231) - to label %.noexc330 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit + to label %.noexc327 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc330: ; preds = %312 - br i1 %313, label %.noexc330._crit_edge, label %.noexc94.i +.noexc327: ; preds = %312 + br i1 %313, label %.noexc327._crit_edge, label %.noexc94.i -.noexc330._crit_edge: ; preds = %.noexc330 +.noexc327._crit_edge: ; preds = %.noexc327 %.val7.i.i.i.i.i.i.i.i46.i.pre = load i64, ptr %238, align 8, !noalias !6876 br label %split @@ -25395,13 +25395,13 @@ _ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i %spec.select.i.i = icmp samesign ugt i8 %307, 1 br i1 %spec.select.i.i, label %split, label %.noexc94.i -.noexc94.i: ; preds = %296, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i, %.noexc330, %310, %_ZN15rustfmt_nightly7imports7UseTree11has_comment17hea44b230ad42a0a7E.exit.i.i, %274 +.noexc94.i: ; preds = %296, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i, %.noexc327, %310, %_ZN15rustfmt_nightly7imports7UseTree11has_comment17hea44b230ad42a0a7E.exit.i.i, %274 %314 = getelementptr inbounds nuw i8, ptr %275, i64 152 %315 = icmp eq ptr %314, %237 br i1 %315, label %_ZN4core4iter6traits8iterator8Iterator10min_by_key17hca8f2611e879e005E.exit.i.thread, label %274 -split: ; preds = %310, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i, %.noexc330._crit_edge - %.val7.i.i.i.i.i.i.i.i46.i = phi i64 [ %.val7.i.i.i.i.i.i.i.i46.i.pre, %.noexc330._crit_edge ], [ %279, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i ], [ %279, %310 ] +split: ; preds = %310, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i, %.noexc327._crit_edge + %.val7.i.i.i.i.i.i.i.i46.i = phi i64 [ %.val7.i.i.i.i.i.i.i.i46.i.pre, %.noexc327._crit_edge ], [ %279, %_ZN15rustfmt_nightly7imports7UseTree15same_visibility17hf77da83f711bc7e3E.exit.i ], [ %279, %310 ] %316 = getelementptr inbounds nuw i8, ptr %275, i64 8 %317 = getelementptr inbounds nuw i8, ptr %275, i64 16 %318 = getelementptr inbounds nuw i8, ptr %275, i64 152 @@ -25530,7 +25530,7 @@ _ZN15rustfmt_nightly7imports7UseTree16contains_comment17hd6a183ede1e96395E.exit. 371: ; preds = %367 %372 = invoke noundef zeroext i1 @_ZN15rustfmt_nightly5utils18is_same_visibility17hd2ef40591ab1179dE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %363, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %231) - to label %.noexc96.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 + to label %.noexc96.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 .noexc96.i: ; preds = %371 br i1 %372, label %._ZN15rustfmt_nightly7imports7UseTree12share_prefix17hf36c8bc515770df7E.exit_crit_edge.i.i.i.i.i73.i, label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h88d81b7dd1f694f6E.exit.us.i.i.i.i.i.i.i" @@ -25592,7 +25592,7 @@ _ZN4core4iter6traits8iterator8Iterator10max_by_key17hbe5477e8b4187885E.exit.i: ; 383: ; preds = %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h1dfd04afc3fefd75E.exit.i.i.i.i.i.i104.i" %384 = invoke fastcc noundef zeroext i1 @_ZN15rustfmt_nightly7imports7UseTree12share_prefix17hf36c8bc515770df7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %381, ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %33, i8 noundef %2) - to label %.noexc182.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 + to label %.noexc182.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 .noexc182.i: ; preds = %383 %385 = getelementptr inbounds nuw i8, ptr %381, i64 152 @@ -25618,7 +25618,7 @@ _ZN4core4iter6traits8iterator8Iterator10max_by_key17hbe5477e8b4187885E.exit.i: ; %.0.i.i.i.i.i.i112.i = phi i64 [ %393, %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h64c7945231da4fdbE.exit.i.i.i.i.i.i.i" ], [ 0, %.thread.i.i.i107.i ] %391 = getelementptr inbounds { { { i64, ptr }, i64 }, { i64, [9 x i64] }, { i8, [31 x i8] }, { i32, i16, i16 }, { ptr } }, ptr %385, i64 %.0.i.i.i.i.i.i112.i %392 = invoke fastcc noundef zeroext i1 @_ZN15rustfmt_nightly7imports7UseTree12share_prefix17hf36c8bc515770df7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %391, ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %33, i8 noundef %2) - to label %.noexc184.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 + to label %.noexc184.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, !noalias !6776 .noexc184.i: ; preds = %.split.i.i.i.i.i.i108.i br i1 %392, label %"._ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h785cff24ceee13ffE.exit_crit_edge.i.i.i.i.i11.i.i.i124.i", label %"_ZN4core4iter8adapters10filter_map15filter_map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h64c7945231da4fdbE.exit.i.i.i.i.i.i.i" @@ -25650,49 +25650,49 @@ _ZN4core4iter6traits8iterator8Iterator10max_by_key17h18983879f6479d55E.exit.i: ; %396 = phi ptr [ %.sroa.0178.0, %_ZN4core4iter6traits8iterator8Iterator10max_by_key17hbe5477e8b4187885E.exit.i ], [ %.sroa.0181.0, %_ZN4core4iter6traits8iterator8Iterator10max_by_key17h18983879f6479d55E.exit.i ] %397 = phi i8 [ 2, %_ZN4core4iter6traits8iterator8Iterator10max_by_key17hbe5477e8b4187885E.exit.i ], [ %2, %_ZN4core4iter6traits8iterator8Iterator10max_by_key17h18983879f6479d55E.exit.i ] invoke fastcc void @_ZN15rustfmt_nightly7imports7UseTree5merge17h22a21d19e0d85ae2E(ptr noalias noundef align 8 dereferenceable(152) %396, ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %33, i8 noundef %397) - to label %257 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, !noalias !6776 + to label %257 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, !noalias !6776 _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h451bafaee6754faeE.exit.i" call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4), !noalias !6826 br label %400 -.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i.i - %lpad.loopexit248 = landingpad { ptr, i32 } +.loopexit247: ; preds = %.split.i.i.i.i.i.i.i + %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %244 - %lpad.loopexit252 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit: ; preds = %244 + %lpad.loopexit248 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %371 - %lpad.loopexit254 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %371 + %lpad.loopexit251 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %312 - %lpad.loopexit258 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %312 + %lpad.loopexit254 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i108.i - %lpad.loopexit260 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.split.i.i.i.i.i.i108.i + %lpad.loopexit257 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %383 - %lpad.loopexit264 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %383 + %lpad.loopexit260 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke - %lpad.loopexit.split-lp = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke + %lpad.loopexit.split-lp261 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit - %lpad.phi250 = phi { ptr, i32 } [ %lpad.loopexit248, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit252, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit254, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit258, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit260, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit264, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] +.loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit247 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit247 ], [ %lpad.loopexit248, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit251, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit254, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit257, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit260, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp261, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr54drop_in_place$LT$rustfmt_nightly..imports..UseTree$GT$17h725c1c900f92ab27E"(ptr noalias noundef nonnull align 8 dereferenceable(152) %33) #59 to label %.thread200 unwind label %398, !noalias !6678 @@ -25821,7 +25821,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v br label %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit .thread200: ; preds = %417, %.loopexit.split-lp, %.body.i, %261, %223, %227 - %eh.lpad-body87 = phi { ptr, i32 } [ %228, %227 ], [ %lpad.loopexit.i103, %223 ], [ %lpad.phi250, %.loopexit.split-lp ], [ %lpad.thr_comm.split-lp, %.body.i ], [ %262, %261 ], [ %lpad.loopexit.i82, %417 ] + %eh.lpad-body87 = phi { ptr, i32 } [ %228, %227 ], [ %lpad.loopexit.i103, %223 ], [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.thr_comm.split-lp, %.body.i ], [ %262, %261 ], [ %lpad.loopexit.i82, %417 ] invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$rustfmt_nightly..imports..UseTree$GT$$GT$17hfad38442bbea55ccE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %34) #59 to label %common.resume unwind label %181, !noalias !6678 @@ -25841,7 +25841,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %441 = getelementptr inbounds nuw i8, ptr %15, i64 16 %442 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %36, i64 %38 %443 = icmp eq i64 %438, 0 - br i1 %443, label %.loopexit269, label %.lr.ph.i59.preheader + br i1 %443, label %.loopexit266, label %.lr.ph.i59.preheader .lr.ph.i59.preheader: ; preds = %.noexc66 %444 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %36, i64 %.0.i @@ -25853,7 +25853,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %.sroa.7.030.i62 = phi i64 [ %449, %448 ], [ 0, %.lr.ph.i59.preheader ] %445 = add i64 %.sroa.10.032.i60, -1 %446 = icmp eq ptr %.sroa.013.031.i61, %442 - br i1 %446, label %.loopexit269, label %447 + br i1 %446, label %.loopexit266, label %447 447: ; preds = %.lr.ph.i59 tail call void @llvm.experimental.noalias.scope.decl(metadata !7054), !noalias !6692 @@ -25879,7 +25879,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.07.sroa.0.i57) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.07.sroa.5.i58) %454 = icmp eq i64 %445, 0 - br i1 %454, label %.loopexit269, label %.lr.ph.i59 + br i1 %454, label %.loopexit266, label %.lr.ph.i59 455: ; preds = %447 %lpad.loopexit.i63 = landingpad { ptr, i32 } @@ -25908,7 +25908,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v cleanup br label %.body67 -.loopexit269: ; preds = %.lr.ph.i59, %448, %.noexc66 +.loopexit266: ; preds = %.lr.ph.i59, %448, %.noexc66 store i64 %436, ptr %441, align 8, !noalias !7052 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false), !noalias !6692 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !7052 @@ -25925,7 +25925,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %465 = icmp ugt i64 %.0.i, %42 br i1 %465, label %489, label %466 -466: ; preds = %.loopexit269 +466: ; preds = %.loopexit266 %467 = sub nuw i64 %42, %.0.i %468 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %40, i64 %.0.i tail call void @llvm.experimental.noalias.scope.decl(metadata !7067) @@ -25942,7 +25942,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %473 = getelementptr inbounds nuw i8, ptr %17, i64 16 %474 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %40, i64 %42 %475 = icmp eq i64 %470, 0 - br i1 %475, label %.loopexit268, label %.lr.ph.i46 + br i1 %475, label %.loopexit265, label %.lr.ph.i46 .lr.ph.i46: ; preds = %.noexc53, %479 %.sroa.10.032.i47 = phi i64 [ %476, %479 ], [ %470, %.noexc53 ] @@ -25950,7 +25950,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %.sroa.7.030.i49 = phi i64 [ %480, %479 ], [ 0, %.noexc53 ] %476 = add i64 %.sroa.10.032.i47, -1 %477 = icmp eq ptr %.sroa.013.031.i48, %474 - br i1 %477, label %.loopexit268, label %478 + br i1 %477, label %.loopexit265, label %478 478: ; preds = %.lr.ph.i46 tail call void @llvm.experimental.noalias.scope.decl(metadata !7072), !noalias !6678 @@ -25976,7 +25976,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.07.sroa.0.i44) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.07.sroa.5.i45) %485 = icmp eq i64 %476, 0 - br i1 %485, label %.loopexit268, label %.lr.ph.i46 + br i1 %485, label %.loopexit265, label %.lr.ph.i46 486: ; preds = %478 %lpad.loopexit.i50 = landingpad { ptr, i32 } @@ -25991,7 +25991,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #58, !noalias !7077 unreachable -489: ; preds = %.loopexit269 +489: ; preds = %.loopexit266 invoke void @_ZN4core5slice5index26slice_start_index_len_fail17hb7159d6f8f2aed89E(i64 noundef %.0.i, i64 noundef %42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.03ffb4fcd013e89489cd0a268123d966.176) #60 to label %88 unwind label %490, !noalias !6692 @@ -26005,7 +26005,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v invoke void @"_ZN4core3ptr54drop_in_place$LT$rustfmt_nightly..imports..UseTree$GT$17h725c1c900f92ab27E"(ptr noalias noundef nonnull align 8 dereferenceable(152) %25) #59 to label %.body67 unwind label %181, !noalias !6678 -.loopexit268: ; preds = %.lr.ph.i46, %479, %.noexc53 +.loopexit265: ; preds = %.lr.ph.i46, %479, %.noexc53 store i64 %467, ptr %473, align 8, !noalias !7070 %492 = getelementptr inbounds nuw i8, ptr %186, i64 152 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %492, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false), !noalias !6678 @@ -26033,12 +26033,12 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v invoke void @_ZN4core5slice4sort10merge_sort17h390146cf9f77c78bE(ptr noalias noundef nonnull align 8 %186, i64 noundef 2, ptr noalias noundef nonnull align 1 %4) to label %497 unwind label %495 -495: ; preds = %.loopexit268, %497 +495: ; preds = %.loopexit265, %497 %496 = landingpad { ptr, i32 } cleanup br label %.thread227 -497: ; preds = %.loopexit268 +497: ; preds = %.loopexit265 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24), !noalias !6673 call void @llvm.experimental.noalias.scope.decl(metadata !7085) @@ -26054,7 +26054,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v store ptr %500, ptr %501, align 8, !noalias !7088 %502 = getelementptr inbounds nuw i8, ptr %19, i64 16 %503 = icmp eq i64 %499, 0 - br i1 %503, label %.loopexit267, label %.lr.ph.i + br i1 %503, label %.loopexit264, label %.lr.ph.i .lr.ph.i: ; preds = %.noexc, %507 %.sroa.10.032.i = phi i64 [ %504, %507 ], [ %499, %.noexc ] @@ -26062,7 +26062,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %.sroa.7.030.i = phi i64 [ %508, %507 ], [ 0, %.noexc ] %504 = add i64 %.sroa.10.032.i, -1 %505 = icmp eq ptr %.sroa.013.031.i, %468 - br i1 %505, label %.loopexit267, label %506 + br i1 %505, label %.loopexit264, label %506 506: ; preds = %.lr.ph.i call void @llvm.experimental.noalias.scope.decl(metadata !7090) @@ -26088,7 +26088,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.07.sroa.0.i) call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.07.sroa.5.i) %513 = icmp eq i64 %504, 0 - br i1 %513, label %.loopexit267, label %.lr.ph.i + br i1 %513, label %.loopexit264, label %.lr.ph.i 514: ; preds = %506 %lpad.loopexit.i = landingpad { ptr, i32 } @@ -26103,7 +26103,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #58, !noalias !7095 unreachable -.loopexit267: ; preds = %507, %.lr.ph.i, %.noexc +.loopexit264: ; preds = %507, %.lr.ph.i, %.noexc store i64 %.0.i, ptr %502, align 8, !noalias !7088 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %19, i64 24, i1 false), !noalias !7085 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19), !noalias !7088 @@ -26114,7 +26114,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v %.not125.i = icmp eq i64 %38, 0 br i1 %.not125.i, label %531, label %518, !prof !4717 -518: ; preds = %.loopexit267 +518: ; preds = %.loopexit264 %519 = getelementptr inbounds nuw i8, ptr %36, i64 48 %520 = load i8, ptr %519, align 8, !range !74, !alias.scope !6668, !noalias !6692, !noundef !4 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %22), !noalias !6673 @@ -26133,7 +26133,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v ._crit_edge.i: ; preds = %526 %.pre.i = load i64, ptr %522, align 8, !alias.scope !7098, !noalias !7101 - %.sroa.0.0.copyload331.pre = load i64, ptr %24, align 8 + %.sroa.0.0.copyload328.pre = load i64, ptr %24, align 8 br label %532 527: ; preds = %526 @@ -26148,12 +26148,12 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #58, !noalias !6678 unreachable -531: ; preds = %.loopexit267 +531: ; preds = %.loopexit264 invoke void @_ZN4core9panicking18panic_bounds_check17h87898f2af235819bE(i64 noundef 0, i64 noundef 0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.03ffb4fcd013e89489cd0a268123d966.175) #60 to label %88 unwind label %537, !noalias !6678 532: ; preds = %._crit_edge.i, %518 - %.sroa.0.0.copyload331 = phi i64 [ %.sroa.0.0.copyload331.pre, %._crit_edge.i ], [ %524, %518 ] + %.sroa.0.0.copyload328 = phi i64 [ %.sroa.0.0.copyload328.pre, %._crit_edge.i ], [ %524, %518 ] %533 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %523, %518 ] %534 = getelementptr inbounds nuw i8, ptr %24, i64 8 %535 = load ptr, ptr %534, align 8, !alias.scope !7098, !noalias !7101, !nonnull !4, !noundef !4 @@ -26184,17 +26184,17 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit.i: ; preds = %"_ZN5alloc3v _ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit: ; preds = %430, %532 %.sroa.7.0.in = phi i64 [ %431, %430 ], [ %533, %532 ] %.sroa.6.0 = phi ptr [ %433, %430 ], [ %535, %532 ] - %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload, %430 ], [ %.sroa.0.0.copyload331, %532 ] + %.sroa.0.0 = phi i64 [ %.sroa.0.0.copyload, %430 ], [ %.sroa.0.0.copyload328, %532 ] %.sroa.7.0 = add i64 %.sroa.7.0.in, 1 %.not = icmp eq i64 %.sroa.0.0, -9223372036854775808 br i1 %.not, label %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread, label %554 .lr.ph: ; preds = %3, %547 - %.036290 = phi i64 [ %539, %547 ], [ 0, %3 ] - %539 = add nuw i64 %.036290, 1 - %540 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %36, i64 %.036290 - %541 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %40, i64 %.036290 - %542 = icmp eq i64 %.036290, 0 + %.036287 = phi i64 [ %539, %547 ], [ 0, %3 ] + %539 = add nuw i64 %.036287, 1 + %540 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %36, i64 %.036287 + %541 = getelementptr inbounds { { i64, [5 x i64] }, i8, [7 x i8] }, ptr %40, i64 %.036287 + %542 = icmp eq i64 %.036287, 0 br i1 %542, label %543, label %545 543: ; preds = %.lr.ph @@ -26217,25 +26217,25 @@ _ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit: ; preds = %43 %553 = icmp eq i8 %550, %552 br i1 %553, label %547, label %.critedge -554: ; preds = %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit - %.sroa.0.0354 = phi i64 [ 2, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347 ], [ %.sroa.0.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] - %.sroa.6.0353 = phi ptr [ %173, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347 ], [ %.sroa.6.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] - %.sroa.7.0352 = phi i64 [ 2, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread347 ], [ %.sroa.7.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] +554: ; preds = %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit + %.sroa.0.0351 = phi i64 [ 2, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344 ], [ %.sroa.0.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] + %.sroa.6.0350 = phi ptr [ %173, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344 ], [ %.sroa.6.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] + %.sroa.7.0349 = phi i64 [ 2, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit.thread344 ], [ %.sroa.7.0, %_ZN15rustfmt_nightly7imports10merge_rest17h9b340bd258486a2cE.exit ] invoke void @"_ZN4core3ptr80drop_in_place$LT$alloc..vec..Vec$LT$rustfmt_nightly..imports..UseSegment$GT$$GT$17h98511aa84bbc718aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) to label %.thread236 unwind label %555 555: ; preds = %554 %556 = landingpad { ptr, i32 } cleanup - store i64 %.sroa.0.0354, ptr %0, align 8 - store ptr %.sroa.6.0353, ptr %35, align 8 - store i64 %.sroa.7.0352, ptr %37, align 8 + store i64 %.sroa.0.0351, ptr %0, align 8 + store ptr %.sroa.6.0350, ptr %35, align 8 + store i64 %.sroa.7.0349, ptr %37, align 8 br label %common.resume .thread236: ; preds = %554 - store i64 %.sroa.0.0354, ptr %0, align 8 - store ptr %.sroa.6.0353, ptr %35, align 8 - store i64 %.sroa.7.0352, ptr %37, align 8 + store i64 %.sroa.0.0351, ptr %0, align 8 + store ptr %.sroa.6.0350, ptr %35, align 8 + store i64 %.sroa.7.0349, ptr %37, align 8 %557 = getelementptr inbounds nuw i8, ptr %0, i64 136 %.sroa.011.0.copyload = load i64, ptr %557, align 8 %558 = getelementptr inbounds nuw i8, ptr %1, i64 136 diff --git a/bench/tinyrenderer/optimized/tgaimage.cpp.ll b/bench/tinyrenderer/optimized/tgaimage.cpp.ll index 8d4f4c283bc..355534d5fcb 100644 --- a/bench/tinyrenderer/optimized/tgaimage.cpp.ll +++ b/bench/tinyrenderer/optimized/tgaimage.cpp.ll @@ -366,17 +366,17 @@ define dso_local noundef zeroext i1 @_ZN8TGAImage13load_rle_dataERSt14basic_ifst .lr.ph70.preheader: ; preds = %19 %21 = add nuw nsw i32 %13, 1 %22 = and i32 %21, 255 - %umax88 = call i32 @llvm.umax.i32(i32 %22, i32 1) - %.pre90 = load i8, ptr %10, align 8 + %umax87 = call i32 @llvm.umax.i32(i32 %22, i32 1) + %.pre89 = load i8, ptr %10, align 8 br label %.lr.ph70 23: ; preds = %._crit_edge64 %24 = add nuw nsw i32 %.03468, 1 - %exitcond89.not = icmp eq i32 %24, %umax88 - br i1 %exitcond89.not, label %.loopexit, label %.lr.ph70, !llvm.loop !6 + %exitcond88.not = icmp eq i32 %24, %umax87 + br i1 %exitcond88.not, label %.loopexit, label %.lr.ph70, !llvm.loop !6 .lr.ph70: ; preds = %.lr.ph70.preheader, %23 - %25 = phi i8 [ %42, %23 ], [ %.pre90, %.lr.ph70.preheader ] + %25 = phi i8 [ %42, %23 ], [ %.pre89, %.lr.ph70.preheader ] %.03468 = phi i32 [ %24, %23 ], [ 0, %.lr.ph70.preheader ] %.167 = phi i64 [ %.2.lcssa, %23 ], [ %.035, %.lr.ph70.preheader ] %.13766 = phi i64 [ %43, %23 ], [ %.036, %.lr.ph70.preheader ] @@ -391,22 +391,22 @@ define dso_local noundef zeroext i1 @_ZN8TGAImage13load_rle_dataERSt14basic_ifst .preheader: ; preds = %.lr.ph70 %33 = load i8, ptr %10, align 8 - %.not75 = icmp eq i8 %33, 0 - br i1 %.not75, label %._crit_edge64, label %.lr.ph63 + %.not74 = icmp eq i8 %33, 0 + br i1 %.not74, label %._crit_edge64, label %.lr.ph63 .lr.ph63: ; preds = %.preheader, %.lr.ph63 - %indvars.iv85 = phi i64 [ %indvars.iv.next86, %.lr.ph63 ], [ 0, %.preheader ] + %indvars.iv84 = phi i64 [ %indvars.iv.next85, %.lr.ph63 ], [ 0, %.preheader ] %.261 = phi i64 [ %36, %.lr.ph63 ], [ %.167, %.preheader ] - %34 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv85 + %34 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv84 %35 = load i8, ptr %34, align 1 %36 = add i64 %.261, 1 %37 = load ptr, ptr %11, align 8 %38 = getelementptr inbounds i8, ptr %37, i64 %.261 store i8 %35, ptr %38, align 1 - %indvars.iv.next86 = add nuw nsw i64 %indvars.iv85, 1 + %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1 %39 = load i8, ptr %10, align 8 %40 = zext i8 %39 to i64 - %41 = icmp samesign ult i64 %indvars.iv.next86, %40 + %41 = icmp samesign ult i64 %indvars.iv.next85, %40 br i1 %41, label %.lr.ph63, label %._crit_edge64, !llvm.loop !8 ._crit_edge64: ; preds = %.lr.ph63, %.preheader @@ -425,64 +425,59 @@ define dso_local noundef zeroext i1 @_ZN8TGAImage13load_rle_dataERSt14basic_ifst %51 = load i64, ptr %50, align 8 %52 = getelementptr inbounds i8, ptr %1, i64 %51 %53 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %52) - br i1 %53, label %.preheader45, label %.loopexit47.sink.split + br i1 %53, label %.preheader44.preheader, label %.loopexit47.sink.split -.preheader45: ; preds = %45 - %54 = and i32 %13, 255 - %.not = icmp eq i32 %54, 127 - br i1 %.not, label %.loopexit, label %.preheader44.preheader - -.preheader44.preheader: ; preds = %.preheader45 - %55 = add i32 %13, 129 - %56 = and i32 %55, 255 - %umax = call i32 @llvm.umax.i32(i32 %56, i32 1) +.preheader44.preheader: ; preds = %45 + %54 = add i32 %13, 129 + %55 = and i32 %54, 255 + %umax = call i32 @llvm.umax.i32(i32 %55, i32 1) %.pre = load i8, ptr %10, align 8 br label %.preheader44 -57: ; preds = %._crit_edge - %58 = add nuw nsw i32 %.03258, 1 - %exitcond.not = icmp eq i32 %58, %umax +56: ; preds = %._crit_edge + %57 = add nuw nsw i32 %.03258, 1 + %exitcond.not = icmp eq i32 %57, %umax br i1 %exitcond.not, label %.loopexit, label %.preheader44, !llvm.loop !9 -.preheader44: ; preds = %.preheader44.preheader, %57 - %59 = phi i8 [ %68, %57 ], [ %.pre, %.preheader44.preheader ] - %.03258 = phi i32 [ %58, %57 ], [ 0, %.preheader44.preheader ] - %.357 = phi i64 [ %.4.lcssa, %57 ], [ %.035, %.preheader44.preheader ] - %.23856 = phi i64 [ %69, %57 ], [ %.036, %.preheader44.preheader ] - %.not73 = icmp eq i8 %59, 0 - br i1 %.not73, label %._crit_edge, label %.lr.ph +.preheader44: ; preds = %.preheader44.preheader, %56 + %58 = phi i8 [ %67, %56 ], [ %.pre, %.preheader44.preheader ] + %.03258 = phi i32 [ %57, %56 ], [ 0, %.preheader44.preheader ] + %.357 = phi i64 [ %.4.lcssa, %56 ], [ %.035, %.preheader44.preheader ] + %.23856 = phi i64 [ %68, %56 ], [ %.036, %.preheader44.preheader ] + %.not = icmp eq i8 %58, 0 + br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader44, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader44 ] - %.454 = phi i64 [ %62, %.lr.ph ], [ %.357, %.preheader44 ] - %60 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv - %61 = load i8, ptr %60, align 1 - %62 = add i64 %.454, 1 - %63 = load ptr, ptr %11, align 8 - %64 = getelementptr inbounds i8, ptr %63, i64 %.454 - store i8 %61, ptr %64, align 1 + %.454 = phi i64 [ %61, %.lr.ph ], [ %.357, %.preheader44 ] + %59 = getelementptr inbounds nuw [4 x i8], ptr %3, i64 0, i64 %indvars.iv + %60 = load i8, ptr %59, align 1 + %61 = add i64 %.454, 1 + %62 = load ptr, ptr %11, align 8 + %63 = getelementptr inbounds i8, ptr %62, i64 %.454 + store i8 %60, ptr %63, align 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %65 = load i8, ptr %10, align 8 - %66 = zext i8 %65 to i64 - %67 = icmp samesign ult i64 %indvars.iv.next, %66 - br i1 %67, label %.lr.ph, label %._crit_edge, !llvm.loop !10 + %64 = load i8, ptr %10, align 8 + %65 = zext i8 %64 to i64 + %66 = icmp samesign ult i64 %indvars.iv.next, %65 + br i1 %66, label %.lr.ph, label %._crit_edge, !llvm.loop !10 ._crit_edge: ; preds = %.lr.ph, %.preheader44 - %68 = phi i8 [ 0, %.preheader44 ], [ %65, %.lr.ph ] - %.4.lcssa = phi i64 [ %.357, %.preheader44 ], [ %62, %.lr.ph ] - %69 = add i64 %.23856, 1 - %70 = icmp ugt i64 %69, %8 - br i1 %70, label %.loopexit47.sink.split, label %57 - -.loopexit: ; preds = %57, %23, %.preheader45 - %.339 = phi i64 [ %.036, %.preheader45 ], [ %43, %23 ], [ %69, %57 ] - %.5 = phi i64 [ %.035, %.preheader45 ], [ %.2.lcssa, %23 ], [ %.4.lcssa, %57 ] - %71 = icmp ult i64 %.339, %8 - br i1 %71, label %12, label %.loopexit47, !llvm.loop !11 + %67 = phi i8 [ 0, %.preheader44 ], [ %64, %.lr.ph ] + %.4.lcssa = phi i64 [ %.357, %.preheader44 ], [ %61, %.lr.ph ] + %68 = add i64 %.23856, 1 + %69 = icmp ugt i64 %68, %8 + br i1 %69, label %.loopexit47.sink.split, label %56 + +.loopexit: ; preds = %56, %23 + %.339 = phi i64 [ %43, %23 ], [ %68, %56 ] + %.5 = phi i64 [ %.2.lcssa, %23 ], [ %.4.lcssa, %56 ] + %70 = icmp ult i64 %.339, %8 + br i1 %70, label %12, label %.loopexit47, !llvm.loop !11 .loopexit47.sink.split: ; preds = %45, %12, %._crit_edge, %._crit_edge64, %.lr.ph70 %.str.9.sink = phi ptr [ @.str.3, %.lr.ph70 ], [ @.str.9, %._crit_edge64 ], [ @.str.9, %._crit_edge ], [ @.str.5, %12 ], [ @.str.3, %45 ] - %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull %.str.9.sink) + %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull %.str.9.sink) br label %.loopexit47 .loopexit47: ; preds = %.loopexit, %.loopexit47.sink.split diff --git a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll index f2c8359de71..eafd623107d 100644 --- a/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll +++ b/bench/tls-rs/optimized/4vvnrvl2eceao62c.ll @@ -13235,7 +13235,7 @@ switch.lookup: ; preds = %switch.hole_check br i1 %.not28.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17hdc20ca7c1075b036E.llvm.6030771845222660662.exit", label %.lr.ph.split.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17hdc20ca7c1075b036E.llvm.6030771845222660662.exit": ; preds = %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i", %switch.lookup, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i", %.lr.ph.split.us.i, %5, %3 - %.0 = phi i1 [ true, %3 ], [ false, %5 ], [ true, %.lr.ph.split.us.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i" ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i" ], [ true, %switch.lookup ] + %.0 = phi i1 [ true, %3 ], [ false, %5 ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i" ], [ true, %.lr.ph.split.us.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i" ], [ true, %switch.lookup ] ret i1 %.0 } @@ -13640,7 +13640,7 @@ switch.lookup: ; preds = %switch.hole_check br i1 %.not28.i.i, label %_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm17hbb0b7dbdd9f5f8ffE.exit, label %.lr.ph.split.i.i _ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm17hbb0b7dbdd9f5f8ffE.exit: ; preds = %switch.lookup, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i", %.lr.ph.split.us.i.i, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i", %2, %8 - %.0.i = phi i1 [ true, %2 ], [ false, %8 ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i" ], [ true, %.lr.ph.split.us.i.i ], [ true, %switch.lookup ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i" ] + %.0.i = phi i1 [ true, %2 ], [ false, %8 ], [ true, %.lr.ph.split.us.i.i ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.us.i.i" ], [ true, %switch.lookup ], [ false, %"_ZN6rustls6suites20SupportedCipherSuite30usable_for_signature_algorithm28_$u7b$$u7b$closure$u7d$$u7d$17hb6507a5337430a68E.llvm.6030771845222660662.exit.backedge.i.i" ] ret i1 %.0.i } diff --git a/bench/wasmedge/optimized/component.cpp.ll b/bench/wasmedge/optimized/component.cpp.ll index c01339db937..18cd198e47b 100644 --- a/bench/wasmedge/optimized/component.cpp.ll +++ b/bench/wasmedge/optimized/component.cpp.ll @@ -1545,14 +1545,14 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i: ; preds = %173, %.noexc41 _ZSt7advanceIPKhmEvRT_T0_.exit.i: ; preds = %175 %.not.i.i.i.i.i17.i = icmp eq ptr %177, %164 - br i1 %.not.i.i.i.i.i17.i, label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i, label %184 + br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i, label %184 184: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %164, ptr noundef nonnull align 2 dereferenceable(1) %13, i64 %179, i1 false) %.pre26.i = load ptr, ptr %176, align 8 - br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i + br label %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i -_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %184, %_ZSt7advanceIPKhmEvRT_T0_.exit.i +_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i: ; preds = %184, %_ZSt7advanceIPKhmEvRT_T0_.exit.i %185 = phi ptr [ %177, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.pre26.i, %184 ] %.sink.i.i25.i.idx.sroa.phi = phi ptr [ %13, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.sink.i.i25.i.idx.sroa.gep78, %184 ] %gepdiff = sub nuw nsw i64 2, %179 @@ -1561,7 +1561,7 @@ _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %184, store ptr %186, ptr %176, align 8 br label %_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit -_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit: ; preds = %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i, %180, %183, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i +_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit: ; preds = %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i, %180, %183, %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i %187 = load ptr, ptr %5, align 8 %188 = getelementptr inbounds nuw i8, ptr %187, i64 2 %189 = load i8, ptr %188, align 1 @@ -1624,14 +1624,14 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i56: ; preds = %204, %.noexc _ZSt7advanceIPKhmEvRT_T0_.exit.i46: ; preds = %206 %.not.i.i.i.i.i17.i47 = icmp eq ptr %208, %195 - br i1 %.not.i.i.i.i.i17.i47, label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53, label %215 + br i1 %.not.i.i.i.i.i17.i47, label %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i50, label %215 215: ; preds = %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %195, ptr noundef nonnull align 2 dereferenceable(1) %14, i64 %210, i1 false) %.pre26.i49 = load ptr, ptr %207, align 8 - br label %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53 + br label %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i50 -_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53: ; preds = %215, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 +_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i50: ; preds = %215, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 %216 = phi ptr [ %208, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.pre26.i49, %215 ] %.sink.i.i25.i51.idx.sroa.phi = phi ptr [ %14, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.sink.i.i25.i51.idx.sroa.gep77, %215 ] %gepdiff76 = sub nuw nsw i64 2, %210 @@ -1640,7 +1640,7 @@ _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53: ; preds = %215 store ptr %217, ptr %207, align 8 br label %_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit31 -_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit31: ; preds = %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i56, %211, %214, %_ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53 +_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit31: ; preds = %_ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit.i56, %211, %214, %_ZSt4copyIPKhPhET0_T_S4_S3_.exit18.i50 invoke void @_ZN8WasmEdge6Loader6Loader13loadComponentERNS_3AST9Component9ComponentE(ptr dead_on_unwind nonnull writable sret(%"class.cxx20::expected.137") align 4 %15, ptr noundef nonnull align 8 dereferenceable(360) %1, ptr noundef nonnull align 8 dereferenceable(96) %152) to label %218 unwind label %221 diff --git a/bench/wireshark/optimized/packet-afp.c.ll b/bench/wireshark/optimized/packet-afp.c.ll index 06546c196bc..d070374374f 100644 --- a/bench/wireshark/optimized/packet-afp.c.ll +++ b/bench/wireshark/optimized/packet-afp.c.ll @@ -6290,9 +6290,9 @@ define internal fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr nou %16 = getelementptr inbounds nuw i8, ptr %1, i64 408 br label %17 -17: ; preds = %.lr.ph275, %230 - %.0227274 = phi i32 [ %3, %.lr.ph275 ], [ %.1228, %230 ] - %.0229273 = phi i32 [ %5, %.lr.ph275 ], [ %.1230, %230 ] +17: ; preds = %.lr.ph275, %228 + %.0227274 = phi i32 [ %3, %.lr.ph275 ], [ %.1228, %228 ] + %.0229273 = phi i32 [ %5, %.lr.ph275 ], [ %.1230, %228 ] %18 = call i64 @tvb_get_guint64(ptr noundef %0, i32 noundef %.0227274, i32 noundef %7) #7 %19 = trunc i64 %18 to i32 %20 = shl i32 %19, 3 @@ -6303,7 +6303,7 @@ define internal fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr nou 23: ; preds = %17 %24 = lshr i64 %18, 16 %trunc = trunc i64 %24 to i16 - switch i16 %trunc, label %223 [ + switch i16 %trunc, label %221 [ i16 512, label %25 i16 0, label %83 i16 256, label %104 @@ -6403,7 +6403,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 %80 = add i32 %.0227274, 8 %81 = call fastcc i32 @spotlight_dissect_query_loop(ptr noundef %0, ptr noundef %1, ptr noundef %.0, i32 noundef %80, i64 noundef %32, i32 noundef %.0232, i32 noundef %6, i32 noundef %7) %82 = add nsw i32 %.0229273, -1 - br label %230 + br label %228 83: ; preds = %23 %84 = lshr i64 %18, 32 @@ -6449,7 +6449,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 .loopexit: ; preds = %.loopexit.loopexit, %.preheader, %94, %87 %.2 = phi i32 [ 0, %87 ], [ %98, %94 ], [ %.0229273, %.preheader ], [ %102, %.loopexit.loopexit ] %103 = add i32 %21, %.0227274 - br label %230 + br label %228 104: ; preds = %23 %105 = load i32, ptr @hf_afp_bool, align 4 @@ -6459,7 +6459,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 %108 = call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_uint64_format_value(ptr noundef %2, i32 noundef %105, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, i64 noundef %106, ptr noundef nonnull @.str.1074, ptr noundef nonnull %107) #7 %109 = add nsw i32 %.0229273, -1 %110 = add i32 %21, %.0227274 - br label %230 + br label %228 111: ; preds = %23 %112 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6483,7 +6483,7 @@ spotlight_get_utf16_string_byte_order.exit: ; preds = %53, %60 spotlight_int64.exit: ; preds = %.lr.ph.i, %111 %120 = sub i32 %.0229273, %116 %121 = add i32 %21, %.0227274 - br label %230 + br label %228 122: ; preds = %23 %123 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6511,7 +6511,7 @@ spotlight_int64.exit: ; preds = %.lr.ph.i, %111 spotlight_uuid.exit: ; preds = %.lr.ph.i247, %122 %133 = sub i32 %.0229273, %127 %134 = add i32 %21, %.0227274 - br label %230 + br label %228 135: ; preds = %23 %136 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6535,7 +6535,7 @@ spotlight_uuid.exit: ; preds = %.lr.ph.i247, %122 spotlight_float.exit: ; preds = %.lr.ph.i250, %135 %144 = sub i32 %.0229273, %140 %145 = add i32 %21, %.0227274 - br label %230 + br label %228 146: ; preds = %23 switch i16 %trunc242, label %179 [ @@ -6601,7 +6601,7 @@ spotlight_get_utf16_string_byte_order.exit260: ; preds = %154, %156 179: ; preds = %172, %174, %spotlight_get_utf16_string_byte_order.exit260, %147, %146 %180 = add nsw i32 %.0229273, -1 %181 = add i32 %21, %.0227274 - br label %230 + br label %228 182: ; preds = %23 %183 = load i32, ptr @ett_afp_spotlight_query_line, align 4 @@ -6644,7 +6644,7 @@ spotlight_get_utf16_string_byte_order.exit260: ; preds = %154, %156 spotlight_CNID_array.exit: ; preds = %.lr.ph.i261, %188, %186 %205 = add nsw i32 %.0229273, -1 %206 = add i32 %21, %.0227274 - br label %230 + br label %228 207: ; preds = %23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) @@ -6680,33 +6680,29 @@ spotlight_date.exit.thread: ; preds = %207 spotlight_date.exit: ; preds = %.lr.ph.i265, %.preheader.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) - %219 = icmp eq i64 %209, 4294967295 - br i1 %219, label %.loopexit268, label %220 - -220: ; preds = %spotlight_date.exit - %221 = sub nsw i32 %.0229273, %210 - %222 = add i32 %21, %.0227274 - br label %230 - -223: ; preds = %23 - %224 = and i64 %24, 65535 - %225 = load i32, ptr @hf_afp_query_type, align 4 - %226 = call ptr @val64_to_str_const(i64 noundef %224, ptr noundef nonnull @qtype_string_values, ptr noundef nonnull @.str.1101) #7 - %227 = call ptr @proto_tree_add_string(ptr noundef %2, i32 noundef %225, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, ptr noundef %226) #7 - %228 = add nsw i32 %.0229273, -1 - %229 = add i32 %21, %.0227274 - br label %230 - -230: ; preds = %223, %220, %spotlight_CNID_array.exit, %179, %spotlight_float.exit, %spotlight_uuid.exit, %spotlight_int64.exit, %104, %.loopexit, %79 - %.1230 = phi i32 [ %228, %223 ], [ %221, %220 ], [ %205, %spotlight_CNID_array.exit ], [ %180, %179 ], [ %144, %spotlight_float.exit ], [ %133, %spotlight_uuid.exit ], [ %120, %spotlight_int64.exit ], [ %109, %104 ], [ %.2, %.loopexit ], [ %82, %79 ] - %.1228 = phi i32 [ %229, %223 ], [ %222, %220 ], [ %206, %spotlight_CNID_array.exit ], [ %181, %179 ], [ %145, %spotlight_float.exit ], [ %134, %spotlight_uuid.exit ], [ %121, %spotlight_int64.exit ], [ %110, %104 ], [ %103, %.loopexit ], [ %81, %79 ] - %231 = icmp slt i32 %.1228, %11 - %232 = icmp sgt i32 %.1230, 0 - %233 = select i1 %231, i1 %232, i1 false - br i1 %233, label %17, label %.loopexit268, !llvm.loop !21 - -.loopexit268: ; preds = %spotlight_date.exit, %17, %230, %8, %spotlight_date.exit.thread - %.0227270 = phi i32 [ %.0227274, %spotlight_date.exit.thread ], [ %3, %8 ], [ %.0227274, %spotlight_date.exit ], [ %.0227274, %17 ], [ %.1228, %230 ] + %219 = sub nsw i32 %.0229273, %210 + %220 = add i32 %21, %.0227274 + br label %228 + +221: ; preds = %23 + %222 = and i64 %24, 65535 + %223 = load i32, ptr @hf_afp_query_type, align 4 + %224 = call ptr @val64_to_str_const(i64 noundef %222, ptr noundef nonnull @qtype_string_values, ptr noundef nonnull @.str.1101) #7 + %225 = call ptr @proto_tree_add_string(ptr noundef %2, i32 noundef %223, ptr noundef %0, i32 noundef %.0227274, i32 noundef %21, ptr noundef %224) #7 + %226 = add nsw i32 %.0229273, -1 + %227 = add i32 %21, %.0227274 + br label %228 + +228: ; preds = %221, %spotlight_date.exit, %spotlight_CNID_array.exit, %179, %spotlight_float.exit, %spotlight_uuid.exit, %spotlight_int64.exit, %104, %.loopexit, %79 + %.1230 = phi i32 [ %226, %221 ], [ %219, %spotlight_date.exit ], [ %205, %spotlight_CNID_array.exit ], [ %180, %179 ], [ %144, %spotlight_float.exit ], [ %133, %spotlight_uuid.exit ], [ %120, %spotlight_int64.exit ], [ %109, %104 ], [ %.2, %.loopexit ], [ %82, %79 ] + %.1228 = phi i32 [ %227, %221 ], [ %220, %spotlight_date.exit ], [ %206, %spotlight_CNID_array.exit ], [ %181, %179 ], [ %145, %spotlight_float.exit ], [ %134, %spotlight_uuid.exit ], [ %121, %spotlight_int64.exit ], [ %110, %104 ], [ %103, %.loopexit ], [ %81, %79 ] + %229 = icmp slt i32 %.1228, %11 + %230 = icmp sgt i32 %.1230, 0 + %231 = select i1 %229, i1 %230, i1 false + br i1 %231, label %17, label %.loopexit268, !llvm.loop !21 + +.loopexit268: ; preds = %17, %228, %8, %spotlight_date.exit.thread + %.0227270 = phi i32 [ %.0227274, %spotlight_date.exit.thread ], [ %3, %8 ], [ %.0227274, %17 ], [ %.1228, %228 ] ret i32 %.0227270 } diff --git a/bench/wireshark/optimized/packet-gmr1_dtap.c.ll b/bench/wireshark/optimized/packet-gmr1_dtap.c.ll index 2253195359e..b62a974cd1e 100644 --- a/bench/wireshark/optimized/packet-gmr1_dtap.c.ll +++ b/bench/wireshark/optimized/packet-gmr1_dtap.c.ll @@ -67,10 +67,8 @@ define internal i32 @dissect_gmr1_dtap(ptr noundef %0, ptr noundef %1, ptr nound %9 = tail call i32 @tvb_captured_length(ptr noundef %0) #2 %10 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 0) #2 %11 = and i8 %10, 15 - %12 = icmp eq i8 %11, 14 - %. = select i1 %12, i8 %10, i8 %11 - %.not = icmp eq i8 %., 6 - br i1 %.not, label %17, label %13 + %12 = icmp eq i8 %11, 6 + br i1 %12, label %17, label %13 13: ; preds = %4 %14 = load ptr, ptr @gsm_dtap_handle, align 8 @@ -116,12 +114,12 @@ define internal i32 @dissect_gmr1_dtap(ptr noundef %0, ptr noundef %1, ptr nound %40 = call ptr @proto_tree_add_uint(ptr noundef %.049, i32 noundef %39, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 6) #2 %41 = load i32, ptr %8, align 4 %42 = load ptr, ptr %6, align 8 - %.not54 = icmp eq ptr %42, null - %43 = select i1 %.not54, ptr @.str.18, ptr %42 + %.not = icmp eq ptr %42, null + %43 = select i1 %.not, ptr @.str.18, ptr %42 %44 = call ptr (ptr, i32, ptr, i32, i32, i32, ptr, ...) @proto_tree_add_uint_format(ptr noundef %.049, i32 noundef %41, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef %23, ptr noundef nonnull @.str.17, ptr noundef nonnull %43) #2 %45 = load ptr, ptr %5, align 8 - %.not55 = icmp eq ptr %45, null - br i1 %.not55, label %48, label %46 + %.not54 = icmp eq ptr %45, null + br i1 %.not54, label %48, label %46 46: ; preds = %38 %47 = add i32 %9, -2 diff --git a/bench/wireshark/optimized/packet-icmp.c.ll b/bench/wireshark/optimized/packet-icmp.c.ll index ec2be6045b1..cd3ca560931 100644 --- a/bench/wireshark/optimized/packet-icmp.c.ll +++ b/bench/wireshark/optimized/packet-icmp.c.ll @@ -1605,36 +1605,36 @@ _find_or_create_conversation.exit.i: ; preds = %427, %415 %477 = load ptr, ptr %476, align 8 %478 = load i8, ptr %477, align 1 %479 = and i8 %478, -16 - %480 = icmp eq i8 %479, -32 - br i1 %480, label %._crit_edge.i, label %481 - -481: ; preds = %475 - %482 = zext i8 %478 to i32 - %483 = shl nuw i32 %482, 24 - %484 = getelementptr i8, ptr %477, i64 1 - %485 = load i8, ptr %484, align 1 - %486 = zext i8 %485 to i32 - %487 = shl nuw nsw i32 %486, 16 - %488 = or disjoint i32 %487, %483 - %489 = getelementptr i8, ptr %477, i64 2 - %490 = load i8, ptr %489, align 1 - %491 = zext i8 %490 to i32 - %492 = shl nuw nsw i32 %491, 8 - %493 = or disjoint i32 %488, %492 - %494 = getelementptr i8, ptr %477, i64 3 - %495 = load i8, ptr %494, align 1 - %496 = zext i8 %495 to i32 - %497 = or disjoint i32 %493, %496 - %498 = icmp eq i32 %497, -1 - br i1 %498, label %._crit_edge.i, label %500 - -._crit_edge.i: ; preds = %481, %475 - %.pre-phi76.i = phi ptr [ @.str.311, %481 ], [ @.str.312, %475 ] + %.not77.i = icmp eq i8 %479, -32 + br i1 %.not77.i, label %._crit_edge.i, label %480 + +480: ; preds = %475 + %481 = zext i8 %478 to i32 + %482 = shl nuw i32 %481, 24 + %483 = getelementptr i8, ptr %477, i64 1 + %484 = load i8, ptr %483, align 1 + %485 = zext i8 %484 to i32 + %486 = shl nuw nsw i32 %485, 16 + %487 = or disjoint i32 %486, %482 + %488 = getelementptr i8, ptr %477, i64 2 + %489 = load i8, ptr %488, align 1 + %490 = zext i8 %489 to i32 + %491 = shl nuw nsw i32 %490, 8 + %492 = or disjoint i32 %487, %491 + %493 = getelementptr i8, ptr %477, i64 3 + %494 = load i8, ptr %493, align 1 + %495 = zext i8 %494 to i32 + %496 = or disjoint i32 %492, %495 + %497 = icmp eq i32 %496, -1 + br i1 %497, label %._crit_edge.i, label %500 + +._crit_edge.i: ; preds = %480, %475 + %498 = phi ptr [ @.str.311, %480 ], [ @.str.312, %475 ] %499 = load ptr, ptr %23, align 8 - call void @col_append_str(ptr noundef %499, i32 noundef 25, ptr noundef nonnull %.pre-phi76.i) #5 + call void @col_append_str(ptr noundef %499, i32 noundef 25, ptr noundef nonnull %498) #5 br label %transaction_start.exit -500: ; preds = %481, %472 +500: ; preds = %480, %472 %501 = load ptr, ptr %445, align 8 %502 = getelementptr inbounds nuw i8, ptr %501, i64 50 %503 = load i16, ptr %502, align 2 diff --git a/bench/wireshark/optimized/packet-tds.c.ll b/bench/wireshark/optimized/packet-tds.c.ll index d59e7469cd5..c2b83ab9429 100644 --- a/bench/wireshark/optimized/packet-tds.c.ll +++ b/bench/wireshark/optimized/packet-tds.c.ll @@ -4723,21 +4723,21 @@ define internal fastcc void @dissect_tds_resp(ptr noundef nonnull %0, ptr nounde br i1 %47, label %dissect_tds_prelogin_response.exit, label %.lr.ph 48: ; preds = %63 - %49 = add i32 %.02436.i331, 5 + %49 = add i32 %.02433.i330, 5 %50 = tail call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %49) #11 %51 = icmp sgt i32 %50, 0 br i1 %51, label %.lr.ph.i, label %dissect_tds_prelogin_response.exit, !llvm.loop !12 .lr.ph.i: ; preds = %48 %52 = tail call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %49) #11 - %53 = add i32 %.02436.i331, 6 + %53 = add i32 %.02433.i330, 6 %54 = icmp eq i8 %52, -1 br i1 %54, label %dissect_tds_prelogin_response.exit.thread, label %.lr.ph, !llvm.loop !12 .lr.ph: ; preds = %.lr.ph.i.preheader, %.lr.ph.i %55 = phi i32 [ %53, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ] %56 = phi i8 [ %52, %.lr.ph.i ], [ %46, %.lr.ph.i.preheader ] - %.02436.i331 = phi i32 [ %49, %.lr.ph.i ], [ 0, %.lr.ph.i.preheader ] + %.02433.i330 = phi i32 [ %49, %.lr.ph.i ], [ 0, %.lr.ph.i.preheader ] %57 = icmp ult i8 %56, 8 br i1 %57, label %58, label %dissect_tds_prelogin_response.exit @@ -4749,7 +4749,7 @@ define internal fastcc void @dissect_tds_resp(ptr noundef nonnull %0, ptr nounde br i1 %62, label %dissect_tds_prelogin_response.exit, label %63 63: ; preds = %58 - %64 = add i32 %.02436.i331, 3 + %64 = add i32 %.02433.i330, 3 %65 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef nonnull %0, i32 noundef %64) #11 %66 = zext i16 %65 to i32 %67 = tail call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef 0) #11 @@ -4758,14 +4758,14 @@ define internal fastcc void @dissect_tds_resp(ptr noundef nonnull %0, ptr nounde dissect_tds_prelogin_response.exit.thread: ; preds = %.lr.ph.i tail call fastcc void @dissect_tds7_prelogin_packet(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef 1) - br label %.thread306 + br label %.thread305 dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, %63, %.lr.ph.i.preheader, %4 %69 = tail call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef 0) #11 %70 = icmp sgt i32 %69, 0 - br i1 %70, label %.lr.ph337, label %.thread306 + br i1 %70, label %.lr.ph336, label %.thread305 -.lr.ph337: ; preds = %dissect_tds_prelogin_response.exit +.lr.ph336: ; preds = %dissect_tds_prelogin_response.exit %71 = getelementptr inbounds nuw i8, ptr %3, i64 8 %72 = getelementptr i8, ptr %3, i64 24 %73 = getelementptr inbounds nuw i8, ptr %43, i64 8 @@ -4773,9 +4773,9 @@ dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, % %75 = getelementptr i8, ptr %3, i64 28 br label %76 -76: ; preds = %.lr.ph337, %1353 - %.0202332 = phi i32 [ 0, %.lr.ph337 ], [ %.1203, %1353 ] - %77 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %.0202332) #11 +76: ; preds = %.lr.ph336, %1353 + %.0202331 = phi i32 [ 0, %.lr.ph336 ], [ %.1203, %1353 ] + %77 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %.0202331) #11 %78 = load i32, ptr @tds_protocol_type, align 4 %79 = icmp eq i32 %78, 65535 br i1 %79, label %80, label %83 @@ -4916,11 +4916,11 @@ dissect_tds_prelogin_response.exit: ; preds = %48, %.lr.ph, %58, % tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %89, %90, %91, %92, %93, %94, %95, %96, %97, %98, %99, %100, %101, %102, %103, %104, %105, %106, %107, %108, %109, %110, %111, %112, %113, %114, %115 %.0.in.i = phi ptr [ @hf_tds_unknown_tds_token, %115 ], [ @hf_tds_rowfmt2, %114 ], [ @hf_tds_rowfmt, %113 ], [ @hf_tds_row, %112 ], [ @hf_tds_returnstatus, %111 ], [ @hf_tds_procid, %110 ], [ @hf_tds_params, %109 ], [ @hf_tds_paramfmt2, %108 ], [ @hf_tds_paramfmt, %107 ], [ @hf_tds_order, %106 ], [ @hf_tds_offset, %105 ], [ @hf_tds_msg, %104 ], [ @hf_tds_logout, %103 ], [ @hf_tds_loginack, %102 ], [ @hf_tds_info, %101 ], [ @hf_tds_error, %100 ], [ @hf_tds_envchg, %99 ], [ @hf_tds_eed, %98 ], [ @hf_tds_doneinproc, %97 ], [ @hf_tds_doneproc, %96 ], [ @hf_tds_done, %95 ], [ @hf_tds_dbrpc, %94 ], [ @hf_tds_curopen, %93 ], [ @hf_tds_curinfo, %92 ], [ @hf_tds_curfetch, %91 ], [ @hf_tds_curdeclare, %90 ], [ @hf_tds_curclose, %89 ], [ @hf_tds_control, %88 ], [ @hf_tds_colname, %87 ], [ @hf_tds_colfmt, %86 ], [ @hf_tds_capability, %85 ] %.0.i = load i32, ptr %.0.in.i, align 4 - %116 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202332) #11 - %117 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i, ptr noundef nonnull %0, i32 noundef %.0202332, i32 noundef %116, i32 noundef 0) #11 + %116 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202331) #11 + %117 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i, ptr noundef nonnull %0, i32 noundef %.0202331, i32 noundef %116, i32 noundef 0) #11 %118 = load i32, ptr @ett_tds_token, align 4 %119 = call ptr @proto_item_add_subtree(ptr noundef %117, i32 noundef %118) #11 - switch i8 %77, label %.thread300 [ + switch i8 %77, label %.thread299 [ i8 -30, label %120 i8 -125, label %124 i8 -3, label %128 @@ -4947,38 +4947,38 @@ tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, ] 120: ; preds = %tds45_token_to_idx.exit - %121 = add i32 %.0202332, 1 + %121 = add i32 %.0202331, 1 %.val = load i32, ptr %74, align 4 %122 = call fastcc i32 @dissect_tds5_capability_token(ptr noundef %0, ptr noundef %1, i32 noundef %121, ptr noundef %119, i32 %.val) %123 = add i32 %122, 1 br label %755 124: ; preds = %tds45_token_to_idx.exit - %125 = add i32 %.0202332, 1 + %125 = add i32 %.0202331, 1 %126 = call fastcc i32 @dissect_tds5_curinfo_token(ptr noundef %0, ptr noundef %1, i32 noundef %125, ptr noundef %119, ptr noundef %3) %127 = add i32 %126, 1 br label %755 128: ; preds = %tds45_token_to_idx.exit - %129 = add i32 %.0202332, 1 + %129 = add i32 %.0202331, 1 %130 = call fastcc i32 @dissect_tds_done_token(ptr noundef %0, i32 noundef %129, ptr noundef %119, ptr noundef %3) %131 = add i32 %130, 1 br label %755 132: ; preds = %tds45_token_to_idx.exit - %133 = add i32 %.0202332, 1 + %133 = add i32 %.0202331, 1 %134 = call fastcc i32 @dissect_tds_doneproc_token(ptr noundef %0, i32 noundef %133, ptr noundef %119, ptr noundef %3) %135 = add i32 %134, 1 br label %755 136: ; preds = %tds45_token_to_idx.exit - %137 = add i32 %.0202332, 1 + %137 = add i32 %.0202331, 1 %138 = call fastcc i32 @dissect_tds_doneinproc_token(ptr noundef %0, i32 noundef %137, ptr noundef %119, ptr noundef %3) %139 = add i32 %138, 1 br label %755 140: ; preds = %tds45_token_to_idx.exit - %141 = add i32 %.0202332, 1 + %141 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) %142 = load i32, ptr @hf_tds_eed_length, align 4 @@ -4986,19 +4986,19 @@ tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %143 = icmp eq i32 %.val56.i, 2 %144 = select i1 %143, i32 0, i32 -2147483648 %145 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %142, ptr noundef nonnull %0, i32 noundef %141, i32 noundef 2, i32 noundef %144) #11 - %146 = add i32 %.0202332, 3 + %146 = add i32 %.0202331, 3 %147 = load i32, ptr @hf_tds_eed_number, align 4 %.val57.i = load i32, ptr %72, align 8 %148 = icmp eq i32 %.val57.i, 0 %149 = select i1 %148, i32 0, i32 -2147483648 %150 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %147, ptr noundef nonnull %0, i32 noundef %146, i32 noundef 4, i32 noundef %149) #11 - %151 = add i32 %.0202332, 7 + %151 = add i32 %.0202331, 7 %152 = load i32, ptr @hf_tds_eed_state, align 4 %153 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %152, ptr noundef nonnull %0, i32 noundef %151, i32 noundef 1, i32 noundef 0) #11 - %154 = add i32 %.0202332, 8 + %154 = add i32 %.0202331, 8 %155 = load i32, ptr @hf_tds_eed_class, align 4 %156 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %155, ptr noundef nonnull %0, i32 noundef %154, i32 noundef 1, i32 noundef 0) #11 - %157 = add i32 %.0202332, 9 + %157 = add i32 %.0202331, 9 %158 = load i32, ptr @hf_tds_eed_sql_state, align 4 %159 = call ptr @proto_tree_add_item_ret_length(ptr noundef %119, i32 noundef %158, ptr noundef nonnull %0, i32 noundef %157, i32 noundef 1, i32 noundef 0, ptr noundef nonnull %42) #11 %160 = load i32, ptr %42, align 4 @@ -5050,18 +5050,18 @@ tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %188 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %185, ptr noundef nonnull %0, i32 noundef %184, i32 noundef 2, i32 noundef %187) #11 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) - %reass.sub = sub i32 %184, %.0202332 + %reass.sub = sub i32 %184, %.0202331 %189 = add i32 %reass.sub, 2 br label %755 190: ; preds = %tds45_token_to_idx.exit - %191 = add i32 %.0202332, 1 + %191 = add i32 %.0202331, 1 %192 = call fastcc i32 @dissect_tds_envchg_token(ptr noundef %0, i32 noundef %191, ptr noundef %119, ptr noundef %3) %193 = add i32 %192, 1 br label %755 194: ; preds = %tds45_token_to_idx.exit - %195 = add i32 %.0202332, 1 + %195 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) %196 = load i32, ptr @hf_tds_colname_length, align 4 @@ -5069,7 +5069,7 @@ tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %197 = icmp eq i32 %.val.i208, 2 %198 = select i1 %197, i32 0, i32 -2147483648 %199 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %196, ptr noundef nonnull %0, i32 noundef %195, i32 noundef 2, i32 noundef %198, ptr noundef nonnull %39) #11 - %200 = add i32 %.0202332, 3 + %200 = add i32 %.0202331, 3 %201 = load i32, ptr %39, align 4 %202 = add i32 %201, %200 %203 = icmp ult i32 %200, %202 @@ -5139,7 +5139,7 @@ tds45_token_to_idx.exit: ; preds = %85, %86, %87, %88, %.036.lcssa.i = phi i32 [ 0, %194 ], [ %224, %227 ] %.035.lcssa.i = phi i32 [ %200, %194 ], [ %230, %227 ] store i32 %.036.lcssa.i, ptr %43, align 8 - %232 = sub i32 %.035.lcssa.i, %.0202332 + %232 = sub i32 %.035.lcssa.i, %.0202331 br label %dissect_tds_col_name_token.exit dissect_tds_col_name_token.exit: ; preds = %204, %._crit_edge.i @@ -5149,7 +5149,7 @@ dissect_tds_col_name_token.exit: ; preds = %204, %._crit_edge.i br label %755 233: ; preds = %tds45_token_to_idx.exit - %234 = add i32 %.0202332, 1 + %234 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) %235 = load i32, ptr @hf_tds_colfmt_length, align 4 @@ -5157,7 +5157,7 @@ dissect_tds_col_name_token.exit: ; preds = %204, %._crit_edge.i %236 = icmp eq i32 %.val122.i, 2 %237 = select i1 %236, i32 0, i32 -2147483648 %238 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %235, ptr noundef nonnull %0, i32 noundef %234, i32 noundef 2, i32 noundef %237, ptr noundef nonnull %37) #11 - %239 = add i32 %.0202332, 3 + %239 = add i32 %.0202331, 3 %240 = load i32, ptr %37, align 4 %241 = add i32 %240, %239 %242 = icmp ult i32 %239, %241 @@ -5296,7 +5296,7 @@ dissect_tds_col_name_token.exit: ; preds = %204, %._crit_edge.i %.0116.lcssa.i = phi i32 [ 0, %233 ], [ %249, %303 ] %.0115.lcssa.i = phi i32 [ %239, %233 ], [ %.1.i, %303 ] store i32 %.0116.lcssa.i, ptr %43, align 8 - %306 = sub i32 %.0115.lcssa.i, %.0202332 + %306 = sub i32 %.0115.lcssa.i, %.0202331 br label %dissect_tds_colfmt_token.exit dissect_tds_colfmt_token.exit: ; preds = %243, %._crit_edge.i215 @@ -5306,14 +5306,14 @@ dissect_tds_colfmt_token.exit: ; preds = %243, %._crit_edge.i br label %755 307: ; preds = %tds45_token_to_idx.exit - %308 = add i32 %.0202332, 1 + %308 = add i32 %.0202331, 1 %.val205 = load i32, ptr %74, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) %309 = load i32, ptr @hf_tds_control_length, align 4 %310 = icmp eq i32 %.val205, 2 %311 = select i1 %310, i32 0, i32 -2147483648 %312 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %309, ptr noundef nonnull %0, i32 noundef %308, i32 noundef 2, i32 noundef %311, ptr noundef nonnull %36) #11 - %313 = add i32 %.0202332, 3 + %313 = add i32 %.0202331, 3 %314 = load i32, ptr %36, align 4 %315 = add i32 %314, %313 %316 = icmp ult i32 %313, %315 @@ -5352,7 +5352,7 @@ dissect_tds_colfmt_token.exit: ; preds = %243, %._crit_edge.i ._crit_edge.i225: ; preds = %324, %307 %.022.lcssa.i = phi i32 [ %313, %307 ], [ %328, %324 ] - %330 = sub i32 %.022.lcssa.i, %.0202332 + %330 = sub i32 %.022.lcssa.i, %.0202331 br label %dissect_tds_control_token.exit dissect_tds_control_token.exit: ; preds = %317, %._crit_edge.i225 @@ -5361,31 +5361,31 @@ dissect_tds_control_token.exit: ; preds = %317, %._crit_edge.i br label %755 331: ; preds = %tds45_token_to_idx.exit - %332 = add i32 %.0202332, 1 + %332 = add i32 %.0202331, 1 %333 = call fastcc i32 @dissect_tds_error_token(ptr noundef %0, i32 noundef %332, ptr noundef %119, ptr noundef %3) %334 = add i32 %333, 1 br label %755 335: ; preds = %tds45_token_to_idx.exit - %336 = add i32 %.0202332, 1 + %336 = add i32 %.0202331, 1 %337 = call fastcc i32 @dissect_tds_info_token(ptr noundef %0, i32 noundef %336, ptr noundef %119, ptr noundef %3) %338 = add i32 %337, 1 br label %755 339: ; preds = %tds45_token_to_idx.exit - %340 = add i32 %.0202332, 1 + %340 = add i32 %.0202331, 1 %341 = call fastcc i32 @dissect_tds_login_ack_token(ptr noundef %0, ptr noundef %1, i32 noundef %340, ptr noundef %119, ptr noundef %3) %342 = add nuw nsw i32 %341, 1 br label %.thread 343: ; preds = %tds45_token_to_idx.exit - %344 = add i32 %.0202332, 1 + %344 = add i32 %.0202331, 1 %345 = load i32, ptr @hf_tds_msg_length, align 4 %346 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %345, ptr noundef nonnull %0, i32 noundef %344, i32 noundef 1, i32 noundef 0) #11 - %347 = add i32 %.0202332, 2 + %347 = add i32 %.0202331, 2 %348 = load i32, ptr @hf_tds_msg_status, align 4 %349 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %348, ptr noundef nonnull %0, i32 noundef %347, i32 noundef 1, i32 noundef 0) #11 - %350 = add i32 %.0202332, 3 + %350 = add i32 %.0202331, 3 %351 = load i32, ptr @hf_tds_msg_msgid, align 4 %.val.i231 = load i32, ptr %74, align 4 %352 = icmp eq i32 %.val.i231, 2 @@ -5394,25 +5394,25 @@ dissect_tds_control_token.exit: ; preds = %317, %._crit_edge.i br label %.thread 355: ; preds = %tds45_token_to_idx.exit - %356 = add i32 %.0202332, 1 + %356 = add i32 %.0202331, 1 %357 = call fastcc i32 @dissect_tds_order_token(ptr noundef %0, i32 noundef %356, ptr noundef %119, ptr noundef %3) %358 = add i32 %357, 1 br label %755 359: ; preds = %tds45_token_to_idx.exit - %360 = add i32 %.0202332, 1 + %360 = add i32 %.0202331, 1 %361 = call fastcc i32 @dissect_tds_paramfmt_token(ptr noundef %119, ptr noundef %0, i32 noundef %360, ptr noundef %3, ptr noundef %43) %362 = add i32 %361, 1 br label %755 363: ; preds = %tds45_token_to_idx.exit - %364 = add i32 %.0202332, 1 + %364 = add i32 %.0202331, 1 %365 = call fastcc i32 @dissect_tds_paramfmt2_token(ptr noundef %119, ptr noundef %0, i32 noundef %364, ptr noundef %3, ptr noundef %43) %366 = add i32 %365, 1 br label %755 367: ; preds = %tds45_token_to_idx.exit - %368 = add i32 %.0202332, 1 + %368 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) store i32 %368, ptr %35, align 4 %369 = load i32, ptr %43, align 8 @@ -5436,8 +5436,8 @@ dissect_tds_control_token.exit: ; preds = %317, %._crit_edge.i %379 = load ptr, ptr %374, align 8 %380 = trunc nuw i64 %indvars.iv.next.i235 to i32 call fastcc void @dissect_tds_type_varbyte(ptr noundef nonnull %0, ptr noundef %35, ptr noundef %1, ptr noundef %119, i32 noundef %372, ptr noundef readonly %3, i8 noundef zeroext %376, i8 noundef zeroext %378, i32 noundef 0, i32 noundef %380, ptr noundef %379) - %exitcond351.not = icmp eq i64 %indvars.iv.next.i235, %370 - br i1 %exitcond351.not, label %._crit_edge.loopexit.i236, label %371, !llvm.loop !10 + %exitcond350.not = icmp eq i64 %indvars.iv.next.i235, %370 + br i1 %exitcond350.not, label %._crit_edge.loopexit.i236, label %371, !llvm.loop !10 ._crit_edge.loopexit.i236: ; preds = %371 %.pre.i = load i32, ptr %35, align 4 @@ -5449,17 +5449,17 @@ dissect_tds5_params_token.exit: ; preds = %367, %._crit_edge.l call void @proto_item_set_len(ptr noundef %117, i32 noundef %382) #11 %383 = load i32, ptr %35, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) - %384 = sub i32 %383, %.0202332 + %384 = sub i32 %383, %.0202331 br label %755 385: ; preds = %tds45_token_to_idx.exit - %386 = add i32 %.0202332, 1 + %386 = add i32 %.0202331, 1 %387 = load i32, ptr @hf_tds_procid_value, align 4 %388 = call ptr @proto_tree_add_item(ptr noundef %119, i32 noundef %387, ptr noundef nonnull %0, i32 noundef %386, i32 noundef 8, i32 noundef 0) #11 br label %.thread 389: ; preds = %tds45_token_to_idx.exit - %390 = add i32 %.0202332, 1 + %390 = add i32 %.0202331, 1 %.val206 = load i32, ptr %72, align 8 %391 = load i32, ptr @hf_tds_returnstatus_value, align 4 %392 = icmp eq i32 %.val206, 0 @@ -5468,13 +5468,13 @@ dissect_tds5_params_token.exit: ; preds = %367, %._crit_edge.l br label %.thread 395: ; preds = %tds45_token_to_idx.exit - %396 = add i32 %.0202332, 1 + %396 = add i32 %.0202331, 1 %397 = call fastcc i32 @dissect_tds_row_token(ptr noundef %0, ptr noundef %1, ptr noundef %43, i32 noundef %396, ptr noundef %119, ptr noundef %3) %398 = add i32 %397, 1 br label %755 399: ; preds = %tds45_token_to_idx.exit - %400 = add i32 %.0202332, 1 + %400 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) @@ -5493,14 +5493,14 @@ dissect_tds5_params_token.exit: ; preds = %367, %._crit_edge.l %406 = select i1 %405, i32 0, i32 -2147483648 %407 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %404, ptr noundef nonnull %0, i32 noundef %400, i32 noundef 2, i32 noundef %406, ptr noundef nonnull %26) #11 %408 = load i32, ptr @hf_tds_rowfmt_numcols, align 4 - %409 = add i32 %.0202332, 3 + %409 = add i32 %.0202331, 3 %.val166.i = load i32, ptr %74, align 4 %410 = icmp eq i32 %.val166.i, 2 %411 = select i1 %410, i32 0, i32 -2147483648 %412 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %408, ptr noundef nonnull %0, i32 noundef %409, i32 noundef 2, i32 noundef %411, ptr noundef nonnull %27) #11 %413 = load i32, ptr %26, align 4 %414 = add i32 %413, %409 - %415 = add i32 %.0202332, 5 + %415 = add i32 %.0202331, 5 %416 = icmp ult i32 %415, %414 br i1 %416, label %.lr.ph.i240, label %._crit_edge.i238 @@ -5756,8 +5756,8 @@ dissect_tds5_params_token.exit: ; preds = %367, %._crit_edge.l %549 = getelementptr inbounds nuw i8, ptr %529, i64 18 store i8 %548, ptr %549, align 2 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 - %exitcond350.not = icmp eq i64 %indvars.iv.next.i.i, %525 - br i1 %exitcond350.not, label %copy_nl_data.exit.i, label %526, !llvm.loop !17 + %exitcond349.not = icmp eq i64 %indvars.iv.next.i.i, %525 + br i1 %exitcond349.not, label %copy_nl_data.exit.i, label %526, !llvm.loop !17 copy_nl_data.exit.i: ; preds = %534, %521 %550 = getelementptr inbounds nuw i8, ptr %403, i64 16 @@ -5768,7 +5768,7 @@ copy_nl_data.exit.i: ; preds = %534, %521 br label %553 553: ; preds = %copy_nl_data.exit.i, %517, %._crit_edge.i238 - %554 = sub i32 %.0158.lcssa.i, %.0202332 + %554 = sub i32 %.0158.lcssa.i, %.0202331 br label %dissect_tds_rowfmt_token.exit dissect_tds_rowfmt_token.exit: ; preds = %417, %553 @@ -5785,7 +5785,7 @@ dissect_tds_rowfmt_token.exit: ; preds = %417, %553 br label %755 555: ; preds = %tds45_token_to_idx.exit - %556 = add i32 %.0202332, 1 + %556 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) @@ -5811,14 +5811,14 @@ dissect_tds_rowfmt_token.exit: ; preds = %417, %553 %562 = select i1 %561, i32 0, i32 -2147483648 %563 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %560, ptr noundef nonnull %0, i32 noundef %556, i32 noundef 4, i32 noundef %562, ptr noundef nonnull %10) #11 %564 = load i32, ptr @hf_tds_rowfmt2_numcols, align 4 - %565 = add i32 %.0202332, 5 + %565 = add i32 %.0202331, 5 %.val173.i251 = load i32, ptr %74, align 4 %566 = icmp eq i32 %.val173.i251, 2 %567 = select i1 %566, i32 0, i32 -2147483648 %568 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %119, i32 noundef %564, ptr noundef nonnull %0, i32 noundef %565, i32 noundef 2, i32 noundef %567, ptr noundef nonnull %11) #11 %569 = load i32, ptr %10, align 4 %570 = add i32 %569, %565 - %571 = add i32 %.0202332, 7 + %571 = add i32 %.0202331, 7 %572 = icmp ult i32 %571, %570 br i1 %572, label %.lr.ph.i260, label %._crit_edge.i252 @@ -6172,7 +6172,7 @@ copy_nl_data.exit.i259: ; preds = %734, %721 br label %753 753: ; preds = %copy_nl_data.exit.i259, %717, %._crit_edge.i252 - %754 = sub i32 %.0164.lcssa.i, %.0202332 + %754 = sub i32 %.0164.lcssa.i, %.0202331 br label %dissect_tds_rowfmt2_token.exit dissect_tds_rowfmt2_token.exit: ; preds = %573, %753 @@ -6198,15 +6198,15 @@ dissect_tds_rowfmt2_token.exit: ; preds = %573, %753 755: ; preds = %dissect_tds_rowfmt2_token.exit, %dissect_tds_rowfmt_token.exit, %395, %dissect_tds5_params_token.exit, %363, %359, %355, %335, %331, %dissect_tds_control_token.exit, %dissect_tds_colfmt_token.exit, %dissect_tds_col_name_token.exit, %190, %140, %136, %132, %128, %124, %120 %.0 = phi i32 [ %.0163.i, %dissect_tds_rowfmt2_token.exit ], [ %.0157.i, %dissect_tds_rowfmt_token.exit ], [ %398, %395 ], [ %384, %dissect_tds5_params_token.exit ], [ %366, %363 ], [ %362, %359 ], [ %358, %355 ], [ %338, %335 ], [ %334, %331 ], [ %.023.i, %dissect_tds_control_token.exit ], [ %.0114.i, %dissect_tds_colfmt_token.exit ], [ %.0.i209, %dissect_tds_col_name_token.exit ], [ %193, %190 ], [ %189, %140 ], [ %139, %136 ], [ %135, %132 ], [ %131, %128 ], [ %127, %124 ], [ %123, %120 ] %756 = icmp eq i32 %.0, 0 - br i1 %756, label %.thread300, label %.thread + br i1 %756, label %.thread299, label %.thread -.thread300: ; preds = %tds45_token_to_idx.exit, %755 +.thread299: ; preds = %tds45_token_to_idx.exit, %755 %757 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %117, ptr noundef nonnull @ei_tds_token_length_invalid, ptr noundef nonnull @.str.1336, i32 noundef 0) #11 - br label %.thread306 + br label %.thread305 .thread: ; preds = %339, %343, %385, %389, %755 - %.0299 = phi i32 [ %.0, %755 ], [ %342, %339 ], [ 5, %343 ], [ 9, %385 ], [ 5, %389 ] - call void @proto_item_set_len(ptr noundef %117, i32 noundef %.0299) #11 + %.0298 = phi i32 [ %.0, %755 ], [ %342, %339 ], [ 5, %343 ], [ 9, %385 ], [ 5, %389 ] + call void @proto_item_set_len(ptr noundef %117, i32 noundef %.0298) #11 br label %1353 758: ; preds = %83, %80 @@ -6288,11 +6288,11 @@ dissect_tds_rowfmt2_token.exit: ; preds = %573, %753 tds7_token_to_idx.exit: ; preds = %758, %759, %760, %761, %762, %763, %764, %765, %766, %767, %768, %769, %770, %771, %772, %773, %774, %775, %776 %.0.in.i272 = phi ptr [ @hf_tds_unknown_tds_token, %776 ], [ @hf_tds_sspi, %775 ], [ @hf_tds_sessionstate, %774 ], [ @hf_tds_row, %773 ], [ @hf_tds_returnstatus, %772 ], [ @hf_tds_order, %771 ], [ @hf_tds_offset, %770 ], [ @hf_tds_nbcrow, %769 ], [ @hf_tds_loginack, %768 ], [ @hf_tds_info, %767 ], [ @hf_tds_featureextack, %766 ], [ @hf_tds_error, %765 ], [ @hf_tds_envchg, %764 ], [ @hf_tds_doneinproc, %763 ], [ @hf_tds_doneproc, %762 ], [ @hf_tds_done, %761 ], [ @hf_tds_colmetadata, %760 ], [ @hf_tds_colfmt, %759 ], [ @hf_tds_capability, %758 ] %.0.i273 = load i32, ptr %.0.in.i272, align 4 - %777 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202332) #11 - %778 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i273, ptr noundef nonnull %0, i32 noundef %.0202332, i32 noundef %777, i32 noundef 0) #11 + %777 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.0202331) #11 + %778 = call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %.0.i273, ptr noundef nonnull %0, i32 noundef %.0202331, i32 noundef %777, i32 noundef 0) #11 %779 = load i32, ptr @ett_tds_token, align 4 %780 = call ptr @proto_item_add_subtree(ptr noundef %778, i32 noundef %779) #11 - switch i8 %77, label %.thread306 [ + switch i8 %77, label %.thread305 [ i8 -127, label %781 i8 -3, label %1175 i8 -2, label %1179 @@ -6312,7 +6312,7 @@ tds7_token_to_idx.exit: ; preds = %758, %759, %760, %7 ] 781: ; preds = %tds7_token_to_idx.exit - %782 = add i32 %.0202332, 1 + %782 = add i32 %.0202331, 1 %783 = load i32, ptr @tds_little_endian, align 4 %.not.i274 = icmp eq i32 %783, 0 %784 = select i1 %.not.i274, i32 0, i32 -2147483648 @@ -6326,10 +6326,10 @@ tds7_token_to_idx.exit: ; preds = %758, %759, %760, %7 dissect_tds7_colmetadata_token.exit.thread: ; preds = %781 store i32 0, ptr %43, align 8 - br label %.thread303 + br label %.thread302 790: ; preds = %781 - %791 = add i32 %.0202332, 3 + %791 = add i32 %.0202331, 3 %.not626659.i = icmp eq i16 %785, 0 br i1 %.not626659.i, label %._crit_edge.i278, label %.lr.ph662.i @@ -7010,47 +7010,47 @@ thread-pre-split690.i: ; preds = %.thread647.i ._crit_edge.i278: ; preds = %1172, %790 %.0602.lcssa.i = phi i32 [ %791, %790 ], [ %.11.i, %1172 ] - %1174 = sub i32 %.0602.lcssa.i, %.0202332 + %1174 = sub i32 %.0602.lcssa.i, %.0202331 br label %dissect_tds7_colmetadata_token.exit 1175: ; preds = %tds7_token_to_idx.exit - %1176 = add i32 %.0202332, 1 + %1176 = add i32 %.0202331, 1 %1177 = call fastcc i32 @dissect_tds_done_token(ptr noundef %0, i32 noundef %1176, ptr noundef %780, ptr noundef %3) %1178 = add i32 %1177, 1 br label %dissect_tds7_colmetadata_token.exit 1179: ; preds = %tds7_token_to_idx.exit - %1180 = add i32 %.0202332, 1 + %1180 = add i32 %.0202331, 1 %1181 = call fastcc i32 @dissect_tds_doneproc_token(ptr noundef %0, i32 noundef %1180, ptr noundef %780, ptr noundef %3) %1182 = add i32 %1181, 1 br label %dissect_tds7_colmetadata_token.exit 1183: ; preds = %tds7_token_to_idx.exit - %1184 = add i32 %.0202332, 1 + %1184 = add i32 %.0202331, 1 %1185 = call fastcc i32 @dissect_tds_doneinproc_token(ptr noundef %0, i32 noundef %1184, ptr noundef %780, ptr noundef %3) %1186 = add i32 %1185, 1 br label %dissect_tds7_colmetadata_token.exit 1187: ; preds = %tds7_token_to_idx.exit - %1188 = add i32 %.0202332, 1 + %1188 = add i32 %.0202331, 1 %1189 = call fastcc i32 @dissect_tds_envchg_token(ptr noundef %0, i32 noundef %1188, ptr noundef %780, ptr noundef %3) %1190 = add i32 %1189, 1 br label %dissect_tds7_colmetadata_token.exit 1191: ; preds = %tds7_token_to_idx.exit - %1192 = add i32 %.0202332, 1 + %1192 = add i32 %.0202331, 1 %1193 = call fastcc i32 @dissect_tds_error_token(ptr noundef %0, i32 noundef %1192, ptr noundef %780, ptr noundef %3) %1194 = add i32 %1193, 1 br label %dissect_tds7_colmetadata_token.exit 1195: ; preds = %tds7_token_to_idx.exit - %1196 = add i32 %.0202332, 1 + %1196 = add i32 %.0202331, 1 %1197 = call fastcc i32 @dissect_tds_info_token(ptr noundef %0, i32 noundef %1196, ptr noundef %780, ptr noundef %3) %1198 = add i32 %1197, 1 br label %dissect_tds7_colmetadata_token.exit 1199: ; preds = %tds7_token_to_idx.exit - %1200 = add i32 %.0202332, 1 + %1200 = add i32 %.0202331, 1 %1201 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %1200) #11 %1202 = icmp sgt i32 %1201, 0 br i1 %1202, label %.lr.ph.i284, label %dissect_tds_featureextack_token.exit @@ -7084,17 +7084,17 @@ thread-pre-split690.i: ; preds = %.thread647.i dissect_tds_featureextack_token.exit: ; preds = %.lr.ph.i284, %1215, %1199 %.1.i283 = phi i32 [ %1200, %1199 ], [ %1221, %1215 ], [ %1204, %.lr.ph.i284 ] - %1224 = sub i32 %.1.i283, %.0202332 + %1224 = sub i32 %.1.i283, %.0202331 br label %dissect_tds7_colmetadata_token.exit 1225: ; preds = %tds7_token_to_idx.exit - %1226 = add i32 %.0202332, 1 + %1226 = add i32 %.0202331, 1 %1227 = call fastcc i32 @dissect_tds_login_ack_token(ptr noundef %0, ptr noundef %1, i32 noundef %1226, ptr noundef %780, ptr noundef %3) %1228 = add nuw nsw i32 %1227, 1 - br label %.thread303 + br label %.thread302 1229: ; preds = %tds7_token_to_idx.exit - %1230 = add i32 %.0202332, 1 + %1230 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) %1231 = load i32, ptr %43, align 8 %1232 = lshr i32 %1231, 3 @@ -7173,48 +7173,48 @@ dissect_tds_type_info_minimal.exit.i: ; preds = %.sink.split.i.i, %1 dissect_tds_nbc_row_token.exit: ; preds = %1229, %._crit_edge.loopexit.i288 %1264 = phi i32 [ %.pre.i289, %._crit_edge.loopexit.i288 ], [ %spec.select.i, %1229 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) - %1265 = sub i32 %1264, %.0202332 + %1265 = sub i32 %1264, %.0202331 br label %dissect_tds7_colmetadata_token.exit 1266: ; preds = %tds7_token_to_idx.exit - %1267 = add i32 %.0202332, 1 + %1267 = add i32 %.0202331, 1 %1268 = load i32, ptr @hf_tds_offset_id, align 4 %1269 = call ptr @proto_tree_add_item(ptr noundef %780, i32 noundef %1268, ptr noundef nonnull %0, i32 noundef %1267, i32 noundef 2, i32 noundef -2147483648) #11 %1270 = load i32, ptr @hf_tds_offset_len, align 4 - %1271 = add i32 %.0202332, 3 + %1271 = add i32 %.0202331, 3 %1272 = call ptr @proto_tree_add_item(ptr noundef %780, i32 noundef %1270, ptr noundef nonnull %0, i32 noundef %1271, i32 noundef 2, i32 noundef -2147483648) #11 - br label %.thread303 + br label %.thread302 1273: ; preds = %tds7_token_to_idx.exit - %1274 = add i32 %.0202332, 1 + %1274 = add i32 %.0202331, 1 %1275 = call fastcc i32 @dissect_tds_order_token(ptr noundef %0, i32 noundef %1274, ptr noundef %780, ptr noundef %3) %1276 = add i32 %1275, 1 br label %dissect_tds7_colmetadata_token.exit 1277: ; preds = %tds7_token_to_idx.exit - %1278 = add i32 %.0202332, 1 + %1278 = add i32 %.0202331, 1 %.val207 = load i32, ptr %72, align 8 %1279 = load i32, ptr @hf_tds_returnstatus_value, align 4 %1280 = icmp eq i32 %.val207, 0 %1281 = select i1 %1280, i32 0, i32 -2147483648 %1282 = call ptr @proto_tree_add_item(ptr noundef %780, i32 noundef %1279, ptr noundef nonnull %0, i32 noundef %1278, i32 noundef 4, i32 noundef %1281) #11 - br label %.thread303 + br label %.thread302 1283: ; preds = %tds7_token_to_idx.exit - %1284 = add i32 %.0202332, 1 + %1284 = add i32 %.0202331, 1 %1285 = call fastcc i32 @dissect_tds_row_token(ptr noundef %0, ptr noundef %1, ptr noundef %43, i32 noundef %1284, ptr noundef %780, ptr noundef %3) %1286 = add i32 %1285, 1 br label %dissect_tds7_colmetadata_token.exit 1287: ; preds = %tds7_token_to_idx.exit - %1288 = add i32 %.0202332, 1 + %1288 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) %1289 = load i32, ptr @hf_tds_sessionstate_length, align 4 %1290 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %780, i32 noundef %1289, ptr noundef nonnull %0, i32 noundef %1288, i32 noundef 4, i32 noundef -2147483648, ptr noundef nonnull %8) #11 - %1291 = add i32 %.0202332, 5 + %1291 = add i32 %.0202331, 5 %1292 = load i32, ptr @hf_tds_sessionstate_seqno, align 4 %1293 = call ptr @proto_tree_add_item(ptr noundef %780, i32 noundef %1292, ptr noundef nonnull %0, i32 noundef %1291, i32 noundef 4, i32 noundef -2147483648) #11 - %1294 = add i32 %.0202332, 9 + %1294 = add i32 %.0202331, 9 %1295 = load i32, ptr @hf_tds_sessionstate_status, align 4 %1296 = call ptr @proto_tree_add_item(ptr noundef %780, i32 noundef %1295, ptr noundef nonnull %0, i32 noundef %1294, i32 noundef 1, i32 noundef -2147483648) #11 %1297 = load i32, ptr %8, align 4 @@ -7222,7 +7222,7 @@ dissect_tds_nbc_row_token.exit: ; preds = %1229, %._crit_edge. br i1 %1298, label %.lr.ph.preheader.i, label %dissect_tds_sessionstate_token.exit .lr.ph.preheader.i: ; preds = %1287 - %1299 = add i32 %.0202332, 10 + %1299 = add i32 %.0202331, 10 br label %.lr.ph.i292 .lr.ph.i292: ; preds = %1317, %.lr.ph.preheader.i @@ -7273,7 +7273,7 @@ dissect_tds_sessionstate_token.exit: ; preds = %dissect_tds_session br label %dissect_tds7_colmetadata_token.exit 1327: ; preds = %tds7_token_to_idx.exit - %1328 = add i32 %.0202332, 1 + %1328 = add i32 %.0202331, 1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) @@ -7282,7 +7282,7 @@ dissect_tds_sessionstate_token.exit: ; preds = %dissect_tds_session %1330 = select i1 %.not.i294, i32 0, i32 -2147483648 %1331 = call zeroext i16 @tvb_get_guint16(ptr noundef nonnull %0, i32 noundef %1328, i32 noundef %1330) #11 %1332 = zext i16 %1331 to i32 - %1333 = add i32 %.0202332, 3 + %1333 = add i32 %.0202331, 3 %.not26.i = icmp eq i16 %1331, 0 br i1 %.not26.i, label %dissect_tds_sspi_token.exit, label %1334 @@ -7321,27 +7321,27 @@ dissect_tds_sspi_token.exit: ; preds = %1327, %1347 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) - %1351 = sub i32 %.0.i295, %.0202332 + %1351 = sub i32 %.0.i295, %.0202331 br label %dissect_tds7_colmetadata_token.exit dissect_tds7_colmetadata_token.exit: ; preds = %._crit_edge.i278, %dissect_tds_sspi_token.exit, %dissect_tds_sessionstate_token.exit, %1283, %1273, %dissect_tds_nbc_row_token.exit, %dissect_tds_featureextack_token.exit, %1195, %1191, %1187, %1183, %1179, %1175 %.1 = phi i32 [ %1351, %dissect_tds_sspi_token.exit ], [ %.lcssa.i, %dissect_tds_sessionstate_token.exit ], [ %1286, %1283 ], [ %1276, %1273 ], [ %1265, %dissect_tds_nbc_row_token.exit ], [ %1224, %dissect_tds_featureextack_token.exit ], [ %1198, %1195 ], [ %1194, %1191 ], [ %1190, %1187 ], [ %1186, %1183 ], [ %1182, %1179 ], [ %1178, %1175 ], [ %1174, %._crit_edge.i278 ] %1352 = icmp eq i32 %.1, 0 - br i1 %1352, label %.thread306, label %.thread303 + br i1 %1352, label %.thread305, label %.thread302 -.thread303: ; preds = %dissect_tds7_colmetadata_token.exit.thread, %1225, %1266, %1277, %dissect_tds7_colmetadata_token.exit - %.1305 = phi i32 [ %.1, %dissect_tds7_colmetadata_token.exit ], [ %1228, %1225 ], [ 5, %1266 ], [ 5, %1277 ], [ 3, %dissect_tds7_colmetadata_token.exit.thread ] - call void @proto_item_set_len(ptr noundef %778, i32 noundef %.1305) #11 +.thread302: ; preds = %dissect_tds7_colmetadata_token.exit.thread, %1225, %1266, %1277, %dissect_tds7_colmetadata_token.exit + %.1304 = phi i32 [ %.1, %dissect_tds7_colmetadata_token.exit ], [ %1228, %1225 ], [ 5, %1266 ], [ 5, %1277 ], [ 3, %dissect_tds7_colmetadata_token.exit.thread ] + call void @proto_item_set_len(ptr noundef %778, i32 noundef %.1304) #11 br label %1353 -1353: ; preds = %.thread303, %.thread - %.0.pn = phi i32 [ %.0299, %.thread ], [ %.1305, %.thread303 ] - %.1203 = add i32 %.0.pn, %.0202332 +1353: ; preds = %.thread302, %.thread + %.0.pn = phi i32 [ %.0298, %.thread ], [ %.1304, %.thread302 ] + %.1203 = add i32 %.0.pn, %.0202331 %1354 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %0, i32 noundef %.1203) #11 %1355 = icmp sgt i32 %1354, 0 - br i1 %1355, label %76, label %.thread306, !llvm.loop !25 + br i1 %1355, label %76, label %.thread305, !llvm.loop !25 -.thread306: ; preds = %1353, %dissect_tds7_colmetadata_token.exit, %tds7_token_to_idx.exit, %dissect_tds_prelogin_response.exit, %dissect_tds_prelogin_response.exit.thread, %.thread300 +.thread305: ; preds = %1353, %dissect_tds7_colmetadata_token.exit, %tds7_token_to_idx.exit, %dissect_tds_prelogin_response.exit, %dissect_tds_prelogin_response.exit.thread, %.thread299 ret void } diff --git a/bench/yosys/optimized/memory_dff.ll b/bench/yosys/optimized/memory_dff.ll index aec407f247f..0ce244924eb 100644 --- a/bench/yosys/optimized/memory_dff.ll +++ b/bench/yosys/optimized/memory_dff.ll @@ -71696,14 +71696,14 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i160.i: ; preds = %200 ._crit_edge.i218.i: ; preds = %229, %232 %237 = call ptr @__cxa_allocate_exception(i64 16) #22, !noalias !546 invoke void @_ZNSt12length_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef nonnull @.str.15) - to label %.invoke2770 unwind label %239, !noalias !546 + to label %.invoke2773 unwind label %239, !noalias !546 -.invoke2770: ; preds = %._crit_edge.i.i, %._crit_edge.i218.i +.invoke2773: ; preds = %._crit_edge.i.i, %._crit_edge.i218.i %238 = phi ptr [ %237, %._crit_edge.i218.i ], [ %462, %._crit_edge.i.i ] invoke void @__cxa_throw(ptr nonnull %238, ptr nonnull @_ZTISt12length_error, ptr nonnull @_ZNSt12length_errorD1Ev) #24 - to label %.cont2771 unwind label %.loopexit.split-lp916 + to label %.cont2774 unwind label %.loopexit.split-lp916 -.cont2771: ; preds = %.invoke2770 +.cont2774: ; preds = %.invoke2773 unreachable 239: ; preds = %._crit_edge.i218.i @@ -71746,13 +71746,13 @@ _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i192.i: ; 258: ; preds = %249 %259 = sub nsw i64 2305843009213693951, %247 %260 = icmp ult i64 %259, %250 - br i1 %260, label %.invoke2772, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i200.i + br i1 %260, label %.invoke2775, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i200.i -.invoke2772: ; preds = %482, %258 +.invoke2775: ; preds = %482, %258 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.18) #24 - to label %.cont2773 unwind label %.loopexit.split-lp916 + to label %.cont2776 unwind label %.loopexit.split-lp916 -.cont2773: ; preds = %.invoke2772 +.cont2776: ; preds = %.invoke2775 unreachable _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i200.i: ; preds = %258 @@ -72153,7 +72153,7 @@ _ZNSt6vectorIiSaIiEE5clearEv.exit.i.i: ; preds = %425 ._crit_edge.i.i: ; preds = %454, %457 %462 = call ptr @__cxa_allocate_exception(i64 16) #22, !noalias !546 invoke void @_ZNSt12length_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %462, ptr noundef nonnull @.str.15) - to label %.invoke2770 unwind label %463, !noalias !546 + to label %.invoke2773 unwind label %463, !noalias !546 463: ; preds = %._crit_edge.i.i %464 = landingpad { ptr, i32 } @@ -72195,7 +72195,7 @@ _ZSt22__uninitialized_move_aIPiS0_SaIiEET0_T_S3_S2_RT1_.exit69.thread.i.i: ; pre 482: ; preds = %473 %483 = sub nsw i64 2305843009213693951, %471 %484 = icmp ult i64 %483, %474 - br i1 %484, label %.invoke2772, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i + br i1 %484, label %.invoke2775, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %482 %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %471, i64 %474) @@ -73276,7 +73276,7 @@ _ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__g br label %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i _ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i: ; preds = %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i - %.val.i2229 = phi ptr [ %922, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i ], [ %871, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i ] + %.val.i2233 = phi ptr [ %922, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i ], [ %871, %_ZNSt16allocator_traitsISaIN12_GLOBAL__N_17MuxDataEEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_.exit.i.i ] call fastcc void @_ZN12_GLOBAL__N_17MuxDataD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %60) #22, !noalias !546 br label %938 @@ -73322,7 +73322,7 @@ _ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i: ; preds = br label %.loopexit.split-lp.i 938: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit.i._crit_edge, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i - %.val.i = phi ptr [ %.val.i2229, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i ], [ %.val.i.pre, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit.i._crit_edge ] + %.val.i = phi ptr [ %.val.i2233, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i ], [ %.val.i.pre, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit.i._crit_edge ] %.344.i = phi i1 [ %.037.i, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i ], [ %.041408.i, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit.i._crit_edge ] %.3.i = phi ptr [ %810, %_ZNSt6vectorIN12_GLOBAL__N_17MuxDataESaIS1_EE9push_backERKS1_.exit.i ], [ %.038409.i, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit.i._crit_edge ] %939 = getelementptr inbounds i8, ptr %.val.i, i64 -100 @@ -73695,7 +73695,7 @@ _ZSt8_DestroyIPN5Yosys5RTLIL8SigChunkES2_EvT_S4_RSaIT0_E.exit.i.i260: ; preds = br label %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262 _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yosys5RTLIL8SigChunkES2_EvT_S4_RSaIT0_E.exit.i.i260, %1070 - br i1 %1056, label %1077, label %.invoke2774 + br i1 %1056, label %1077, label %.invoke2777 1071: ; preds = %_ZNK5Yosys5RTLIL8IdString5c_strEv.exit235 %1072 = landingpad { ptr, i32 } @@ -73707,7 +73707,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo cleanup br label %.body -.loopexit.split-lp916: ; preds = %.invoke2772, %.invoke2770, %.invoke +.loopexit.split-lp916: ; preds = %.invoke2775, %.invoke2773, %.invoke %lpad.loopexit.split-lp918 = landingpad { ptr, i32 } cleanup br label %.body @@ -73717,7 +73717,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo call void @_ZN5Yosys5RTLIL7SigSpecD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %65) #22 br label %3056 -1073: ; preds = %.invoke2774, %1094, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit +1073: ; preds = %.invoke2777, %1094, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit %1074 = landingpad { ptr, i32 } cleanup br label %.body292 @@ -73732,21 +73732,21 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo %1078 = getelementptr inbounds nuw i8, ptr %66, i64 672 %1079 = load i8, ptr %1078, align 8 %1080 = trunc i8 %1079 to i1 - br i1 %1080, label %1081, label %.invoke2774 + br i1 %1080, label %1081, label %.invoke2777 1081: ; preds = %1077 %1082 = getelementptr inbounds nuw i8, ptr %66, i64 675 %1083 = load i8, ptr %1082, align 1 %1084 = trunc i8 %1083 to i1 - br i1 %1084, label %.invoke2774, label %1085 + br i1 %1084, label %.invoke2777, label %1085 1085: ; preds = %1081 %1086 = getelementptr inbounds nuw i8, ptr %66, i64 678 %1087 = load i8, ptr %1086, align 2 %1088 = trunc i8 %1087 to i1 - br i1 %1088, label %.invoke2774, label %1090 + br i1 %1088, label %.invoke2777, label %1090 -.invoke2774: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262, %1085, %1081, %1077 +.invoke2777: ; preds = %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262, %1085, %1081, %1077 %1089 = phi ptr [ @.str.165, %1077 ], [ @.str.166, %1081 ], [ @.str.167, %1085 ], [ @.str.164, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit262 ] invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull %1089) to label %3036 unwind label %1073 @@ -73894,9 +73894,9 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo br label %1170 1170: ; preds = %1168, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit281 - %.01801656 = phi i1 [ %1097, %1168 ], [ %spec.select, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit281 ] - %.0183.idx1655 = phi i64 [ 0, %1168 ], [ %.0183.add, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit281 ] - %.0183.ptr = getelementptr inbounds nuw i8, ptr %69, i64 %.0183.idx1655 + %.01801658 = phi i1 [ %1097, %1168 ], [ %spec.select, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit281 ] + %.0183.idx1657 = phi i64 [ 0, %1168 ], [ %.0183.add, %_ZN5Yosys5RTLIL8IdStringD2Ev.exit281 ] + %.0183.ptr = getelementptr inbounds nuw i8, ptr %69, i64 %.0183.idx1657 %1171 = load i32, ptr %.0183.ptr, align 4 %.not.i.i278 = icmp eq i32 %1171, 0 br i1 %.not.i.i278, label %1178, label %1172 @@ -73919,7 +73919,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo %1180 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.168) #22 %1181 = icmp eq i32 %1180, 0 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #22 - %spec.select = select i1 %1181, i1 true, i1 %.01801656 + %spec.select = select i1 %1181, i1 true, i1 %.01801658 %1182 = load i32, ptr %70, align 4 %1183 = load i8, ptr @_ZN5Yosys5RTLIL8IdString17destruct_guard_okE, align 1 %1184 = trunc i8 %1183 to i1 @@ -73949,7 +73949,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit262: ; preds = %_ZSt8_DestroyIPN5Yo unreachable _ZN5Yosys5RTLIL8IdStringD2Ev.exit281: ; preds = %1179, %1186, %1193 - %.0183.add = add nuw nsw i64 %.0183.idx1655, 4 + %.0183.add = add nuw nsw i64 %.0183.idx1657, 4 %.not = icmp eq i64 %.0183.add, 32 br i1 %.not, label %.preheader910, label %1170 @@ -74253,9 +74253,9 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS %1320 = sdiv exact i64 %1319, 376 %1321 = trunc i64 %1320 to i32 %1322 = icmp sgt i32 %1321, 0 - br i1 %1322, label %.lr.ph1660, label %._crit_edge + br i1 %1322, label %.lr.ph1662, label %._crit_edge -.lr.ph1660: ; preds = %1311 +.lr.ph1662: ; preds = %1311 %1323 = getelementptr inbounds nuw i8, ptr %74, i64 8 %1324 = getelementptr inbounds nuw i8, ptr %74, i64 16 %1325 = getelementptr inbounds nuw i8, ptr %74, i64 24 @@ -74292,9 +74292,9 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS %.sroa.2.0..sroa_idx.i.i.i.i2.i = getelementptr inbounds nuw i8, ptr %74, i64 56 br label %1353 -1353: ; preds = %.lr.ph1660, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit - %indvars.iv2207 = phi i64 [ 0, %.lr.ph1660 ], [ %indvars.iv.next2208, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit ] - %1354 = phi ptr [ %1316, %.lr.ph1660 ], [ %1778, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit ] +1353: ; preds = %.lr.ph1662, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit + %indvars.iv2211 = phi i64 [ 0, %.lr.ph1662 ], [ %indvars.iv.next2212, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit ] + %1354 = phi ptr [ %1316, %.lr.ph1662 ], [ %1778, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit ] store ptr null, ptr %1323, align 8 store i32 0, ptr %1324, align 8 store ptr null, ptr %1325, align 8 @@ -74306,7 +74306,7 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS store ptr null, ptr %1333, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %1327, i8 0, i64 20, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %1330, i8 0, i64 20, i1 false) - %1355 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1354, i64 %indvars.iv2207 + %1355 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1354, i64 %indvars.iv2211 store i8 1, ptr %74, align 8 %1356 = getelementptr inbounds nuw i8, ptr %1355, i64 76 %1357 = load i8, ptr %1356, align 4 @@ -74321,7 +74321,7 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS cleanup br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit -.loopexit.split-lp: ; preds = %2809, %._crit_edge1705, %2826, %2934, %2938, %2945, %2954, %2960, %2974, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge, %2918, %.noexc542, %2949, %2964, %2978, %_ZN5Yosys5RTLIL5ConstaSERKS1_.exit548, %.noexc549 +.loopexit.split-lp: ; preds = %2809, %._crit_edge1707, %2826, %2934, %2938, %2945, %2954, %2960, %2974, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge, %2918, %.noexc542, %2949, %2964, %2978, %_ZN5Yosys5RTLIL5ConstaSERKS1_.exit548, %.noexc549 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit @@ -74411,13 +74411,13 @@ _ZN5ezSAT3NOTENS_2_VE.exit38.i: ; preds = %_ZN5ezSAT2_V3getEPS to label %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge unwind label %.loopexit.split-lp903.loopexit ._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge: ; preds = %1393 - %.pre2231 = load i32, ptr %125, align 8 - %.pre2242 = sext i32 %.pre2231 to i64 + %.pre2235 = load i32, ptr %125, align 8 + %.pre2246 = sext i32 %.pre2235 to i64 br label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit _ZNSt6vectorIbSaIbEE6resizeEmb.exit: ; preds = %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge, %1387 - %.pre-phi2243 = phi i64 [ %.pre2242, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge ], [ %1376, %1387 ] - %1395 = phi i32 [ %.pre2231, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge ], [ %1375, %1387 ] + %.pre-phi = phi i64 [ %.pre2246, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge ], [ %1376, %1387 ] + %1395 = phi i32 [ %.pre2235, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit_crit_edge ], [ %1375, %1387 ] %1396 = load ptr, ptr %1328, align 8 %1397 = load i32, ptr %1329, align 8 %1398 = load ptr, ptr %1337, align 8 @@ -74427,14 +74427,14 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit: ; preds = %._ZNSt6vectorIbSaIb %1402 = shl nsw i64 %1401, 3 %1403 = zext i32 %1397 to i64 %1404 = add nsw i64 %1402, %1403 - %1405 = icmp ugt i64 %1404, %.pre-phi2243 + %1405 = icmp ugt i64 %1404, %.pre-phi br i1 %1405, label %1406, label %1412 1406: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit %1407 = sdiv i32 %1395, 64 %.sext830 = sext i32 %1407 to i64 %1408 = getelementptr inbounds i64, ptr %1398, i64 %.sext830 - %1409 = and i64 %.pre-phi2243, -9223372036854775745 + %1409 = and i64 %.pre-phi, -9223372036854775745 %1410 = icmp ugt i64 %1409, -9223372036854775808 %storemerge.idx.i.i.i.i296 = select i1 %1410, i64 -8, i64 0 %storemerge.i.i.i.i297 = getelementptr inbounds i8, ptr %1408, i64 %storemerge.idx.i.i.i.i296 @@ -74444,18 +74444,18 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit: ; preds = %._ZNSt6vectorIbSaIb br label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit299 1412: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit - %1413 = sub nuw i64 %.pre-phi2243, %1404 + %1413 = sub nuw i64 %.pre-phi, %1404 invoke void @_ZNSt6vectorIbSaIbEE14_M_fill_insertESt13_Bit_iteratormb(ptr noundef nonnull align 8 dereferenceable(40) %1337, ptr %1396, i32 %1397, i64 noundef %1413, i1 noundef zeroext false) to label %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge unwind label %.loopexit.split-lp903.loopexit ._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge: ; preds = %1412 - %.pre2232 = load i32, ptr %125, align 8 - %.pre2244 = sext i32 %.pre2232 to i64 + %.pre2236 = load i32, ptr %125, align 8 + %.pre2247 = sext i32 %.pre2236 to i64 br label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit299 _ZNSt6vectorIbSaIbEE6resizeEmb.exit299: ; preds = %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge, %1406 - %.pre-phi2245 = phi i64 [ %.pre2244, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge ], [ %.pre-phi2243, %1406 ] - %1414 = phi i32 [ %.pre2232, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge ], [ %1395, %1406 ] + %.pre-phi2248 = phi i64 [ %.pre2247, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge ], [ %.pre-phi, %1406 ] + %1414 = phi i32 [ %.pre2236, %._ZNSt6vectorIbSaIbEE6resizeEmb.exit299_crit_edge ], [ %1395, %1406 ] %1415 = load ptr, ptr %1331, align 8 %1416 = load i32, ptr %1332, align 8 %1417 = load ptr, ptr %1338, align 8 @@ -74465,14 +74465,14 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit299: ; preds = %._ZNSt6vectorIbSaIb %1421 = shl nsw i64 %1420, 3 %1422 = zext i32 %1416 to i64 %1423 = add nsw i64 %1421, %1422 - %1424 = icmp ugt i64 %1423, %.pre-phi2245 + %1424 = icmp ugt i64 %1423, %.pre-phi2248 br i1 %1424, label %1425, label %1431 1425: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit299 %1426 = sdiv i32 %1414, 64 %.sext832 = sext i32 %1426 to i64 %1427 = getelementptr inbounds i64, ptr %1417, i64 %.sext832 - %1428 = and i64 %.pre-phi2245, -9223372036854775745 + %1428 = and i64 %.pre-phi2248, -9223372036854775745 %1429 = icmp ugt i64 %1428, -9223372036854775808 %storemerge.idx.i.i.i.i300 = select i1 %1429, i64 -8, i64 0 %storemerge.i.i.i.i301 = getelementptr inbounds i8, ptr %1427, i64 %storemerge.idx.i.i.i.i300 @@ -74482,7 +74482,7 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit299: ; preds = %._ZNSt6vectorIbSaIb br label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit303 1431: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit299 - %1432 = sub nuw i64 %.pre-phi2245, %1423 + %1432 = sub nuw i64 %.pre-phi2248, %1423 invoke void @_ZNSt6vectorIbSaIbEE14_M_fill_insertESt13_Bit_iteratormb(ptr noundef nonnull align 8 dereferenceable(40) %1338, ptr %1415, i32 %1416, i64 noundef %1432, i1 noundef zeroext false) to label %_ZNSt6vectorIbSaIbEE6resizeEmb.exit303 unwind label %.loopexit.split-lp903.loopexit @@ -74491,8 +74491,8 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit303: ; preds = %1425, %1431 %1434 = trunc i8 %1433 to i1 %1435 = load i32, ptr %1339, align 8 %1436 = icmp sgt i32 %1435, 0 - %or.cond1709 = select i1 %1434, i1 %1436, i1 false - br i1 %or.cond1709, label %.lr.ph, label %.loopexit901 + %or.cond1711 = select i1 %1434, i1 %1436, i1 false + br i1 %or.cond1711, label %.lr.ph, label %.loopexit901 .lr.ph: ; preds = %_ZNSt6vectorIbSaIbEE6resizeEmb.exit303 %1437 = getelementptr inbounds nuw i8, ptr %1355, i64 200 @@ -74500,7 +74500,7 @@ _ZNSt6vectorIbSaIbEE6resizeEmb.exit303: ; preds = %1425, %1431 %1439 = getelementptr inbounds nuw i8, ptr %1355, i64 184 %1440 = getelementptr inbounds nuw i8, ptr %1355, i64 224 %1441 = getelementptr inbounds nuw i8, ptr %1355, i64 232 - %1442 = trunc nuw nsw i64 %indvars.iv2207 to i32 + %1442 = trunc nuw nsw i64 %indvars.iv2211 to i32 %1443 = mul i32 %1442, 33 br label %1444 @@ -74640,7 +74640,7 @@ _ZN5Yosys7hashlib8hash_opsISt4pairIiNS_5RTLIL6SigBitEEE4hashES5_.exit.i.i41.i: ; %.sroa.416.0.copyload.i.us.i = load i32, ptr %.sroa.416.0..sroa_idx.i.us.i, align 8 %.sroa.5.sroa.0.0.extract.trunc.i.us.i = trunc i32 %.sroa.416.0.copyload.i.us.i to i8 %1514 = zext i32 %.sroa.015.0.copyload.i.us.i to i64 - %1515 = icmp eq i64 %indvars.iv2207, %1514 + %1515 = icmp eq i64 %indvars.iv2211, %1514 %1516 = icmp eq ptr %.sroa.3.0.copyload.i.us.i, null %or.cond.i.us.i = select i1 %1515, i1 %1516, i1 false %1517 = icmp eq i8 %.sroa.5.sroa.0.0.extract.trunc.i.us.i, %.sroa.522.sroa.0.0.extract.trunc.i.i @@ -74663,7 +74663,7 @@ _ZN5Yosys7hashlib8hash_opsISt4pairIiNS_5RTLIL6SigBitEEE3cmpES5_S5_.exit.thread.i %.sroa.416.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %1522, i64 16 %.sroa.416.0.copyload.i.i = load i32, ptr %.sroa.416.0..sroa_idx.i.i, align 8 %1523 = zext i32 %.sroa.015.0.copyload.i.i to i64 - %1524 = icmp eq i64 %indvars.iv2207, %1523 + %1524 = icmp eq i64 %indvars.iv2211, %1523 %1525 = icmp eq ptr %.sroa.3.0.copyload.i.i, %.fr.i %or.cond.i.i327 = select i1 %1524, i1 %1525, i1 false %1526 = icmp eq i32 %.sroa.416.0.copyload.i.i, %.sroa.288.0.copyload @@ -74677,8 +74677,8 @@ _ZN5Yosys7hashlib8hash_opsISt4pairIiNS_5RTLIL6SigBitEEE3cmpES5_S5_.exit.thread.i br i1 %1529, label %.lr.ph.i.split.i, label %_ZNK5Yosys7hashlib4dictISt4pairIiNS_5RTLIL6SigBitEEbNS0_8hash_opsIS5_EEE9do_lookupERKS5_Ri.exit.thread.i, !llvm.loop !568 _ZNK5Yosys7hashlib4dictISt4pairIiNS_5RTLIL6SigBitEEbNS0_8hash_opsIS5_EEE9do_lookupERKS5_Ri.exit.i: ; preds = %.lr.ph.i.split.i, %.lr.ph.i.split.us.i - %.pre-phi = phi i64 [ %1512, %.lr.ph.i.split.us.i ], [ %1521, %.lr.ph.i.split.i ] - %1530 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, bool>::entry_t", ptr %1511, i64 %.pre-phi, i32 0, i32 1 + %.pre-phi.i = phi i64 [ %1512, %.lr.ph.i.split.us.i ], [ %1521, %.lr.ph.i.split.i ] + %1530 = getelementptr inbounds nuw %"struct.Yosys::hashlib::dict, bool>::entry_t", ptr %1511, i64 %.pre-phi.i, i32 0, i32 1 %1531 = load i8, ptr %1530, align 8 %1532 = trunc i8 %1531 to i1 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %41) @@ -74695,7 +74695,7 @@ _ZNK5Yosys7hashlib4dictISt4pairIiNS_5RTLIL6SigBitEEbNS0_8hash_opsIS5_EEE9do_look to label %.noexc329 unwind label %.loopexit902 .noexc329: ; preds = %_ZNK5Yosys7hashlib4dictISt4pairIiNS_5RTLIL6SigBitEEbNS0_8hash_opsIS5_EEE9do_lookupERKS5_Ri.exit.thread.i - %1538 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1535, i64 %indvars.iv2207, i32 9 + %1538 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1535, i64 %indvars.iv2211, i32 9 invoke void @_ZN5Yosys5RTLIL7SigSpecC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %42, ptr noundef nonnull align 8 dereferenceable(64) %1538) to label %1539 unwind label %1644 @@ -74923,7 +74923,7 @@ _ZNK5Yosys7hashlib4dictISt4pairIiNS_5RTLIL6SigBitEEbNS0_8hash_opsIS5_EEE7do_hash %.sroa.416.0.copyload.i61.us.i = load i32, ptr %.sroa.416.0..sroa_idx.i60.us.i, align 8 %.sroa.5.sroa.0.0.extract.trunc.i62.us.i = trunc i32 %.sroa.416.0.copyload.i61.us.i to i8 %1627 = zext i32 %.sroa.015.0.copyload.i57.us.i to i64 - %1628 = icmp eq i64 %indvars.iv2207, %1627 + %1628 = icmp eq i64 %indvars.iv2211, %1627 %1629 = icmp eq ptr %.sroa.3.0.copyload.i59.us.i, null %or.cond.i63.us.i = select i1 %1628, i1 %1629, i1 false %1630 = icmp eq i8 %.sroa.5.sroa.0.0.extract.trunc.i62.us.i, %.sroa.522.sroa.0.0.extract.trunc.i54.i @@ -74946,7 +74946,7 @@ _ZN5Yosys7hashlib8hash_opsISt4pairIiNS_5RTLIL6SigBitEEE3cmpES5_S5_.exit.thread.i %.sroa.416.0..sroa_idx.i60.i = getelementptr inbounds nuw i8, ptr %1635, i64 16 %.sroa.416.0.copyload.i61.i = load i32, ptr %.sroa.416.0..sroa_idx.i60.i, align 8 %1636 = zext i32 %.sroa.015.0.copyload.i57.i to i64 - %1637 = icmp eq i64 %indvars.iv2207, %1636 + %1637 = icmp eq i64 %indvars.iv2211, %1636 %1638 = icmp eq ptr %.sroa.3.0.copyload.i59.i, %.fr.i %or.cond.i63.i = select i1 %1637, i1 %1638, i1 false %1639 = icmp eq i32 %.sroa.416.0.copyload.i61.i, %.sroa.288.0.copyload @@ -75320,7 +75320,7 @@ _ZNSt6vectorIbSaIbEED2Ev.exit5.i: ; preds = %1760, %_ZNSt6vector br label %_ZN12_GLOBAL__N_18PortDataD2Ev.exit _ZN12_GLOBAL__N_18PortDataD2Ev.exit: ; preds = %_ZNSt6vectorIbSaIbEED2Ev.exit5.i, %1769 - %indvars.iv.next2208 = add nuw nsw i64 %indvars.iv2207, 1 + %indvars.iv.next2212 = add nuw nsw i64 %indvars.iv2211, 1 %1777 = load ptr, ptr %1314, align 8 %1778 = load ptr, ptr %1313, align 8 %1779 = ptrtoint ptr %1777 to i64 @@ -75329,7 +75329,7 @@ _ZN12_GLOBAL__N_18PortDataD2Ev.exit: ; preds = %_ZNSt6vectorIbSaIbE %1782 = sdiv exact i64 %1781, 376 %sext = shl i64 %1782, 32 %1783 = ashr exact i64 %sext, 32 - %1784 = icmp slt i64 %indvars.iv.next2208, %1783 + %1784 = icmp slt i64 %indvars.iv.next2212, %1783 br i1 %1784, label %1353, label %._crit_edge, !llvm.loop !577 ._crit_edge: ; preds = %_ZN12_GLOBAL__N_18PortDataD2Ev.exit, %1311 @@ -75337,8 +75337,8 @@ _ZN12_GLOBAL__N_18PortDataD2Ev.exit: ; preds = %_ZNSt6vectorIbSaIbE %1786 = phi ptr [ %1315, %1311 ], [ %1777, %_ZN12_GLOBAL__N_18PortDataD2Ev.exit ] %.val216 = load ptr, ptr %63, align 8 %.val = load ptr, ptr %165, align 8 - %.not8491691 = icmp eq ptr %.val216, %.val - br i1 %.not8491691, label %.preheader857, label %.preheader887.lr.ph + %.not8491693 = icmp eq ptr %.val216, %.val + br i1 %.not8491693, label %.preheader857, label %.preheader887.lr.ph .preheader887.lr.ph: ; preds = %._crit_edge %1787 = getelementptr inbounds nuw i8, ptr %72, i64 160 @@ -75410,57 +75410,57 @@ _ZN12_GLOBAL__N_18PortDataD2Ev.exit: ; preds = %_ZNSt6vectorIbSaIbE br label %.preheader887 _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread: ; preds = %.preheader887, %2779, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533 - %1840 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 104 + %1840 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 104 %.not849 = icmp eq ptr %1840, %.val br i1 %.not849, label %.preheader857.loopexit, label %.preheader887 .preheader887: ; preds = %.preheader887.lr.ph, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread - %.sroa.0810.01692 = phi ptr [ %.val216, %.preheader887.lr.ph ], [ %1840, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread ] - %1841 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 16 + %.sroa.0810.01694 = phi ptr [ %.val216, %.preheader887.lr.ph ], [ %1840, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread ] + %1841 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 16 %1842 = load i32, ptr %1841, align 8 - %.not2051678 = icmp sgt i32 %1842, 0 - br i1 %.not2051678, label %.lr.ph1684, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread - -.lr.ph1684: ; preds = %.preheader887 - %1843 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 32 - %1844 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 40 - %1845 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 56 - %1846 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 64 - %1847 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 80 - %1848 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 4 - %1849 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01692, i64 8 + %.not2051680 = icmp sgt i32 %1842, 0 + br i1 %.not2051680, label %.lr.ph1686, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread + +.lr.ph1686: ; preds = %.preheader887 + %1843 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 32 + %1844 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 40 + %1845 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 56 + %1846 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 64 + %1847 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 80 + %1848 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 4 + %1849 = getelementptr inbounds nuw i8, ptr %.sroa.0810.01694, i64 8 br label %1859 .preheader857.loopexit: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread - %.pre2238 = load ptr, ptr %1314, align 8 - %.pre2239 = load ptr, ptr %1313, align 8 + %.pre2242 = load ptr, ptr %1314, align 8 + %.pre2243 = load ptr, ptr %1313, align 8 br label %.preheader857 .preheader857: ; preds = %.preheader857.loopexit, %._crit_edge - %1850 = phi ptr [ %.pre2239, %.preheader857.loopexit ], [ %1785, %._crit_edge ] - %1851 = phi ptr [ %.pre2238, %.preheader857.loopexit ], [ %1786, %._crit_edge ] + %1850 = phi ptr [ %.pre2243, %.preheader857.loopexit ], [ %1785, %._crit_edge ] + %1851 = phi ptr [ %.pre2242, %.preheader857.loopexit ], [ %1786, %._crit_edge ] %1852 = ptrtoint ptr %1851 to i64 %1853 = ptrtoint ptr %1850 to i64 %1854 = sub i64 %1852, %1853 %1855 = sdiv exact i64 %1854, 376 %1856 = trunc i64 %1855 to i32 %1857 = icmp sgt i32 %1856, 0 - br i1 %1857, label %.lr.ph1704, label %._crit_edge1705 + br i1 %1857, label %.lr.ph1706, label %._crit_edge1707 -.lr.ph1704: ; preds = %.preheader857 +.lr.ph1706: ; preds = %.preheader857 %.val222 = load ptr, ptr %73, align 8 %1858 = getelementptr inbounds nuw i8, ptr %66, i64 792 br label %2780 -.preheader885: ; preds = %._crit_edge1675 - %.not8521688 = icmp eq ptr %.sroa.0807.3.lcssa, %.sroa.6.2.lcssa - br i1 %.not8521688, label %.loopexit886, label %.lr.ph1690 +.preheader885: ; preds = %._crit_edge1677 + %.not8521690 = icmp eq ptr %.sroa.0807.3.lcssa, %.sroa.6.2.lcssa + br i1 %.not8521690, label %.loopexit886, label %.lr.ph1692 -1859: ; preds = %.lr.ph1684, %._crit_edge1675 - %indvars.iv2219 = phi i64 [ 0, %.lr.ph1684 ], [ %indvars.iv.next2220, %._crit_edge1675 ] - %.sroa.0807.11681 = phi ptr [ null, %.lr.ph1684 ], [ %.sroa.0807.3.lcssa, %._crit_edge1675 ] - %.sroa.6.11680 = phi ptr [ null, %.lr.ph1684 ], [ %.sroa.6.2.lcssa, %._crit_edge1675 ] - %.sroa.11.11679 = phi ptr [ null, %.lr.ph1684 ], [ %.sroa.11.2.lcssa, %._crit_edge1675 ] +1859: ; preds = %.lr.ph1686, %._crit_edge1677 + %indvars.iv2223 = phi i64 [ 0, %.lr.ph1686 ], [ %indvars.iv.next2224, %._crit_edge1677 ] + %.sroa.0807.11683 = phi ptr [ null, %.lr.ph1686 ], [ %.sroa.0807.3.lcssa, %._crit_edge1677 ] + %.sroa.6.11682 = phi ptr [ null, %.lr.ph1686 ], [ %.sroa.6.2.lcssa, %._crit_edge1677 ] + %.sroa.11.11681 = phi ptr [ null, %.lr.ph1686 ], [ %.sroa.11.2.lcssa, %._crit_edge1677 ] %1860 = load ptr, ptr %1843, align 8 %1861 = load ptr, ptr %1844, align 8 %1862 = icmp eq ptr %1860, %1861 @@ -75477,29 +75477,29 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i360: ; preds = %1863, %1859 %1867 = ptrtoint ptr %1865 to i64 %1868 = sub i64 %1866, %1867 %1869 = ashr exact i64 %1868, 4 - %.not.i.i.i361 = icmp ugt i64 %1869, %indvars.iv2219 + %.not.i.i.i361 = icmp ugt i64 %1869, %indvars.iv2223 br i1 %.not.i.i.i361, label %1871, label %1870 1870: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i360 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.19, i64 noundef %indvars.iv2219, i64 noundef %1869) #24 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.19, i64 noundef %indvars.iv2223, i64 noundef %1869) #24 to label %.noexc363 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp .noexc363: ; preds = %1870 unreachable 1871: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i360 - %1872 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigBit", ptr %1865, i64 %indvars.iv2219 + %1872 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigBit", ptr %1865, i64 %indvars.iv2223 %.sroa.068.0.copyload = load ptr, ptr %1872, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1872, i64 8 %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 8 %1873 = load ptr, ptr %1847, align 8 - %1874 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigSpec", ptr %1873, i64 %indvars.iv2219 + %1874 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigSpec", ptr %1873, i64 %indvars.iv2223 %1875 = load i32, ptr %1848, align 4 %1876 = icmp sgt i32 %1875, 0 - br i1 %1876, label %.lr.ph1674, label %._crit_edge1675 + br i1 %1876, label %.lr.ph1676, label %._crit_edge1677 -.lr.ph1674: ; preds = %1871 - %1877 = load i32, ptr %.sroa.0810.01692, align 8 +.lr.ph1676: ; preds = %1871 + %1877 = load i32, ptr %.sroa.0810.01694, align 8 %1878 = getelementptr inbounds nuw i8, ptr %1874, i64 16 %1879 = getelementptr inbounds nuw i8, ptr %1874, i64 24 %1880 = getelementptr inbounds nuw i8, ptr %1874, i64 40 @@ -75511,14 +75511,14 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i360: ; preds = %1863, %1859 %1884 = sext i32 %1877 to i64 br label %1885 -1885: ; preds = %.lr.ph1674, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit - %indvars.iv2216 = phi i64 [ %1884, %.lr.ph1674 ], [ %indvars.iv.next2217, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %1886 = phi i32 [ %1877, %.lr.ph1674 ], [ %2754, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %.sroa.0807.31670 = phi ptr [ %.sroa.0807.11681, %.lr.ph1674 ], [ %.sroa.0807.6, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %.sroa.6.21669 = phi ptr [ %.sroa.6.11680, %.lr.ph1674 ], [ %.sroa.6.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %.sroa.11.21668 = phi ptr [ %.sroa.11.11679, %.lr.ph1674 ], [ %.sroa.11.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] +1885: ; preds = %.lr.ph1676, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit + %indvars.iv2220 = phi i64 [ %1884, %.lr.ph1676 ], [ %indvars.iv.next2221, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %1886 = phi i32 [ %1877, %.lr.ph1676 ], [ %2754, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %.sroa.0807.31672 = phi ptr [ %.sroa.0807.11683, %.lr.ph1676 ], [ %.sroa.0807.6, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %.sroa.6.21671 = phi ptr [ %.sroa.6.11682, %.lr.ph1676 ], [ %.sroa.6.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %.sroa.11.21670 = phi ptr [ %.sroa.11.11681, %.lr.ph1676 ], [ %.sroa.11.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] %1887 = sext i32 %1886 to i64 - %1888 = sub nsw i64 %indvars.iv2216, %1887 + %1888 = sub nsw i64 %indvars.iv2220, %1887 %1889 = load ptr, ptr %1878, align 8 %1890 = load ptr, ptr %1879, align 8 %1891 = icmp eq ptr %1889, %1890 @@ -75536,15 +75536,15 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 %1897 = sub i64 %1895, %1896 %1898 = ashr exact i64 %1897, 4 %.not.i.i.i366 = icmp ugt i64 %1898, %1888 - br i1 %.not.i.i.i366, label %1901, label %.invoke3251 + br i1 %.not.i.i.i366, label %1901, label %.invoke3254 -.invoke3251: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 - %1899 = phi i64 [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 ], [ %1888, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 ], [ %2428, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i ], [ %2403, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i ], [ %2369, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i ], [ %2344, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 ], [ %indvars.iv2216, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 ] +.invoke3254: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 + %1899 = phi i64 [ %indvars.iv2220, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 ], [ %indvars.iv2220, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i ], [ %indvars.iv2220, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 ], [ %1888, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 ], [ %2428, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i ], [ %2403, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i ], [ %2369, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i ], [ %2344, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 ], [ %indvars.iv2220, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 ] %1900 = phi i64 [ %2512, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i ], [ %2496, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 ], [ %1948, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 ], [ %1898, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 ], [ %2442, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i ], [ %2417, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i ], [ %2383, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i ], [ %2358, %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 ], [ %2331, %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 ] invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.19, i64 noundef %1899, i64 noundef %1900) #24 - to label %.cont3252 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %.cont3255 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.cont3252: ; preds = %.invoke3251 +.cont3255: ; preds = %.invoke3254 unreachable 1901: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365 @@ -75563,16 +75563,16 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 %1908 = sdiv exact i64 %1907, 376 %1909 = trunc i64 %1908 to i32 %1910 = icmp sgt i32 %1909, 0 - br i1 %1910, label %.lr.ph1663, label %.critedge + br i1 %1910, label %.lr.ph1665, label %.critedge -.lr.ph1663: ; preds = %1901 - %1911 = trunc nsw i64 %indvars.iv2216 to i32 +.lr.ph1665: ; preds = %1901 + %1911 = trunc nsw i64 %indvars.iv2220 to i32 %1912 = sdiv i32 %1911, 64 %.sext837 = sext i32 %1912 to i64 - %1913 = and i64 %indvars.iv2216, -9223372036854775745 + %1913 = and i64 %indvars.iv2220, -9223372036854775745 %1914 = icmp ugt i64 %1913, -9223372036854775808 %storemerge.idx.i.i.i.i.i371 = select i1 %1914, i64 -8, i64 0 - %1915 = and i64 %indvars.iv2216, 63 + %1915 = and i64 %indvars.iv2220, 63 %1916 = shl nuw i64 1, %1915 %1917 = icmp eq ptr %.sroa.0769.0.copyload, null %1918 = icmp eq i8 %.sroa.4772.sroa.0.0.extract.trunc, 2 @@ -75580,12 +75580,12 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 %1919 = xor i64 %1916, -1 br label %1920 -1920: ; preds = %.lr.ph1663, %2660 - %indvars.iv2210 = phi i64 [ 0, %.lr.ph1663 ], [ %indvars.iv.next2211, %2660 ] - %1921 = phi ptr [ %1904, %.lr.ph1663 ], [ %2662, %2660 ] +1920: ; preds = %.lr.ph1665, %2660 + %indvars.iv2214 = phi i64 [ 0, %.lr.ph1665 ], [ %indvars.iv.next2215, %2660 ] + %1921 = phi ptr [ %1904, %.lr.ph1665 ], [ %2662, %2660 ] %.val220 = load ptr, ptr %73, align 8 - %1922 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val220, i64 %indvars.iv2210 - %1923 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1921, i64 %indvars.iv2210 + %1922 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val220, i64 %indvars.iv2214 + %1923 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %1921, i64 %indvars.iv2214 %1924 = load i8, ptr %1922, align 8 %1925 = trunc i8 %1924 to i1 br i1 %1925, label %1927, label %2660 @@ -75620,19 +75620,19 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i365: ; preds = %1892, %1885 cleanup br label %.body406 -.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.invoke3250 +.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.invoke3253 %lpad.loopexit891 = landingpad { ptr, i32 } cleanup br label %.body406 -.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke3251, %1870, %2645, %.noexc.i.i.i617 - %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %.sroa.0807.11681, %1870 ], [ %.sroa.0807.31670, %.noexc.i.i.i617 ], [ %.sroa.0807.31670, %2645 ], [ %.sroa.0807.31670, %.invoke3251 ] +.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke3254, %1870, %2645, %.noexc.i.i.i617 + %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph = phi ptr [ %.sroa.0807.11683, %1870 ], [ %.sroa.0807.31672, %.noexc.i.i.i617 ], [ %.sroa.0807.31672, %2645 ], [ %.sroa.0807.31672, %.invoke3254 ] %lpad.loopexit.split-lp892 = landingpad { ptr, i32 } cleanup br label %.body406 .body406: ; preds = %.loopexit862, %.loopexit.split-lp863.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp863.loopexit, %2186, %2187, %2189, %2298, %.body724, %2121, %2138, %2625, %2713 - %.sroa.0807.7 = phi ptr [ %.sroa.0807.31670, %2625 ], [ %.sroa.0807.31670, %2713 ], [ %.sroa.0807.31670, %2138 ], [ %.sroa.0807.31670, %2121 ], [ %.sroa.0807.31670, %.body724 ], [ %.sroa.0807.31670, %2298 ], [ %.sroa.0807.31670, %2189 ], [ %.sroa.0807.31670, %2187 ], [ %.sroa.0807.31670, %2186 ], [ %.sroa.0807.31670, %.loopexit862 ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.11681, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31670, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.sroa.0807.7 = phi ptr [ %.sroa.0807.31672, %2625 ], [ %.sroa.0807.31672, %2713 ], [ %.sroa.0807.31672, %2138 ], [ %.sroa.0807.31672, %2121 ], [ %.sroa.0807.31672, %.body724 ], [ %.sroa.0807.31672, %2298 ], [ %.sroa.0807.31672, %2189 ], [ %.sroa.0807.31672, %2187 ], [ %.sroa.0807.31672, %2186 ], [ %.sroa.0807.31672, %.loopexit862 ], [ %.sroa.0807.31672, %.loopexit.split-lp863.loopexit ], [ %.sroa.0807.31672, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %.sroa.0807.31672, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31672, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.11683, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.31672, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %.sroa.0807.2.ph.ph.ph.ph.ph.ph.ph, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %eh.lpad-body407 = phi { ptr, i32 } [ %.pn23.pn.i, %2625 ], [ %2714, %2713 ], [ %lpad.phi880, %2138 ], [ %2115, %2121 ], [ %2115, %.body724 ], [ %2299, %2298 ], [ %2190, %2189 ], [ %2188, %2187 ], [ %.pn.i384, %2186 ], [ %lpad.loopexit864, %.loopexit862 ], [ %lpad.loopexit867, %.loopexit.split-lp863.loopexit ], [ %lpad.loopexit870, %.loopexit.split-lp863.loopexit.split-lp.loopexit ], [ %lpad.loopexit873, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit881, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit888, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit891, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp892, %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %.not.i.i.i370 = icmp eq ptr %.sroa.0807.7, null br i1 %.not.i.i.i370, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit, label %1926 @@ -75673,11 +75673,11 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375: ; preds = %1939, %1933 %1946 = ptrtoint ptr %1944 to i64 %1947 = sub i64 %1945, %1946 %1948 = ashr exact i64 %1947, 4 - %.not.i.i.i376 = icmp ugt i64 %1948, %indvars.iv2216 - br i1 %.not.i.i.i376, label %1949, label %.invoke3251 + %.not.i.i.i376 = icmp ugt i64 %1948, %indvars.iv2220 + br i1 %.not.i.i.i376, label %1949, label %.invoke3254 1949: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i375 - %1950 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %1944, i64 %indvars.iv2216 + %1950 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %1944, i64 %indvars.iv2220 %.sroa.048.0.copyload = load ptr, ptr %1950, align 8 %.sroa.249.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1950, i64 8 %.sroa.249.0.copyload = load i32, ptr %.sroa.249.0..sroa_idx, align 8 @@ -75739,7 +75739,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE4hashILm2EEENSt9en %1974 = mul i32 %1973, 33 %1975 = xor i32 %.0.i.i.i.i.i.i.i, %1974 %1976 = mul i32 %1975, 33 - %1977 = trunc nuw nsw i64 %indvars.iv2210 to i32 + %1977 = trunc nuw nsw i64 %indvars.iv2214 to i32 %1978 = xor i32 %1976, %1977 %1979 = ptrtoint ptr %1955 to i64 %1980 = ptrtoint ptr %1954 to i64 @@ -75804,7 +75804,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE4hashILm0EEENSt9en %2016 = mul i32 %2015, 33 %2017 = xor i32 %.0.i.i.i.i.i.i645, %2016 %2018 = mul i32 %2017, 33 - %2019 = trunc nuw nsw i64 %indvars.iv2210 to i32 + %2019 = trunc nuw nsw i64 %indvars.iv2214 to i32 %2020 = xor i32 %2018, %2019 %2021 = ptrtoint ptr %1998 to i64 %2022 = ptrtoint ptr %1997 to i64 @@ -75847,7 +75847,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE4hashILm0EEENSt9en %.sroa.832.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2036, i64 40 %.sroa.832.0.copyload.i = load i32, ptr %.sroa.832.0..sroa_idx.i, align 8 %2037 = zext i32 %.sroa.832.0.copyload.i to i64 - %2038 = icmp eq i64 %indvars.iv2210, %2037 + %2038 = icmp eq i64 %indvars.iv2214, %2037 %2039 = icmp eq ptr %.sroa.527.0.copyload.i, %.sroa.048.0.copyload %or.cond.i628 = select i1 %2038, i1 %2039, i1 false br i1 %or.cond.i628, label %2040, label %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.thread.i @@ -75947,13 +75947,13 @@ _ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i to label %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit _ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i - %.pre2233 = load ptr, ptr %2063, align 8 - %.pre2234 = load ptr, ptr %2064, align 8 + %.pre2237 = load ptr, ptr %2063, align 8 + %.pre2238 = load ptr, ptr %2064, align 8 br label %.noexc619 .noexc619: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge, %.loopexit860 - %2074 = phi ptr [ %2065, %.loopexit860 ], [ %.pre2234, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge ] - %2075 = phi ptr [ %2066, %.loopexit860 ], [ %.pre2233, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge ] + %2074 = phi ptr [ %2065, %.loopexit860 ], [ %.pre2238, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge ] + %2075 = phi ptr [ %2066, %.loopexit860 ], [ %.pre2237, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge ] %2076 = phi ptr [ null, %.loopexit860 ], [ %2073, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL8SigChunkEEE8allocateERS3_m.exit.i.i.i.i.i..noexc619_crit_edge ] store ptr %2076, ptr %1790, align 8 store ptr %2076, ptr %1791, align 8 @@ -76118,13 +76118,13 @@ _ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i to label %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge unwind label %.loopexit876 _ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i - %.pre2235 = load ptr, ptr %2122, align 8 - %.pre2236 = load ptr, ptr %2123, align 8 + %.pre2239 = load ptr, ptr %2122, align 8 + %.pre2240 = load ptr, ptr %2123, align 8 br label %.noexc7.i .noexc7.i: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i - %2132 = phi ptr [ %2124, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i ], [ %.pre2236, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge ] - %2133 = phi ptr [ %2125, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i ], [ %.pre2235, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge ] + %2132 = phi ptr [ %2124, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i ], [ %.pre2240, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge ] + %2133 = phi ptr [ %2125, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i ], [ %.pre2239, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge ] %2134 = phi ptr [ null, %_ZNSt6vectorIN5Yosys5RTLIL8SigChunkESaIS2_EEC2ERKS4_.exit.i ], [ %2131, %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i..noexc7.i_crit_edge ] store ptr %2134, ptr %1793, align 8 store ptr %2134, ptr %1794, align 8 @@ -76160,7 +76160,7 @@ _ZNSt16allocator_traitsISaIN5Yosys5RTLIL6SigBitEEE8allocateERS3_m.exit.i.i.i.i.i .noexc401: ; preds = %.lr.ph.i.i.i.i.i.i612, %.noexc7.i %.0.lcssa.i.i.i.i.i.i615 = phi ptr [ %2134, %.noexc7.i ], [ %2137, %.lr.ph.i.i.i.i.i.i612 ] store ptr %.0.lcssa.i.i.i.i.i.i615, ptr %1794, align 8 - %2139 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %2060, i64 %indvars.iv2210, i32 9 + %2139 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %2060, i64 %indvars.iv2214, i32 9 invoke void @_ZN5Yosys5RTLIL7SigSpecC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %25, ptr noundef nonnull align 8 dereferenceable(64) %2139) to label %2140 unwind label %2182 @@ -76401,7 +76401,7 @@ _ZN5ezSAT3NOTENS_2_VE.exit.i399: ; preds = %_ZN5ezSAT2_V3getEPS _ZNK5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE7do_hashERKS5_.exit.i.thread: ; preds = %2200 store i32 0, ptr %5, align 4 - %.pre2246 = trunc nuw nsw i64 %indvars.iv2210 to i32 + %.pre2249 = trunc nuw nsw i64 %indvars.iv2214 to i32 br label %.loopexit859 2206: ; preds = %2200 @@ -76438,7 +76438,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE4hashILm2EEENSt9en %2223 = mul i32 %2222, 33 %2224 = xor i32 %.0.i.i.i.i.i.i602, %2223 %2225 = mul i32 %2224, 33 - %2226 = trunc nuw nsw i64 %indvars.iv2210 to i32 + %2226 = trunc nuw nsw i64 %indvars.iv2214 to i32 %2227 = xor i32 %2225, %2226 %2228 = ptrtoint ptr %2204 to i64 %2229 = ptrtoint ptr %2203 to i64 @@ -76543,7 +76543,7 @@ _ZNK5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE7 %.sroa.832.0..sroa_idx.i679 = getelementptr inbounds nuw i8, ptr %2278, i64 40 %.sroa.832.0.copyload.i680 = load i32, ptr %.sroa.832.0..sroa_idx.i679, align 8 %2279 = zext i32 %.sroa.832.0.copyload.i680 to i64 - %2280 = icmp eq i64 %indvars.iv2210, %2279 + %2280 = icmp eq i64 %indvars.iv2214, %2279 %2281 = icmp eq ptr %.sroa.527.0.copyload.i675, %.sroa.048.0.copyload %or.cond.i681 = select i1 %2280, i1 %2281, i1 false br i1 %or.cond.i681, label %2282, label %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.thread.i682 @@ -76587,20 +76587,20 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.t br i1 %2296, label %2276, label %.loopexit859, !llvm.loop !578 .loopexit859: ; preds = %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.thread.i682, %._crit_edge.i649, %_ZNK5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE7do_hashERKS5_.exit.i.thread - %.pre-phi2247 = phi i32 [ %2226, %._crit_edge.i649 ], [ %.pre2246, %_ZNK5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE7do_hashERKS5_.exit.i.thread ], [ %2226, %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.thread.i682 ] + %.pre-phi2250 = phi i32 [ %2226, %._crit_edge.i649 ], [ %.pre2249, %_ZNK5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE7do_hashERKS5_.exit.i.thread ], [ %2226, %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.thread.i682 ] store i8 %1953, ptr %6, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.9.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.9, i64 7, i1 false) store ptr %.sroa.068.0.copyload, ptr %.sroa.9821.0..sroa_idx, align 8 store i32 %.sroa.4.0.copyload, ptr %.sroa.15.0..sroa_idx, align 8 store ptr %.sroa.048.0.copyload, ptr %.sroa.21822.0..sroa_idx, align 8 store i32 %.sroa.249.0.copyload, ptr %.sroa.27.0..sroa_idx, align 8 - store i32 %.pre-phi2247, ptr %.sroa.33823.0..sroa_idx, align 8 + store i32 %.pre-phi2250, ptr %.sroa.33823.0..sroa_idx, align 8 store i8 0, ptr %1812, align 8 %2297 = invoke noundef i32 @_ZN5Yosys7hashlib4dictISt5tupleIJiNS_5RTLIL6SigBitES4_bEEbNS0_8hash_opsIS5_EEE9do_insertEOSt4pairIS5_bERi(ptr noundef nonnull align 8 dereferenceable(49) %1227, ptr noundef nonnull align 8 dereferenceable(49) %6, ptr noundef nonnull align 4 dereferenceable(4) %5) to label %.loopexit859..loopexit858_crit_edge unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit .loopexit859..loopexit858_crit_edge: ; preds = %.loopexit859 - %.pre2237 = load ptr, ptr %1788, align 8 + %.pre2241 = load ptr, ptr %1788, align 8 br label %.loopexit858 2298: ; preds = %2198, %.noexc404 @@ -76615,7 +76615,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.t br label %.body406 .loopexit858: ; preds = %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.i685, %.loopexit859..loopexit858_crit_edge - %2300 = phi ptr [ %.pre2237, %.loopexit859..loopexit858_crit_edge ], [ %2275, %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.i685 ] + %2300 = phi ptr [ %.pre2241, %.loopexit859..loopexit858_crit_edge ], [ %2275, %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.i685 ] %.0.i604 = phi i32 [ %2297, %.loopexit859..loopexit858_crit_edge ], [ %.052.i667, %_ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.i685 ] %2301 = sext i32 %.0.i604 to i64 %2302 = getelementptr inbounds %"struct.Yosys::hashlib::dict, bool>::entry_t", ptr %2300, i64 %2301, i32 0, i32 1 @@ -76661,7 +76661,7 @@ _ZN5Yosys7hashlib8hash_opsISt5tupleIJiNS_5RTLIL6SigBitES4_bEEE3cmpES5_S5_.exit.t br label %2660 _ZNK5Yosys5RTLIL6SigBiteqERKS1_.exit.thread: ; preds = %2303 - %2315 = trunc nuw nsw i64 %indvars.iv2210 to i32 + %2315 = trunc nuw nsw i64 %indvars.iv2214 to i32 %2316 = load i8, ptr %1849, align 8 %2317 = getelementptr inbounds nuw i8, ptr %1923, i64 328 %2318 = load ptr, ptr %2317, align 8 @@ -76684,11 +76684,11 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417: ; preds = %2322, %_ZNK5Yosy %2329 = ptrtoint ptr %2327 to i64 %2330 = sub i64 %2328, %2329 %2331 = ashr exact i64 %2330, 4 - %.not.i.i.i418 = icmp ugt i64 %2331, %indvars.iv2216 - br i1 %.not.i.i.i418, label %2332, label %.invoke3251 + %.not.i.i.i418 = icmp ugt i64 %2331, %indvars.iv2220 + br i1 %.not.i.i.i418, label %2332, label %.invoke3254 2332: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i417 - %2333 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2327, i64 %indvars.iv2216 + %2333 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2327, i64 %indvars.iv2220 %2334 = trunc i8 %2316 to i1 %.sroa.039.0.copyload = load ptr, ptr %2333, align 8 %.sroa.240.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2333, i64 8 @@ -76750,7 +76750,7 @@ _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i. %2357 = sub i64 %2355, %2356 %2358 = sdiv exact i64 %2357, 24 %.not.i.i.i.i.i.i.i.i430 = icmp ugt i64 %2358, %2344 - br i1 %.not.i.i.i.i.i.i.i.i430, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i.i431, label %.invoke3251 + br i1 %.not.i.i.i.i.i.i.i.i430, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i.i431, label %.invoke3254 _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i.i431: ; preds = %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i.i429 %2359 = getelementptr inbounds %"struct.Yosys::hashlib::pool::entry_t", ptr %2354, i64 %2344 @@ -76813,7 +76813,7 @@ _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i2 %2382 = sub i64 %2380, %2381 %2383 = sdiv exact i64 %2382, 24 %.not.i.i.i.i.i.i.i30.i = icmp ugt i64 %2383, %2369 - br i1 %.not.i.i.i.i.i.i.i30.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i31.i, label %.invoke3251 + br i1 %.not.i.i.i.i.i.i.i30.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i31.i, label %.invoke3254 _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i31.i: ; preds = %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i29.i %2384 = getelementptr inbounds %"struct.Yosys::hashlib::pool::entry_t", ptr %2379, i64 %2369 @@ -76911,7 +76911,7 @@ _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i4 %2416 = sub i64 %2414, %2415 %2417 = sdiv exact i64 %2416, 24 %.not.i.i.i.i.i.i.i46.i = icmp ugt i64 %2417, %2403 - br i1 %.not.i.i.i.i.i.i.i46.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i47.i, label %.invoke3251 + br i1 %.not.i.i.i.i.i.i.i46.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i47.i, label %.invoke3254 _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i47.i: ; preds = %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i45.i %2418 = getelementptr inbounds %"struct.Yosys::hashlib::pool::entry_t", ptr %2413, i64 %2403 @@ -76976,7 +76976,7 @@ _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i6 %2441 = sub i64 %2439, %2440 %2442 = sdiv exact i64 %2441, 24 %.not.i.i.i.i.i.i.i62.i = icmp ugt i64 %2442, %2428 - br i1 %.not.i.i.i.i.i.i.i62.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i63.i, label %.invoke3251 + br i1 %.not.i.i.i.i.i.i.i62.i, label %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i63.i, label %.invoke3254 _ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEEixEi.exit.i.i.i63.i: ; preds = %_ZNK5Yosys7hashlib3mfpINS_5RTLIL6SigBitENS0_8hash_opsIS3_EEE5ifindEi.exit.i.i.i61.i %2443 = getelementptr inbounds %"struct.Yosys::hashlib::pool::entry_t", ptr %2438, i64 %2428 @@ -76995,7 +76995,7 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 .thread: ; preds = %_ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) - br label %.invoke3250 + br label %.invoke3253 2445: ; preds = %_ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i %.not.i70.i = icmp eq ptr %.sroa.0.0.copyload.i49.i, null @@ -77005,11 +77005,11 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 2446: ; preds = %2445 %2447 = icmp eq i32 %.sroa.2.0.copyload.i50.i, %.sroa.2.0.copyload.i66.i - br i1 %2447, label %.preheader861, label %.invoke3250 + br i1 %2447, label %.preheader861, label %.invoke3253 2448: ; preds = %2445 %2449 = icmp eq i8 %.sroa.274.8.extract.trunc.i, %.sroa.2.8.extract.trunc.i - br i1 %2449, label %.preheader861, label %.invoke3250 + br i1 %2449, label %.preheader861, label %.invoke3253 2450: ; preds = %2389, %2387 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) @@ -77025,17 +77025,17 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 %2456 = sdiv exact i64 %2455, 376 %2457 = trunc i64 %2456 to i32 %2458 = icmp sgt i32 %2457, 0 - br i1 %2458, label %.lr.ph1666, label %._crit_edge1667 + br i1 %2458, label %.lr.ph1668, label %._crit_edge1669 -.lr.ph1666: ; preds = %.preheader861 +.lr.ph1668: ; preds = %.preheader861 %.val221 = load ptr, ptr %73, align 8 %2459 = getelementptr inbounds nuw i8, ptr %1923, i64 80 - %2460 = and i64 %indvars.iv2210, 4294967295 + %2460 = and i64 %indvars.iv2214, 4294967295 br label %2461 -2461: ; preds = %.lr.ph1666, %2629 - %indvars.iv2213 = phi i64 [ 0, %.lr.ph1666 ], [ %indvars.iv.next2214, %2629 ] - %2462 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val221, i64 %indvars.iv2213, i32 3 +2461: ; preds = %.lr.ph1668, %2629 + %indvars.iv2217 = phi i64 [ 0, %.lr.ph1668 ], [ %indvars.iv.next2218, %2629 ] + %2462 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val221, i64 %indvars.iv2217, i32 3 %2463 = load ptr, ptr %2462, align 8 %2464 = getelementptr inbounds i64, ptr %2463, i64 %.sext837 %storemerge.i.i.i.i.i451 = getelementptr inbounds i8, ptr %2464, i64 %storemerge.idx.i.i.i.i.i371 @@ -77046,11 +77046,11 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 2467: ; preds = %2461 %2468 = load ptr, ptr %2459, align 8 - %2469 = trunc nuw nsw i64 %indvars.iv2213 to i32 - %2470 = lshr i64 %indvars.iv2213, 6 + %2469 = trunc nuw nsw i64 %indvars.iv2217 to i32 + %2470 = lshr i64 %indvars.iv2217, 6 %.zext839 = and i64 %2470, 67108863 %2471 = getelementptr inbounds nuw i64, ptr %2468, i64 %.zext839 - %2472 = and i64 %indvars.iv2213, 63 + %2472 = and i64 %indvars.iv2217, 63 %2473 = shl nuw i64 1, %2472 %2474 = load i64, ptr %2471, align 8 %2475 = and i64 %2474, %2473 @@ -77067,7 +77067,7 @@ _ZNK5Yosys6SigMapclENS_5RTLIL6SigBitE.exit69.i: ; preds = %_ZNK5Yosys7hashlib3 %2478 = getelementptr inbounds nuw i8, ptr %2477, i64 152 %2479 = load ptr, ptr %2478, align 8 %2480 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %2479, i64 %2460 - %2481 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %2479, i64 %indvars.iv2213 + %2481 = getelementptr inbounds nuw %"struct.Yosys::MemWr", ptr %2479, i64 %indvars.iv2217 %2482 = getelementptr inbounds nuw i8, ptr %2480, i64 200 %2483 = load ptr, ptr %2482, align 8 %2484 = getelementptr inbounds nuw i8, ptr %2480, i64 208 @@ -77089,11 +77089,11 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458: ; preds = %2487, %2476 %2494 = ptrtoint ptr %2492 to i64 %2495 = sub i64 %2493, %2494 %2496 = ashr exact i64 %2495, 4 - %.not.i.i.i.i459 = icmp ugt i64 %2496, %indvars.iv2216 - br i1 %.not.i.i.i.i459, label %_ZN5Yosys5RTLIL7SigSpecixEi.exit.i460, label %.invoke3251 + %.not.i.i.i.i459 = icmp ugt i64 %2496, %indvars.iv2220 + br i1 %.not.i.i.i.i459, label %_ZN5Yosys5RTLIL7SigSpecixEi.exit.i460, label %.invoke3254 _ZN5Yosys5RTLIL7SigSpecixEi.exit.i460: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i.i458 - %2497 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2492, i64 %indvars.iv2216 + %2497 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2492, i64 %indvars.iv2220 %.sroa.076.0.copyload.i = load ptr, ptr %2497, align 8 %.sroa.378.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2497, i64 8 %.sroa.378.0.copyload.i = load i32, ptr %.sroa.378.0..sroa_idx.i, align 8 @@ -77120,11 +77120,11 @@ _ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i: ; preds = %2503, %_ZN5Yosy %2510 = ptrtoint ptr %2508 to i64 %2511 = sub i64 %2509, %2510 %2512 = ashr exact i64 %2511, 4 - %.not.i.i.i27.i = icmp ugt i64 %2512, %indvars.iv2216 - br i1 %.not.i.i.i27.i, label %_ZN5Yosys5RTLIL7SigSpecixEi.exit28.i, label %.invoke3251 + %.not.i.i.i27.i = icmp ugt i64 %2512, %indvars.iv2220 + br i1 %.not.i.i.i27.i, label %_ZN5Yosys5RTLIL7SigSpecixEi.exit28.i, label %.invoke3254 _ZN5Yosys5RTLIL7SigSpecixEi.exit28.i: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i26.i - %2513 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2508, i64 %indvars.iv2216 + %2513 = getelementptr inbounds %"struct.Yosys::RTLIL::SigBit", ptr %2508, i64 %indvars.iv2220 %.sroa.070.0.copyload.i = load ptr, ptr %2513, align 8 %.sroa.3.0..sroa_idx.i461 = getelementptr inbounds nuw i8, ptr %2513, i64 8 %.sroa.3.0.copyload.i = load i32, ptr %.sroa.3.0..sroa_idx.i461, align 8 @@ -77214,7 +77214,7 @@ _ZN5Yosys7hashlib4dictISt5tupleIJiiNS_5RTLIL6SigBitES4_EEbNS0_8hash_opsIS5_EEE4f call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) - br i1 %2552, label %.invoke3250, label %2629 + br i1 %2552, label %.invoke3253, label %2629 2553: ; preds = %.noexc485 %2554 = load ptr, ptr %1223, align 8 @@ -77485,40 +77485,40 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit67.i: ; preds = %2605, %_ZSt8_Destro call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) - br i1 %2615, label %.invoke3250, label %2629 + br i1 %2615, label %.invoke3253, label %2629 -.invoke3250: ; preds = %2750, %2694, %2446, %2448, %2626, %2547, %.thread +.invoke3253: ; preds = %2750, %2694, %2446, %2448, %2626, %2547, %.thread %2628 = phi ptr [ @.str.170, %.thread ], [ @.str.169, %2547 ], [ @.str.169, %2626 ], [ @.str.171, %2750 ], [ @.str.171, %2694 ], [ @.str.170, %2446 ], [ @.str.170, %2448 ] invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull %2628) to label %.loopexit886 unwind label %.loopexit.split-lp863.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit 2629: ; preds = %2547, %2461, %2626, %2467 - %indvars.iv.next2214 = add nuw nsw i64 %indvars.iv2213, 1 + %indvars.iv.next2218 = add nuw nsw i64 %indvars.iv2217, 1 %2630 = load ptr, ptr %1314, align 8 %2631 = load ptr, ptr %1313, align 8 %2632 = ptrtoint ptr %2630 to i64 %2633 = ptrtoint ptr %2631 to i64 %2634 = sub i64 %2632, %2633 %2635 = sdiv exact i64 %2634, 376 - %sext2248 = shl i64 %2635, 32 - %2636 = ashr exact i64 %sext2248, 32 - %2637 = icmp slt i64 %indvars.iv.next2214, %2636 - br i1 %2637, label %2461, label %._crit_edge1667, !llvm.loop !581 + %sext2251 = shl i64 %2635, 32 + %2636 = ashr exact i64 %sext2251, 32 + %2637 = icmp slt i64 %indvars.iv.next2218, %2636 + br i1 %2637, label %2461, label %._crit_edge1669, !llvm.loop !581 -._crit_edge1667: ; preds = %2629, %.preheader861 - %.not.i.i495 = icmp eq ptr %.sroa.6.21669, %.sroa.11.21668 +._crit_edge1669: ; preds = %2629, %.preheader861 + %.not.i.i495 = icmp eq ptr %.sroa.6.21671, %.sroa.11.21670 br i1 %.not.i.i495, label %2640, label %2638 -2638: ; preds = %._crit_edge1667 - store ptr %1922, ptr %.sroa.6.21669, align 8 - %.sroa.3.0..sroa_idx743 = getelementptr inbounds nuw i8, ptr %.sroa.6.21669, i64 8 +2638: ; preds = %._crit_edge1669 + store ptr %1922, ptr %.sroa.6.21671, align 8 + %.sroa.3.0..sroa_idx743 = getelementptr inbounds nuw i8, ptr %.sroa.6.21671, i64 8 store i32 %1911, ptr %.sroa.3.0..sroa_idx743, align 8 - %2639 = getelementptr inbounds nuw i8, ptr %.sroa.6.21669, i64 16 + %2639 = getelementptr inbounds nuw i8, ptr %.sroa.6.21671, i64 16 br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit -2640: ; preds = %._crit_edge1667 - %2641 = ptrtoint ptr %.sroa.6.21669 to i64 - %2642 = ptrtoint ptr %.sroa.0807.31670 to i64 +2640: ; preds = %._crit_edge1669 + %2641 = ptrtoint ptr %.sroa.6.21671 to i64 + %2642 = ptrtoint ptr %.sroa.0807.31672 to i64 %2643 = sub i64 %2641, %2642 %2644 = icmp eq i64 %2643, 9223372036854775792 br i1 %2644, label %2645, label %_ZNKSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i @@ -77532,7 +77532,7 @@ _ZN5Yosys5RTLIL7SigSpecD2Ev.exit67.i: ; preds = %2605, %_ZSt8_Destro _ZNKSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %2640 %2646 = ashr exact i64 %2643, 4 - %2647 = icmp eq ptr %.sroa.6.21669, %.sroa.0807.31670 + %2647 = icmp eq ptr %.sroa.6.21671, %.sroa.0807.31672 %.sroa.speculated.i.i.i.i497 = select i1 %2647, i64 1, i64 %2646 %2648 = add nsw i64 %.sroa.speculated.i.i.i.i497, %2646 %2649 = icmp ult i64 %2648, %2646 @@ -77553,21 +77553,21 @@ _ZNKSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE12_M_check_lenEmPKc.ex .lr.ph.i.i.i.i.i.i.i499: ; preds = %.noexc505, %.lr.ph.i.i.i.i.i.i.i499 %.03.i.i.i.i.i.i.i500 = phi ptr [ %2656, %.lr.ph.i.i.i.i.i.i.i499 ], [ %2653, %.noexc505 ] - %.092.i.i.i.i.i.i.i501 = phi ptr [ %2655, %.lr.ph.i.i.i.i.i.i.i499 ], [ %.sroa.0807.31670, %.noexc505 ] + %.092.i.i.i.i.i.i.i501 = phi ptr [ %2655, %.lr.ph.i.i.i.i.i.i.i499 ], [ %.sroa.0807.31672, %.noexc505 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.03.i.i.i.i.i.i.i500, ptr noundef nonnull readonly align 8 dereferenceable(16) %.092.i.i.i.i.i.i.i501, i64 16, i1 false), !alias.scope !582 %2655 = getelementptr inbounds nuw i8, ptr %.092.i.i.i.i.i.i.i501, i64 16 %2656 = getelementptr inbounds nuw i8, ptr %.03.i.i.i.i.i.i.i500, i64 16 - %.not.i.i.i.i.i.i.i502 = icmp eq ptr %2655, %.sroa.6.21669 + %.not.i.i.i.i.i.i.i502 = icmp eq ptr %2655, %.sroa.6.21671 br i1 %.not.i.i.i.i.i.i.i502, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i, label %.lr.ph.i.i.i.i.i.i.i499, !llvm.loop !586 _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i499, %.noexc505 %.0.lcssa.i.i.i.i.i.i.i503 = phi ptr [ %2653, %.noexc505 ], [ %2656, %.lr.ph.i.i.i.i.i.i.i499 ] %2657 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i.i.i.i.i.i.i503, i64 16 - %.not.i27.i.i.i = icmp eq ptr %.sroa.0807.31670, null + %.not.i27.i.i.i = icmp eq ptr %.sroa.0807.31672, null br i1 %.not.i27.i.i.i, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i, label %2658 2658: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.0807.31670) #23 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0807.31672) #23 br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i: ; preds = %2658, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit26.i.i.i @@ -77575,16 +77575,16 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4 br label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit 2660: ; preds = %.noexc400, %.loopexit858, %1927, %1920, %2304 - %indvars.iv.next2211 = add nuw nsw i64 %indvars.iv2210, 1 + %indvars.iv.next2215 = add nuw nsw i64 %indvars.iv2214, 1 %2661 = load ptr, ptr %1314, align 8 %2662 = load ptr, ptr %1313, align 8 %2663 = ptrtoint ptr %2661 to i64 %2664 = ptrtoint ptr %2662 to i64 %2665 = sub i64 %2663, %2664 %2666 = sdiv exact i64 %2665, 376 - %sext2249 = shl i64 %2666, 32 - %2667 = ashr exact i64 %sext2249, 32 - %2668 = icmp slt i64 %indvars.iv.next2211, %2667 + %sext2252 = shl i64 %2666, 32 + %2667 = ashr exact i64 %sext2252, 32 + %2668 = icmp slt i64 %indvars.iv.next2215, %2667 br i1 %2668, label %1920, label %.critedge, !llvm.loop !587 .critedge: ; preds = %2660, %1901 @@ -77650,7 +77650,7 @@ _ZN5Yosys7hashlib4dictISt5tupleIJNS_5RTLIL6SigBitEbEEbNS0_8hash_opsIS5_EEE4findE %2699 = trunc i8 %2698 to i1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) - br i1 %2699, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, label %.invoke3250 + br i1 %2699, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, label %.invoke3253 2700: ; preds = %.noexc516 %2701 = load ptr, ptr %72, align 8 @@ -77775,34 +77775,34 @@ _ZNK5Yosys7hashlib4dictISt5tupleIJNS_5RTLIL6SigBitEbEEbNS0_8hash_opsIS5_EEE7do_h store i8 %2723, ptr %2753, align 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) - br i1 %2721, label %.invoke3250, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit + br i1 %2721, label %.invoke3253, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit: ; preds = %.critedge, %2694, %2638, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i, %2750 - %.sroa.11.5 = phi ptr [ %.sroa.11.21668, %2750 ], [ %2659, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %.sroa.11.21668, %2638 ], [ %.sroa.11.21668, %2694 ], [ %.sroa.11.21668, %.critedge ] - %.sroa.6.5 = phi ptr [ %.sroa.6.21669, %2750 ], [ %2657, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %2639, %2638 ], [ %.sroa.6.21669, %2694 ], [ %.sroa.6.21669, %.critedge ] - %.sroa.0807.6 = phi ptr [ %.sroa.0807.31670, %2750 ], [ %2653, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %.sroa.0807.31670, %2638 ], [ %.sroa.0807.31670, %2694 ], [ %.sroa.0807.31670, %.critedge ] - %indvars.iv.next2217 = add nsw i64 %indvars.iv2216, 1 - %2754 = load i32, ptr %.sroa.0810.01692, align 8 + %.sroa.11.5 = phi ptr [ %.sroa.11.21670, %2750 ], [ %2659, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %.sroa.11.21670, %2638 ], [ %.sroa.11.21670, %2694 ], [ %.sroa.11.21670, %.critedge ] + %.sroa.6.5 = phi ptr [ %.sroa.6.21671, %2750 ], [ %2657, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %2639, %2638 ], [ %.sroa.6.21671, %2694 ], [ %.sroa.6.21671, %.critedge ] + %.sroa.0807.6 = phi ptr [ %.sroa.0807.31672, %2750 ], [ %2653, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i ], [ %.sroa.0807.31672, %2638 ], [ %.sroa.0807.31672, %2694 ], [ %.sroa.0807.31672, %.critedge ] + %indvars.iv.next2221 = add nsw i64 %indvars.iv2220, 1 + %2754 = load i32, ptr %.sroa.0810.01694, align 8 %2755 = load i32, ptr %1848, align 4 %2756 = add nsw i32 %2755, %2754 %2757 = sext i32 %2756 to i64 - %2758 = icmp slt i64 %indvars.iv.next2217, %2757 - br i1 %2758, label %1885, label %._crit_edge1675, !llvm.loop !588 - -._crit_edge1675: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, %1871 - %.sroa.11.2.lcssa = phi ptr [ %.sroa.11.11679, %1871 ], [ %.sroa.11.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %.sroa.6.2.lcssa = phi ptr [ %.sroa.6.11680, %1871 ], [ %.sroa.6.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %.sroa.0807.3.lcssa = phi ptr [ %.sroa.0807.11681, %1871 ], [ %.sroa.0807.6, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] - %indvars.iv.next2220 = add nuw nsw i64 %indvars.iv2219, 1 + %2758 = icmp slt i64 %indvars.iv.next2221, %2757 + br i1 %2758, label %1885, label %._crit_edge1677, !llvm.loop !588 + +._crit_edge1677: ; preds = %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit, %1871 + %.sroa.11.2.lcssa = phi ptr [ %.sroa.11.11681, %1871 ], [ %.sroa.11.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %.sroa.6.2.lcssa = phi ptr [ %.sroa.6.11682, %1871 ], [ %.sroa.6.5, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %.sroa.0807.3.lcssa = phi ptr [ %.sroa.0807.11683, %1871 ], [ %.sroa.0807.6, %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit ] + %indvars.iv.next2224 = add nuw nsw i64 %indvars.iv2223, 1 %2759 = load i32, ptr %1841, align 8 %2760 = sext i32 %2759 to i64 - %.not205 = icmp slt i64 %indvars.iv.next2220, %2760 + %.not205 = icmp slt i64 %indvars.iv.next2224, %2760 br i1 %.not205, label %1859, label %.preheader885, !llvm.loop !589 -.lr.ph1690: ; preds = %.preheader885, %.lr.ph1690 - %.sroa.0737.01689 = phi ptr [ %2778, %.lr.ph1690 ], [ %.sroa.0807.3.lcssa, %.preheader885 ] - %.sroa.0.0.copyload = load ptr, ptr %.sroa.0737.01689, align 8 - %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0737.01689, i64 8 +.lr.ph1692: ; preds = %.preheader885, %.lr.ph1692 + %.sroa.0737.01691 = phi ptr [ %2778, %.lr.ph1692 ], [ %.sroa.0807.3.lcssa, %.preheader885 ] + %.sroa.0.0.copyload = load ptr, ptr %.sroa.0737.01691, align 8 + %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0737.01691, i64 8 %.sroa.3.0.copyload = load i32, ptr %.sroa.3.0..sroa_idx, align 8 %2761 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 48 %2762 = sext i32 %.sroa.3.0.copyload to i64 @@ -77827,13 +77827,13 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit: ; %2776 = load i64, ptr %storemerge.i.i.i.i.i529, align 8 %2777 = and i64 %2776, %2775 store i64 %2777, ptr %storemerge.i.i.i.i.i529, align 8 - %2778 = getelementptr inbounds nuw i8, ptr %.sroa.0737.01689, i64 16 + %2778 = getelementptr inbounds nuw i8, ptr %.sroa.0737.01691, i64 16 %.not852 = icmp eq ptr %2778, %.sroa.6.2.lcssa - br i1 %.not852, label %.loopexit886, label %.lr.ph1690 + br i1 %.not852, label %.loopexit886, label %.lr.ph1692 -.loopexit886: ; preds = %.lr.ph1690, %.invoke3250, %.preheader885 - %.not2051357 = phi i1 [ false, %.preheader885 ], [ true, %.invoke3250 ], [ false, %.lr.ph1690 ] - %.sroa.0807.4 = phi ptr [ %.sroa.0807.3.lcssa, %.preheader885 ], [ %.sroa.0807.31670, %.invoke3250 ], [ %.sroa.0807.3.lcssa, %.lr.ph1690 ] +.loopexit886: ; preds = %.lr.ph1692, %.invoke3253, %.preheader885 + %.not2051357 = phi i1 [ false, %.preheader885 ], [ true, %.invoke3253 ], [ false, %.lr.ph1692 ] + %.sroa.0807.4 = phi ptr [ %.sroa.0807.3.lcssa, %.preheader885 ], [ %.sroa.0807.31672, %.invoke3253 ], [ %.sroa.0807.3.lcssa, %.lr.ph1692 ] %.not.i.i.i532 = icmp eq ptr %.sroa.0807.4, null br i1 %.not.i.i.i532, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533, label %2779 @@ -77844,11 +77844,11 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EE9push_backEOS4_.exit: ; _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = %.loopexit886 br i1 %.not2051357, label %.loopexit894, label %_ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533.thread -2780: ; preds = %.lr.ph1704, %2817 - %2781 = phi ptr [ %1850, %.lr.ph1704 ], [ %2818, %2817 ] - %2782 = phi ptr [ %1851, %.lr.ph1704 ], [ %2819, %2817 ] - %indvars.iv2222 = phi i64 [ 0, %.lr.ph1704 ], [ %indvars.iv.next2223, %2817 ] - %2783 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val222, i64 %indvars.iv2222 +2780: ; preds = %.lr.ph1706, %2817 + %2781 = phi ptr [ %1850, %.lr.ph1706 ], [ %2818, %2817 ] + %2782 = phi ptr [ %1851, %.lr.ph1706 ], [ %2819, %2817 ] + %indvars.iv2226 = phi i64 [ 0, %.lr.ph1706 ], [ %indvars.iv.next2227, %2817 ] + %2783 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val222, i64 %indvars.iv2226 %2784 = load i8, ptr %2783, align 8 %2785 = trunc i8 %2784 to i1 br i1 %2785, label %.preheader, label %2817 @@ -77856,22 +77856,22 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = .preheader: ; preds = %2780 %2786 = load i32, ptr %1858, align 8 %2787 = icmp sgt i32 %2786, 0 - br i1 %2787, label %.lr.ph1698, label %._crit_edge1699.thread + br i1 %2787, label %.lr.ph1700, label %._crit_edge1701.thread -.lr.ph1698: ; preds = %.preheader +.lr.ph1700: ; preds = %.preheader %2788 = getelementptr inbounds nuw i8, ptr %2783, i64 88 %2789 = load ptr, ptr %2788, align 8 %2790 = getelementptr inbounds nuw i8, ptr %2783, i64 48 br label %2791 -2791: ; preds = %.lr.ph1698, %2804 - %.01561697 = phi i32 [ 0, %.lr.ph1698 ], [ %2805, %2804 ] - %.01571696 = phi i8 [ 0, %.lr.ph1698 ], [ %.1158, %2804 ] - %.01591695 = phi i8 [ 0, %.lr.ph1698 ], [ %.1160, %2804 ] - %2792 = lshr i32 %.01561697, 6 +2791: ; preds = %.lr.ph1700, %2804 + %.01561699 = phi i32 [ 0, %.lr.ph1700 ], [ %2805, %2804 ] + %.01571698 = phi i8 [ 0, %.lr.ph1700 ], [ %.1158, %2804 ] + %.01591697 = phi i8 [ 0, %.lr.ph1700 ], [ %.1160, %2804 ] + %2792 = lshr i32 %.01561699, 6 %.zext843 = zext nneg i32 %2792 to i64 %2793 = getelementptr inbounds nuw i64, ptr %2789, i64 %.zext843 - %2794 = and i32 %.01561697, 63 + %2794 = and i32 %.01561699, 63 %2795 = zext nneg i32 %2794 to i64 %2796 = shl nuw i64 1, %2795 %2797 = load i64, ptr %2793, align 8 @@ -77885,62 +77885,62 @@ _ZNSt6vectorISt4pairIRN12_GLOBAL__N_18PortDataEiESaIS4_EED2Ev.exit533: ; preds = %2802 = load i64, ptr %2801, align 8 %2803 = and i64 %2802, %2796 %.not851 = icmp eq i64 %2803, 0 - %..0159 = select i1 %.not851, i8 %.01591695, i8 1 - %.0157. = select i1 %.not851, i8 1, i8 %.01571696 + %..0159 = select i1 %.not851, i8 %.01591697, i8 1 + %.0157. = select i1 %.not851, i8 1, i8 %.01571698 br label %2804 2804: ; preds = %2799, %2791 - %.1160 = phi i8 [ %.01591695, %2791 ], [ %..0159, %2799 ] - %.1158 = phi i8 [ %.01571696, %2791 ], [ %.0157., %2799 ] - %2805 = add nuw nsw i32 %.01561697, 1 + %.1160 = phi i8 [ %.01591697, %2791 ], [ %..0159, %2799 ] + %.1158 = phi i8 [ %.01571698, %2791 ], [ %.0157., %2799 ] + %2805 = add nuw nsw i32 %.01561699, 1 %exitcond.not = icmp eq i32 %2805, %2786 - br i1 %exitcond.not, label %._crit_edge1699, label %2791, !llvm.loop !590 + br i1 %exitcond.not, label %._crit_edge1701, label %2791, !llvm.loop !590 -._crit_edge1699: ; preds = %2804 +._crit_edge1701: ; preds = %2804 %2806 = trunc nuw i8 %.1160 to i1 - br i1 %2806, label %2807, label %._crit_edge1699.thread + br i1 %2806, label %2807, label %._crit_edge1701.thread -2807: ; preds = %._crit_edge1699 +2807: ; preds = %._crit_edge1701 %2808 = trunc nuw i8 %.1158 to i1 - br i1 %2808, label %2809, label %._crit_edge1699.thread + br i1 %2808, label %2809, label %._crit_edge1701.thread 2809: ; preds = %2807 - %2810 = trunc nuw nsw i64 %indvars.iv2222 to i32 + %2810 = trunc nuw nsw i64 %indvars.iv2226 to i32 invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull @.str.172, i32 noundef %2810) to label %.loopexit894 unwind label %.loopexit.split-lp -._crit_edge1699.thread: ; preds = %.preheader, %2807, %._crit_edge1699 - %.0159.lcssa2263 = phi i8 [ %.1160, %2807 ], [ %.1160, %._crit_edge1699 ], [ 0, %.preheader ] - %2811 = phi i8 [ 1, %2807 ], [ %.1158, %._crit_edge1699 ], [ 0, %.preheader ] +._crit_edge1701.thread: ; preds = %.preheader, %2807, %._crit_edge1701 + %.0159.lcssa2266 = phi i8 [ %.1160, %2807 ], [ %.1160, %._crit_edge1701 ], [ 0, %.preheader ] + %2811 = phi i8 [ 1, %2807 ], [ %.1158, %._crit_edge1701 ], [ 0, %.preheader ] %2812 = getelementptr inbounds nuw i8, ptr %2783, i64 128 - %2813 = and i8 %.0159.lcssa2263, 1 + %2813 = and i8 %.0159.lcssa2266, 1 store i8 %2813, ptr %2812, align 8 %2814 = getelementptr inbounds nuw i8, ptr %2783, i64 129 %2815 = and i8 %2811, 1 %2816 = xor i8 %2815, 1 store i8 %2816, ptr %2814, align 1 - %.pre2240 = load ptr, ptr %1314, align 8 - %.pre2241 = load ptr, ptr %1313, align 8 + %.pre2244 = load ptr, ptr %1314, align 8 + %.pre2245 = load ptr, ptr %1313, align 8 br label %2817 -2817: ; preds = %2780, %._crit_edge1699.thread - %2818 = phi ptr [ %2781, %2780 ], [ %.pre2241, %._crit_edge1699.thread ] - %2819 = phi ptr [ %2782, %2780 ], [ %.pre2240, %._crit_edge1699.thread ] - %indvars.iv.next2223 = add nuw nsw i64 %indvars.iv2222, 1 +2817: ; preds = %2780, %._crit_edge1701.thread + %2818 = phi ptr [ %2781, %2780 ], [ %.pre2245, %._crit_edge1701.thread ] + %2819 = phi ptr [ %2782, %2780 ], [ %.pre2244, %._crit_edge1701.thread ] + %indvars.iv.next2227 = add nuw nsw i64 %indvars.iv2226, 1 %2820 = ptrtoint ptr %2819 to i64 %2821 = ptrtoint ptr %2818 to i64 %2822 = sub i64 %2820, %2821 %2823 = sdiv exact i64 %2822, 376 - %sext2250 = shl i64 %2823, 32 - %2824 = ashr exact i64 %sext2250, 32 - %2825 = icmp slt i64 %indvars.iv.next2223, %2824 - br i1 %2825, label %2780, label %._crit_edge1705, !llvm.loop !591 + %sext2253 = shl i64 %2823, 32 + %2824 = ashr exact i64 %sext2253, 32 + %2825 = icmp slt i64 %indvars.iv.next2227, %2824 + br i1 %2825, label %2780, label %._crit_edge1707, !llvm.loop !591 -._crit_edge1705: ; preds = %2817, %.preheader857 +._crit_edge1707: ; preds = %2817, %.preheader857 invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull @.str.173) to label %2826 unwind label %.loopexit.split-lp -2826: ; preds = %._crit_edge1705 +2826: ; preds = %._crit_edge1707 invoke void @_ZN5Yosys13FfMergeHelper16remove_output_ffERKNS_7hashlib4poolISt4pairIPNS_5RTLIL4CellEiENS1_8hash_opsIS7_EEEE(ptr noundef nonnull align 8 dereferenceable(192) %1054, ptr noundef nonnull align 8 dereferenceable(49) %67) to label %2827 unwind label %.loopexit.split-lp @@ -78374,17 +78374,17 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader: ; preds = %.noexc549 %2995 = sdiv exact i64 %2994, 376 %2996 = trunc i64 %2995 to i32 %2997 = icmp sgt i32 %2996, 0 - br i1 %2997, label %.lr.ph1707, label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge + br i1 %2997, label %.lr.ph1709, label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge -.lr.ph1707: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader +.lr.ph1709: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader %.val223 = load ptr, ptr %73, align 8 %2998 = getelementptr inbounds nuw i8, ptr %105, i64 176 %2999 = getelementptr inbounds nuw i8, ptr %105, i64 216 br label %3000 -3000: ; preds = %.lr.ph1707, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 - %indvars.iv2225 = phi i64 [ 0, %.lr.ph1707 ], [ %indvars.iv.next2226, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 ] - %3001 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val223, i64 %indvars.iv2225 +3000: ; preds = %.lr.ph1709, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 + %indvars.iv2229 = phi i64 [ 0, %.lr.ph1709 ], [ %indvars.iv.next2230, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 ] + %3001 = getelementptr inbounds nuw %"struct.(anonymous namespace)::PortData", ptr %.val223, i64 %indvars.iv2229 %3002 = load i8, ptr %3001, align 8 %3003 = trunc i8 %3002 to i1 br i1 %3003, label %3004, label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 @@ -78396,7 +78396,7 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader: ; preds = %.noexc549 br i1 %3007, label %3008, label %3010 3008: ; preds = %3004 - %3009 = trunc nuw nsw i64 %indvars.iv2225 to i32 + %3009 = trunc nuw nsw i64 %indvars.iv2229 to i32 invoke void (ptr, ...) @_ZN5Yosys3logEPKcz(ptr noundef nonnull @.str.175, i32 noundef %3009) to label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.sink.split unwind label %.loopexit @@ -78404,7 +78404,7 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader: ; preds = %.noexc549 %3011 = getelementptr inbounds nuw i8, ptr %3001, i64 128 %3012 = load i8, ptr %3011, align 8 %3013 = trunc i8 %3012 to i1 - %3014 = trunc nuw nsw i64 %indvars.iv2225 to i32 + %3014 = trunc nuw nsw i64 %indvars.iv2229 to i32 br i1 %3013, label %3015, label %3016 3015: ; preds = %3010 @@ -78416,12 +78416,12 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader: ; preds = %.noexc549 to label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 unwind label %.loopexit _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.sink.split: ; preds = %3015, %3008 - %.sink2779.in = phi ptr [ %2999, %3008 ], [ %2998, %3015 ] - %.sink2779 = load ptr, ptr %.sink2779.in, align 8 - %3017 = lshr i64 %indvars.iv2225, 6 + %.sink2782.in = phi ptr [ %2999, %3008 ], [ %2998, %3015 ] + %.sink2782 = load ptr, ptr %.sink2782.in, align 8 + %3017 = lshr i64 %indvars.iv2229, 6 %.zext845 = and i64 %3017, 67108863 - %3018 = getelementptr inbounds nuw i64, ptr %.sink2779, i64 %.zext845 - %3019 = and i64 %indvars.iv2225, 63 + %3018 = getelementptr inbounds nuw i64, ptr %.sink2782, i64 %.zext845 + %3019 = and i64 %indvars.iv2229, 63 %3020 = shl nuw i64 1, %3019 %3021 = load i64, ptr %3018, align 8 %3022 = or i64 %3021, %3020 @@ -78429,16 +78429,16 @@ _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.sink.split: ; preds = %3015, %3008 br label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551 _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.sink.split, %3016, %3000 - %indvars.iv.next2226 = add nuw nsw i64 %indvars.iv2225, 1 + %indvars.iv.next2230 = add nuw nsw i64 %indvars.iv2229, 1 %3023 = load ptr, ptr %1314, align 8 %3024 = load ptr, ptr %1313, align 8 %3025 = ptrtoint ptr %3023 to i64 %3026 = ptrtoint ptr %3024 to i64 %3027 = sub i64 %3025, %3026 %3028 = sdiv exact i64 %3027, 376 - %sext2251 = shl i64 %3028, 32 - %3029 = ashr exact i64 %sext2251, 32 - %3030 = icmp slt i64 %indvars.iv.next2226, %3029 + %sext2254 = shl i64 %3028, 32 + %3029 = ashr exact i64 %sext2254, 32 + %3030 = icmp slt i64 %indvars.iv.next2230, %3029 br i1 %3030, label %3000, label %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge, !llvm.loop !592 _ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551._crit_edge: ; preds = %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551, %_ZN5Yosys5RTLIL7SigSpecaSERKS1_.exit551.preheader @@ -78471,7 +78471,7 @@ _ZNSt6vectorIN12_GLOBAL__N_18PortDataESaIS1_EED2Ev.exit: ; preds = %_ZSt8_Destro call fastcc void @_ZN12_GLOBAL__N_113MemQueryCacheD2Ev(ptr noundef nonnull align 8 dereferenceable(264) %72) #22 br label %3036 -3036: ; preds = %.invoke2774, %_ZNSt6vectorIN12_GLOBAL__N_18PortDataESaIS1_EED2Ev.exit +3036: ; preds = %.invoke2777, %_ZNSt6vectorIN12_GLOBAL__N_18PortDataESaIS1_EED2Ev.exit %3037 = getelementptr inbounds nuw i8, ptr %67, i64 24 %3038 = load ptr, ptr %3037, align 8 %.not.i.i.i.i566 = icmp eq ptr %3038, null diff --git a/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll b/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll index 9b1e03044b1..f26ac5cbc5c 100644 --- a/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll +++ b/bench/zxing/optimized/PDFCodewordDecoder.cpp.ll @@ -157,9 +157,7 @@ _ZN5ZXing6Pdf41715CodewordDecoder11GetCodewordEi.exit.i: ; preds = %49 %59 = add nsw i32 %58, -1 %60 = srem i32 %59, 929 %61 = icmp eq i32 %60, -1 - %.not = icmp eq i32 %.1.lcssa.i.i, -1 - %or.cond = select i1 %61, i1 true, i1 %.not - br i1 %or.cond, label %_ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread, label %107 + br i1 %61, label %_ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread, label %107 _ZN5ZXing6Pdf417L23GetDecodedCodewordValueERKSt5arrayIiLm8EE.exit.thread: ; preds = %_ZN5ZXing6Pdf41715CodewordDecoder11GetCodewordEi.exit.i, %49, %_ZSt11lower_boundIPKtiET_S2_S2_RKT0_.exit.i.i, %_ZN5ZXing6Pdf417L11GetBitValueERKSt5arrayIiLm8EE.exit.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2)