From 11dca16dc7a0d58f110011ade7df2f4654fd04ad Mon Sep 17 00:00:00 2001 From: nikic <216080+nikic@users.noreply.github.com> Date: Fri, 5 Dec 2025 19:12:10 +0800 Subject: [PATCH 1/3] pre-commit: PR170835 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..06fdcbc4f63 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/170835 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From 37c5fdc39207c591e2544aeb49f7b16e625df994 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:48:41 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/abcExact.ll | 2 +- bench/abseil-cpp/optimized/cord_rep_btree.ll | 230 +++++----- .../optimized/distribution_test_util.ll | 108 +++-- bench/assimp/optimized/TriangulateProcess.ll | 18 +- bench/boost/optimized/junit_log_formatter.ll | 12 +- bench/boost/optimized/xml_grammar.ll | 116 ++--- .../optimized/backward_references_hq.ll | 68 +-- bench/brotli/optimized/compress_fragment.ll | 16 +- bench/brotli/optimized/encode.ll | 38 +- .../optimized/btContinuousConvexCollision.ll | 142 +++--- bench/casadi/optimized/cvodea.ll | 248 +++++----- bench/casadi/optimized/idaa.ll | 198 ++++---- bench/clamav/optimized/lzxd.ll | 145 +++--- bench/clamav/optimized/mszipd.ll | 167 ++++--- bench/clamav/optimized/tnef.ll | 92 ++-- bench/coremark/optimized/core_list_join.ll | 90 ++-- bench/cpython/optimized/longobject.ll | 312 +++++++------ bench/cpython/optimized/mpdecimal.ll | 273 ++++++----- bench/cpython/optimized/unicodeobject.ll | 158 +++---- bench/cxxopts/optimized/example.ll | 237 +++++----- bench/duckdb/optimized/encode.ll | 34 +- bench/duckdb/optimized/utf8proc.ll | 4 +- bench/eastl/optimized/BenchmarkAlgorithm.ll | 53 +-- bench/eastl/optimized/EASprintfCore.ll | 195 ++++---- bench/ffmpeg/optimized/pngdec.ll | 7 +- bench/fmt/optimized/scan-test.ll | 428 +++++++++--------- bench/git/optimized/cache-tree.ll | 251 +++++----- bench/git/optimized/tree-walk.ll | 214 +++++---- bench/git/optimized/walker.ll | 86 ++-- bench/graphviz/optimized/blockpath.ll | 8 +- bench/gromacs/optimized/atomdata.ll | 10 +- bench/gromacs/optimized/tngio.ll | 346 +++++++------- bench/hwloc/optimized/topology-synthetic.ll | 48 +- bench/hyperscan/optimized/ng_revacc.ll | 50 +- bench/lean4/optimized/name.ll | 377 ++++++++------- bench/libigl/optimized/cotmatrix.ll | 24 +- bench/libigl/optimized/exact_geodesic.ll | 82 ++-- bench/libquic/optimized/s3_enc.ll | 76 ++-- bench/linux/optimized/scsi.ll | 32 +- bench/llvm/optimized/APINotesReader.ll | 177 ++++---- bench/llvm/optimized/ASTReader.ll | 175 ++++--- bench/llvm/optimized/GlobalModuleIndex.ll | 173 ++++--- bench/llvm/optimized/ItaniumMangle.ll | 96 ++-- bench/llvm/optimized/RegAllocGreedy.ll | 170 +++---- bench/llvm/optimized/SemaOverload.ll | 41 +- bench/meshlab/optimized/arap.ll | 28 +- .../optimized/filter_parametrization.ll | 92 ++-- bench/oiio/optimized/exrinput_c.ll | 170 +++---- bench/openjdk/optimized/check_classname.ll | 141 +++--- bench/openjdk/optimized/hb-blob.ll | 20 +- bench/openjdk/optimized/hb-ot-layout.ll | 58 +-- .../openssl/optimized/tls13encryptiontest.ll | 56 +-- bench/openusd/optimized/faceVertex.ll | 6 +- .../optimized/cztbx1zaxsgh33rhqav0blwq7.ll | 40 +- .../optimized/etaacdu7pg0nazmqnydgyjsn2.ll | 14 +- bench/postgres/optimized/fastpath.ll | 5 +- bench/postgres/optimized/fe-exec.ll | 28 +- bench/postgres/optimized/pl_gram.ll | 46 +- bench/qemu/optimized/fdt.ll | 22 +- bench/qemu/optimized/virtio-pci.ll | 47 +- bench/qemu/optimized/virtio.ll | 41 +- bench/rocksdb/optimized/version_set.ll | 30 +- bench/ruby/optimized/dir.ll | 52 +-- .../optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll | 110 ++--- .../optimized/avzuiha0u13zvsyv1kglukilk.ll | 54 +-- .../optimized/bfvulplr01a8w79gvhbwzr5ai.ll | 100 ++-- bench/slurm/optimized/slurmdb_defs.ll | 57 ++- .../optimized/4wrr62dd33canpwl.ll | 90 ++-- .../optimized/5az6c15ag5q4gib5.ll | 147 +++--- bench/sqlite/optimized/shell.ll | 88 ++-- bench/sundials/optimized/cvodea.ll | 244 +++++----- bench/sundials/optimized/idaa.ll | 192 ++++---- bench/tev/optimized/StbiLdrImageSaver.ll | 44 +- bench/typst-rs/optimized/5z4no3nnr5v1s13.ll | 27 +- bench/velox/optimized/BaseVector.ll | 12 +- bench/velox/optimized/DenseHll.ll | 138 +++--- bench/verilator/optimized/V3OrderParallel.ll | 84 ++-- bench/wireshark/optimized/androiddump.ll | 100 ++-- bench/wolfssl/optimized/benchmark.ll | 212 ++++----- .../optimized/3puy2qvhvlnhff2105q9h6j8i.ll | 194 ++++---- 80 files changed, 4239 insertions(+), 4377 deletions(-) diff --git a/bench/abc/optimized/abcExact.ll b/bench/abc/optimized/abcExact.ll index 32ebaed4bc9..095c072a525 100644 --- a/bench/abc/optimized/abcExact.ll +++ b/bench/abc/optimized/abcExact.ll @@ -11857,9 +11857,9 @@ Ses_CheckGatesConsistency.exit._crit_edge: ; preds = %Ses_CheckGatesConsi br i1 %96, label %.lr.ph81.i, label %Ses_ManDeriveTruth.exit .lr.ph81.i: ; preds = %90 - %wide.trip.count96.i = zext nneg i8 %93 to i64 %97 = getelementptr inbounds nuw i8, ptr %91, i64 3 %98 = load i32, ptr %56, align 4, !tbaa !96 + %wide.trip.count96.i = zext nneg i8 %93 to i64 br label %99 99: ; preds = %.loopexit.i, %.lr.ph81.i diff --git a/bench/abseil-cpp/optimized/cord_rep_btree.ll b/bench/abseil-cpp/optimized/cord_rep_btree.ll index e90a845ca07..1eff67af271 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree.ll @@ -1662,7 +1662,7 @@ define dso_local noalias noundef nonnull ptr @_ZN4absl13cord_internal12CordRepBt define weak_odr dso_local noundef ptr @_ZN4absl13cord_internal12CordRepBtree7AddDataILNS1_8EdgeTypeE1EEEPS1_S4_St17basic_string_viewIcSt11char_traitsIcEEm(ptr noundef %0, i64 %1, ptr %2, i64 noundef %3) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %5 = alloca %"struct.absl::cord_internal::(anonymous namespace)::StackOperations.0", align 8 %6 = icmp eq i64 %1, 0 - br i1 %6, label %205, label %7, !prof !29 + br i1 %6, label %199, label %7, !prof !29 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 13 @@ -1805,7 +1805,7 @@ _ZN4absl13cord_internal12CordRepBtree10ToOpResultEb.exit: ; preds = %.lr.ph.i.i, %77 = add i64 %76, %1 store i64 %77, ptr %.sroa.0.0.i, align 8, !tbaa !7 %78 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull %0, i32 noundef %10, i64 noundef %1, ptr nonnull %.sroa.0.0.i, i32 %.sroa.3.0.i) - br label %204 + br label %198 79: ; preds = %_ZN4absl13cord_internal12CordRepBtree10ToOpResultEb.exit %80 = sub i64 %1, %73 @@ -1942,150 +1942,140 @@ _ZN4absl13cord_internal12CordRepBtree7AddEdgeILNS1_8EdgeTypeE1EEENS1_8OpResultEb %.sroa.11.0 = phi ptr [ %74, %.loopexit ], [ %2, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] %.sroa.0.0 = phi i64 [ %73, %.loopexit ], [ %1, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] %.059 = phi ptr [ %.2.i.i, %.loopexit ], [ %0, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] - %141 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 8 - store i32 2, ptr %142, align 4, !tbaa !24 - %143 = getelementptr inbounds nuw i8, ptr %141, i64 12 - store i8 3, ptr %143, align 4, !tbaa !25 - %144 = getelementptr inbounds nuw i8, ptr %141, i64 13 - store i8 0, ptr %144, align 1, !tbaa !4 - %145 = getelementptr inbounds nuw i8, ptr %141, i64 14 - store i8 0, ptr %145, align 2, !tbaa !4 - %146 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %141 = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i -_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i: ; preds = %198, %140 - %147 = phi ptr [ %141, %140 ], [ %199, %198 ] - %.261136 = phi ptr [ %.059, %140 ], [ %185, %198 ] - %.063135 = phi i32 [ %10, %140 ], [ %188, %198 ] - %.sroa.0.1134 = phi i64 [ %.sroa.0.0, %140 ], [ %183, %198 ] - %.sroa.11.1133 = phi ptr [ %.sroa.11.0, %140 ], [ %184, %198 ] - %148 = getelementptr inbounds nuw i8, ptr %147, i64 16 +_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i: ; preds = %197, %140 + %.sroa.11.1 = phi ptr [ %.sroa.11.0, %140 ], [ %183, %197 ] + %.sroa.0.1 = phi i64 [ %.sroa.0.0, %140 ], [ %182, %197 ] + %.063 = phi i32 [ %10, %140 ], [ %187, %197 ] + %.261 = phi ptr [ %.059, %140 ], [ %184, %197 ] + %142 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 + %143 = getelementptr inbounds nuw i8, ptr %142, i64 8 + store i32 2, ptr %143, align 4, !tbaa !24 + %144 = getelementptr inbounds nuw i8, ptr %142, i64 12 + store i8 3, ptr %144, align 4, !tbaa !25 + %145 = getelementptr inbounds nuw i8, ptr %142, i64 13 + store i8 0, ptr %145, align 1, !tbaa !4 + %146 = getelementptr inbounds nuw i8, ptr %142, i64 14 + store i8 0, ptr %146, align 2, !tbaa !4 + %147 = getelementptr inbounds nuw i8, ptr %142, i64 16 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i - %.029.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %169, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.01828.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %170, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.6.027.i = phi ptr [ %.sroa.11.1133, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %174, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.0.026.i = phi i64 [ %.sroa.0.1134, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %149 = add i64 %.sroa.0.026.i, %3 - %150 = icmp ult i64 %149, 20 - %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %149, i64 4083) - %151 = add nuw nsw i64 %spec.store.select.i.i.i, 13 - %.0.i.i.i = select i1 %150, i64 32, i64 %151 - %152 = icmp samesign ult i64 %.0.i.i.i, 513 - %.neg.i.i.i = select i1 %152, i64 -8, i64 -64 - %153 = select i1 %152, i64 8, i64 64 - %154 = add nsw i64 %.0.i.i.i, -1 - %155 = add nuw nsw i64 %154, %153 - %156 = and i64 %155, %.neg.i.i.i - %157 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %156) #21 - %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 - store i64 2, ptr %158, align 8 - %159 = icmp samesign ult i64 %156, 513 - %.sink6.i.i.i.i.i = select i1 %159, i64 3, i64 6 - %.sink5.i.i.i.i.i = select i1 %159, i64 2, i64 58 - %160 = lshr i64 %156, %.sink6.i.i.i.i.i - %161 = add nuw nsw i64 %160, %.sink5.i.i.i.i.i - %162 = trunc nuw nsw i64 %161 to i8 - %163 = getelementptr inbounds nuw i8, ptr %157, i64 12 - store i8 %162, ptr %163, align 4, !tbaa !25 - %164 = trunc nuw nsw i64 %161 to i32 - %165 = icmp samesign ult i64 %161, 67 - %.sink6.i.i.i.i = select i1 %165, i32 3, i32 6 - %166 = shl nuw nsw i32 %164, %.sink6.i.i.i.i - %167 = select i1 %165, i32 -29, i32 -3725 - %narrow.i.i.i = add nsw i32 %166, %167 - %168 = sext i32 %narrow.i.i.i to i64 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0.026.i, i64 %168) - store i64 %.sroa.speculated.i, ptr %157, align 8, !tbaa !7 - %169 = add i64 %.sroa.speculated.i, %.029.i - %170 = add nuw nsw i64 %.01828.i, 1 - %171 = getelementptr inbounds nuw ptr, ptr %148, i64 %.01828.i - store ptr %157, ptr %171, align 8, !tbaa !17 - %172 = getelementptr inbounds nuw i8, ptr %157, i64 13 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %172, ptr align 1 %.sroa.6.027.i, i64 %.sroa.speculated.i, i1 false) - %173 = sub nuw i64 %.sroa.0.026.i, %.sroa.speculated.i - %174 = getelementptr inbounds nuw i8, ptr %.sroa.6.027.i, i64 %.sroa.speculated.i - %175 = icmp eq i64 %173, 0 - %176 = icmp eq i64 %170, 6 - %.not19.i = select i1 %175, i1 true, i1 %176 + %.029.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %168, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.01828.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %169, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.6.027.i = phi ptr [ %.sroa.11.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.0.026.i = phi i64 [ %.sroa.0.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %172, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %148 = add i64 %.sroa.0.026.i, %3 + %149 = icmp ult i64 %148, 20 + %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %148, i64 4083) + %150 = add nuw nsw i64 %spec.store.select.i.i.i, 13 + %.0.i.i.i = select i1 %149, i64 32, i64 %150 + %151 = icmp samesign ult i64 %.0.i.i.i, 513 + %.neg.i.i.i = select i1 %151, i64 -8, i64 -64 + %152 = select i1 %151, i64 8, i64 64 + %153 = add nsw i64 %.0.i.i.i, -1 + %154 = add nuw nsw i64 %153, %152 + %155 = and i64 %154, %.neg.i.i.i + %156 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %155) #21 + %157 = getelementptr inbounds nuw i8, ptr %156, i64 8 + store i64 2, ptr %157, align 8 + %158 = icmp samesign ult i64 %155, 513 + %.sink6.i.i.i.i.i = select i1 %158, i64 3, i64 6 + %.sink5.i.i.i.i.i = select i1 %158, i64 2, i64 58 + %159 = lshr i64 %155, %.sink6.i.i.i.i.i + %160 = add nuw nsw i64 %159, %.sink5.i.i.i.i.i + %161 = trunc nuw nsw i64 %160 to i8 + %162 = getelementptr inbounds nuw i8, ptr %156, i64 12 + store i8 %161, ptr %162, align 4, !tbaa !25 + %163 = trunc nuw nsw i64 %160 to i32 + %164 = icmp samesign ult i64 %160, 67 + %.sink6.i.i.i.i = select i1 %164, i32 3, i32 6 + %165 = shl nuw nsw i32 %163, %.sink6.i.i.i.i + %166 = select i1 %164, i32 -29, i32 -3725 + %narrow.i.i.i = add nsw i32 %165, %166 + %167 = sext i32 %narrow.i.i.i to i64 + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0.026.i, i64 %167) + store i64 %.sroa.speculated.i, ptr %156, align 8, !tbaa !7 + %168 = add i64 %.sroa.speculated.i, %.029.i + %169 = add nuw nsw i64 %.01828.i, 1 + %170 = getelementptr inbounds nuw ptr, ptr %147, i64 %.01828.i + store ptr %156, ptr %170, align 8, !tbaa !17 + %171 = getelementptr inbounds nuw i8, ptr %156, i64 13 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %171, ptr align 1 %.sroa.6.027.i, i64 %.sroa.speculated.i, i1 false) + %172 = sub nuw i64 %.sroa.0.026.i, %.sroa.speculated.i + %173 = getelementptr inbounds nuw i8, ptr %.sroa.6.027.i, i64 %.sroa.speculated.i + %174 = icmp eq i64 %172, 0 + %175 = icmp eq i64 %169, 6 + %.not19.i = select i1 %174, i1 true, i1 %175 br i1 %.not19.i, label %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i, !llvm.loop !47 _ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i - %177 = trunc i64 %170 to i8 - %178 = getelementptr inbounds nuw i8, ptr %147, i64 15 - store i64 %169, ptr %147, align 8, !tbaa !7 - store i8 %177, ptr %178, align 1, !tbaa !4 - %.not = icmp eq i64 %169, %.sroa.0.1134 - br i1 %.not, label %.thread99, label %180 + %176 = trunc i64 %169 to i8 + %177 = getelementptr inbounds nuw i8, ptr %142, i64 15 + store i64 %168, ptr %142, align 8, !tbaa !7 + store i8 %176, ptr %177, align 1, !tbaa !4 + %.not = icmp eq i64 %168, %.sroa.0.1 + br i1 %.not, label %.thread99, label %179 .thread99: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %179 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261136, i32 noundef %.063135, i64 noundef %.sroa.0.1134, ptr nonnull %147, i32 2) - br label %204 + %178 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063, i64 noundef %.sroa.0.1, ptr nonnull %142, i32 2) + br label %198 -180: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %181 = icmp ugt i64 %169, %.sroa.0.1134 - br i1 %181, label %182, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit +179: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit + %180 = icmp ugt i64 %168, %.sroa.0.1 + br i1 %180, label %181, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit -182: ; preds = %180 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %169, i64 noundef %.sroa.0.1134) #22 +181: ; preds = %179 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %168, i64 noundef %.sroa.0.1) #22 unreachable -_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit: ; preds = %180 - %183 = sub nuw i64 %.sroa.0.1134, %169 - %184 = getelementptr inbounds nuw i8, ptr %.sroa.11.1133, i64 %169 - %185 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261136, i32 noundef %.063135, i64 noundef %169, ptr nonnull %147, i32 2) - %186 = getelementptr inbounds nuw i8, ptr %185, i64 13 - %187 = load i8, ptr %186, align 1, !tbaa !4 - %188 = zext i8 %187 to i32 - %.not107 = icmp eq i8 %187, 0 - br i1 %.not107, label %198, label %.lr.ph.i71 +_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit: ; preds = %179 + %182 = sub nuw i64 %.sroa.0.1, %168 + %183 = getelementptr inbounds nuw i8, ptr %.sroa.11.1, i64 %168 + %184 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063, i64 noundef %168, ptr nonnull %142, i32 2) + %185 = getelementptr inbounds nuw i8, ptr %184, i64 13 + %186 = load i8, ptr %185, align 1, !tbaa !4 + %187 = zext i8 %186 to i32 + %.not107 = icmp eq i8 %186, 0 + br i1 %.not107, label %197, label %.lr.ph.i71 .lr.ph.i71: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit - %wide.trip.count.i72 = zext i8 %187 to i64 - br label %189 + %wide.trip.count.i72 = zext i8 %186 to i64 + br label %188 -189: ; preds = %189, %.lr.ph.i71 - %indvars.iv.i73 = phi i64 [ 0, %.lr.ph.i71 ], [ %indvars.iv.next.i74, %189 ] - %.067.i = phi ptr [ %185, %.lr.ph.i71 ], [ %196, %189 ] +188: ; preds = %188, %.lr.ph.i71 + %indvars.iv.i73 = phi i64 [ 0, %.lr.ph.i71 ], [ %indvars.iv.next.i74, %188 ] + %.067.i = phi ptr [ %184, %.lr.ph.i71 ], [ %195, %188 ] %indvars.iv.next.i74 = add nuw nsw i64 %indvars.iv.i73, 1 - %190 = getelementptr inbounds nuw ptr, ptr %146, i64 %indvars.iv.i73 - store ptr %.067.i, ptr %190, align 8, !tbaa !14 - %191 = getelementptr inbounds nuw i8, ptr %.067.i, i64 15 - %192 = load i8, ptr %191, align 1 - %193 = zext i8 %192 to i64 - %194 = getelementptr i8, ptr %.067.i, i64 8 - %195 = getelementptr ptr, ptr %194, i64 %193 - %196 = load ptr, ptr %195, align 8, !tbaa !17 + %189 = getelementptr inbounds nuw ptr, ptr %141, i64 %indvars.iv.i73 + store ptr %.067.i, ptr %189, align 8, !tbaa !14 + %190 = getelementptr inbounds nuw i8, ptr %.067.i, i64 15 + %191 = load i8, ptr %190, align 1 + %192 = zext i8 %191 to i64 + %193 = getelementptr i8, ptr %.067.i, i64 8 + %194 = getelementptr ptr, ptr %193, i64 %192 + %195 = load ptr, ptr %194, align 8, !tbaa !17 %exitcond.not.i75 = icmp eq i64 %indvars.iv.next.i74, %wide.trip.count.i72 - br i1 %exitcond.not.i75, label %._crit_edge.loopexit.i76, label %189, !llvm.loop !48 + br i1 %exitcond.not.i75, label %._crit_edge.loopexit.i76, label %188, !llvm.loop !48 -._crit_edge.loopexit.i76: ; preds = %189 - %197 = add nuw nsw i32 %188, 1 - br label %198 +._crit_edge.loopexit.i76: ; preds = %188 + %196 = add nuw nsw i32 %187, 1 + br label %197 -198: ; preds = %._crit_edge.loopexit.i76, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit - %.0.lcssa.i70 = phi i32 [ 1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit ], [ %197, %._crit_edge.loopexit.i76 ] +197: ; preds = %._crit_edge.loopexit.i76, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit + %.0.lcssa.i70 = phi i32 [ 1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit ], [ %196, %._crit_edge.loopexit.i76 ] store i32 %.0.lcssa.i70, ptr %5, align 8, !tbaa !33 - %199 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - %200 = getelementptr inbounds nuw i8, ptr %199, i64 8 - store i32 2, ptr %200, align 4, !tbaa !24 - %201 = getelementptr inbounds nuw i8, ptr %199, i64 12 - store i8 3, ptr %201, align 4, !tbaa !25 - %202 = getelementptr inbounds nuw i8, ptr %199, i64 13 - store i8 0, ptr %202, align 1, !tbaa !4 - %203 = getelementptr inbounds nuw i8, ptr %199, i64 14 - store i8 0, ptr %203, align 2, !tbaa !4 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i -204: ; preds = %.thread99, %.thread - %.3 = phi ptr [ %78, %.thread ], [ %179, %.thread99 ] +198: ; preds = %.thread99, %.thread + %.3 = phi ptr [ %78, %.thread ], [ %178, %.thread99 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %205 + br label %199 -205: ; preds = %4, %204 - %.0 = phi ptr [ %.3, %204 ], [ %0, %4 ] +199: ; preds = %4, %198 + %.0 = phi ptr [ %.3, %198 ], [ %0, %4 ] ret ptr %.0 } diff --git a/bench/abseil-cpp/optimized/distribution_test_util.ll b/bench/abseil-cpp/optimized/distribution_test_util.ll index 593135b9e6f..27a092e51a4 100644 --- a/bench/abseil-cpp/optimized/distribution_test_util.ll +++ b/bench/abseil-cpp/optimized/distribution_test_util.ll @@ -572,8 +572,8 @@ define internal fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_121 %5 = fcmp olt double %3, 5.000000e-01 br i1 %5, label %6, label %10 -common.ret193: ; preds = %82, %112, %.loopexit, %90, %94, %6 - %common.ret193.op = phi double [ %9, %6 ], [ 0x7FF0000000000000, %82 ], [ %.1145162, %112 ], [ %.1145162, %94 ], [ %91, %90 ], [ 0x7FF0000000000000, %.loopexit ] +common.ret193: ; preds = %82, %111, %89, %93, %6 + %common.ret193.op = phi double [ %9, %6 ], [ 0x7FF0000000000000, %82 ], [ %.1145162, %111 ], [ %.1145162, %93 ], [ %90, %89 ] ret double %common.ret193.op 6: ; preds = %4 @@ -680,63 +680,59 @@ common.ret193: ; preds = %82, %112, %.loopexi %87 = fcmp ogt double %.sroa.speculated132, 1.000000e+00 br i1 %87, label %common.ret193, label %.lr.ph -.loopexit: ; preds = %114 - %88 = fcmp ogt double %109, 1.000000e+00 - br i1 %88, label %common.ret193, label %.lr.ph +.lr.ph: ; preds = %113, %82 + %.1145162 = phi double [ %.sroa.speculated132, %82 ], [ %108, %113 ] + %88 = fcmp oeq double %.1145162, 1.000000e+00 + br i1 %88, label %93, label %89 -.lr.ph: ; preds = %82, %.loopexit - %.1145162 = phi double [ %109, %.loopexit ], [ %.sroa.speculated132, %82 ] - %89 = fcmp oeq double %.1145162, 1.000000e+00 - br i1 %89, label %94, label %90 +89: ; preds = %.lr.ph + %90 = tail call fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_118BetaIncompleteImplEdddd(double noundef %.1145162, double noundef %0, double noundef %1, double noundef %2) + %91 = tail call double @llvm.fabs.f64(double %90) + %92 = fcmp ueq double %91, 0x7FF0000000000000 + br i1 %92, label %common.ret193, label %93 -90: ; preds = %.lr.ph - %91 = tail call fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_118BetaIncompleteImplEdddd(double noundef %.1145162, double noundef %0, double noundef %1, double noundef %2) - %92 = tail call double @llvm.fabs.f64(double %91) - %93 = fcmp ueq double %92, 0x7FF0000000000000 - br i1 %93, label %common.ret193, label %94 - -94: ; preds = %.lr.ph, %90 - %.0116 = phi double [ %91, %90 ], [ %.1145162, %.lr.ph ] +93: ; preds = %.lr.ph, %89 + %.0116 = phi double [ %90, %89 ], [ %.1145162, %.lr.ph ] %.0116.fr = freeze double %.0116 - %95 = fsub double %.0116.fr, %3 - %96 = tail call double @log(double noundef %.1145162) #14, !tbaa !12 - %97 = tail call double @llvm.fmuladd.f64(double %85, double %96, double %2) - %98 = fsub double 1.000000e+00, %.1145162 - %99 = tail call double @log(double noundef %98) #14, !tbaa !12 - %100 = tail call double @llvm.fmuladd.f64(double %86, double %99, double %97) - %101 = tail call double @exp(double noundef %100) #14, !tbaa !12 - %.fr = freeze double %101 - %102 = fmul double %95, %.fr - %103 = fmul double %102, %102 - %104 = fcmp olt double %103, 0x3D06849B86A12B9B - br i1 %104, label %common.ret193, label %.split - -.split: ; preds = %94, %117 - %.0104 = phi double [ %118, %117 ], [ 1.000000e+00, %94 ] - %105 = fmul double %102, %.0104 - %106 = fmul double %105, %105 - %107 = fcmp ult double %106, 1.000000e+00 - br i1 %107, label %108, label %117, !llvm.loop !38 - -108: ; preds = %.split - %109 = fsub double %.1145162, %105 - %110 = fcmp olt double %109, 0.000000e+00 - %111 = fcmp ogt double %109, 1.000000e+00 - %or.cond7 = or i1 %110, %111 - br i1 %or.cond7, label %117, label %112, !llvm.loop !38 - -112: ; preds = %108 - %113 = fcmp oeq double %109, %.1145162 - br i1 %113, label %common.ret193, label %114 - -114: ; preds = %112 - %115 = fcmp oeq double %109, 0.000000e+00 - %116 = fcmp oeq double %109, 1.000000e+00 - %or.cond9 = or i1 %115, %116 - br i1 %or.cond9, label %117, label %.loopexit, !llvm.loop !38 - -117: ; preds = %114, %108, %.split - %118 = fdiv double %.0104, 3.000000e+00 + %94 = fsub double %.0116.fr, %3 + %95 = tail call double @log(double noundef %.1145162) #14, !tbaa !12 + %96 = tail call double @llvm.fmuladd.f64(double %85, double %95, double %2) + %97 = fsub double 1.000000e+00, %.1145162 + %98 = tail call double @log(double noundef %97) #14, !tbaa !12 + %99 = tail call double @llvm.fmuladd.f64(double %86, double %98, double %96) + %100 = tail call double @exp(double noundef %99) #14, !tbaa !12 + %.fr = freeze double %100 + %101 = fmul double %94, %.fr + %102 = fmul double %101, %101 + %103 = fcmp olt double %102, 0x3D06849B86A12B9B + br i1 %103, label %common.ret193, label %.split + +.split: ; preds = %93, %116 + %.0104 = phi double [ %117, %116 ], [ 1.000000e+00, %93 ] + %104 = fmul double %101, %.0104 + %105 = fmul double %104, %104 + %106 = fcmp ult double %105, 1.000000e+00 + br i1 %106, label %107, label %116, !llvm.loop !38 + +107: ; preds = %.split + %108 = fsub double %.1145162, %104 + %109 = fcmp olt double %108, 0.000000e+00 + %110 = fcmp ogt double %108, 1.000000e+00 + %or.cond7 = or i1 %109, %110 + br i1 %or.cond7, label %116, label %111, !llvm.loop !38 + +111: ; preds = %107 + %112 = fcmp oeq double %108, %.1145162 + br i1 %112, label %common.ret193, label %113 + +113: ; preds = %111 + %114 = fcmp oeq double %108, 0.000000e+00 + %115 = fcmp oeq double %108, 1.000000e+00 + %or.cond9 = or i1 %114, %115 + br i1 %or.cond9, label %116, label %.lr.ph, !llvm.loop !38 + +116: ; preds = %113, %107, %.split + %117 = fdiv double %.0104, 3.000000e+00 br label %.split } diff --git a/bench/assimp/optimized/TriangulateProcess.ll b/bench/assimp/optimized/TriangulateProcess.ll index a61f7438cbb..b54250cc151 100644 --- a/bench/assimp/optimized/TriangulateProcess.ll +++ b/bench/assimp/optimized/TriangulateProcess.ll @@ -4242,20 +4242,20 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N %60 = getelementptr inbounds nuw i8, ptr %59, i64 56 store ptr null, ptr %60, align 8 store ptr null, ptr %58, align 8 - br label %.lr.ph80.i + br label %.lr.ph.us.preheader.i -.lr.ph80.i: ; preds = %._crit_edge81.i, %57 +.lr.ph.us.preheader.i: ; preds = %._crit_edge81.i, %57 %.058.i = phi ptr [ %55, %57 ], [ %.260.us.i, %._crit_edge81.i ] %.0.i = phi i32 [ 1, %57 ], [ %103, %._crit_edge81.i ] %.not74.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not74.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph80.i - %.04678.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph80.i ] - %.04877.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph80.i ] - %.05576.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph80.i ] - %.15975.us.i = phi ptr [ %.260.us.i, %.loopexit.us.i ], [ null, %.lr.ph80.i ] +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i + %.04678.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04877.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05576.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15975.us.i = phi ptr [ %.260.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %61 = add nuw nsw i32 %.04678.us.i, 1 br label %63 @@ -4362,8 +4362,8 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N %101 = getelementptr inbounds nuw i8, ptr %.149.us.i, i64 56 store ptr null, ptr %101, align 8 %102 = icmp eq i32 %.04678.us.i, 0 - %103 = shl nuw nsw i32 %.0.i, 1 - br i1 %102, label %_ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit, label %.lr.ph80.i, !llvm.loop !52 + %103 = shl nsw i32 %.0.i, 1 + br i1 %102, label %_ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit, label %.lr.ph.us.preheader.i, !llvm.loop !52 _ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit: ; preds = %._crit_edge81.i ret void diff --git a/bench/boost/optimized/junit_log_formatter.ll b/bench/boost/optimized/junit_log_formatter.ll index 4ebbfa59b02..d0f5048a01d 100644 --- a/bench/boost/optimized/junit_log_formatter.ll +++ b/bench/boost/optimized/junit_log_formatter.ll @@ -10406,11 +10406,11 @@ define linkonce_odr hidden void @_ZN5boost9unit_test5utils13print_escapedERSoNS0 %20 = getelementptr inbounds nuw i8, ptr %1, i64 8 %21 = load ptr, ptr %20, align 8, !tbaa !8 %22 = icmp eq ptr %19, %21 - br i1 %22, label %.critedge, label %.lr.ph + br i1 %22, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %18, %76 - %.sroa.028.033 = phi ptr [ %77, %76 ], [ %19, %18 ] - %23 = load i8, ptr %.sroa.028.033, align 1, !tbaa !9 + %.sroa.028.032 = phi ptr [ %77, %76 ], [ %19, %18 ] + %23 = load i8, ptr %.sroa.028.032, align 1, !tbaa !9 %24 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN5boost9unit_test5utils13print_escapedERSoNS0_13basic_cstringIKcEEE9char_type, i64 16), align 8, !tbaa !13 %.not10.i.i.i = icmp eq ptr %24, null br i1 %.not10.i.i.i, label %select.unfold, label %.lr.ph.i.i.i @@ -10531,11 +10531,11 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit18: ; preds = %72, %74 br label %76 76: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit15 - %77 = getelementptr inbounds nuw i8, ptr %.sroa.028.033, i64 1 + %77 = getelementptr inbounds nuw i8, ptr %.sroa.028.032, i64 1 %78 = icmp eq ptr %77, %21 - br i1 %78, label %.critedge, label %.lr.ph, !llvm.loop !299 + br i1 %78, label %._crit_edge, label %.lr.ph, !llvm.loop !299 -.critedge: ; preds = %76, %18 +._crit_edge: ; preds = %76, %18 ret void } diff --git a/bench/boost/optimized/xml_grammar.ll b/bench/boost/optimized/xml_grammar.ll index d259c9ee58f..757e8969bb4 100644 --- a/bench/boost/optimized/xml_grammar.ll +++ b/bench/boost/optimized/xml_grammar.ll @@ -11552,71 +11552,75 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitI %isdigit.i.i.i.i.i.i.i.i32 = icmp ult i8 %29, 10 br i1 %isdigit.i.i.i.i.i.i.i.i32, label %.lr.ph, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i -.lr.ph.i.i.i.i.i.i: ; preds = %39 - %30 = load i8, ptr %43, align 1, !tbaa !21 - %31 = add i8 %30, -48 - %isdigit.i.i.i.i.i.i.i.i = icmp ult i8 %31, 10 - br i1 %isdigit.i.i.i.i.i.i.i.i, label %.lr.ph, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 - -.lr.ph: ; preds = %.lr.ph.i.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i.i - %.in = phi i8 [ %30, %.lr.ph.i.i.i.i.i.i ], [ %28, %.lr.ph.i.i.i.i.i.i.preheader ] - %32 = phi ptr [ %43, %.lr.ph.i.i.i.i.i.i ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ] - %.0.i.i.i.i.i34 = phi i64 [ %42, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ] - %.012.i.i.i.i.i33 = phi i32 [ %41, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ] - %33 = sext i8 %.in to i32 - %34 = icmp ugt i32 %.012.i.i.i.i.i33, 429496729 - br i1 %34, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %35 - -35: ; preds = %.lr.ph - %36 = mul nuw i32 %.012.i.i.i.i.i33, 10 - %37 = sub nsw i32 47, %33 - %38 = icmp ugt i32 %36, %37 - br i1 %38, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %39 - -39: ; preds = %35 - %40 = add i32 %36, -48 - %41 = add i32 %40, %33 - %42 = add i64 %.0.i.i.i.i.i34, 1 - %43 = getelementptr inbounds nuw i8, ptr %32, i64 1 - store ptr %43, ptr %5, align 8, !tbaa !102 - %44 = load ptr, ptr %6, align 8, !tbaa !10 - %45 = icmp eq ptr %43, %44 - br i1 %45, label %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !156 - -._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge: ; preds = %39 +.lr.ph: ; preds = %.lr.ph.i.i.i.i.i.i.preheader + %30 = zext nneg i8 %28 to i32 + br label %34 + +.lr.ph.i.i.i.i.i.i: ; preds = %42 + %31 = load i8, ptr %46, align 1, !tbaa !21 + %32 = sext i8 %31 to i32 + %33 = add i8 %31, -48 + %isdigit.i.i.i.i.i.i.i.i = icmp ult i8 %33, 10 + br i1 %isdigit.i.i.i.i.i.i.i.i, label %34, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 + +34: ; preds = %.lr.ph, %.lr.ph.i.i.i.i.i.i + %35 = phi i32 [ %30, %.lr.ph ], [ %32, %.lr.ph.i.i.i.i.i.i ] + %36 = phi ptr [ %25, %.lr.ph ], [ %46, %.lr.ph.i.i.i.i.i.i ] + %.0.i.i.i.i.i34 = phi i64 [ 0, %.lr.ph ], [ %45, %.lr.ph.i.i.i.i.i.i ] + %.012.i.i.i.i.i33 = phi i32 [ 0, %.lr.ph ], [ %44, %.lr.ph.i.i.i.i.i.i ] + %37 = icmp ugt i32 %.012.i.i.i.i.i33, 429496729 + br i1 %37, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %38 + +38: ; preds = %34 + %39 = mul nuw i32 %.012.i.i.i.i.i33, 10 + %40 = sub nsw i32 47, %35 + %41 = icmp ugt i32 %39, %40 + br i1 %41, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %42 + +42: ; preds = %38 + %43 = add i32 %39, -48 + %44 = add i32 %43, %35 + %45 = add i64 %.0.i.i.i.i.i34, 1 + %46 = getelementptr inbounds nuw i8, ptr %36, i64 1 + store ptr %46, ptr %5, align 8, !tbaa !102 + %47 = load ptr, ptr %6, align 8, !tbaa !10 + %48 = icmp eq ptr %46, %47 + br i1 %48, label %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !156 + +._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge: ; preds = %42 br label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 _ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, %.lr.ph.i.i.i.i.i.i.preheader - %46 = phi i1 [ true, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ false, %.lr.ph.i.i.i.i.i.i.preheader ], [ false, %.lr.ph.i.i.i.i.i.i ] - %47 = phi ptr [ %43, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %43, %.lr.ph.i.i.i.i.i.i ] - %.113.i.i.i.i.i = phi i32 [ %41, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %41, %.lr.ph.i.i.i.i.i.i ] - %.1.i.i.i.i.i = phi i64 [ %42, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %42, %.lr.ph.i.i.i.i.i.i ] + %49 = phi i1 [ true, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ false, %.lr.ph.i.i.i.i.i.i.preheader ], [ false, %.lr.ph.i.i.i.i.i.i ] + %50 = phi ptr [ %46, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %46, %.lr.ph.i.i.i.i.i.i ] + %.113.i.i.i.i.i = phi i32 [ %44, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %44, %.lr.ph.i.i.i.i.i.i ] + %.1.i.i.i.i.i = phi i64 [ %45, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %45, %.lr.ph.i.i.i.i.i.i ] %or.cond.i = icmp sgt i64 %.1.i.i.i.i.i, 0 br i1 %or.cond.i, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit: ; preds = %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i - %48 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %49 = load ptr, ptr %48, align 8, !tbaa !203 - store i32 %.113.i.i.i.i.i, ptr %49, align 4, !tbaa !42 - br i1 %46, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %50 - -50: ; preds = %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit - %51 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %52 = load i8, ptr %47, align 1, !tbaa !21 - %53 = sext i8 %52 to i32 - %54 = load i32, ptr %51, align 8, !tbaa !150 - %55 = icmp eq i32 %54, %53 - br i1 %55, label %56, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread - -56: ; preds = %50 - %57 = getelementptr inbounds nuw i8, ptr %47, i64 1 - store ptr %57, ptr %5, align 8, !tbaa !102 - %58 = add nuw nsw i64 %3, 3 - %59 = add nuw nsw i64 %58, %.1.i.i.i.i.i + %51 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %52 = load ptr, ptr %51, align 8, !tbaa !203 + store i32 %.113.i.i.i.i.i, ptr %52, align 4, !tbaa !42 + br i1 %49, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %53 + +53: ; preds = %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit + %54 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %55 = load i8, ptr %50, align 1, !tbaa !21 + %56 = sext i8 %55 to i32 + %57 = load i32, ptr %54, align 8, !tbaa !150 + %58 = icmp eq i32 %57, %56 + br i1 %58, label %59, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread + +59: ; preds = %53 + %60 = getelementptr inbounds nuw i8, ptr %50, i64 1 + store ptr %60, ptr %5, align 8, !tbaa !102 + %61 = add nuw nsw i64 %3, 3 + %62 = add nuw nsw i64 %61, %.1.i.i.i.i.i br label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread -_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %.lr.ph, %35, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %50, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %56 - %.sroa.09.1 = phi i64 [ %59, %56 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %50 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %35 ], [ -1, %.lr.ph ] +_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %34, %38, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %53, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %59 + %.sroa.09.1 = phi i64 [ %62, %59 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %53 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %38 ], [ -1, %34 ] ret i64 %.sroa.09.1 } diff --git a/bench/brotli/optimized/backward_references_hq.ll b/bench/brotli/optimized/backward_references_hq.ll index a3bfb407b57..3475aaac6ab 100644 --- a/bench/brotli/optimized/backward_references_hq.ll +++ b/bench/brotli/optimized/backward_references_hq.ll @@ -825,11 +825,11 @@ FindMatchLengthWithLimit.exit.i: ; preds = %197, %.critedge.i.i br i1 %258, label %._crit_edge, label %.lr.ph415 StoreAndFindMatchesH10.exit.sink.split: ; preds = %186, %230 - %.0102.i410.lcssa671.sink = phi i64 [ %.0102.i410, %230 ], [ %.0102.i.lcssa, %186 ] + %.0102.i410.lcssa667.sink = phi i64 [ %.0102.i410, %230 ], [ %.0102.i.lcssa, %186 ] %.sink = phi i32 [ %236, %230 ], [ %187, %186 ] %.2259.ph = phi i64 [ %.5, %230 ], [ %.4.lcssa, %186 ] %.4.i.ph = phi ptr [ %.2.i163, %230 ], [ %.0.i161.lcssa, %186 ] - %259 = getelementptr inbounds nuw i32, ptr %171, i64 %.0102.i410.lcssa671.sink + %259 = getelementptr inbounds nuw i32, ptr %171, i64 %.0102.i410.lcssa667.sink store i32 %.sink, ptr %259, align 4, !tbaa !3, !noalias !90 br label %StoreAndFindMatchesH10.exit @@ -1028,10 +1028,10 @@ FindAllMatchesH10.exit: ; preds = %291, %268, %263 br i1 %.not.i.i179440, label %.critedge.i.i180, label %.lr.ph444.preheader .lr.ph444.preheader: ; preds = %372, %.preheader333 - %.022.i.i174.lcssa658 = phi ptr [ %385, %.preheader333 ], [ %373, %372 ] - %.025.i.i173.lcssa657 = phi ptr [ %384, %.preheader333 ], [ %266, %372 ] - %.027.i.i172.lcssa656 = phi i64 [ %386, %.preheader333 ], [ %361, %372 ] - %scevgep589 = getelementptr i8, ptr %.022.i.i174.lcssa658, i64 %.027.i.i172.lcssa656 + %.022.i.i174.lcssa654 = phi ptr [ %385, %.preheader333 ], [ %373, %372 ] + %.025.i.i173.lcssa653 = phi ptr [ %384, %.preheader333 ], [ %266, %372 ] + %.027.i.i172.lcssa652 = phi i64 [ %386, %.preheader333 ], [ %361, %372 ] + %scevgep589 = getelementptr i8, ptr %.022.i.i174.lcssa654, i64 %.027.i.i172.lcssa652 br label %.lr.ph444 .lr.ph436: ; preds = %372, %383 @@ -1061,9 +1061,9 @@ FindAllMatchesH10.exit: ; preds = %291, %268, %263 br i1 %387, label %.lr.ph436, label %.preheader333, !llvm.loop !66 .lr.ph444: ; preds = %.lr.ph444.preheader, %391 - %.224.i.i178443 = phi ptr [ %394, %391 ], [ %.022.i.i174.lcssa658, %.lr.ph444.preheader ] - %.126.i.i177442 = phi ptr [ %393, %391 ], [ %.025.i.i173.lcssa657, %.lr.ph444.preheader ] - %.128.i.i176441 = phi i64 [ %392, %391 ], [ %.027.i.i172.lcssa656, %.lr.ph444.preheader ] + %.224.i.i178443 = phi ptr [ %394, %391 ], [ %.022.i.i174.lcssa654, %.lr.ph444.preheader ] + %.126.i.i177442 = phi ptr [ %393, %391 ], [ %.025.i.i173.lcssa653, %.lr.ph444.preheader ] + %.128.i.i176441 = phi i64 [ %392, %391 ], [ %.027.i.i172.lcssa652, %.lr.ph444.preheader ] %388 = load i8, ptr %.224.i.i178443, align 1, !tbaa !7, !noalias !99 %389 = load i8, ptr %.126.i.i177442, align 1, !tbaa !7, !alias.scope !99 %390 = icmp eq i8 %388, %389 @@ -1415,8 +1415,8 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %516, %.critedge.i.i 540: ; preds = %FindMatchLengthWithLimit.exit.i.i %541 = and i64 %.093.i.i483, %486 - %.idx650 = shl nuw nsw i64 %541, 3 - %542 = getelementptr inbounds nuw i8, ptr %489, i64 %.idx650 + %.idx646 = shl nuw nsw i64 %541, 3 + %542 = getelementptr inbounds nuw i8, ptr %489, i64 %.idx646 %543 = load i32, ptr %542, align 4, !tbaa !3, !noalias !131 %544 = getelementptr inbounds nuw i32, ptr %489, i64 %.098.i.i481 store i32 %543, ptr %544, align 4, !tbaa !3, !noalias !131 @@ -1460,9 +1460,9 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %516, %.critedge.i.i StoreH10.exit: ; preds = %._crit_edge486, %540 %.0102.i.i.lcssa.sink = phi i64 [ %.0102.i.i.lcssa, %._crit_edge486 ], [ %.0102.i.i480, %540 ] - %.sink703 = phi i32 [ %506, %._crit_edge486 ], [ %546, %540 ] + %.sink699 = phi i32 [ %506, %._crit_edge486 ], [ %546, %540 ] %563 = getelementptr inbounds nuw i32, ptr %489, i64 %.0102.i.i.lcssa.sink - store i32 %.sink703, ptr %563, align 4, !tbaa !3, !noalias !131 + store i32 %.sink699, ptr %563, align 4, !tbaa !3, !noalias !131 %564 = add i64 %.0.i154492, 8 %565 = icmp ult i64 %564, %spec.select.i153 br i1 %565, label %490, label %.loopexit338, !llvm.loop !133 @@ -1606,8 +1606,8 @@ FindMatchLengthWithLimit.exit.i.i210: ; preds = %597, %.critedge.i.i 621: ; preds = %FindMatchLengthWithLimit.exit.i.i210 %622 = and i64 %.093.i.i198518, %567 - %.idx651 = shl nuw nsw i64 %622, 3 - %623 = getelementptr inbounds nuw i8, ptr %570, i64 %.idx651 + %.idx647 = shl nuw nsw i64 %622, 3 + %623 = getelementptr inbounds nuw i8, ptr %570, i64 %.idx647 %624 = load i32, ptr %623, align 4, !tbaa !3, !noalias !149 %625 = getelementptr inbounds nuw i32, ptr %570, i64 %.098.i.i197516 store i32 %624, ptr %625, align 4, !tbaa !3, !noalias !149 @@ -1651,9 +1651,9 @@ FindMatchLengthWithLimit.exit.i.i210: ; preds = %597, %.critedge.i.i StoreH10.exit236: ; preds = %._crit_edge521, %621 %.0102.i.i196.lcssa.sink = phi i64 [ %.0102.i.i196.lcssa, %._crit_edge521 ], [ %.0102.i.i196515, %621 ] - %.sink705 = phi i32 [ %587, %._crit_edge521 ], [ %627, %621 ] + %.sink701 = phi i32 [ %587, %._crit_edge521 ], [ %627, %621 ] %644 = getelementptr inbounds nuw i32, ptr %570, i64 %.0102.i.i196.lcssa.sink - store i32 %.sink705, ptr %644, align 4, !tbaa !3, !noalias !149 + store i32 %.sink701, ptr %644, align 4, !tbaa !3, !noalias !149 %645 = add nuw i64 %.1.i155527, 1 %646 = icmp ult i64 %645, %481 br i1 %646, label %571, label %.lr.ph536.preheader, !llvm.loop !151 @@ -3419,11 +3419,11 @@ FindMatchLengthWithLimit.exit.i: ; preds = %195, %.critedge.i.i br i1 %256, label %._crit_edge, label %.lr.ph511 StoreAndFindMatchesH10.exit.sink.split: ; preds = %184, %228 - %.0102.i506.lcssa783.sink = phi i64 [ %.0102.i506, %228 ], [ %.0102.i.lcssa, %184 ] + %.0102.i506.lcssa779.sink = phi i64 [ %.0102.i506, %228 ], [ %.0102.i.lcssa, %184 ] %.sink = phi i32 [ %234, %228 ], [ %185, %184 ] %.2.ph = phi i64 [ %.5, %228 ], [ %.4.lcssa, %184 ] %.4.i.ph = phi ptr [ %.2.i244, %228 ], [ %.0.i242.lcssa, %184 ] - %257 = getelementptr inbounds nuw i32, ptr %169, i64 %.0102.i506.lcssa783.sink + %257 = getelementptr inbounds nuw i32, ptr %169, i64 %.0102.i506.lcssa779.sink store i32 %.sink, ptr %257, align 4, !tbaa !3, !noalias !200 br label %StoreAndFindMatchesH10.exit @@ -3624,10 +3624,10 @@ FindAllMatchesH10.exit: ; preds = %289, %266, %261 br i1 %.not.i.i260536, label %.critedge.i.i261, label %.lr.ph540.preheader .lr.ph540.preheader: ; preds = %372, %.preheader427 - %.022.i.i255.lcssa766 = phi ptr [ %385, %.preheader427 ], [ %373, %372 ] - %.025.i.i254.lcssa765 = phi ptr [ %384, %.preheader427 ], [ %264, %372 ] - %.027.i.i253.lcssa764 = phi i64 [ %386, %.preheader427 ], [ %361, %372 ] - %scevgep683 = getelementptr i8, ptr %.022.i.i255.lcssa766, i64 %.027.i.i253.lcssa764 + %.022.i.i255.lcssa762 = phi ptr [ %385, %.preheader427 ], [ %373, %372 ] + %.025.i.i254.lcssa761 = phi ptr [ %384, %.preheader427 ], [ %264, %372 ] + %.027.i.i253.lcssa760 = phi i64 [ %386, %.preheader427 ], [ %361, %372 ] + %scevgep683 = getelementptr i8, ptr %.022.i.i255.lcssa762, i64 %.027.i.i253.lcssa760 br label %.lr.ph540 .lr.ph532: ; preds = %372, %383 @@ -3657,9 +3657,9 @@ FindAllMatchesH10.exit: ; preds = %289, %266, %261 br i1 %387, label %.lr.ph532, label %.preheader427, !llvm.loop !66 .lr.ph540: ; preds = %.lr.ph540.preheader, %391 - %.224.i.i259539 = phi ptr [ %394, %391 ], [ %.022.i.i255.lcssa766, %.lr.ph540.preheader ] - %.126.i.i258538 = phi ptr [ %393, %391 ], [ %.025.i.i254.lcssa765, %.lr.ph540.preheader ] - %.128.i.i257537 = phi i64 [ %392, %391 ], [ %.027.i.i253.lcssa764, %.lr.ph540.preheader ] + %.224.i.i259539 = phi ptr [ %394, %391 ], [ %.022.i.i255.lcssa762, %.lr.ph540.preheader ] + %.126.i.i258538 = phi ptr [ %393, %391 ], [ %.025.i.i254.lcssa761, %.lr.ph540.preheader ] + %.128.i.i257537 = phi i64 [ %392, %391 ], [ %.027.i.i253.lcssa760, %.lr.ph540.preheader ] %388 = load i8, ptr %.224.i.i259539, align 1, !tbaa !7, !noalias !205 %389 = load i8, ptr %.126.i.i258538, align 1, !tbaa !7, !alias.scope !205 %390 = icmp eq i8 %388, %389 @@ -3991,8 +3991,8 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %507, %.critedge.i.i 531: ; preds = %FindMatchLengthWithLimit.exit.i.i %532 = and i64 %.093.i.i579, %477 - %.idx757 = shl nuw nsw i64 %532, 3 - %533 = getelementptr inbounds nuw i8, ptr %480, i64 %.idx757 + %.idx753 = shl nuw nsw i64 %532, 3 + %533 = getelementptr inbounds nuw i8, ptr %480, i64 %.idx753 %534 = load i32, ptr %533, align 4, !tbaa !3, !noalias !223 %535 = getelementptr inbounds nuw i32, ptr %480, i64 %.098.i.i577 store i32 %534, ptr %535, align 4, !tbaa !3, !noalias !223 @@ -4036,9 +4036,9 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %507, %.critedge.i.i StoreH10.exit: ; preds = %._crit_edge582, %531 %.0102.i.i.lcssa.sink = phi i64 [ %.0102.i.i.lcssa, %._crit_edge582 ], [ %.0102.i.i576, %531 ] - %.sink813 = phi i32 [ %497, %._crit_edge582 ], [ %537, %531 ] + %.sink809 = phi i32 [ %497, %._crit_edge582 ], [ %537, %531 ] %554 = getelementptr inbounds nuw i32, ptr %480, i64 %.0102.i.i.lcssa.sink - store i32 %.sink813, ptr %554, align 4, !tbaa !3, !noalias !223 + store i32 %.sink809, ptr %554, align 4, !tbaa !3, !noalias !223 %555 = add i64 %.0.i235588, 8 %556 = icmp ult i64 %555, %spec.select.i234 br i1 %556, label %481, label %.loopexit, !llvm.loop !133 @@ -4177,8 +4177,8 @@ FindMatchLengthWithLimit.exit.i.i291: ; preds = %588, %.critedge.i.i 612: ; preds = %FindMatchLengthWithLimit.exit.i.i291 %613 = and i64 %.093.i.i279614, %558 - %.idx758 = shl nuw nsw i64 %613, 3 - %614 = getelementptr inbounds nuw i8, ptr %561, i64 %.idx758 + %.idx754 = shl nuw nsw i64 %613, 3 + %614 = getelementptr inbounds nuw i8, ptr %561, i64 %.idx754 %615 = load i32, ptr %614, align 4, !tbaa !3, !noalias !240 %616 = getelementptr inbounds nuw i32, ptr %561, i64 %.098.i.i278612 store i32 %615, ptr %616, align 4, !tbaa !3, !noalias !240 @@ -4222,9 +4222,9 @@ FindMatchLengthWithLimit.exit.i.i291: ; preds = %588, %.critedge.i.i StoreH10.exit317: ; preds = %._crit_edge617, %612 %.0102.i.i277.lcssa.sink = phi i64 [ %.0102.i.i277.lcssa, %._crit_edge617 ], [ %.0102.i.i277611, %612 ] - %.sink815 = phi i32 [ %578, %._crit_edge617 ], [ %618, %612 ] + %.sink811 = phi i32 [ %578, %._crit_edge617 ], [ %618, %612 ] %635 = getelementptr inbounds nuw i32, ptr %561, i64 %.0102.i.i277.lcssa.sink - store i32 %.sink815, ptr %635, align 4, !tbaa !3, !noalias !240 + store i32 %.sink811, ptr %635, align 4, !tbaa !3, !noalias !240 %636 = add nuw i64 %.1.i236623, 1 %637 = icmp ult i64 %636, %472 br i1 %637, label %562, label %StoreRangeH10.exit, !llvm.loop !151 diff --git a/bench/brotli/optimized/compress_fragment.ll b/bench/brotli/optimized/compress_fragment.ll index 204f1360d42..f087e17308e 100644 --- a/bench/brotli/optimized/compress_fragment.ll +++ b/bench/brotli/optimized/compress_fragment.ll @@ -1626,8 +1626,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -3634,8 +3634,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -5642,8 +5642,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -7650,8 +7650,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 diff --git a/bench/brotli/optimized/encode.ll b/bench/brotli/optimized/encode.ll index 251efff27a6..cc3ec1350ed 100644 --- a/bench/brotli/optimized/encode.ll +++ b/bench/brotli/optimized/encode.ll @@ -2681,7 +2681,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI 339: ; preds = %337 %340 = load i32, ptr %329, align 8, !tbaa !145 - switch i32 %340, label %.thread540 [ + switch i32 %340, label %.thread538 [ i32 2, label %341 i32 3, label %345 i32 4, label %349 @@ -2706,7 +2706,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %343 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !146 %344 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %343, ptr %344, align 8, !tbaa !151, !alias.scope !146 - br label %.thread540 + br label %.thread538 345: ; preds = %339 %346 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2715,7 +2715,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %347 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !152 %348 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %347, ptr %348, align 8, !tbaa !157, !alias.scope !152 - br label %.thread540 + br label %.thread538 349: ; preds = %339 %350 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2724,17 +2724,17 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %351 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !158 %352 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %351, ptr %352, align 8, !tbaa !163, !alias.scope !158 - br label %.thread540 + br label %.thread538 353: ; preds = %339 %354 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH5(ptr noundef nonnull %175, ptr noundef nonnull %354) - br label %.thread540 + br label %.thread538 355: ; preds = %339 %356 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH6(ptr noundef nonnull %175, ptr noundef nonnull %356) - br label %.thread540 + br label %.thread538 357: ; preds = %339 %.val323 = load i32, ptr %30, align 4, !tbaa !47 @@ -2755,7 +2755,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %367 = zext i32 %366 to i64 %368 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %367, ptr %368, align 8, !tbaa !169, !alias.scope !164 - br label %.thread540 + br label %.thread538 369: ; preds = %339 %.val324 = load i32, ptr %30, align 4, !tbaa !47 @@ -2776,7 +2776,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %379 = zext i32 %378 to i64 %380 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %379, ptr %380, align 8, !tbaa !175, !alias.scope !170 - br label %.thread540 + br label %.thread538 381: ; preds = %339 %.val325 = load i32, ptr %30, align 4, !tbaa !47 @@ -2797,7 +2797,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %391 = zext i32 %390 to i64 %392 = getelementptr inbounds nuw i8, ptr %0, i64 2736 store i64 %391, ptr %392, align 8, !tbaa !181, !alias.scope !176 - br label %.thread540 + br label %.thread538 393: ; preds = %339 %394 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2806,17 +2806,17 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %395 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !182 %396 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %395, ptr %396, align 8, !tbaa !187, !alias.scope !182 - br label %.thread540 + br label %.thread538 397: ; preds = %339 %398 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH58(ptr noundef nonnull %175, ptr noundef nonnull %398) - br label %.thread540 + br label %.thread538 399: ; preds = %339 %400 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH68(ptr noundef nonnull %175, ptr noundef nonnull %400) - br label %.thread540 + br label %.thread538 401: ; preds = %339 %402 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2829,7 +2829,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %405, align 8, !tbaa !196, !alias.scope !192 %406 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %406, align 8, !tbaa !197, !alias.scope !192 - br label %.thread540 + br label %.thread538 407: ; preds = %339 %408 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2842,7 +2842,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %411, align 8, !tbaa !203, !alias.scope !200 %412 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %412, align 8, !tbaa !204, !alias.scope !200 - br label %.thread540 + br label %.thread538 413: ; preds = %339 %414 = getelementptr inbounds nuw i8, ptr %0, i64 1976 @@ -2855,7 +2855,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %417, align 8, !tbaa !212, !alias.scope !209 %418 = getelementptr inbounds nuw i8, ptr %0, i64 1992 store ptr %0, ptr %418, align 8, !tbaa !213, !alias.scope !209 - br label %.thread540 + br label %.thread538 419: ; preds = %339 %420 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2874,9 +2874,9 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i64 %425, ptr %420, align 8, !tbaa !220, !alias.scope !216 %426 = getelementptr inbounds nuw i8, ptr %0, i64 1728 store i32 %.neg.i, ptr %426, align 8, !tbaa !221, !alias.scope !216 - br label %.thread540 + br label %.thread538 -.thread540: ; preds = %339, %341, %345, %349, %353, %355, %357, %369, %381, %393, %397, %399, %401, %407, %413, %419 +.thread538: ; preds = %339, %341, %345, %349, %353, %355, %357, %369, %381, %393, %397, %399, %401, %407, %413, %419 %427 = getelementptr inbounds nuw i8, ptr %0, i64 1704 store i32 0, ptr %427, align 8, !tbaa !222 store i32 1, ptr %183, align 8, !tbaa !135 @@ -2891,8 +2891,8 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %431 = getelementptr inbounds nuw i8, ptr %0, i64 1704 br i1 %430, label %432, label %HasherSetup.exit -432: ; preds = %.thread540, %429 - %433 = phi ptr [ %428, %.thread540 ], [ %431, %429 ] +432: ; preds = %.thread538, %429 + %433 = phi ptr [ %428, %.thread538 ], [ %431, %429 ] %434 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %435 = load i32, ptr %434, align 8, !tbaa !145 switch i32 %435, label %PrepareH2.exit [ diff --git a/bench/bullet3/optimized/btContinuousConvexCollision.ll b/bench/bullet3/optimized/btContinuousConvexCollision.ll index 2e875845b55..4a40b6db365 100644 --- a/bench/bullet3/optimized/btContinuousConvexCollision.ll +++ b/bench/bullet3/optimized/btContinuousConvexCollision.ll @@ -530,7 +530,7 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %sqrt.i110 = call noundef float @llvm.sqrt.f32(float %101) %102 = fadd float %92, %sqrt.i110 %103 = fcmp oeq float %102, 0.000000e+00 - br i1 %103, label %181, label %104 + br i1 %103, label %180, label %104 104: ; preds = %83 call void @llvm.lifetime.start.p0(ptr nonnull %15) @@ -589,13 +589,13 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %.sroa.9136.0..sroa_idx137 = getelementptr inbounds nuw i8, ptr %21, i64 12 br label %134 -134: ; preds = %.lr.ph, %174 - %.0189 = phi float [ %114, %.lr.ph ], [ %176, %174 ] - %.070188 = phi i32 [ 0, %.lr.ph ], [ %175, %174 ] - %.075187 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %174 ] - %.sroa.12142.0186 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %174 ] - %.sroa.9136.0185 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %174 ] - %.sroa.0132.0184 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %174 ] +134: ; preds = %.lr.ph, %173 + %.0186 = phi float [ %114, %.lr.ph ], [ %175, %173 ] + %.070185 = phi i32 [ 0, %.lr.ph ], [ %174, %173 ] + %.075184 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %173 ] + %.sroa.12142.0183 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %173 ] + %.sroa.9136.0182 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %173 ] + %.sroa.0132.0181 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %173 ] %135 = load ptr, ptr %122, align 8, !tbaa !48 %.not86 = icmp eq ptr %135, null br i1 %.not86, label %140, label %136 @@ -614,113 +614,111 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO br label %140 140: ; preds = %136, %134 - %141 = fmul float %96, %.sroa.9136.0185 - %142 = call float @llvm.fmuladd.f32(float %93, float %.sroa.0132.0184, float %141) - %143 = call noundef float @llvm.fmuladd.f32(float %98, float %.sroa.12142.0186, float %142) + %141 = fmul float %96, %.sroa.9136.0182 + %142 = call float @llvm.fmuladd.f32(float %93, float %.sroa.0132.0181, float %141) + %143 = call noundef float @llvm.fmuladd.f32(float %98, float %.sroa.12142.0183, float %142) %144 = fadd float %92, %143 %145 = fcmp ugt float %144, 0x3E80000000000000 br i1 %145, label %146, label %.critedge 146: ; preds = %140 - %147 = fdiv float %.0189, %144 - %148 = fadd float %.075187, %147 + %147 = fdiv float %.0186, %144 + %148 = fadd float %.075184, %147 %149 = fcmp ule float %148, 1.000000e+00 - %150 = fcmp uge float %148, 0.000000e+00 - %or.cond.not165 = and i1 %149, %150 - %151 = fcmp ugt float %148, %.075187 - %or.cond94 = and i1 %151, %or.cond.not165 - br i1 %or.cond94, label %152, label %.critedge + %150 = fcmp ugt float %148, %.075184 + %or.cond94 = and i1 %149, %150 + br i1 %or.cond94, label %151, label %.critedge -152: ; preds = %146 +151: ; preds = %146 call void @llvm.lifetime.start.p0(ptr nonnull %18) call void @llvm.lifetime.start.p0(ptr nonnull %19) call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(ptr noundef nonnull align 4 dereferenceable(64) %1, ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %12, float noundef %148, ptr noundef nonnull align 4 dereferenceable(64) %18) call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %14, float noundef %148, ptr noundef nonnull align 4 dereferenceable(64) %19) - %153 = load ptr, ptr %122, align 8, !tbaa !48 - %.not87 = icmp eq ptr %153, null - br i1 %.not87, label %158, label %154 + %152 = load ptr, ptr %122, align 8, !tbaa !48 + %.not87 = icmp eq ptr %152, null + br i1 %.not87, label %157, label %153 -154: ; preds = %152 +153: ; preds = %151 call void @llvm.lifetime.start.p0(ptr nonnull %20) store float 1.000000e+00, ptr %20, align 4, !tbaa !31 store float 0.000000e+00, ptr %127, align 4, !tbaa !31 store float 0.000000e+00, ptr %128, align 4, !tbaa !31 store float 0.000000e+00, ptr %129, align 4, !tbaa !31 - %155 = load ptr, ptr %153, align 8, !tbaa !4 - %156 = getelementptr inbounds nuw i8, ptr %155, i64 56 - %157 = load ptr, ptr %156, align 8 - call void %157(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) + %154 = load ptr, ptr %152, align 8, !tbaa !4 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 56 + %156 = load ptr, ptr %155, align 8 + call void %156(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) call void @llvm.lifetime.end.p0(ptr nonnull %20) - br label %158 + br label %157 -158: ; preds = %154, %152 - %159 = load ptr, ptr %5, align 8, !tbaa !4 - %160 = load ptr, ptr %159, align 8 - call void %160(ptr noundef nonnull align 8 dereferenceable(196) %5, float noundef %148) +157: ; preds = %153, %151 + %158 = load ptr, ptr %5, align 8, !tbaa !4 + %159 = load ptr, ptr %158, align 8 + call void %159(ptr noundef nonnull align 8 dereferenceable(196) %5, float noundef %148) call void @llvm.lifetime.start.p0(ptr nonnull %21) store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTV16btPointCollector, i64 16), ptr %21, align 8, !tbaa !4 store float 0x43ABC16D60000000, ptr %130, align 8, !tbaa !38 store i8 0, ptr %131, align 4, !tbaa !42 call void @_ZN27btContinuousConvexCollision20computeClosestPointsERK11btTransformS2_R16btPointCollector(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 4 dereferenceable(64) %18, ptr noundef nonnull align 4 dereferenceable(64) %19, ptr noundef nonnull align 8 dereferenceable(45) %21) - %161 = load i8, ptr %131, align 4, !tbaa !42, !range !43, !noundef !44 - %162 = trunc nuw i8 %161 to i1 - br i1 %162, label %163, label %166 + %160 = load i8, ptr %131, align 4, !tbaa !42, !range !43, !noundef !44 + %161 = trunc nuw i8 %160 to i1 + br i1 %161, label %162, label %165 -163: ; preds = %158 - %164 = load float, ptr %130, align 8, !tbaa !38 - %165 = load float, ptr %112, align 8, !tbaa !45 +162: ; preds = %157 + %163 = load float, ptr %130, align 8, !tbaa !38 + %164 = load float, ptr %112, align 8, !tbaa !45 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %132, i64 16, i1 false), !tbaa.struct !29 - %exitcond = icmp eq i32 %.070188, 64 - br i1 %exitcond, label %170, label %174 - -166: ; preds = %158 - %167 = load ptr, ptr %5, align 8, !tbaa !4 - %168 = getelementptr inbounds nuw i8, ptr %167, i64 16 - %169 = load ptr, ptr %168, align 8 - call void %169(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070188) + %exitcond = icmp eq i32 %.070185, 64 + br i1 %exitcond, label %169, label %173 + +165: ; preds = %157 + %166 = load ptr, ptr %5, align 8, !tbaa !4 + %167 = getelementptr inbounds nuw i8, ptr %166, i64 16 + %168 = load ptr, ptr %167, align 8 + call void %168(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070185) br label %.critedge.critedge -170: ; preds = %163 - %171 = load ptr, ptr %5, align 8, !tbaa !4 - %172 = getelementptr inbounds nuw i8, ptr %171, i64 16 - %173 = load ptr, ptr %172, align 8 - call void %173(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -2, i32 noundef 65) +169: ; preds = %162 + %170 = load ptr, ptr %5, align 8, !tbaa !4 + %171 = getelementptr inbounds nuw i8, ptr %170, i64 16 + %172 = load ptr, ptr %171, align 8 + call void %172(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -2, i32 noundef 65) br label %.critedge.critedge -174: ; preds = %163 - %175 = add nuw nsw i32 %.070188, 1 +173: ; preds = %162 + %174 = add nuw nsw i32 %.070185, 1 %.sroa.15148.0.copyload150 = load float, ptr %.sroa.15148.0..sroa_idx149, align 4, !tbaa !30 %.sroa.12142.0.copyload144 = load float, ptr %.sroa.12142.0..sroa_idx143, align 8 %.sroa.9136.0.copyload138 = load float, ptr %.sroa.9136.0..sroa_idx137, align 4 %.sroa.0132.0.copyload134 = load float, ptr %133, align 8 - %176 = fadd float %164, %165 + %175 = fadd float %163, %164 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.lifetime.end.p0(ptr nonnull %19) call void @llvm.lifetime.end.p0(ptr nonnull %18) - %177 = fcmp ogt float %176, 0x3F50624DE0000000 - br i1 %177, label %134, label %._crit_edge, !llvm.loop !49 - -._crit_edge: ; preds = %174, %.preheader - %.sroa.0132.0.lcssa = phi float [ %.sroa.0132.0.copyload, %.preheader ], [ %.sroa.0132.0.copyload134, %174 ] - %.sroa.9136.0.lcssa = phi float [ %.sroa.9136.0.copyload, %.preheader ], [ %.sroa.9136.0.copyload138, %174 ] - %.sroa.12142.0.lcssa = phi float [ %.sroa.12142.0.copyload, %.preheader ], [ %.sroa.12142.0.copyload144, %174 ] - %.sroa.15148.0.lcssa = phi float [ %.sroa.15148.0.copyload, %.preheader ], [ %.sroa.15148.0.copyload150, %174 ] - %.075.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %148, %174 ] - %178 = getelementptr inbounds nuw i8, ptr %5, i64 168 - store float %.075.lcssa, ptr %178, align 8, !tbaa !51 - %179 = getelementptr inbounds nuw i8, ptr %5, i64 136 - store float %.sroa.0132.0.lcssa, ptr %179, align 8 + %176 = fcmp ogt float %175, 0x3F50624DE0000000 + br i1 %176, label %134, label %._crit_edge, !llvm.loop !49 + +._crit_edge: ; preds = %173, %.preheader + %.sroa.0132.0.lcssa = phi float [ %.sroa.0132.0.copyload, %.preheader ], [ %.sroa.0132.0.copyload134, %173 ] + %.sroa.9136.0.lcssa = phi float [ %.sroa.9136.0.copyload, %.preheader ], [ %.sroa.9136.0.copyload138, %173 ] + %.sroa.12142.0.lcssa = phi float [ %.sroa.12142.0.copyload, %.preheader ], [ %.sroa.12142.0.copyload144, %173 ] + %.sroa.15148.0.lcssa = phi float [ %.sroa.15148.0.copyload, %.preheader ], [ %.sroa.15148.0.copyload150, %173 ] + %.075.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %148, %173 ] + %177 = getelementptr inbounds nuw i8, ptr %5, i64 168 + store float %.075.lcssa, ptr %177, align 8, !tbaa !51 + %178 = getelementptr inbounds nuw i8, ptr %5, i64 136 + store float %.sroa.0132.0.lcssa, ptr %178, align 8 %.sroa.9136.0..sroa_idx139 = getelementptr inbounds nuw i8, ptr %5, i64 140 store float %.sroa.9136.0.lcssa, ptr %.sroa.9136.0..sroa_idx139, align 4 %.sroa.12142.0..sroa_idx145 = getelementptr inbounds nuw i8, ptr %5, i64 144 store float %.sroa.12142.0.lcssa, ptr %.sroa.12142.0..sroa_idx145, align 8 %.sroa.15148.0..sroa_idx151 = getelementptr inbounds nuw i8, ptr %5, i64 148 store float %.sroa.15148.0.lcssa, ptr %.sroa.15148.0..sroa_idx151, align 4, !tbaa !30 - %180 = getelementptr inbounds nuw i8, ptr %5, i64 152 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef nonnull align 4 dereferenceable(16) %15, i64 16, i1 false), !tbaa.struct !29 + %179 = getelementptr inbounds nuw i8, ptr %5, i64 152 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull align 4 dereferenceable(16) %15, i64 16, i1 false), !tbaa.struct !29 br label %.critedge -.critedge.critedge: ; preds = %166, %170 +.critedge.critedge: ; preds = %165, %169 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.lifetime.end.p0(ptr nonnull %19) call void @llvm.lifetime.end.p0(ptr nonnull %18) @@ -730,9 +728,9 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %.569 = phi i1 [ true, %._crit_edge ], [ false, %110 ], [ false, %104 ], [ false, %.critedge.critedge ], [ false, %140 ], [ false, %146 ] call void @llvm.lifetime.end.p0(ptr nonnull %16) call void @llvm.lifetime.end.p0(ptr nonnull %15) - br label %181 + br label %180 -181: ; preds = %83, %.critedge +180: ; preds = %83, %.critedge %.064 = phi i1 [ %.569, %.critedge ], [ false, %83 ] call void @llvm.lifetime.end.p0(ptr nonnull %14) call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/casadi/optimized/cvodea.ll b/bench/casadi/optimized/cvodea.ll index df68104c697..795d3aff517 100644 --- a/bench/casadi/optimized/cvodea.ll +++ b/bench/casadi/optimized/cvodea.ll @@ -4331,7 +4331,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !40 - %.fr284 = freeze ptr %21 + %.fr261 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !43 %.not = icmp eq i32 %23, 0 @@ -4344,44 +4344,44 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !62 - %.fr282 = freeze double %27 + %.fr259 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !63 - %.fr283 = freeze double %28 - %29 = fcmp ogt double %.fr282, %.fr283 + %.fr260 = freeze double %28 + %29 = fcmp ogt double %.fr259, %.fr260 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 56 %32 = load i32, ptr %31, align 8, !tbaa !45 %.not147 = icmp eq i32 %32, 0 - br i1 %.not147, label %72, label %.preheader170 + br i1 %.not147, label %72, label %.preheader169 -.preheader170: ; preds = %25 - %.not148180 = icmp eq ptr %.fr284, null - br i1 %.not148180, label %._crit_edge, label %.lr.ph +.preheader169: ; preds = %25 + %.not148176 = icmp eq ptr %.fr261, null + br i1 %.not148176, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader170 +.lr.ph: ; preds = %.preheader169 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 164 br label %35 35: ; preds = %.lr.ph, %62 - %.0135181 = phi ptr [ %.fr284, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0135181, i64 16 + %.0135177 = phi ptr [ %.fr261, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0135177, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !123 %38 = getelementptr inbounds nuw i8, ptr %37, i64 984 %39 = load double, ptr %38, align 8, !tbaa !77 - %40 = fsub double %39, %.fr283 + %40 = fsub double %39, %.fr260 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr282, %39 + %44 = fsub double %.fr259, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0135181, align 8, !tbaa !203 + %48 = load i32, ptr %.0135177, align 8, !tbaa !203 tail call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -104, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.26, i32 noundef %48) #8 br label %.critedge163 @@ -4392,18 +4392,18 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0135181, align 8, !tbaa !203 + %54 = load i32, ptr %.0135177, align 8, !tbaa !203 tail call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -22, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.27, i32 noundef %54) #8 br label %.critedge163 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0135181, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0135177, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !205 %.not159 = icmp eq i32 %57, 0 br i1 %.not159, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0135181, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0135177, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !210 %.not160 = icmp eq i32 %60, 0 br i1 %.not160, label %62, label %61 @@ -4413,12 +4413,12 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0135181, i64 120 + %63 = getelementptr inbounds nuw i8, ptr %.0135177, i64 120 %64 = load ptr, ptr %63, align 8, !tbaa !119 %.not148 = icmp eq ptr %64, null br i1 %.not148, label %._crit_edge, label %35, !llvm.loop !213 -._crit_edge: ; preds = %62, %.preheader170 +._crit_edge: ; preds = %62, %.preheader169 %65 = getelementptr inbounds nuw i8, ptr %14, i64 164 %66 = load i32, ptr %65, align 4, !tbaa !39 %.not149 = icmp eq i32 %66, 0 @@ -4449,20 +4449,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr283 + %77 = fsub double %1, %.fr260 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr282, %1 + %81 = fsub double %.fr259, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %84, label %103 84: ; preds = %80, %75 %85 = load double, ptr %0, align 8, !tbaa !68 - %86 = tail call double @SUNRabs(double noundef %.fr283) #8 + %86 = tail call double @SUNRabs(double noundef %.fr260) #8 %87 = load double, ptr %26, align 8, !tbaa !62 %88 = tail call double @SUNRabs(double noundef %87) #8 %89 = load double, ptr %14, align 8, !tbaa !63 @@ -4492,8 +4492,8 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %.0132 = phi double [ %101, %99 ], [ %1, %80 ] %104 = getelementptr inbounds nuw i8, ptr %14, i64 64 %105 = load ptr, ptr %104, align 8, !tbaa !18 - %.not151182 = icmp eq ptr %.fr284, null - br i1 %.not151182, label %.critedge.us, label %.split + %.not151178 = icmp eq ptr %.fr261, null + br i1 %.not151178, label %.critedge.us, label %.split .critedge.us: ; preds = %103, %.critedge.us %.0133.us = phi ptr [ %107, %.critedge.us ], [ %105, %103 ] @@ -4507,24 +4507,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %110 = icmp eq i32 %2, 2 %111 = load ptr, ptr %109, align 8, !tbaa !24 %.not153.us.us = icmp eq ptr %.0133.us, %111 - br i1 %110, label %.split221.us.split.us, label %.split221.us.split.split.us + br i1 %110, label %.split216.us.split.us, label %.split216.us.split.split.us .split: ; preds = %103 %112 = icmp eq i32 %2, 1 - br i1 %112, label %.lr.ph185.us, label %.lr.ph185 + br i1 %112, label %.lr.ph181.us, label %.lr.ph181 -.lr.ph185.us: ; preds = %.split, %..critedge_crit_edge.split.us202 - %.0133.us196 = phi ptr [ %129, %..critedge_crit_edge.split.us202 ], [ %105, %.split ] - %113 = load double, ptr %.0133.us196, align 8, !tbaa !132 +.lr.ph181.us: ; preds = %.split, %..critedge_crit_edge.split.us198 + %.0133.us192 = phi ptr [ %129, %..critedge_crit_edge.split.us198 ], [ %105, %.split ] + %113 = load double, ptr %.0133.us192, align 8, !tbaa !132 %.fr = freeze double %113 %114 = fsub double %.0132, %.fr %115 = fmul double %114, %76 %116 = fcmp ult double %115, 0.000000e+00 - br i1 %116, label %.lr.ph185.split.split.us.us, label %.lr.ph185.split.split.us201 + br i1 %116, label %.lr.ph181.split.split.us.us, label %.lr.ph181.split.split.us197 -.lr.ph185.split.split.us201: ; preds = %.lr.ph185.us, %125 - %.1136183.us197 = phi ptr [ %127, %125 ], [ %.fr284, %.lr.ph185.us ] - %117 = getelementptr inbounds nuw i8, ptr %.1136183.us197, i64 16 +.lr.ph181.split.split.us197: ; preds = %.lr.ph181.us, %125 + %.1136179.us193 = phi ptr [ %127, %125 ], [ %.fr261, %.lr.ph181.us ] + %117 = getelementptr inbounds nuw i8, ptr %.1136179.us193, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 984 %120 = load double, ptr %119, align 8, !tbaa !77 @@ -4532,24 +4532,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %122 = fmul double %121, %76 %123 = fcmp ogt double %122, 0.000000e+00 %124 = fcmp oeq double %120, %.fr - %or.cond280 = or i1 %123, %124 - br i1 %or.cond280, label %.loopexit, label %125 + %or.cond257 = or i1 %123, %124 + br i1 %or.cond257, label %.loopexit, label %125 -125: ; preds = %.lr.ph185.split.split.us201 - %126 = getelementptr inbounds nuw i8, ptr %.1136183.us197, i64 120 +125: ; preds = %.lr.ph181.split.split.us197 + %126 = getelementptr inbounds nuw i8, ptr %.1136179.us193, i64 120 %127 = load ptr, ptr %126, align 8, !tbaa !119 - %.not151.us198 = icmp eq ptr %127, null - br i1 %.not151.us198, label %..critedge_crit_edge.split.us202, label %.lr.ph185.split.split.us201, !llvm.loop !214 + %.not151.us194 = icmp eq ptr %127, null + br i1 %.not151.us194, label %..critedge_crit_edge.split.us198, label %.lr.ph181.split.split.us197, !llvm.loop !214 -..critedge_crit_edge.split.us202: ; preds = %125, %138 - %128 = getelementptr inbounds nuw i8, ptr %.0133.us196, i64 816 +..critedge_crit_edge.split.us198: ; preds = %125, %138 + %128 = getelementptr inbounds nuw i8, ptr %.0133.us192, i64 816 %129 = load ptr, ptr %128, align 8, !tbaa !105 %130 = icmp eq ptr %129, null - br i1 %130, label %.loopexit, label %.lr.ph185.us + br i1 %130, label %.loopexit, label %.lr.ph181.us -.lr.ph185.split.split.us.us: ; preds = %.lr.ph185.us, %138 - %.1136183.us186.us = phi ptr [ %140, %138 ], [ %.fr284, %.lr.ph185.us ] - %131 = getelementptr inbounds nuw i8, ptr %.1136183.us186.us, i64 16 +.lr.ph181.split.split.us.us: ; preds = %.lr.ph181.us, %138 + %.1136179.us182.us = phi ptr [ %140, %138 ], [ %.fr261, %.lr.ph181.us ] + %131 = getelementptr inbounds nuw i8, ptr %.1136179.us182.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 984 %134 = load double, ptr %133, align 8, !tbaa !77 @@ -4558,20 +4558,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %137 = fcmp ogt double %136, 0.000000e+00 br i1 %137, label %.loopexit, label %138 -138: ; preds = %.lr.ph185.split.split.us.us - %139 = getelementptr inbounds nuw i8, ptr %.1136183.us186.us, i64 120 +138: ; preds = %.lr.ph181.split.split.us.us + %139 = getelementptr inbounds nuw i8, ptr %.1136179.us182.us, i64 120 %140 = load ptr, ptr %139, align 8, !tbaa !119 - %.not151.us187.us = icmp eq ptr %140, null - br i1 %.not151.us187.us, label %..critedge_crit_edge.split.us202, label %.lr.ph185.split.split.us.us, !llvm.loop !214 + %.not151.us183.us = icmp eq ptr %140, null + br i1 %.not151.us183.us, label %..critedge_crit_edge.split.us198, label %.lr.ph181.split.split.us.us, !llvm.loop !214 -.lr.ph185: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph181: ; preds = %.split, %..critedge_crit_edge.split.us %.0133 = phi ptr [ %154, %..critedge_crit_edge.split.us ], [ %105, %.split ] %141 = load double, ptr %.0133, align 8, !tbaa !132 br label %142 -142: ; preds = %150, %.lr.ph185 - %.1136183.us = phi ptr [ %.fr284, %.lr.ph185 ], [ %152, %150 ] - %143 = getelementptr inbounds nuw i8, ptr %.1136183.us, i64 16 +142: ; preds = %150, %.lr.ph181 + %.1136179.us = phi ptr [ %.fr261, %.lr.ph181 ], [ %152, %150 ] + %143 = getelementptr inbounds nuw i8, ptr %.1136179.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 984 %146 = load double, ptr %145, align 8, !tbaa !77 @@ -4581,7 +4581,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %149, label %.loopexit, label %150 150: ; preds = %142 - %151 = getelementptr inbounds nuw i8, ptr %.1136183.us, i64 120 + %151 = getelementptr inbounds nuw i8, ptr %.1136179.us, i64 120 %152 = load ptr, ptr %151, align 8, !tbaa !119 %.not151.us = icmp eq ptr %152, null br i1 %.not151.us, label %..critedge_crit_edge.split.us, label %142, !llvm.loop !214 @@ -4590,100 +4590,100 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %153 = getelementptr inbounds nuw i8, ptr %.0133, i64 816 %154 = load ptr, ptr %153, align 8, !tbaa !105 %155 = icmp eq ptr %154, null - br i1 %155, label %.loopexit, label %.lr.ph185 + br i1 %155, label %.loopexit, label %.lr.ph181 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us202, %.lr.ph185.split.split.us201, %.lr.ph185.split.split.us.us - %.0133177 = phi ptr [ %.0133.us196, %.lr.ph185.split.split.us.us ], [ %.0133.us196, %.lr.ph185.split.split.us201 ], [ %.0133.us196, %..critedge_crit_edge.split.us202 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us198, %.lr.ph181.split.split.us197, %.lr.ph181.split.split.us.us + %.0133173 = phi ptr [ %.0133.us192, %.lr.ph181.split.split.us.us ], [ %.0133.us192, %.lr.ph181.split.split.us197 ], [ %.0133.us192, %..critedge_crit_edge.split.us198 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 80 %157 = getelementptr inbounds nuw i8, ptr %14, i64 48 %158 = icmp eq i32 %2, 2 - br i1 %158, label %.split221.split.us, label %.split221.split.split + br i1 %158, label %.split216.split.us, label %.split216.split.split -.split221.us.split.us: ; preds = %.loopexit.thread +.split216.us.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %159 -159: ; preds = %.split221.us.split.us +159: ; preds = %.split216.us.split.us %160 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split221.us.split.split.us: ; preds = %.loopexit.thread +.split216.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %161 -161: ; preds = %.split221.us.split.split.us +161: ; preds = %.split216.us.split.split.us %162 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split221.split.us: ; preds = %.loopexit +.split216.split.us: ; preds = %.loopexit %163 = load ptr, ptr %156, align 8, !tbaa !24 - %.not153.us228 = icmp eq ptr %.0133177, %163 - br i1 %.not153.us228, label %.lr.ph213.us.preheader, label %164 + %.not153.us221 = icmp eq ptr %.0133173, %163 + br i1 %.not153.us221, label %.lr.ph209.us.preheader, label %164 -164: ; preds = %.split221.split.us - %165 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133177) - %.not154.us229 = icmp eq i32 %165, 0 - br i1 %.not154.us229, label %.lr.ph213.us.preheader, label %.critedge163 +164: ; preds = %.split216.split.us + %165 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133173) + %.not154.us222 = icmp eq i32 %165, 0 + br i1 %.not154.us222, label %.lr.ph209.us.preheader, label %.critedge163 -.lr.ph213.us.preheader: ; preds = %164, %.split221.split.us - br label %.lr.ph213.us +.lr.ph209.us.preheader: ; preds = %164, %.split216.split.us + br label %.lr.ph209.us -.lr.ph213.us: ; preds = %.lr.ph213.us.preheader, %186 - %.2137211.us = phi ptr [ %188, %186 ], [ %.fr284, %.lr.ph213.us.preheader ] - %166 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 16 +.lr.ph209.us: ; preds = %.lr.ph209.us.preheader, %186 + %.2137207.us = phi ptr [ %188, %186 ], [ %.fr261, %.lr.ph209.us.preheader ] + %166 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 984 %169 = load double, ptr %168, align 8, !tbaa !77 - %170 = load double, ptr %.0133177, align 8, !tbaa !132 + %170 = load double, ptr %.0133173, align 8, !tbaa !132 %171 = fcmp oeq double %169, %170 - br i1 %171, label %.thread336, label %172 + br i1 %171, label %.thread313, label %172 -172: ; preds = %.lr.ph213.us +172: ; preds = %.lr.ph209.us %173 = fsub double %169, %170 %174 = fmul double %173, %76 %175 = fcmp olt double %174, 0.000000e+00 - br i1 %175, label %.thread336, label %176 + br i1 %175, label %.thread313, label %176 176: ; preds = %172 - store ptr %.2137211.us, ptr %157, align 8, !tbaa !41 + store ptr %.2137207.us, ptr %157, align 8, !tbaa !41 %177 = call i32 @CVodeSetStopTime(ptr noundef nonnull %167, double noundef %170) #8 %178 = load ptr, ptr %166, align 8, !tbaa !123 - %179 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 112 + %179 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 112 %180 = load ptr, ptr %179, align 8, !tbaa !127 %181 = call i32 @CVode(ptr noundef %178, double noundef %.0132, ptr noundef %180, ptr noundef nonnull %4, i32 noundef 2) #8 %182 = load double, ptr %4, align 8, !tbaa !90 - %183 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 104 + %183 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 104 store double %182, ptr %183, align 8, !tbaa !215 %184 = icmp slt i32 %181, 0 br i1 %184, label %.thread, label %186 -.thread336: ; preds = %.lr.ph213.us, %172 - %185 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 104 +.thread313: ; preds = %.lr.ph209.us, %172 + %185 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 104 store double %169, ptr %185, align 8, !tbaa !215 br label %186 -186: ; preds = %.thread336, %176 - %.5.us = phi i32 [ %181, %176 ], [ 0, %.thread336 ] - %187 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 120 +186: ; preds = %.thread313, %176 + %.5.us = phi i32 [ %181, %176 ], [ 0, %.thread313 ] + %187 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 120 %188 = load ptr, ptr %187, align 8, !tbaa !119 %.not155.us = icmp eq ptr %188, null - br i1 %.not155.us, label %.critedge163, label %.lr.ph213.us, !llvm.loop !216 + br i1 %.not155.us, label %.critedge163, label %.lr.ph209.us, !llvm.loop !216 -.split221.split.split: ; preds = %.loopexit, %228 - %.1134 = phi ptr [ %230, %228 ], [ %.0133177, %.loopexit ] +.split216.split.split: ; preds = %.loopexit, %228 + %.1134 = phi ptr [ %230, %228 ], [ %.0133173, %.loopexit ] %189 = load ptr, ptr %156, align 8, !tbaa !24 %.not153 = icmp eq ptr %.1134, %189 - br i1 %.not153, label %.lr.ph213.preheader, label %190 + br i1 %.not153, label %.lr.ph209.preheader, label %190 -190: ; preds = %.split221.split.split +190: ; preds = %.split216.split.split %191 = call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.1134) %.not154 = icmp eq i32 %191, 0 - br i1 %.not154, label %.lr.ph213.preheader, label %.critedge163 + br i1 %.not154, label %.lr.ph209.preheader, label %.critedge163 -.lr.ph213.preheader: ; preds = %190, %.split221.split.split - br label %.lr.ph213 +.lr.ph209.preheader: ; preds = %190, %.split216.split.split + br label %.lr.ph209 -.lr.ph213: ; preds = %.lr.ph213.preheader, %216 - %.2137211 = phi ptr [ %218, %216 ], [ %.fr284, %.lr.ph213.preheader ] - %192 = getelementptr inbounds nuw i8, ptr %.2137211, i64 16 +.lr.ph209: ; preds = %.lr.ph209.preheader, %216 + %.2137207 = phi ptr [ %218, %216 ], [ %.fr261, %.lr.ph209.preheader ] + %192 = getelementptr inbounds nuw i8, ptr %.2137207, i64 16 %193 = load ptr, ptr %192, align 8, !tbaa !123 %194 = getelementptr inbounds nuw i8, ptr %193, i64 984 %195 = load double, ptr %194, align 8, !tbaa !77 @@ -4691,72 +4691,72 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %197 = fcmp oeq double %195, %196 br i1 %197, label %198, label %202 -198: ; preds = %.lr.ph213 +198: ; preds = %.lr.ph209 %199 = fsub double %.0132, %196 %200 = fmul double %199, %76 %201 = fcmp olt double %200, 0.000000e+00 - br i1 %201, label %.thread339, label %202 + br i1 %201, label %.thread316, label %202 -202: ; preds = %198, %.lr.ph213 +202: ; preds = %198, %.lr.ph209 %203 = fsub double %195, %196 %204 = fmul double %203, %76 %205 = fcmp olt double %204, 0.000000e+00 - br i1 %205, label %.thread339, label %206 + br i1 %205, label %.thread316, label %206 206: ; preds = %202 - store ptr %.2137211, ptr %157, align 8, !tbaa !41 + store ptr %.2137207, ptr %157, align 8, !tbaa !41 %207 = call i32 @CVodeSetStopTime(ptr noundef nonnull %193, double noundef %196) #8 %208 = load ptr, ptr %192, align 8, !tbaa !123 - %209 = getelementptr inbounds nuw i8, ptr %.2137211, i64 112 + %209 = getelementptr inbounds nuw i8, ptr %.2137207, i64 112 %210 = load ptr, ptr %209, align 8, !tbaa !127 %211 = call i32 @CVode(ptr noundef %208, double noundef %.0132, ptr noundef %210, ptr noundef nonnull %4, i32 noundef %2) #8 %212 = load double, ptr %4, align 8, !tbaa !90 - %213 = getelementptr inbounds nuw i8, ptr %.2137211, i64 104 + %213 = getelementptr inbounds nuw i8, ptr %.2137207, i64 104 store double %212, ptr %213, align 8, !tbaa !215 %214 = icmp slt i32 %211, 0 br i1 %214, label %.thread, label %216 -.thread339: ; preds = %198, %202 - %215 = getelementptr inbounds nuw i8, ptr %.2137211, i64 104 +.thread316: ; preds = %198, %202 + %215 = getelementptr inbounds nuw i8, ptr %.2137207, i64 104 store double %195, ptr %215, align 8, !tbaa !215 br label %216 -216: ; preds = %206, %.thread339 - %.5 = phi i32 [ %211, %206 ], [ 0, %.thread339 ] - %217 = getelementptr inbounds nuw i8, ptr %.2137211, i64 120 +216: ; preds = %206, %.thread316 + %.5 = phi i32 [ %211, %206 ], [ 0, %.thread316 ] + %217 = getelementptr inbounds nuw i8, ptr %.2137207, i64 120 %218 = load ptr, ptr %217, align 8, !tbaa !119 %.not155 = icmp eq ptr %218, null - br i1 %.not155, label %.preheader, label %.lr.ph213, !llvm.loop !216 + br i1 %.not155, label %._crit_edge210, label %.lr.ph209, !llvm.loop !216 .thread: ; preds = %206, %176 - %.us-phi232 = phi i32 [ %181, %176 ], [ %211, %206 ] - %.us-phi233 = phi ptr [ %.2137211.us, %176 ], [ %.2137211, %206 ] - %219 = load i32, ptr %.us-phi233, align 8, !tbaa !203 - call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi232, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.30, i32 noundef %219) #8 + %.us-phi225 = phi i32 [ %181, %176 ], [ %211, %206 ] + %.us-phi226 = phi ptr [ %.2137207.us, %176 ], [ %.2137207, %206 ] + %219 = load i32, ptr %.us-phi226, align 8, !tbaa !203 + call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi225, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.30, i32 noundef %219) #8 br label %.critedge163 -.preheader: ; preds = %216, %225 - %.3138217 = phi ptr [ %227, %225 ], [ %.fr284, %216 ] - %220 = getelementptr inbounds nuw i8, ptr %.3138217, i64 104 +._crit_edge210: ; preds = %216, %225 + %.3138212 = phi ptr [ %227, %225 ], [ %.fr261, %216 ] + %220 = getelementptr inbounds nuw i8, ptr %.3138212, i64 104 %221 = load double, ptr %220, align 8, !tbaa !215 %222 = fsub double %221, %.0132 %223 = fmul double %222, %76 %224 = fcmp ogt double %223, 0.000000e+00 br i1 %224, label %228, label %225 -225: ; preds = %.preheader - %226 = getelementptr inbounds nuw i8, ptr %.3138217, i64 120 +225: ; preds = %._crit_edge210 + %226 = getelementptr inbounds nuw i8, ptr %.3138212, i64 120 %227 = load ptr, ptr %226, align 8, !tbaa !119 %.not157.not = icmp eq ptr %227, null - br i1 %.not157.not, label %.critedge163, label %.preheader, !llvm.loop !217 + br i1 %.not157.not, label %.critedge163, label %._crit_edge210, !llvm.loop !217 -228: ; preds = %.preheader +228: ; preds = %._crit_edge210 %229 = getelementptr inbounds nuw i8, ptr %.1134, i64 816 %230 = load ptr, ptr %229, align 8, !tbaa !105 - br label %.split221.split.split + br label %.split216.split.split -.critedge163: ; preds = %190, %225, %186, %161, %159, %.split221.us.split.us, %164, %.split221.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi232, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split221.us.split.split.us ], [ 0, %.split221.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] +.critedge163: ; preds = %190, %225, %186, %161, %159, %.split216.us.split.us, %164, %.split216.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi225, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split216.us.split.split.us ], [ 0, %.split216.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/casadi/optimized/idaa.ll b/bench/casadi/optimized/idaa.ll index 9d448f4e0f4..e8420962be3 100644 --- a/bench/casadi/optimized/idaa.ll +++ b/bench/casadi/optimized/idaa.ll @@ -3935,7 +3935,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !39 - %.fr247 = freeze ptr %21 + %.fr234 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !42 %.not = icmp eq i32 %23, 0 @@ -3948,44 +3948,44 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !61 - %.fr245 = freeze double %27 + %.fr232 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !62 - %.fr246 = freeze double %28 - %29 = fcmp ogt double %.fr245, %.fr246 + %.fr233 = freeze double %28 + %29 = fcmp ogt double %.fr232, %.fr233 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 56 %32 = load i32, ptr %31, align 8, !tbaa !44 %.not148 = icmp eq i32 %32, 0 - br i1 %.not148, label %72, label %.preheader171 + br i1 %.not148, label %72, label %.preheader170 -.preheader171: ; preds = %25 - %.not149181 = icmp eq ptr %.fr247, null - br i1 %.not149181, label %._crit_edge, label %.lr.ph +.preheader170: ; preds = %25 + %.not149177 = icmp eq ptr %.fr234, null + br i1 %.not149177, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader171 +.lr.ph: ; preds = %.preheader170 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 164 br label %35 35: ; preds = %.lr.ph, %62 - %.0134182 = phi ptr [ %.fr247, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0134182, i64 16 + %.0134178 = phi ptr [ %.fr234, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0134178, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !123 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1184 %39 = load double, ptr %38, align 8, !tbaa !133 - %40 = fsub double %39, %.fr246 + %40 = fsub double %39, %.fr233 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr245, %39 + %44 = fsub double %.fr232, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0134182, align 8, !tbaa !180 + %48 = load i32, ptr %.0134178, align 8, !tbaa !180 tail call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -104, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.15, i32 noundef %48) #9 br label %.critedge164 @@ -3996,18 +3996,18 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0134182, align 8, !tbaa !180 + %54 = load i32, ptr %.0134178, align 8, !tbaa !180 tail call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -22, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.32, i32 noundef %54) #9 br label %.critedge164 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0134182, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0134178, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !183 %.not160 = icmp eq i32 %57, 0 br i1 %.not160, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0134182, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0134178, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !187 %.not161 = icmp eq i32 %60, 0 br i1 %.not161, label %62, label %61 @@ -4017,12 +4017,12 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0134182, i64 128 + %63 = getelementptr inbounds nuw i8, ptr %.0134178, i64 128 %64 = load ptr, ptr %63, align 8, !tbaa !119 %.not149 = icmp eq ptr %64, null br i1 %.not149, label %._crit_edge, label %35, !llvm.loop !193 -._crit_edge: ; preds = %62, %.preheader171 +._crit_edge: ; preds = %62, %.preheader170 %65 = getelementptr inbounds nuw i8, ptr %14, i64 164 %66 = load i32, ptr %65, align 4, !tbaa !37 %.not150 = icmp eq i32 %66, 0 @@ -4053,20 +4053,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr246 + %77 = fsub double %1, %.fr233 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr245, %1 + %81 = fsub double %.fr232, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %84, label %103 84: ; preds = %80, %75 %85 = load double, ptr %0, align 8, !tbaa !67 - %86 = tail call double @SUNRabs(double noundef %.fr246) #9 + %86 = tail call double @SUNRabs(double noundef %.fr233) #9 %87 = load double, ptr %26, align 8, !tbaa !61 %88 = tail call double @SUNRabs(double noundef %87) #9 %89 = load double, ptr %14, align 8, !tbaa !62 @@ -4096,8 +4096,8 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %.0130 = phi double [ %101, %99 ], [ %1, %80 ] %104 = getelementptr inbounds nuw i8, ptr %14, i64 64 %105 = load ptr, ptr %104, align 8, !tbaa !103 - %.not152183 = icmp eq ptr %.fr247, null - br i1 %.not152183, label %.critedge.us, label %.split + %.not152179 = icmp eq ptr %.fr234, null + br i1 %.not152179, label %.critedge.us, label %.split .critedge.us: ; preds = %103, %.critedge.us %.0138.us = phi ptr [ %107, %.critedge.us ], [ %105, %103 ] @@ -4111,24 +4111,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %110 = icmp eq i32 %2, 2 %111 = load ptr, ptr %109, align 8, !tbaa !148 %.not154.us.us = icmp eq ptr %.0138.us, %111 - br i1 %110, label %.split222.us.split.us, label %.split222.us.split.split.us + br i1 %110, label %.split217.us.split.us, label %.split217.us.split.split.us .split: ; preds = %103 %112 = icmp eq i32 %2, 1 - br i1 %112, label %.lr.ph186.us, label %.lr.ph186 + br i1 %112, label %.lr.ph182.us, label %.lr.ph182 -.lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 - %.0138.us197 = phi ptr [ %129, %..critedge_crit_edge.split.us203 ], [ %105, %.split ] - %113 = load double, ptr %.0138.us197, align 8, !tbaa !134 +.lr.ph182.us: ; preds = %.split, %..critedge_crit_edge.split.us199 + %.0138.us193 = phi ptr [ %129, %..critedge_crit_edge.split.us199 ], [ %105, %.split ] + %113 = load double, ptr %.0138.us193, align 8, !tbaa !134 %.fr = freeze double %113 %114 = fsub double %.0130, %.fr %115 = fmul double %114, %76 %116 = fcmp ult double %115, 0.000000e+00 - br i1 %116, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 + br i1 %116, label %.lr.ph182.split.split.us.us, label %.lr.ph182.split.split.us198 -.lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %125 - %.1135184.us198 = phi ptr [ %127, %125 ], [ %.fr247, %.lr.ph186.us ] - %117 = getelementptr inbounds nuw i8, ptr %.1135184.us198, i64 16 +.lr.ph182.split.split.us198: ; preds = %.lr.ph182.us, %125 + %.1135180.us194 = phi ptr [ %127, %125 ], [ %.fr234, %.lr.ph182.us ] + %117 = getelementptr inbounds nuw i8, ptr %.1135180.us194, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 1184 %120 = load double, ptr %119, align 8, !tbaa !133 @@ -4136,24 +4136,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %122 = fmul double %121, %76 %123 = fcmp ogt double %122, 0.000000e+00 %124 = fcmp oeq double %120, %.fr - %or.cond243 = or i1 %123, %124 - br i1 %or.cond243, label %.loopexit, label %125 + %or.cond230 = or i1 %123, %124 + br i1 %or.cond230, label %.loopexit, label %125 -125: ; preds = %.lr.ph186.split.split.us202 - %126 = getelementptr inbounds nuw i8, ptr %.1135184.us198, i64 128 +125: ; preds = %.lr.ph182.split.split.us198 + %126 = getelementptr inbounds nuw i8, ptr %.1135180.us194, i64 128 %127 = load ptr, ptr %126, align 8, !tbaa !119 - %.not152.us199 = icmp eq ptr %127, null - br i1 %.not152.us199, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us202, !llvm.loop !194 + %.not152.us195 = icmp eq ptr %127, null + br i1 %.not152.us195, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us198, !llvm.loop !194 -..critedge_crit_edge.split.us203: ; preds = %125, %138 - %128 = getelementptr inbounds nuw i8, ptr %.0138.us197, i64 592 +..critedge_crit_edge.split.us199: ; preds = %125, %138 + %128 = getelementptr inbounds nuw i8, ptr %.0138.us193, i64 592 %129 = load ptr, ptr %128, align 8, !tbaa !106 %130 = icmp eq ptr %129, null - br i1 %130, label %.loopexit, label %.lr.ph186.us + br i1 %130, label %.loopexit, label %.lr.ph182.us -.lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %138 - %.1135184.us187.us = phi ptr [ %140, %138 ], [ %.fr247, %.lr.ph186.us ] - %131 = getelementptr inbounds nuw i8, ptr %.1135184.us187.us, i64 16 +.lr.ph182.split.split.us.us: ; preds = %.lr.ph182.us, %138 + %.1135180.us183.us = phi ptr [ %140, %138 ], [ %.fr234, %.lr.ph182.us ] + %131 = getelementptr inbounds nuw i8, ptr %.1135180.us183.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 1184 %134 = load double, ptr %133, align 8, !tbaa !133 @@ -4162,20 +4162,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %137 = fcmp ogt double %136, 0.000000e+00 br i1 %137, label %.loopexit, label %138 -138: ; preds = %.lr.ph186.split.split.us.us - %139 = getelementptr inbounds nuw i8, ptr %.1135184.us187.us, i64 128 +138: ; preds = %.lr.ph182.split.split.us.us + %139 = getelementptr inbounds nuw i8, ptr %.1135180.us183.us, i64 128 %140 = load ptr, ptr %139, align 8, !tbaa !119 - %.not152.us188.us = icmp eq ptr %140, null - br i1 %.not152.us188.us, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us.us, !llvm.loop !194 + %.not152.us184.us = icmp eq ptr %140, null + br i1 %.not152.us184.us, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us.us, !llvm.loop !194 -.lr.ph186: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph182: ; preds = %.split, %..critedge_crit_edge.split.us %.0138 = phi ptr [ %154, %..critedge_crit_edge.split.us ], [ %105, %.split ] %141 = load double, ptr %.0138, align 8, !tbaa !134 br label %142 -142: ; preds = %150, %.lr.ph186 - %.1135184.us = phi ptr [ %.fr247, %.lr.ph186 ], [ %152, %150 ] - %143 = getelementptr inbounds nuw i8, ptr %.1135184.us, i64 16 +142: ; preds = %150, %.lr.ph182 + %.1135180.us = phi ptr [ %.fr234, %.lr.ph182 ], [ %152, %150 ] + %143 = getelementptr inbounds nuw i8, ptr %.1135180.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 1184 %146 = load double, ptr %145, align 8, !tbaa !133 @@ -4185,7 +4185,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %149, label %.loopexit, label %150 150: ; preds = %142 - %151 = getelementptr inbounds nuw i8, ptr %.1135184.us, i64 128 + %151 = getelementptr inbounds nuw i8, ptr %.1135180.us, i64 128 %152 = load ptr, ptr %151, align 8, !tbaa !119 %.not152.us = icmp eq ptr %152, null br i1 %.not152.us, label %..critedge_crit_edge.split.us, label %142, !llvm.loop !194 @@ -4194,46 +4194,46 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %153 = getelementptr inbounds nuw i8, ptr %.0138, i64 592 %154 = load ptr, ptr %153, align 8, !tbaa !106 %155 = icmp eq ptr %154, null - br i1 %155, label %.loopexit, label %.lr.ph186 + br i1 %155, label %.loopexit, label %.lr.ph182 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us - %.0138178 = phi ptr [ %.0138.us197, %.lr.ph186.split.split.us.us ], [ %.0138.us197, %.lr.ph186.split.split.us202 ], [ %.0138.us197, %..critedge_crit_edge.split.us203 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us199, %.lr.ph182.split.split.us198, %.lr.ph182.split.split.us.us + %.0138174 = phi ptr [ %.0138.us193, %.lr.ph182.split.split.us.us ], [ %.0138.us193, %.lr.ph182.split.split.us198 ], [ %.0138.us193, %..critedge_crit_edge.split.us199 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 72 %157 = icmp eq i32 %2, 2 %158 = getelementptr inbounds nuw i8, ptr %14, i64 48 - br label %.split222 + br label %.split217 -.split222.us.split.us: ; preds = %.loopexit.thread +.split217.us.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %159 -159: ; preds = %.split222.us.split.us +159: ; preds = %.split217.us.split.us %160 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split222.us.split.split.us: ; preds = %.loopexit.thread +.split217.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %161 -161: ; preds = %.split222.us.split.split.us +161: ; preds = %.split217.us.split.split.us %162 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split222: ; preds = %.loopexit, %205 - %.1139 = phi ptr [ %207, %205 ], [ %.0138178, %.loopexit ] +.split217: ; preds = %.loopexit, %205 + %.1139 = phi ptr [ %207, %205 ], [ %.0138174, %.loopexit ] %163 = load ptr, ptr %156, align 8, !tbaa !148 %.not154 = icmp eq ptr %.1139, %163 - br i1 %.not154, label %.lr.ph214.preheader, label %164 + br i1 %.not154, label %.lr.ph210.preheader, label %164 -164: ; preds = %.split222 +164: ; preds = %.split217 %165 = call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.1139) %.not155 = icmp eq i32 %165, 0 - br i1 %.not155, label %.lr.ph214.preheader, label %.critedge164 + br i1 %.not155, label %.lr.ph210.preheader, label %.critedge164 -.lr.ph214.preheader: ; preds = %164, %.split222 - br label %.lr.ph214 +.lr.ph210.preheader: ; preds = %164, %.split217 + br label %.lr.ph210 -.lr.ph214: ; preds = %.lr.ph214.preheader, %193 - %.2136212 = phi ptr [ %195, %193 ], [ %.fr247, %.lr.ph214.preheader ] - %166 = getelementptr inbounds nuw i8, ptr %.2136212, i64 16 +.lr.ph210: ; preds = %.lr.ph210.preheader, %193 + %.2136208 = phi ptr [ %195, %193 ], [ %.fr234, %.lr.ph210.preheader ] + %166 = getelementptr inbounds nuw i8, ptr %.2136208, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 1184 %169 = load double, ptr %168, align 8, !tbaa !133 @@ -4241,77 +4241,77 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %171 = fcmp oeq double %169, %170 br i1 %171, label %172, label %176 -172: ; preds = %.lr.ph214 +172: ; preds = %.lr.ph210 %173 = fsub double %.0130, %170 %174 = fmul double %173, %76 %175 = fcmp olt double %174, 0.000000e+00 - br i1 %175, label %.thread280, label %176 + br i1 %175, label %.thread267, label %176 -176: ; preds = %172, %.lr.ph214 +176: ; preds = %172, %.lr.ph210 %or.cond3 = and i1 %157, %171 %177 = fsub double %169, %170 %178 = fmul double %177, %76 %179 = fcmp olt double %178, 0.000000e+00 %180 = or i1 %or.cond3, %179 - br i1 %180, label %.thread280, label %181 + br i1 %180, label %.thread267, label %181 181: ; preds = %176 - store ptr %.2136212, ptr %158, align 8, !tbaa !40 + store ptr %.2136208, ptr %158, align 8, !tbaa !40 %182 = call i32 @IDASetStopTime(ptr noundef nonnull %167, double noundef %170) #9 %183 = load ptr, ptr %166, align 8, !tbaa !123 - %184 = getelementptr inbounds nuw i8, ptr %.2136212, i64 112 + %184 = getelementptr inbounds nuw i8, ptr %.2136208, i64 112 %185 = load ptr, ptr %184, align 8, !tbaa !127 - %186 = getelementptr inbounds nuw i8, ptr %.2136212, i64 120 + %186 = getelementptr inbounds nuw i8, ptr %.2136208, i64 120 %187 = load ptr, ptr %186, align 8, !tbaa !128 %188 = call i32 @IDASolve(ptr noundef %183, double noundef %.0130, ptr noundef nonnull %4, ptr noundef %185, ptr noundef %187, i32 noundef %2) #9 %189 = load double, ptr %4, align 8, !tbaa !77 - %190 = getelementptr inbounds nuw i8, ptr %.2136212, i64 104 + %190 = getelementptr inbounds nuw i8, ptr %.2136208, i64 104 store double %189, ptr %190, align 8, !tbaa !195 %191 = icmp slt i32 %188, 0 br i1 %191, label %.thread, label %193 -.thread280: ; preds = %172, %176 - %192 = getelementptr inbounds nuw i8, ptr %.2136212, i64 104 +.thread267: ; preds = %172, %176 + %192 = getelementptr inbounds nuw i8, ptr %.2136208, i64 104 store double %169, ptr %192, align 8, !tbaa !195 br label %193 -193: ; preds = %181, %.thread280 - %.5 = phi i32 [ %188, %181 ], [ 0, %.thread280 ] - %194 = getelementptr inbounds nuw i8, ptr %.2136212, i64 128 +193: ; preds = %181, %.thread267 + %.5 = phi i32 [ %188, %181 ], [ 0, %.thread267 ] + %194 = getelementptr inbounds nuw i8, ptr %.2136208, i64 128 %195 = load ptr, ptr %194, align 8, !tbaa !119 %.not156 = icmp eq ptr %195, null - br i1 %.not156, label %._crit_edge215, label %.lr.ph214, !llvm.loop !196 + br i1 %.not156, label %._crit_edge211, label %.lr.ph210, !llvm.loop !196 .thread: ; preds = %181 - %196 = load i32, ptr %.2136212, align 8, !tbaa !180 + %196 = load i32, ptr %.2136208, align 8, !tbaa !180 call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef %188, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.33, i32 noundef %196) #9 br label %.critedge164 -._crit_edge215: ; preds = %193 - br i1 %157, label %.critedge164, label %.lr.ph219 +._crit_edge211: ; preds = %193 + br i1 %157, label %.critedge164, label %.lr.ph214 -.lr.ph219: ; preds = %._crit_edge215, %202 - %.3137218 = phi ptr [ %204, %202 ], [ %.fr247, %._crit_edge215 ] - %197 = getelementptr inbounds nuw i8, ptr %.3137218, i64 104 +.lr.ph214: ; preds = %._crit_edge211, %202 + %.3137213 = phi ptr [ %204, %202 ], [ %.fr234, %._crit_edge211 ] + %197 = getelementptr inbounds nuw i8, ptr %.3137213, i64 104 %198 = load double, ptr %197, align 8, !tbaa !195 %199 = fsub double %198, %.0130 %200 = fmul double %199, %76 %201 = fcmp ogt double %200, 0.000000e+00 br i1 %201, label %205, label %202 -202: ; preds = %.lr.ph219 - %203 = getelementptr inbounds nuw i8, ptr %.3137218, i64 128 +202: ; preds = %.lr.ph214 + %203 = getelementptr inbounds nuw i8, ptr %.3137213, i64 128 %204 = load ptr, ptr %203, align 8, !tbaa !119 %.not158.not = icmp eq ptr %204, null - br i1 %.not158.not, label %.critedge164, label %.lr.ph219, !llvm.loop !197 + br i1 %.not158.not, label %.critedge164, label %.lr.ph214, !llvm.loop !197 -205: ; preds = %.lr.ph219 +205: ; preds = %.lr.ph214 %206 = getelementptr inbounds nuw i8, ptr %.1139, i64 592 %207 = load ptr, ptr %206, align 8, !tbaa !106 - br label %.split222 + br label %.split217 -.critedge164: ; preds = %._crit_edge215, %164, %202, %161, %159, %.split222.us.split.us, %.split222.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 - %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %188, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split222.us.split.split.us ], [ 0, %.split222.us.split.us ], [ %160, %159 ], [ %162, %161 ], [ %.5, %202 ], [ %.5, %._crit_edge215 ], [ %165, %164 ] +.critedge164: ; preds = %._crit_edge211, %164, %202, %161, %159, %.split217.us.split.us, %.split217.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 + %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %188, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %160, %159 ], [ %162, %161 ], [ %.5, %202 ], [ %.5, %._crit_edge211 ], [ %165, %164 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 } diff --git a/bench/clamav/optimized/lzxd.ll b/bench/clamav/optimized/lzxd.ll index da5854a0c12..8eb24447fc2 100644 --- a/bench/clamav/optimized/lzxd.ll +++ b/bench/clamav/optimized/lzxd.ll @@ -3612,99 +3612,98 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %42 = shl i32 %.us-phi, 16 %43 = tail call i32 @llvm.umax.i32(i32 %6, i32 %0) %44 = trunc nuw nsw i32 %43 to i16 - %45 = add nuw nsw i32 %1, 1 - %46 = trunc nuw nsw i32 %0 to i16 + %45 = trunc nuw nsw i32 %0 to i16 br label %.preheader.split.us.preheader .preheader.split.us.preheader: ; preds = %.split131.us, %.preheader.preheader - %indvars.iv148 = phi i32 [ %45, %.preheader.preheader ], [ %indvars.iv.next149, %.split131.us ] + %indvars.iv148 = phi i32 [ %1, %.preheader.preheader ], [ %indvars.iv.next149, %.split131.us ] %indvars.iv = phi i32 [ 1, %.preheader.preheader ], [ %indvars.iv.next, %.split131.us ] - %.1137 = phi i32 [ 32768, %.preheader.preheader ], [ %77, %.split131.us ] + %.1137 = phi i32 [ 32768, %.preheader.preheader ], [ %76, %.split131.us ] %.3136 = phi i32 [ %42, %.preheader.preheader ], [ %.5.us, %.split131.us ] %.082135 = phi i16 [ %44, %.preheader.preheader ], [ %.284.us, %.split131.us ] + %indvars.iv.next149 = add nuw nsw i32 %indvars.iv148, 1 br label %.preheader.split.us -.preheader.split.us: ; preds = %.preheader.split.us.preheader, %53 - %.4129.us = phi i32 [ %.5.us, %53 ], [ %.3136, %.preheader.split.us.preheader ] - %.183128.us = phi i16 [ %.284.us, %53 ], [ %.082135, %.preheader.split.us.preheader ] - %.289127.us = phi i16 [ %54, %53 ], [ 0, %.preheader.split.us.preheader ] - %47 = zext nneg i16 %.289127.us to i64 - %48 = getelementptr inbounds nuw i8, ptr %2, i64 %47 - %49 = load i8, ptr %48, align 1, !tbaa !43 - %50 = zext i8 %49 to i32 - %.not96.us = icmp eq i32 %indvars.iv148, %50 - br i1 %.not96.us, label %51, label %53 - -51: ; preds = %.preheader.split.us +.preheader.split.us: ; preds = %.preheader.split.us.preheader, %52 + %.4129.us = phi i32 [ %.5.us, %52 ], [ %.3136, %.preheader.split.us.preheader ] + %.183128.us = phi i16 [ %.284.us, %52 ], [ %.082135, %.preheader.split.us.preheader ] + %.289127.us = phi i16 [ %53, %52 ], [ 0, %.preheader.split.us.preheader ] + %46 = zext nneg i16 %.289127.us to i64 + %47 = getelementptr inbounds nuw i8, ptr %2, i64 %46 + %48 = load i8, ptr %47, align 1, !tbaa !43 + %49 = zext i8 %48 to i32 + %.not96.us = icmp eq i32 %indvars.iv.next149, %49 + br i1 %.not96.us, label %50, label %52 + +50: ; preds = %.preheader.split.us %.not97.us = icmp ult i32 %.4129.us, %41 br i1 %.not97.us, label %.lr.ph124.us, label %.loopexit -.lr.ph124.us: ; preds = %51 - %52 = lshr i32 %.4129.us, 16 - br label %56 +.lr.ph124.us: ; preds = %50 + %51 = lshr i32 %.4129.us, 16 + br label %55 -53: ; preds = %._crit_edge125.us, %.preheader.split.us +52: ; preds = %._crit_edge125.us, %.preheader.split.us %.284.us = phi i16 [ %.183128.us, %.preheader.split.us ], [ %.486.us, %._crit_edge125.us ] - %.5.us = phi i32 [ %.4129.us, %.preheader.split.us ], [ %76, %._crit_edge125.us ] - %54 = add nuw nsw i16 %.289127.us, 1 - %55 = icmp samesign ult i16 %54, %46 - br i1 %55, label %.preheader.split.us, label %.split131.us - -56: ; preds = %.lr.ph124.us, %66 - %.178122.us = phi i32 [ 0, %.lr.ph124.us ], [ %73, %66 ] - %.180121.us = phi i32 [ %52, %.lr.ph124.us ], [ %spec.select.us, %66 ] - %.385120.us = phi i16 [ %.183128.us, %.lr.ph124.us ], [ %.486.us, %66 ] - %57 = zext nneg i32 %.180121.us to i64 - %58 = getelementptr inbounds nuw i16, ptr %3, i64 %57 - %59 = load i16, ptr %58, align 2, !tbaa !54 - %60 = icmp eq i16 %59, -1 - br i1 %60, label %61, label %66 - -61: ; preds = %56 - %62 = zext i16 %.385120.us to i64 - %.idx.us = shl nuw nsw i64 %62, 2 - %63 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + %.5.us = phi i32 [ %.4129.us, %.preheader.split.us ], [ %75, %._crit_edge125.us ] + %53 = add nuw nsw i16 %.289127.us, 1 + %54 = icmp samesign ult i16 %53, %45 + br i1 %54, label %.preheader.split.us, label %.split131.us + +55: ; preds = %.lr.ph124.us, %65 + %.178122.us = phi i32 [ 0, %.lr.ph124.us ], [ %72, %65 ] + %.180121.us = phi i32 [ %51, %.lr.ph124.us ], [ %spec.select.us, %65 ] + %.385120.us = phi i16 [ %.183128.us, %.lr.ph124.us ], [ %.486.us, %65 ] + %56 = zext nneg i32 %.180121.us to i64 + %57 = getelementptr inbounds nuw i16, ptr %3, i64 %56 + %58 = load i16, ptr %57, align 2, !tbaa !54 + %59 = icmp eq i16 %58, -1 + br i1 %59, label %60, label %65 + +60: ; preds = %55 + %61 = zext i16 %.385120.us to i64 + %.idx.us = shl nuw nsw i64 %61, 2 + %62 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + store i16 -1, ptr %62, align 2, !tbaa !54 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 2 store i16 -1, ptr %63, align 2, !tbaa !54 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 2 - store i16 -1, ptr %64, align 2, !tbaa !54 - %65 = add i16 %.385120.us, 1 - store i16 %.385120.us, ptr %58, align 2, !tbaa !54 - br label %66 - -66: ; preds = %61, %56 - %67 = phi i16 [ %.385120.us, %61 ], [ %59, %56 ] - %.486.us = phi i16 [ %65, %61 ], [ %.385120.us, %56 ] - %68 = zext i16 %67 to i32 - %69 = shl nuw nsw i32 %68, 1 - %70 = sub nuw nsw i32 15, %.178122.us - %71 = lshr i32 %.4129.us, %70 - %72 = and i32 %71, 1 - %spec.select.us = or disjoint i32 %69, %72 - %73 = add nuw nsw i32 %.178122.us, 1 - %exitcond.not = icmp eq i32 %73, %indvars.iv - br i1 %exitcond.not, label %._crit_edge125.us, label %56 - -._crit_edge125.us: ; preds = %66 - %74 = zext nneg i32 %spec.select.us to i64 - %75 = getelementptr inbounds nuw i16, ptr %3, i64 %74 - store i16 %.289127.us, ptr %75, align 2, !tbaa !54 - %76 = add i32 %.4129.us, %.1137 - br label %53 - -.split131.us: ; preds = %53 - %77 = lshr i32 %.1137, 1 - %indvars.iv.next149 = add nuw nsw i32 %indvars.iv148, 1 + %64 = add i16 %.385120.us, 1 + store i16 %.385120.us, ptr %57, align 2, !tbaa !54 + br label %65 + +65: ; preds = %60, %55 + %66 = phi i16 [ %.385120.us, %60 ], [ %58, %55 ] + %.486.us = phi i16 [ %64, %60 ], [ %.385120.us, %55 ] + %67 = zext i16 %66 to i32 + %68 = shl nuw nsw i32 %67, 1 + %69 = sub nuw nsw i32 15, %.178122.us + %70 = lshr i32 %.4129.us, %69 + %71 = and i32 %70, 1 + %spec.select.us = or disjoint i32 %68, %71 + %72 = add nuw nsw i32 %.178122.us, 1 + %exitcond.not = icmp eq i32 %72, %indvars.iv + br i1 %exitcond.not, label %._crit_edge125.us, label %55 + +._crit_edge125.us: ; preds = %65 + %73 = zext nneg i32 %spec.select.us to i64 + %74 = getelementptr inbounds nuw i16, ptr %3, i64 %73 + store i16 %.289127.us, ptr %74, align 2, !tbaa !54 + %75 = add i32 %.4129.us, %.1137 + br label %52 + +.split131.us: ; preds = %52 + %76 = lshr i32 %.1137, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond151.not = icmp eq i32 %indvars.iv.next149, 17 + %exitcond151.not = icmp eq i32 %indvars.iv.next149, 16 br i1 %exitcond151.not, label %._crit_edge139, label %.preheader.split.us.preheader ._crit_edge139: ; preds = %.split131.us - %78 = icmp ne i32 %.5.us, %41 - %79 = zext i1 %78 to i32 + %77 = icmp ne i32 %.5.us, %41 + %78 = zext i1 %77 to i32 br label %.loopexit -.loopexit: ; preds = %19, %.preheader103.split.us, %51, %30, %._crit_edge139 - %.090 = phi i32 [ %79, %._crit_edge139 ], [ 0, %30 ], [ 1, %51 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] +.loopexit: ; preds = %19, %.preheader103.split.us, %50, %30, %._crit_edge139 + %.090 = phi i32 [ %78, %._crit_edge139 ], [ 0, %30 ], [ 1, %50 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] ret i32 %.090 } diff --git a/bench/clamav/optimized/mszipd.ll b/bench/clamav/optimized/mszipd.ll index eb008b5d88d..d9193bc9bf7 100644 --- a/bench/clamav/optimized/mszipd.ll +++ b/bench/clamav/optimized/mszipd.ll @@ -2620,110 +2620,109 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %59 = shl i32 %.2, 16 %60 = tail call i32 @llvm.umax.i32(i32 %6, i32 %0) %61 = trunc nuw nsw i32 %60 to i16 - %62 = add nuw nsw i32 %1, 1 br label %.preheader141.split.us.preheader .preheader141.split.us.preheader: ; preds = %.split.us, %.preheader141.preheader - %indvars.iv182 = phi i32 [ %62, %.preheader141.preheader ], [ %indvars.iv.next183, %.split.us ] + %indvars.iv182 = phi i32 [ %1, %.preheader141.preheader ], [ %indvars.iv.next183, %.split.us ] %indvars.iv = phi i32 [ 1, %.preheader141.preheader ], [ %indvars.iv.next, %.split.us ] - %.1171 = phi i32 [ 32768, %.preheader141.preheader ], [ %99, %.split.us ] + %.1171 = phi i32 [ 32768, %.preheader141.preheader ], [ %98, %.split.us ] %.3170 = phi i32 [ %59, %.preheader141.preheader ], [ %.5.us, %.split.us ] %.0116169 = phi i16 [ %61, %.preheader141.preheader ], [ %.2118.us, %.split.us ] + %indvars.iv.next183 = add nuw nsw i32 %indvars.iv182, 1 br label %.preheader141.split.us -.preheader141.split.us: ; preds = %.preheader141.split.us.preheader, %76 - %.4166.us = phi i32 [ %.5.us, %76 ], [ %.3170, %.preheader141.split.us.preheader ] - %.1117165.us = phi i16 [ %.2118.us, %76 ], [ %.0116169, %.preheader141.split.us.preheader ] - %.2123164.us = phi i16 [ %77, %76 ], [ 0, %.preheader141.split.us.preheader ] - %63 = zext nneg i16 %.2123164.us to i64 - %64 = getelementptr inbounds nuw i8, ptr %2, i64 %63 - %65 = load i8, ptr %64, align 1, !tbaa !32 - %66 = zext i8 %65 to i32 - %.not133.us = icmp eq i32 %indvars.iv182, %66 - br i1 %.not133.us, label %67, label %76 - -67: ; preds = %.preheader141.split.us +.preheader141.split.us: ; preds = %.preheader141.split.us.preheader, %75 + %.4166.us = phi i32 [ %.5.us, %75 ], [ %.3170, %.preheader141.split.us.preheader ] + %.1117165.us = phi i16 [ %.2118.us, %75 ], [ %.0116169, %.preheader141.split.us.preheader ] + %.2123164.us = phi i16 [ %76, %75 ], [ 0, %.preheader141.split.us.preheader ] + %62 = zext nneg i16 %.2123164.us to i64 + %63 = getelementptr inbounds nuw i8, ptr %2, i64 %62 + %64 = load i8, ptr %63, align 1, !tbaa !32 + %65 = zext i8 %64 to i32 + %.not133.us = icmp eq i32 %indvars.iv.next183, %65 + br i1 %.not133.us, label %66, label %75 + +66: ; preds = %.preheader141.split.us %.not134.us = icmp ult i32 %.4166.us, %58 - br i1 %.not134.us, label %68, label %.loopexit - -68: ; preds = %67 - %69 = lshr i32 %.4166.us, 16 - br label %70 - -70: ; preds = %70, %68 - %.3113.us = phi i32 [ 0, %68 ], [ %73, %70 ] - %.3108.us = phi i32 [ %1, %68 ], [ %75, %70 ] - %.2104.us = phi i32 [ %69, %68 ], [ %74, %70 ] - %71 = shl i32 %.3113.us, 1 - %72 = and i32 %.2104.us, 1 - %73 = or disjoint i32 %72, %71 - %74 = lshr i32 %.2104.us, 1 - %75 = add nsw i32 %.3108.us, -1 - %.not135.us = icmp eq i32 %75, 0 - br i1 %.not135.us, label %.preheader.us, label %70 - -76: ; preds = %._crit_edge162.us, %.preheader141.split.us + br i1 %.not134.us, label %67, label %.loopexit + +67: ; preds = %66 + %68 = lshr i32 %.4166.us, 16 + br label %69 + +69: ; preds = %69, %67 + %.3113.us = phi i32 [ 0, %67 ], [ %72, %69 ] + %.3108.us = phi i32 [ %1, %67 ], [ %74, %69 ] + %.2104.us = phi i32 [ %68, %67 ], [ %73, %69 ] + %70 = shl i32 %.3113.us, 1 + %71 = and i32 %.2104.us, 1 + %72 = or disjoint i32 %71, %70 + %73 = lshr i32 %.2104.us, 1 + %74 = add nsw i32 %.3108.us, -1 + %.not135.us = icmp eq i32 %74, 0 + br i1 %.not135.us, label %.preheader.us, label %69 + +75: ; preds = %._crit_edge162.us, %.preheader141.split.us %.2118.us = phi i16 [ %.1117165.us, %.preheader141.split.us ], [ %.4120.us, %._crit_edge162.us ] - %.5.us = phi i32 [ %.4166.us, %.preheader141.split.us ], [ %98, %._crit_edge162.us ] - %77 = add nuw nsw i16 %.2123164.us, 1 - %78 = icmp samesign ult i16 %77, %8 - br i1 %78, label %.preheader141.split.us, label %.split.us - -.preheader.us: ; preds = %70, %88 - %.4109161.us = phi i32 [ %95, %88 ], [ 0, %70 ] - %.4114160.us = phi i32 [ %spec.select.us, %88 ], [ %73, %70 ] - %.3119159.us = phi i16 [ %.4120.us, %88 ], [ %.1117165.us, %70 ] - %79 = zext i32 %.4114160.us to i64 - %80 = getelementptr inbounds nuw i16, ptr %3, i64 %79 - %81 = load i16, ptr %80, align 2, !tbaa !36 - %82 = icmp eq i16 %81, -1 - br i1 %82, label %83, label %88 - -83: ; preds = %.preheader.us - %84 = zext i16 %.3119159.us to i64 - %.idx.us = shl nuw nsw i64 %84, 2 - %85 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + %.5.us = phi i32 [ %.4166.us, %.preheader141.split.us ], [ %97, %._crit_edge162.us ] + %76 = add nuw nsw i16 %.2123164.us, 1 + %77 = icmp samesign ult i16 %76, %8 + br i1 %77, label %.preheader141.split.us, label %.split.us + +.preheader.us: ; preds = %69, %87 + %.4109161.us = phi i32 [ %94, %87 ], [ 0, %69 ] + %.4114160.us = phi i32 [ %spec.select.us, %87 ], [ %72, %69 ] + %.3119159.us = phi i16 [ %.4120.us, %87 ], [ %.1117165.us, %69 ] + %78 = zext i32 %.4114160.us to i64 + %79 = getelementptr inbounds nuw i16, ptr %3, i64 %78 + %80 = load i16, ptr %79, align 2, !tbaa !36 + %81 = icmp eq i16 %80, -1 + br i1 %81, label %82, label %87 + +82: ; preds = %.preheader.us + %83 = zext i16 %.3119159.us to i64 + %.idx.us = shl nuw nsw i64 %83, 2 + %84 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + store i16 -1, ptr %84, align 2, !tbaa !36 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 2 store i16 -1, ptr %85, align 2, !tbaa !36 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 2 - store i16 -1, ptr %86, align 2, !tbaa !36 - %87 = add i16 %.3119159.us, 1 - store i16 %.3119159.us, ptr %80, align 2, !tbaa !36 - br label %88 - -88: ; preds = %83, %.preheader.us - %89 = phi i16 [ %.3119159.us, %83 ], [ %81, %.preheader.us ] - %.4120.us = phi i16 [ %87, %83 ], [ %.3119159.us, %.preheader.us ] - %90 = zext i16 %89 to i32 - %91 = shl nuw nsw i32 %90, 1 - %92 = sub nuw nsw i32 15, %.4109161.us - %93 = lshr i32 %.4166.us, %92 - %94 = and i32 %93, 1 - %spec.select.us = or disjoint i32 %91, %94 - %95 = add nuw nsw i32 %.4109161.us, 1 - %exitcond.not = icmp eq i32 %95, %indvars.iv + %86 = add i16 %.3119159.us, 1 + store i16 %.3119159.us, ptr %79, align 2, !tbaa !36 + br label %87 + +87: ; preds = %82, %.preheader.us + %88 = phi i16 [ %.3119159.us, %82 ], [ %80, %.preheader.us ] + %.4120.us = phi i16 [ %86, %82 ], [ %.3119159.us, %.preheader.us ] + %89 = zext i16 %88 to i32 + %90 = shl nuw nsw i32 %89, 1 + %91 = sub nuw nsw i32 15, %.4109161.us + %92 = lshr i32 %.4166.us, %91 + %93 = and i32 %92, 1 + %spec.select.us = or disjoint i32 %90, %93 + %94 = add nuw nsw i32 %.4109161.us, 1 + %exitcond.not = icmp eq i32 %94, %indvars.iv br i1 %exitcond.not, label %._crit_edge162.us, label %.preheader.us -._crit_edge162.us: ; preds = %88 - %96 = zext nneg i32 %spec.select.us to i64 - %97 = getelementptr inbounds nuw i16, ptr %3, i64 %96 - store i16 %.2123164.us, ptr %97, align 2, !tbaa !36 - %98 = add i32 %.4166.us, %.1171 - br label %76 +._crit_edge162.us: ; preds = %87 + %95 = zext nneg i32 %spec.select.us to i64 + %96 = getelementptr inbounds nuw i16, ptr %3, i64 %95 + store i16 %.2123164.us, ptr %96, align 2, !tbaa !36 + %97 = add i32 %.4166.us, %.1171 + br label %75 -.split.us: ; preds = %76 - %99 = lshr i32 %.1171, 1 - %indvars.iv.next183 = add nuw nsw i32 %indvars.iv182, 1 +.split.us: ; preds = %75 + %98 = lshr i32 %.1171, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond185.not = icmp eq i32 %indvars.iv.next183, 17 + %exitcond185.not = icmp eq i32 %indvars.iv.next183, 16 br i1 %exitcond185.not, label %._crit_edge173, label %.preheader141.split.us.preheader ._crit_edge173: ; preds = %.split.us - %100 = icmp ne i32 %.5.us, %58 - %101 = zext i1 %100 to i32 + %99 = icmp ne i32 %.5.us, %58 + %100 = zext i1 %99 to i32 br label %.loopexit -.loopexit: ; preds = %26, %67, %39, %._crit_edge173 - %.0124 = phi i32 [ %101, %._crit_edge173 ], [ 0, %39 ], [ 1, %67 ], [ 1, %26 ] +.loopexit: ; preds = %26, %66, %39, %._crit_edge173 + %.0124 = phi i32 [ %100, %._crit_edge173 ], [ 0, %39 ], [ 1, %66 ], [ 1, %26 ] ret i32 %.0124 } diff --git a/bench/clamav/optimized/tnef.ll b/bench/clamav/optimized/tnef.ll index a119ea9bcbe..34324a83975 100644 --- a/bench/clamav/optimized/tnef.ll +++ b/bench/clamav/optimized/tnef.ll @@ -81,11 +81,11 @@ define range(i32 0, 27) i32 @cli_tnef(ptr noundef %0, ptr noundef readonly captu %or.cond44.not.i232 = icmp ugt i64 %29, 6 br i1 %or.cond44.not.i232, label %.lr.ph, label %.loopexit -.lr.ph: ; preds = %.preheader, %156 - %30 = phi ptr [ %158, %156 ], [ %28, %.preheader ] - %31 = phi ptr [ %157, %156 ], [ %27, %.preheader ] - %.0106234 = phi i64 [ %.1107, %156 ], [ 6, %.preheader ] - %.0109233 = phi ptr [ %.1110, %156 ], [ null, %.preheader ] +.lr.ph: ; preds = %.preheader, %155 + %30 = phi ptr [ %157, %155 ], [ %28, %.preheader ] + %31 = phi ptr [ %156, %155 ], [ %27, %.preheader ] + %.0106234 = phi i64 [ %.1107, %155 ], [ 6, %.preheader ] + %.0109233 = phi ptr [ %.1110, %155 ], [ null, %.preheader ] %32 = getelementptr inbounds nuw i8, ptr %31, i64 104 %33 = load ptr, ptr %32, align 8, !tbaa !25 %34 = call ptr %33(ptr noundef nonnull %31, i64 noundef %.0106234, i64 noundef 1, i32 noundef 0) #7 @@ -155,8 +155,8 @@ fmap_readn.exit35.i: ; preds = %54 %.not25.i = icmp ugt i64 %55, 3 br i1 %.not25.i, label %58, label %.loopexit181 -.loopexit: ; preds = %.lr.ph, %156, %fmap_readn.exit.i, %.preheader, %48 - %.0109196 = phi ptr [ %.0109233, %48 ], [ null, %.preheader ], [ %.0109233, %.lr.ph ], [ %.1110, %156 ], [ %.0109233, %fmap_readn.exit.i ] +.loopexit: ; preds = %.lr.ph, %155, %fmap_readn.exit.i, %.preheader, %48 + %.0109196 = phi ptr [ %.0109233, %48 ], [ null, %.preheader ], [ %.0109233, %.lr.ph ], [ %.1110, %155 ], [ %.0109233, %fmap_readn.exit.i ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.thread169 @@ -172,7 +172,7 @@ fmap_readn.exit35.i: ; preds = %54 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13, i32 noundef %60, i32 noundef %52, i32 noundef %.0..0..0..0..0.36.i) #7 call void @llvm.lifetime.end.p0(ptr nonnull %4) %61 = icmp eq i32 %.0..0..0..0..0.36.i, 0 - br i1 %61, label %156, label %62 + br i1 %61, label %155, label %62 62: ; preds = %58 %63 = icmp slt i32 %.0..0..0..0..0.36.i, 0 @@ -221,7 +221,7 @@ fmap_readn.exit35.i: ; preds = %54 tnef_message.exit.thread: ; preds = %73 %75 = add nuw nsw i64 %74, 2 - br label %156 + br label %155 76: ; preds = %73, %71 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15) #7 @@ -252,8 +252,8 @@ tnef_message.exit.thread: ; preds = %73 %86 = zext nneg i32 %.0..0..0..0..0.36.i to i64 %87 = getelementptr inbounds nuw i8, ptr %78, i64 88 %88 = load i64, ptr %87, align 8, !tbaa !23 - %or.cond84.not.i = icmp ult i64 %59, %88 - br i1 %or.cond84.not.i, label %89, label %.critedge.i + %or.cond.not.i = icmp ult i64 %59, %88 + br i1 %or.cond.not.i, label %89, label %.critedge.i 89: ; preds = %85 %90 = sub nuw i64 %88, %59 @@ -313,14 +313,14 @@ fmap_readn.exit.i62: ; preds = %89 111: ; preds = %fmap_readn.exit78.i, %.lr.ph.i %.6 = phi i64 [ %59, %.lr.ph.i ], [ %119, %fmap_readn.exit78.i ] - %.06286.i = phi i32 [ %.0..0..0..0..0.36.i, %.lr.ph.i ], [ %122, %fmap_readn.exit78.i ] + %.06285.i = phi i32 [ %.0..0..0..0..0.36.i, %.lr.ph.i ], [ %122, %fmap_readn.exit78.i ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %112 = load i64, ptr %109, align 8, !tbaa !23 %or.cond83.not.i = icmp ult i64 %.6, %112 br i1 %or.cond83.not.i, label %113, label %.thread.i 113: ; preds = %111 - %114 = call i32 @llvm.umin.i32(i32 %.06286.i, i32 8192) + %114 = call i32 @llvm.umin.i32(i32 %.06285.i, i32 8192) %115 = zext nneg i32 %114 to i64 %116 = sub nuw i64 %112, %.6 %spec.select.i75.i = call i64 @llvm.umin.i64(i64 range(i64 1, 4294967296) %115, i64 %116) @@ -334,7 +334,7 @@ fmap_readn.exit78.i: ; preds = %113 %119 = add nsw i64 %spec.select.i75.i, %.6 %120 = call i32 @fileblobAddData(ptr noundef nonnull %.2111, ptr noundef nonnull %3, i64 noundef %spec.select.i75.i) #7 %121 = trunc nuw nsw i64 %spec.select.i75.i to i32 - %122 = sub i32 %.06286.i, %121 + %122 = sub i32 %.06285.i, %121 call void @llvm.lifetime.end.p0(ptr nonnull %3) %.not.i60 = icmp eq i32 %122, 0 br i1 %.not.i60, label %.loopexit.i, label %111 @@ -366,7 +366,7 @@ fmap_readn.exit78.i: ; preds = %113 tnef_attachment.exit: ; preds = %125 %128 = add nuw nsw i64 %126, 2 - br label %156 + br label %155 .loopexit182: ; preds = %106, %127, %84, %.critedge.i, %102 %.5114.ph = phi ptr [ null, %102 ], [ %.0109233, %.critedge.i ], [ %.0109233, %84 ], [ %.3112, %127 ], [ null, %106 ] @@ -401,10 +401,10 @@ tnef_attachment.exit: ; preds = %125 %or.cond180.not238.not = icmp eq i64 %142, 0 br i1 %or.cond180.not238.not, label %fmap_readn.exit67.thread, label %.lr.ph240 -.lr.ph240: ; preds = %139, %149 - %143 = phi i64 [ %154, %149 ], [ %142, %139 ] - %144 = phi ptr [ %152, %149 ], [ %140, %139 ] - %.3239 = phi i64 [ %150, %149 ], [ 0, %139 ] +.lr.ph240: ; preds = %139, %fmap_readn.exit67 + %143 = phi i64 [ %153, %fmap_readn.exit67 ], [ %142, %139 ] + %144 = phi ptr [ %151, %fmap_readn.exit67 ], [ %140, %139 ] + %.3239 = phi i64 [ %149, %fmap_readn.exit67 ], [ 0, %139 ] %145 = sub nuw i64 %143, %.3239 %spec.select.i64 = call i64 @llvm.umin.i64(i64 %145, i64 8192) %146 = getelementptr inbounds nuw i8, ptr %144, i64 104 @@ -415,20 +415,16 @@ tnef_attachment.exit: ; preds = %125 fmap_readn.exit67: ; preds = %.lr.ph240 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %5, ptr nonnull align 1 %148, i64 %spec.select.i64, i1 false) - %.not = icmp eq i64 %143, %.3239 - br i1 %.not, label %fmap_readn.exit67.thread, label %149 - -149: ; preds = %fmap_readn.exit67 - %150 = add i64 %spec.select.i64, %.3239 - %151 = call i64 @cli_writen(i32 noundef %137, ptr noundef nonnull %5, i64 noundef %spec.select.i64) #7 - %152 = load ptr, ptr %6, align 8, !tbaa !3 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 88 - %154 = load i64, ptr %153, align 8, !tbaa !23 - %or.cond180.not = icmp ult i64 %150, %154 + %149 = add i64 %spec.select.i64, %.3239 + %150 = call i64 @cli_writen(i32 noundef %137, ptr noundef nonnull %5, i64 noundef %spec.select.i64) #7 + %151 = load ptr, ptr %6, align 8, !tbaa !3 + %152 = getelementptr inbounds nuw i8, ptr %151, i64 88 + %153 = load i64, ptr %152, align 8, !tbaa !23 + %or.cond180.not = icmp ult i64 %149, %153 br i1 %or.cond180.not, label %.lr.ph240, label %fmap_readn.exit67.thread -fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, %149, %.lr.ph240, %139 - %155 = call i32 @close(i32 noundef %137) #7 +fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, %.lr.ph240, %139 + %154 = call i32 @close(i32 noundef %137) #7 br label %.thread165 .thread165: ; preds = %132, %fmap_readn.exit67.thread, %136 @@ -436,43 +432,43 @@ fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.thread169 -156: ; preds = %tnef_attachment.exit, %tnef_message.exit.thread, %58 +155: ; preds = %tnef_attachment.exit, %tnef_message.exit.thread, %58 %.1110 = phi ptr [ %.0109233, %58 ], [ %.3112, %tnef_attachment.exit ], [ %69, %tnef_message.exit.thread ] %.1107 = phi i64 [ %59, %58 ], [ %128, %tnef_attachment.exit ], [ %75, %tnef_message.exit.thread ] - %157 = load ptr, ptr %6, align 8, !tbaa !3 + %156 = load ptr, ptr %6, align 8, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %158 = getelementptr inbounds nuw i8, ptr %157, i64 88 - %159 = load i64, ptr %158, align 8, !tbaa !23 - %or.cond44.not.i = icmp ult i64 %.1107, %159 + %157 = getelementptr inbounds nuw i8, ptr %156, i64 88 + %158 = load i64, ptr %157, align 8, !tbaa !23 + %or.cond44.not.i = icmp ult i64 %.1107, %158 br i1 %or.cond44.not.i, label %.lr.ph, label %.loopexit .thread169: ; preds = %.loopexit, %.loopexit181, %129, %.thread165, %.loopexit182, %76, %64 %.2178 = phi i32 [ 26, %129 ], [ 26, %.thread165 ], [ 26, %.loopexit182 ], [ 26, %76 ], [ 26, %64 ], [ 0, %.loopexit ], [ 0, %.loopexit181 ] %.1110177 = phi ptr [ %.0109233, %129 ], [ %.0109233, %.thread165 ], [ %.5114.ph, %.loopexit182 ], [ %69, %76 ], [ %.0109233, %64 ], [ %.0109196, %.loopexit ], [ %.0109233, %.loopexit181 ] %.not49 = icmp eq ptr %.1110177, null - br i1 %.not49, label %165, label %160 + br i1 %.not49, label %164, label %159 -160: ; preds = %.thread169 +159: ; preds = %.thread169 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9) #7 - %161 = call ptr @fileblobGetFilename(ptr noundef nonnull %.1110177) #7 - %162 = icmp eq ptr %161, null - br i1 %162, label %163, label %164 + %160 = call ptr @fileblobGetFilename(ptr noundef nonnull %.1110177) #7 + %161 = icmp eq ptr %160, null + br i1 %161, label %162, label %163 -163: ; preds = %160 +162: ; preds = %159 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 call void @fileblobSetFilename(ptr noundef nonnull %.1110177, ptr noundef %0, ptr noundef nonnull @.str.11) #7 - br label %164 + br label %163 -164: ; preds = %163, %160 +163: ; preds = %162, %159 call void @fileblobDestroy(ptr noundef nonnull %.1110177) #7 - br label %165 + br label %164 -165: ; preds = %164, %.thread169 +164: ; preds = %163, %.thread169 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %.2178) #7 br label %fmap_readn.exit -fmap_readn.exit: ; preds = %22, %18, %12, %16, %165, %11 - %.0 = phi i32 [ 0, %11 ], [ %.2178, %165 ], [ 26, %16 ], [ 12, %12 ], [ 12, %18 ], [ 12, %22 ] +fmap_readn.exit: ; preds = %22, %18, %12, %16, %164, %11 + %.0 = phi i32 [ 0, %11 ], [ %.2178, %164 ], [ 26, %16 ], [ 12, %12 ], [ 12, %18 ], [ 12, %22 ] ret i32 %.0 } diff --git a/bench/coremark/optimized/core_list_join.ll b/bench/coremark/optimized/core_list_join.ll index 0ff2ef52f83..32d430694eb 100644 --- a/bench/coremark/optimized/core_list_join.ll +++ b/bench/coremark/optimized/core_list_join.ll @@ -257,9 +257,9 @@ core_list_reverse.exit.thread: ; preds = %core_list_reverse.e %.053.lcssa = phi ptr [ %4, %2 ], [ %.07.lcssa.i, %._crit_edge.loopexit ] %52 = phi i16 [ 0, %2 ], [ %51, %._crit_edge.loopexit ] %53 = icmp sgt i16 %1, 0 - br i1 %53, label %.lr.ph79.i.preheader, label %core_list_mergesort.exit + br i1 %53, label %.lr.ph.us.preheader.i.preheader, label %core_list_mergesort.exit -.lr.ph79.i.preheader: ; preds = %._crit_edge +.lr.ph.us.preheader.i.preheader: ; preds = %._crit_edge %54 = getelementptr inbounds nuw i8, ptr %0, i64 64 %55 = getelementptr inbounds nuw i8, ptr %0, i64 96 %56 = getelementptr inbounds nuw i8, ptr %0, i64 100 @@ -267,20 +267,20 @@ core_list_reverse.exit.thread: ; preds = %core_list_reverse.e %58 = getelementptr inbounds nuw i8, ptr %0, i64 32 %59 = getelementptr inbounds nuw i8, ptr %0, i64 2 %60 = getelementptr inbounds nuw i8, ptr %0, i64 102 - br label %.lr.ph79.i + br label %.lr.ph.us.preheader.i -.lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i - %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %.053.lcssa, %.lr.ph79.i.preheader ] - %.047.i = phi i32 [ %158, %._crit_edge80.i ], [ 1, %.lr.ph79.i.preheader ] +.lr.ph.us.preheader.i: ; preds = %.lr.ph.us.preheader.i.preheader, %._crit_edge80.i + %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %.053.lcssa, %.lr.ph.us.preheader.i.preheader ] + %.047.i = phi i32 [ %158, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i - %.04677.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph79.i ] - %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph79.i ] - %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph79.i ] - %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph79.i ] +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i + %.04677.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %61 = add nuw nsw i32 %.04677.us.i, 1 br label %63 @@ -502,8 +502,8 @@ calc_func.exit: ; preds = %119, %142 ._crit_edge80.i: ; preds = %.loopexit.us.i store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %157 = icmp eq i32 %.04677.us.i, 0 - %158 = shl nuw nsw i32 %.047.i, 1 - br i1 %157, label %core_list_mergesort.exit, label %.lr.ph79.i + %158 = shl nsw i32 %.047.i, 1 + br i1 %157, label %core_list_mergesort.exit, label %.lr.ph.us.preheader.i core_list_mergesort.exit: ; preds = %._crit_edge80.i, %._crit_edge %.154 = phi ptr [ %.053.lcssa, %._crit_edge ], [ %.260.us.i.ph, %._crit_edge80.i ] @@ -584,20 +584,20 @@ core_list_find.exit79: ; preds = %177, %171 %190 = load ptr, ptr %187, align 8, !tbaa !31 store ptr %190, ptr %160, align 8, !tbaa !31 store ptr %160, ptr %187, align 8, !tbaa !31 - br label %.lr.ph79.i80 + br label %.lr.ph.us.preheader.i80 -.lr.ph79.i80: ; preds = %._crit_edge80.i103, %._crit_edge156 +.lr.ph.us.preheader.i80: ; preds = %._crit_edge80.i103, %._crit_edge156 %.058.i81 = phi ptr [ %.154, %._crit_edge156 ], [ %.260.us.i95.ph, %._crit_edge80.i103 ] %.047.i82 = phi i32 [ 1, %._crit_edge156 ], [ %236, %._crit_edge80.i103 ] %.not73.i83 = icmp ne ptr %.058.i81, null tail call void @llvm.assume(i1 %.not73.i83) br label %.lr.ph.us.i84 -.lr.ph.us.i84: ; preds = %.loopexit.us.i101, %.lr.ph79.i80 - %.04677.us.i85 = phi i32 [ %191, %.loopexit.us.i101 ], [ 0, %.lr.ph79.i80 ] - %.04876.us.i86 = phi ptr [ %.149.us.i98, %.loopexit.us.i101 ], [ null, %.lr.ph79.i80 ] - %.05575.us.i87 = phi ptr [ %.253.us.i97, %.loopexit.us.i101 ], [ %.058.i81, %.lr.ph79.i80 ] - %.15974.us.i88 = phi ptr [ %.260.us.i95.ph, %.loopexit.us.i101 ], [ null, %.lr.ph79.i80 ] +.lr.ph.us.i84: ; preds = %.loopexit.us.i101, %.lr.ph.us.preheader.i80 + %.04677.us.i85 = phi i32 [ %191, %.loopexit.us.i101 ], [ 0, %.lr.ph.us.preheader.i80 ] + %.04876.us.i86 = phi ptr [ %.149.us.i98, %.loopexit.us.i101 ], [ null, %.lr.ph.us.preheader.i80 ] + %.05575.us.i87 = phi ptr [ %.253.us.i97, %.loopexit.us.i101 ], [ %.058.i81, %.lr.ph.us.preheader.i80 ] + %.15974.us.i88 = phi ptr [ %.260.us.i95.ph, %.loopexit.us.i101 ], [ null, %.lr.ph.us.preheader.i80 ] %191 = add nuw nsw i32 %.04677.us.i85, 1 br label %193 @@ -713,8 +713,8 @@ core_list_find.exit79: ; preds = %177, %171 ._crit_edge80.i103: ; preds = %.loopexit.us.i101 store ptr null, ptr %.149.us.i98, align 8, !tbaa !31 %235 = icmp eq i32 %.04677.us.i85, 0 - %236 = shl nuw nsw i32 %.047.i82, 1 - br i1 %235, label %core_list_mergesort.exit114.preheader, label %.lr.ph79.i80 + %236 = shl nsw i32 %.047.i82, 1 + br i1 %235, label %core_list_mergesort.exit114.preheader, label %.lr.ph.us.preheader.i80 core_list_mergesort.exit114.preheader: ; preds = %._crit_edge80.i103 %.2158 = load ptr, ptr %.260.us.i95.ph, align 8, !tbaa !31 @@ -811,20 +811,20 @@ define dso_local noundef ptr @core_list_reverse(ptr noundef %0) local_unnamed_ad ; Function Attrs: nounwind uwtable define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef %2) local_unnamed_addr #0 { - br label %.lr.ph79 + br label %.lr.ph.us.preheader -.lr.ph79: ; preds = %._crit_edge80, %3 +.lr.ph.us.preheader: ; preds = %3, %._crit_edge80 %.058 = phi ptr [ %0, %3 ], [ %.260.us.ph, %._crit_edge80 ] %.047 = phi i32 [ 1, %3 ], [ %39, %._crit_edge80 ] %.not73 = icmp ne ptr %.058, null tail call void @llvm.assume(i1 %.not73) br label %.lr.ph.us -.lr.ph.us: ; preds = %.lr.ph79, %.loopexit.us - %.04677.us = phi i32 [ %4, %.loopexit.us ], [ 0, %.lr.ph79 ] - %.04876.us = phi ptr [ %.149.us, %.loopexit.us ], [ null, %.lr.ph79 ] - %.05575.us = phi ptr [ %.253.us, %.loopexit.us ], [ %.058, %.lr.ph79 ] - %.15974.us = phi ptr [ %.260.us.ph, %.loopexit.us ], [ null, %.lr.ph79 ] +.lr.ph.us: ; preds = %.lr.ph.us.preheader, %.loopexit.us + %.04677.us = phi i32 [ %4, %.loopexit.us ], [ 0, %.lr.ph.us.preheader ] + %.04876.us = phi ptr [ %.149.us, %.loopexit.us ], [ null, %.lr.ph.us.preheader ] + %.05575.us = phi ptr [ %.253.us, %.loopexit.us ], [ %.058, %.lr.ph.us.preheader ] + %.15974.us = phi ptr [ %.260.us.ph, %.loopexit.us ], [ null, %.lr.ph.us.preheader ] %4 = add nuw nsw i32 %.04677.us, 1 br label %6 @@ -927,8 +927,8 @@ define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly c ._crit_edge80: ; preds = %.loopexit.us store ptr null, ptr %.149.us, align 8, !tbaa !31 %38 = icmp eq i32 %.04677.us, 0 - %39 = shl nuw nsw i32 %.047, 1 - br i1 %38, label %40, label %.lr.ph79 + %39 = shl nsw i32 %.047, 1 + br i1 %38, label %40, label %.lr.ph.us.preheader 40: ; preds = %._crit_edge80 ret ptr %.260.us.ph @@ -1008,7 +1008,7 @@ core_list_insert_new.exit: ; preds = %3, %13 %.03764 = phi ptr [ %18, %core_list_insert_new.exit ], [ %35, %core_list_insert_new.exit42 ] %19 = load ptr, ptr %.03764, align 8, !tbaa !31 %.not65 = icmp eq ptr %19, null - br i1 %.not65, label %.lr.ph79.i.preheader, label %.lr.ph68 + br i1 %.not65, label %.lr.ph.us.preheader.i.preheader, label %.lr.ph68 .lr.ph68: ; preds = %.preheader %20 = udiv i32 %5, 5 @@ -1079,23 +1079,23 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 store i16 %.sink, ptr %50, align 2, !tbaa !25 %51 = load ptr, ptr %.037, align 8, !tbaa !31 %.not = icmp eq ptr %51, null - br i1 %.not, label %.lr.ph79.i.preheader, label %37, !llvm.loop !43 + br i1 %.not, label %.lr.ph.us.preheader.i.preheader, label %37, !llvm.loop !43 -.lr.ph79.i.preheader: ; preds = %47, %.preheader - br label %.lr.ph79.i +.lr.ph.us.preheader.i.preheader: ; preds = %47, %.preheader + br label %.lr.ph.us.preheader.i -.lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i - %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %1, %.lr.ph79.i.preheader ] - %.047.i = phi i32 [ %97, %._crit_edge80.i ], [ 1, %.lr.ph79.i.preheader ] +.lr.ph.us.preheader.i: ; preds = %.lr.ph.us.preheader.i.preheader, %._crit_edge80.i + %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %1, %.lr.ph.us.preheader.i.preheader ] + %.047.i = phi i32 [ %97, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i - %.04677.us.i = phi i32 [ %52, %.loopexit.us.i ], [ 0, %.lr.ph79.i ] - %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph79.i ] - %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph79.i ] - %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph79.i ] +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i + %.04677.us.i = phi i32 [ %52, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %52 = add nuw nsw i32 %.04677.us.i, 1 br label %54 @@ -1211,8 +1211,8 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 ._crit_edge80.i: ; preds = %.loopexit.us.i store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %96 = icmp eq i32 %.04677.us.i, 0 - %97 = shl nuw nsw i32 %.047.i, 1 - br i1 %96, label %core_list_mergesort.exit, label %.lr.ph79.i + %97 = shl nsw i32 %.047.i, 1 + br i1 %96, label %core_list_mergesort.exit, label %.lr.ph.us.preheader.i core_list_mergesort.exit: ; preds = %._crit_edge80.i ret ptr %.260.us.i.ph diff --git a/bench/cpython/optimized/longobject.ll b/bench/cpython/optimized/longobject.ll index 6b13724b943..5c999eceac5 100644 --- a/bench/cpython/optimized/longobject.ll +++ b/bench/cpython/optimized/longobject.ll @@ -2854,7 +2854,7 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly br label %.lr.ph139.split.us .lr.ph139.split.us: ; preds = %.lr.ph139.split.us.preheader, %._crit_edge.us - %.075137.us = phi i64 [ %45, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] + %.075137.us = phi i64 [ %44, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] %.076136.us = phi i64 [ %.177.lcssa.us, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] %.184135.us = phi ptr [ %.285.lcssa.us, %._crit_edge.us ], [ %.083, %.lr.ph139.split.us.preheader ] %.086134.us = phi i64 [ %.187.lcssa.us, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] @@ -2868,140 +2868,136 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %27 = and i32 %25, 1073741823 %28 = zext nneg i32 %27 to i64 %29 = zext nneg i32 %.093132.us to i64 - %30 = shl i64 %28, %29 + %30 = shl nuw nsw i64 %28, %29 %31 = or i64 %30, %.076136.us %32 = icmp eq i64 %.075137.us, %21 - br i1 %32, label %35, label %33 + br i1 %32, label %34, label %.loopexit111.us.thread -33: ; preds = %.lr.ph139.split.us - %34 = add i32 %.093132.us, 30 - br label %.loopexit111.us +.loopexit111.us.thread: ; preds = %.lr.ph139.split.us + %33 = add nuw nsw i32 %.093132.us, 30 + br label %.lr.ph127.us.preheader -35: ; preds = %.lr.ph139.split.us +34: ; preds = %.lr.ph139.split.us %.not104120.us = icmp eq i32 %27, 1073741823 br i1 %.not104120.us, label %.loopexit111.us, label %.lr.ph.us.preheader -.lr.ph.us.preheader: ; preds = %35 - %36 = xor i32 %27, 1073741823 +.lr.ph.us.preheader: ; preds = %34 + %35 = xor i32 %27, 1073741823 br label %.lr.ph.us .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.078122.us = phi i32 [ %37, %.lr.ph.us ], [ %36, %.lr.ph.us.preheader ] - %.194121.us = phi i32 [ %38, %.lr.ph.us ], [ %.093132.us, %.lr.ph.us.preheader ] - %37 = lshr i32 %.078122.us, 1 - %38 = add i32 %.194121.us, 1 - %.not104.us = icmp eq i32 %37, 0 + %.078122.us = phi i32 [ %36, %.lr.ph.us ], [ %35, %.lr.ph.us.preheader ] + %.194121.us = phi i32 [ %37, %.lr.ph.us ], [ %.093132.us, %.lr.ph.us.preheader ] + %36 = lshr i32 %.078122.us, 1 + %37 = add i32 %.194121.us, 1 + %.not104.us = icmp eq i32 %36, 0 br i1 %.not104.us, label %.loopexit111.us, label %.lr.ph.us, !llvm.loop !63 -.loopexit111.us: ; preds = %.lr.ph.us, %35, %33 - %.295.us = phi i32 [ %34, %33 ], [ %.093132.us, %35 ], [ %38, %.lr.ph.us ] - %39 = icmp ugt i32 %.295.us, 7 - br i1 %39, label %.lr.ph127.us.preheader, label %._crit_edge.us - -.lr.ph127.us.preheader: ; preds = %.loopexit111.us - %40 = add i32 %.295.us, -8 - %41 = lshr i32 %40, 3 - %42 = add nuw nsw i32 %41, 1 - %43 = trunc i64 %.086134.us to i32 - %44 = add i32 %42, %43 +.loopexit111.us: ; preds = %.lr.ph.us, %34 + %.295.us = phi i32 [ %.093132.us, %34 ], [ %37, %.lr.ph.us ] + %38 = icmp ugt i32 %.295.us, 7 + br i1 %38, label %.lr.ph127.us.preheader, label %._crit_edge.us + +.lr.ph127.us.preheader: ; preds = %.loopexit111.us.thread, %.loopexit111.us + %.295.us196 = phi i32 [ %33, %.loopexit111.us.thread ], [ %.295.us, %.loopexit111.us ] + %39 = add i32 %.295.us196, -8 + %40 = lshr i32 %39, 3 + %41 = add nuw nsw i32 %40, 1 + %42 = trunc i64 %.086134.us to i32 + %43 = add i32 %41, %42 br label %.lr.ph127.us -._crit_edge.us: ; preds = %46, %.loopexit111.us - %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %50, %46 ] - %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %47, %46 ] - %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %49, %46 ] - %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %51, %46 ] - %45 = add nuw nsw i64 %.075137.us, 1 - %exitcond167.not = icmp eq i64 %45, %8 +._crit_edge.us: ; preds = %45, %.loopexit111.us + %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %49, %45 ] + %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %46, %45 ] + %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %48, %45 ] + %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %50, %45 ] + %44 = add nuw nsw i64 %.075137.us, 1 + %exitcond167.not = icmp eq i64 %44, %8 br i1 %exitcond167.not, label %._crit_edge140, label %.lr.ph139.split.us, !llvm.loop !64 -.lr.ph127.us: ; preds = %.lr.ph127.us.preheader, %46 - %.177126.us = phi i64 [ %51, %46 ], [ %31, %.lr.ph127.us.preheader ] - %.285125.us = phi ptr [ %49, %46 ], [ %.184135.us, %.lr.ph127.us.preheader ] - %.187124.us = phi i64 [ %47, %46 ], [ %.086134.us, %.lr.ph127.us.preheader ] - %.396123.us = phi i32 [ %50, %46 ], [ %.295.us, %.lr.ph127.us.preheader ] +.lr.ph127.us: ; preds = %.lr.ph127.us.preheader, %45 + %.177126.us = phi i64 [ %50, %45 ], [ %31, %.lr.ph127.us.preheader ] + %.285125.us = phi ptr [ %48, %45 ], [ %.184135.us, %.lr.ph127.us.preheader ] + %.187124.us = phi i64 [ %46, %45 ], [ %.086134.us, %.lr.ph127.us.preheader ] + %.396123.us = phi i32 [ %49, %45 ], [ %.295.us196, %.lr.ph127.us.preheader ] %.not105.us = icmp ult i64 %.187124.us, %2 - br i1 %.not105.us, label %46, label %.loopexit110 - -46: ; preds = %.lr.ph127.us - %47 = add nuw i64 %.187124.us, 1 - %48 = trunc i64 %.177126.us to i8 - store i8 %48, ptr %.285125.us, align 1, !tbaa !29 - %49 = getelementptr i8, ptr %.285125.us, i64 %.082 - %50 = add i32 %.396123.us, -8 - %51 = lshr i64 %.177126.us, 8 - %lftr.wideiv165 = trunc i64 %47 to i32 - %exitcond166.not = icmp eq i32 %44, %lftr.wideiv165 + br i1 %.not105.us, label %45, label %.loopexit110 + +45: ; preds = %.lr.ph127.us + %46 = add nuw i64 %.187124.us, 1 + %47 = trunc i64 %.177126.us to i8 + store i8 %47, ptr %.285125.us, align 1, !tbaa !29 + %48 = getelementptr i8, ptr %.285125.us, i64 %.082 + %49 = add i32 %.396123.us, -8 + %50 = lshr i64 %.177126.us, 8 + %lftr.wideiv165 = trunc i64 %46 to i32 + %exitcond166.not = icmp eq i32 %43, %lftr.wideiv165 br i1 %exitcond166.not, label %._crit_edge.us, label %.lr.ph127.us, !llvm.loop !65 .lr.ph139.split: ; preds = %.lr.ph139.split.preheader, %._crit_edge - %.075137 = phi i64 [ %76, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] + %.075137 = phi i64 [ %73, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.076136 = phi i64 [ %.177.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.184135 = phi ptr [ %.285.lcssa, %._crit_edge ], [ %.083176, %.lr.ph139.split.preheader ] %.086134 = phi i64 [ %.187.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.093132 = phi i32 [ %.396.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] - %52 = getelementptr i32, ptr %18, i64 %.075137 - %53 = load i32, ptr %52, align 4, !tbaa !33 - %54 = zext i32 %53 to i64 - %55 = zext nneg i32 %.093132 to i64 - %56 = shl i64 %54, %55 - %57 = or i64 %56, %.076136 - %58 = icmp eq i64 %.075137, %19 - br i1 %58, label %59, label %62 - -59: ; preds = %.lr.ph139.split - %.not104120 = icmp eq i32 %53, 0 - br i1 %.not104120, label %.loopexit111, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %59 - %60 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %53, i1 true) - %reass.sub = sub i32 %.093132, %60 - %61 = add i32 %reass.sub, 32 - br label %.loopexit111 - -62: ; preds = %.lr.ph139.split - %63 = add i32 %.093132, 30 - br label %.loopexit111 - -.loopexit111: ; preds = %.lr.ph.preheader, %59, %62 - %.295 = phi i32 [ %63, %62 ], [ %.093132, %59 ], [ %61, %.lr.ph.preheader ] - %64 = icmp ugt i32 %.295, 7 - br i1 %64, label %.lr.ph127.preheader, label %._crit_edge - -.lr.ph127.preheader: ; preds = %.loopexit111 - %65 = add i32 %.295, -8 - %66 = lshr i32 %65, 3 - %67 = add nuw nsw i32 %66, 1 - %68 = trunc i64 %.086134 to i32 - %69 = add i32 %67, %68 + %51 = getelementptr i32, ptr %18, i64 %.075137 + %52 = load i32, ptr %51, align 4, !tbaa !33 + %53 = zext i32 %52 to i64 + %54 = zext nneg i32 %.093132 to i64 + %55 = shl nuw nsw i64 %53, %54 + %56 = or i64 %55, %.076136 + %57 = icmp eq i64 %.075137, %19 + br i1 %57, label %.loopexit111, label %.loopexit111.thread + +.loopexit111: ; preds = %.lr.ph139.split + %.not104120 = icmp eq i32 %52, 0 + %58 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %52, i1 true) + %reass.sub = sub i32 %.093132, %58 + %59 = add i32 %reass.sub, 32 + %.295 = select i1 %.not104120, i32 %.093132, i32 %59 + %60 = icmp ugt i32 %.295, 7 + br i1 %60, label %.lr.ph127.preheader, label %._crit_edge + +.loopexit111.thread: ; preds = %.lr.ph139.split + %61 = add nuw nsw i32 %.093132, 30 + br label %.lr.ph127.preheader + +.lr.ph127.preheader: ; preds = %.loopexit111.thread, %.loopexit111 + %.295198 = phi i32 [ %61, %.loopexit111.thread ], [ %.295, %.loopexit111 ] + %62 = add i32 %.295198, -8 + %63 = lshr i32 %62, 3 + %64 = add nuw nsw i32 %63, 1 + %65 = trunc i64 %.086134 to i32 + %66 = add i32 %64, %65 br label %.lr.ph127 -.lr.ph127: ; preds = %.lr.ph127.preheader, %70 - %.177126 = phi i64 [ %75, %70 ], [ %57, %.lr.ph127.preheader ] - %.285125 = phi ptr [ %73, %70 ], [ %.184135, %.lr.ph127.preheader ] - %.187124 = phi i64 [ %71, %70 ], [ %.086134, %.lr.ph127.preheader ] - %.396123 = phi i32 [ %74, %70 ], [ %.295, %.lr.ph127.preheader ] +.lr.ph127: ; preds = %.lr.ph127.preheader, %67 + %.177126 = phi i64 [ %72, %67 ], [ %56, %.lr.ph127.preheader ] + %.285125 = phi ptr [ %70, %67 ], [ %.184135, %.lr.ph127.preheader ] + %.187124 = phi i64 [ %68, %67 ], [ %.086134, %.lr.ph127.preheader ] + %.396123 = phi i32 [ %71, %67 ], [ %.295198, %.lr.ph127.preheader ] %.not105 = icmp ult i64 %.187124, %2 - br i1 %.not105, label %70, label %.loopexit110 - -70: ; preds = %.lr.ph127 - %71 = add nuw i64 %.187124, 1 - %72 = trunc i64 %.177126 to i8 - store i8 %72, ptr %.285125, align 1, !tbaa !29 - %73 = getelementptr i8, ptr %.285125, i64 %.082178 - %74 = add i32 %.396123, -8 - %75 = lshr i64 %.177126, 8 - %lftr.wideiv = trunc i64 %71 to i32 - %exitcond.not = icmp eq i32 %69, %lftr.wideiv + br i1 %.not105, label %67, label %.loopexit110 + +67: ; preds = %.lr.ph127 + %68 = add nuw i64 %.187124, 1 + %69 = trunc i64 %.177126 to i8 + store i8 %69, ptr %.285125, align 1, !tbaa !29 + %70 = getelementptr i8, ptr %.285125, i64 %.082178 + %71 = add i32 %.396123, -8 + %72 = lshr i64 %.177126, 8 + %lftr.wideiv = trunc i64 %68 to i32 + %exitcond.not = icmp eq i32 %66, %lftr.wideiv br i1 %exitcond.not, label %._crit_edge, label %.lr.ph127, !llvm.loop !65 -._crit_edge: ; preds = %70, %.loopexit111 - %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %74, %70 ] - %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %71, %70 ] - %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %73, %70 ] - %.177.lcssa = phi i64 [ %57, %.loopexit111 ], [ %75, %70 ] - %76 = add nuw nsw i64 %.075137, 1 - %exitcond164.not = icmp eq i64 %76, %8 +._crit_edge: ; preds = %67, %.loopexit111 + %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %71, %67 ] + %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %68, %67 ] + %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %70, %67 ] + %.177.lcssa = phi i64 [ %56, %.loopexit111 ], [ %72, %67 ] + %73 = add nuw nsw i64 %.075137, 1 + %exitcond164.not = icmp eq i64 %73, %8 br i1 %exitcond164.not, label %._crit_edge140, label %.lr.ph139.split, !llvm.loop !64 ._crit_edge140: ; preds = %._crit_edge, %._crit_edge.us @@ -3013,73 +3009,73 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %.184.lcssa = phi ptr [ %.285.lcssa.us, %._crit_edge.us ], [ %.285.lcssa, %._crit_edge ] %.076.lcssa = phi i64 [ %.177.lcssa.us, %._crit_edge.us ], [ %.177.lcssa, %._crit_edge ] %.not101 = icmp eq i32 %.093.lcssa, 0 - br i1 %.not101, label %._crit_edge140.thread, label %77 + br i1 %.not101, label %._crit_edge140.thread, label %74 -77: ; preds = %._crit_edge140 +74: ; preds = %._crit_edge140 %.not103 = icmp ult i64 %.086.lcssa, %2 - br i1 %.not103, label %78, label %.loopexit110 - -78: ; preds = %77 - %79 = add nuw i64 %.086.lcssa, 1 - %80 = zext nneg i32 %.093.lcssa to i64 - %81 = shl nsw i64 -1, %80 - %82 = select i1 %10, i64 %81, i64 0 - %.2 = or i64 %.076.lcssa, %82 - %83 = trunc i64 %.2 to i8 - store i8 %83, ptr %.184.lcssa, align 1, !tbaa !29 - %84 = getelementptr i8, ptr %.184.lcssa, i64 %.082186 - br label %92 + br i1 %.not103, label %75, label %.loopexit110 + +75: ; preds = %74 + %76 = add nuw i64 %.086.lcssa, 1 + %77 = zext nneg i32 %.093.lcssa to i64 + %78 = shl nsw i64 -1, %77 + %79 = select i1 %10, i64 %78, i64 0 + %.2 = or i64 %.076.lcssa, %79 + %80 = trunc i64 %.2 to i8 + store i8 %80, ptr %.184.lcssa, align 1, !tbaa !29 + %81 = getelementptr i8, ptr %.184.lcssa, i64 %.082186 + br label %89 ._crit_edge140.thread: ; preds = %.thread, %13, %._crit_edge140 - %.184.lcssa208 = phi ptr [ %.184.lcssa, %._crit_edge140 ], [ %.083176, %.thread ], [ %.083, %13 ] - %.086.lcssa207 = phi i64 [ %.086.lcssa, %._crit_edge140 ], [ 0, %.thread ], [ 0, %13 ] - %.092181206 = phi i32 [ %.092181, %._crit_edge140 ], [ 0, %.thread ], [ 1, %13 ] - %.082.neg184205 = phi i64 [ %.082.neg184, %._crit_edge140 ], [ %.082.neg177, %.thread ], [ %.082.neg, %13 ] - %.082186204 = phi i64 [ %.082186, %._crit_edge140 ], [ %.082178, %.thread ], [ %.082, %13 ] - %85 = icmp eq i64 %.086.lcssa207, %2 - %86 = icmp ne i64 %2, 0 - %or.cond = and i1 %86, %85 - %87 = icmp ne i32 %4, 0 - %or.cond3 = and i1 %87, %or.cond - br i1 %or.cond3, label %88, label %92 - -88: ; preds = %._crit_edge140.thread - %89 = getelementptr i8, ptr %.184.lcssa208, i64 %.082.neg184205 - %90 = load i8, ptr %89, align 1, !tbaa !29 - %.lobit = lshr i8 %90, 7 - %91 = zext nneg i8 %.lobit to i32 - %.not102 = icmp eq i32 %.092181206, %91 + %.184.lcssa212 = phi ptr [ %.184.lcssa, %._crit_edge140 ], [ %.083176, %.thread ], [ %.083, %13 ] + %.086.lcssa211 = phi i64 [ %.086.lcssa, %._crit_edge140 ], [ 0, %.thread ], [ 0, %13 ] + %.092181210 = phi i32 [ %.092181, %._crit_edge140 ], [ 0, %.thread ], [ 1, %13 ] + %.082.neg184209 = phi i64 [ %.082.neg184, %._crit_edge140 ], [ %.082.neg177, %.thread ], [ %.082.neg, %13 ] + %.082186208 = phi i64 [ %.082186, %._crit_edge140 ], [ %.082178, %.thread ], [ %.082, %13 ] + %82 = icmp eq i64 %.086.lcssa211, %2 + %83 = icmp ne i64 %2, 0 + %or.cond = and i1 %83, %82 + %84 = icmp ne i32 %4, 0 + %or.cond3 = and i1 %84, %or.cond + br i1 %or.cond3, label %85, label %89 + +85: ; preds = %._crit_edge140.thread + %86 = getelementptr i8, ptr %.184.lcssa212, i64 %.082.neg184209 + %87 = load i8, ptr %86, align 1, !tbaa !29 + %.lobit = lshr i8 %87, 7 + %88 = zext nneg i8 %.lobit to i32 + %.not102 = icmp eq i32 %.092181210, %88 br i1 %.not102, label %.loopexit, label %.loopexit110 -92: ; preds = %._crit_edge140.thread, %78 - %.082186203 = phi i64 [ %.082186, %78 ], [ %.082186204, %._crit_edge140.thread ] - %.288 = phi i64 [ %79, %78 ], [ %.086.lcssa207, %._crit_edge140.thread ] - %.3 = phi ptr [ %84, %78 ], [ %.184.lcssa208, %._crit_edge140.thread ] - %93 = sext i1 %10 to i8 - %94 = icmp ult i64 %.288, %2 - br i1 %94, label %.lr.ph151, label %.loopexit - -.lr.ph151: ; preds = %92, %.lr.ph151 - %.4149 = phi ptr [ %96, %.lr.ph151 ], [ %.3, %92 ] - %.389148 = phi i64 [ %95, %.lr.ph151 ], [ %.288, %92 ] - store i8 %93, ptr %.4149, align 1, !tbaa !29 - %95 = add nuw i64 %.389148, 1 - %96 = getelementptr i8, ptr %.4149, i64 %.082186203 - %exitcond168.not = icmp eq i64 %95, %2 +89: ; preds = %._crit_edge140.thread, %75 + %.082186207 = phi i64 [ %.082186, %75 ], [ %.082186208, %._crit_edge140.thread ] + %.288 = phi i64 [ %76, %75 ], [ %.086.lcssa211, %._crit_edge140.thread ] + %.3 = phi ptr [ %81, %75 ], [ %.184.lcssa212, %._crit_edge140.thread ] + %90 = sext i1 %10 to i8 + %91 = icmp ult i64 %.288, %2 + br i1 %91, label %.lr.ph151, label %.loopexit + +.lr.ph151: ; preds = %89, %.lr.ph151 + %.4149 = phi ptr [ %93, %.lr.ph151 ], [ %.3, %89 ] + %.389148 = phi i64 [ %92, %.lr.ph151 ], [ %.288, %89 ] + store i8 %90, ptr %.4149, align 1, !tbaa !29 + %92 = add nuw i64 %.389148, 1 + %93 = getelementptr i8, ptr %.4149, i64 %.082186207 + %exitcond168.not = icmp eq i64 %92, %2 br i1 %exitcond168.not, label %.loopexit, label %.lr.ph151, !llvm.loop !66 -.loopexit110: ; preds = %.lr.ph127, %.lr.ph127.us, %77, %88 +.loopexit110: ; preds = %.lr.ph127, %.lr.ph127.us, %74, %85 %.not106 = icmp eq i32 %5, 0 br i1 %.not106, label %.loopexit, label %.loopexit.sink.split .loopexit.sink.split: ; preds = %.loopexit110, %12 %.str.15.sink = phi ptr [ @.str.14, %12 ], [ @.str.15, %.loopexit110 ] - %97 = load ptr, ptr @PyExc_OverflowError, align 8, !tbaa !4 - tail call void @PyErr_SetString(ptr noundef %97, ptr noundef nonnull %.str.15.sink) #18 + %94 = load ptr, ptr @PyExc_OverflowError, align 8, !tbaa !4 + tail call void @PyErr_SetString(ptr noundef %94, ptr noundef nonnull %.str.15.sink) #18 br label %.loopexit -.loopexit: ; preds = %.lr.ph151, %.loopexit.sink.split, %92, %.loopexit110, %12, %88 - %.0 = phi i32 [ 0, %88 ], [ -1, %12 ], [ -1, %.loopexit110 ], [ 0, %92 ], [ -1, %.loopexit.sink.split ], [ 0, %.lr.ph151 ] +.loopexit: ; preds = %.lr.ph151, %.loopexit.sink.split, %89, %.loopexit110, %12, %85 + %.0 = phi i32 [ 0, %85 ], [ -1, %12 ], [ -1, %.loopexit110 ], [ 0, %89 ], [ -1, %.loopexit.sink.split ], [ 0, %.lr.ph151 ] ret i32 %.0 } diff --git a/bench/cpython/optimized/mpdecimal.ll b/bench/cpython/optimized/mpdecimal.ll index ed7936667fa..60d2524b01c 100644 --- a/bench/cpython/optimized/mpdecimal.ll +++ b/bench/cpython/optimized/mpdecimal.ll @@ -14118,9 +14118,9 @@ mpd_setspecial.exit: ; preds = %47, %50, %62 br label %72 72: ; preds = %67, %mpd_setspecial.exit - %.sink81 = phi i32 [ 28737, %67 ], [ 6208, %mpd_setspecial.exit ] + %.sink80 = phi i32 [ 28737, %67 ], [ 6208, %mpd_setspecial.exit ] %73 = load i32, ptr %3, align 4, !tbaa !23 - %74 = or i32 %73, %.sink81 + %74 = or i32 %73, %.sink80 store i32 %74, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit @@ -14381,7 +14381,7 @@ _mpd_get_exp_iterations.exit: ; preds = %151, %155, %162, %1 %218 = call double @llvm.ceil.f64(double %217) %219 = fptosi double %218 to i64 %220 = icmp eq i64 %219, 9223372036854775807 - br i1 %220, label %_mpd_get_exp_iterations.exit.thread, label %.lr.ph + br i1 %220, label %_mpd_get_exp_iterations.exit.thread, label %241 _mpd_get_exp_iterations.exit.thread: ; preds = %136, %_mpd_get_exp_iterations.exit %221 = load i8, ptr %0, align 8, !tbaa !19 @@ -14428,183 +14428,182 @@ mpd_seterror.exit: ; preds = %_mpd_get_exp_iterat store i32 %240, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit -.lr.ph: ; preds = %_mpd_get_exp_iterations.exit +241: ; preds = %_mpd_get_exp_iterations.exit + %242 = call i64 @llvm.smax.i64(i64 %219, i64 3) call fastcc void @_settriple(ptr noundef nonnull %14, i8 noundef zeroext 0, i64 noundef 1, i64 noundef 0) - %241 = call i64 @llvm.smax.i64(i64 %219, i64 3) - %242 = getelementptr inbounds nuw i8, ptr %10, i64 28 - br label %243 + %243 = getelementptr inbounds nuw i8, ptr %10, i64 28 + br label %244 -243: ; preds = %.lr.ph, %mpd_setdigits.exit - %.069.in = phi i64 [ %241, %.lr.ph ], [ %.069, %mpd_setdigits.exit ] +244: ; preds = %241, %mpd_setdigits.exit + %.069.in = phi i64 [ %242, %241 ], [ %.069, %mpd_setdigits.exit ] %.069 = add nsw i64 %.069.in, -1 store i64 %.069, ptr %15, align 8, !tbaa !3 - %244 = icmp ult i64 %.069, %143 - br i1 %244, label %245, label %273 + %245 = icmp ult i64 %.069, %143 + br i1 %245, label %246, label %274 -245: ; preds = %243 - %246 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 32), align 8, !tbaa !3 - %247 = icmp ult i64 %.069, %246 - br i1 %247, label %248, label %259 +246: ; preds = %244 + %247 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 32), align 8, !tbaa !3 + %248 = icmp ult i64 %.069, %247 + br i1 %248, label %249, label %260 -248: ; preds = %245 - %249 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 16), align 8, !tbaa !3 - %250 = icmp ult i64 %.069, %249 - br i1 %250, label %251, label %255 +249: ; preds = %246 + %250 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 16), align 8, !tbaa !3 + %251 = icmp ult i64 %.069, %250 + br i1 %251, label %252, label %256 -251: ; preds = %248 - %252 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 8), align 8, !tbaa !3 - %253 = icmp ult i64 %.069, %252 - %254 = select i1 %253, i64 1, i64 2 +252: ; preds = %249 + %253 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 8), align 8, !tbaa !3 + %254 = icmp ult i64 %.069, %253 + %255 = select i1 %254, i64 1, i64 2 br label %mpd_setdigits.exit -255: ; preds = %248 - %256 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 24), align 8, !tbaa !3 - %257 = icmp ult i64 %.069, %256 - %258 = select i1 %257, i64 3, i64 4 +256: ; preds = %249 + %257 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 24), align 8, !tbaa !3 + %258 = icmp ult i64 %.069, %257 + %259 = select i1 %258, i64 3, i64 4 br label %mpd_setdigits.exit -259: ; preds = %245 - %260 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 48), align 8, !tbaa !3 - %261 = icmp ult i64 %.069, %260 - br i1 %261, label %262, label %266 +260: ; preds = %246 + %261 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 48), align 8, !tbaa !3 + %262 = icmp ult i64 %.069, %261 + br i1 %262, label %263, label %267 -262: ; preds = %259 - %263 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 40), align 8, !tbaa !3 - %264 = icmp ult i64 %.069, %263 - %265 = select i1 %264, i64 5, i64 6 +263: ; preds = %260 + %264 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 40), align 8, !tbaa !3 + %265 = icmp ult i64 %.069, %264 + %266 = select i1 %265, i64 5, i64 6 br label %mpd_setdigits.exit -266: ; preds = %259 - %267 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 64), align 8, !tbaa !3 - %268 = icmp ult i64 %.069, %267 - br i1 %268, label %269, label %mpd_setdigits.exit - -269: ; preds = %266 - %270 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 56), align 8, !tbaa !3 - %271 = icmp ult i64 %.069, %270 - %272 = select i1 %271, i64 7, i64 8 +267: ; preds = %260 + %268 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 64), align 8, !tbaa !3 + %269 = icmp ult i64 %.069, %268 + br i1 %269, label %270, label %mpd_setdigits.exit + +270: ; preds = %267 + %271 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 56), align 8, !tbaa !3 + %272 = icmp ult i64 %.069, %271 + %273 = select i1 %272, i64 7, i64 8 br label %mpd_setdigits.exit -273: ; preds = %243 - %274 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 112), align 8, !tbaa !3 - %275 = icmp ult i64 %.069, %274 - br i1 %275, label %276, label %290 +274: ; preds = %244 + %275 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 112), align 8, !tbaa !3 + %276 = icmp ult i64 %.069, %275 + br i1 %276, label %277, label %291 -276: ; preds = %273 - %277 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 88), align 8, !tbaa !3 - %278 = icmp ult i64 %.069, %277 - br i1 %278, label %279, label %283 +277: ; preds = %274 + %278 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 88), align 8, !tbaa !3 + %279 = icmp ult i64 %.069, %278 + br i1 %279, label %280, label %284 -279: ; preds = %276 - %280 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 80), align 8, !tbaa !3 - %281 = icmp ult i64 %.069, %280 - %282 = select i1 %281, i64 10, i64 11 +280: ; preds = %277 + %281 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 80), align 8, !tbaa !3 + %282 = icmp ult i64 %.069, %281 + %283 = select i1 %282, i64 10, i64 11 br label %mpd_setdigits.exit -283: ; preds = %276 - %284 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 104), align 8, !tbaa !3 - %285 = icmp ult i64 %.069, %284 - br i1 %285, label %286, label %mpd_setdigits.exit +284: ; preds = %277 + %285 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 104), align 8, !tbaa !3 + %286 = icmp ult i64 %.069, %285 + br i1 %286, label %287, label %mpd_setdigits.exit -286: ; preds = %283 - %287 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 96), align 8, !tbaa !3 - %288 = icmp ult i64 %.069, %287 - %289 = select i1 %288, i64 12, i64 13 +287: ; preds = %284 + %288 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 96), align 8, !tbaa !3 + %289 = icmp ult i64 %.069, %288 + %290 = select i1 %289, i64 12, i64 13 br label %mpd_setdigits.exit -290: ; preds = %273 - %291 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 144), align 8, !tbaa !3 - %292 = icmp ult i64 %.069, %291 - br i1 %292, label %293, label %304 +291: ; preds = %274 + %292 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 144), align 8, !tbaa !3 + %293 = icmp ult i64 %.069, %292 + br i1 %293, label %294, label %305 -293: ; preds = %290 - %294 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 128), align 8, !tbaa !3 - %295 = icmp ult i64 %.069, %294 - br i1 %295, label %296, label %300 +294: ; preds = %291 + %295 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 128), align 8, !tbaa !3 + %296 = icmp ult i64 %.069, %295 + br i1 %296, label %297, label %301 -296: ; preds = %293 - %297 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 120), align 8, !tbaa !3 - %298 = icmp ult i64 %.069, %297 - %299 = select i1 %298, i64 15, i64 16 +297: ; preds = %294 + %298 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 120), align 8, !tbaa !3 + %299 = icmp ult i64 %.069, %298 + %300 = select i1 %299, i64 15, i64 16 br label %mpd_setdigits.exit -300: ; preds = %293 - %301 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 136), align 8, !tbaa !3 - %302 = icmp ult i64 %.069, %301 - %303 = select i1 %302, i64 17, i64 18 +301: ; preds = %294 + %302 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 136), align 8, !tbaa !3 + %303 = icmp ult i64 %.069, %302 + %304 = select i1 %303, i64 17, i64 18 br label %mpd_setdigits.exit -304: ; preds = %290 - %305 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 152), align 8, !tbaa !3 - %306 = icmp ult i64 %.069, %305 - %307 = select i1 %306, i64 19, i64 20 +305: ; preds = %291 + %306 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 152), align 8, !tbaa !3 + %307 = icmp ult i64 %.069, %306 + %308 = select i1 %307, i64 19, i64 20 br label %mpd_setdigits.exit -mpd_setdigits.exit: ; preds = %251, %255, %262, %266, %269, %279, %283, %286, %296, %300, %304 - %.0.i.i58 = phi i64 [ %254, %251 ], [ %258, %255 ], [ %265, %262 ], [ %272, %269 ], [ %282, %279 ], [ %289, %286 ], [ %299, %296 ], [ %303, %300 ], [ %307, %304 ], [ 9, %266 ], [ 14, %283 ] +mpd_setdigits.exit: ; preds = %252, %256, %263, %267, %270, %280, %284, %287, %297, %301, %305 + %.0.i.i58 = phi i64 [ %255, %252 ], [ %259, %256 ], [ %266, %263 ], [ %273, %270 ], [ %283, %280 ], [ %290, %287 ], [ %300, %297 ], [ %304, %301 ], [ %308, %305 ], [ 9, %267 ], [ 14, %284 ] store i64 %.0.i.i58, ptr %24, align 8, !tbaa !11 - call void @mpd_qdiv(ptr noundef nonnull %12, ptr noundef %0, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %242) - call void @mpd_qfma(ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @one, ptr noundef nonnull %10, ptr noundef nonnull %242) - %308 = icmp samesign ugt i64 %.069.in, 2 - br i1 %308, label %243, label %._crit_edge, !llvm.loop !55 - -._crit_edge: ; preds = %mpd_setdigits.exit - %309 = getelementptr i64, ptr @mpd_pow10, i64 %42 - %310 = load i64, ptr %309, align 8, !tbaa !3 - call fastcc void @_mpd_qpow_uint(ptr noundef %0, ptr noundef %14, i64 noundef %310, i8 noundef zeroext 0, ptr noundef %10, ptr noundef %3) - %311 = load i8, ptr %12, align 8, !tbaa !19 - %.not.i5.i42 = icmp ugt i8 %311, 31 - br i1 %.not.i5.i42, label %315, label %312 - -312: ; preds = %._crit_edge - %313 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - %314 = load ptr, ptr %19, align 8, !tbaa !17 - call void %313(ptr noundef %314) #34 + call void @mpd_qdiv(ptr noundef nonnull %12, ptr noundef %0, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %243) + call void @mpd_qfma(ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @one, ptr noundef nonnull %10, ptr noundef nonnull %243) + %309 = icmp samesign ugt i64 %.069.in, 2 + br i1 %309, label %244, label %310, !llvm.loop !55 + +310: ; preds = %mpd_setdigits.exit + %311 = getelementptr i64, ptr @mpd_pow10, i64 %42 + %312 = load i64, ptr %311, align 8, !tbaa !3 + call fastcc void @_mpd_qpow_uint(ptr noundef %0, ptr noundef %14, i64 noundef %312, i8 noundef zeroext 0, ptr noundef %10, ptr noundef %3) + %313 = load i8, ptr %12, align 8, !tbaa !19 + %.not.i5.i42 = icmp ugt i8 %313, 31 + br i1 %.not.i5.i42, label %317, label %314 + +314: ; preds = %310 + %315 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + %316 = load ptr, ptr %19, align 8, !tbaa !17 + call void %315(ptr noundef %316) #34 %.pre = load i8, ptr %12, align 8, !tbaa !19 - br label %315 + br label %317 -315: ; preds = %312, %._crit_edge - %316 = phi i8 [ %.pre, %312 ], [ %311, %._crit_edge ] - %317 = and i8 %316, 16 - %.not.i.i44.not = icmp eq i8 %317, 0 - br i1 %.not.i.i44.not, label %318, label %mpd_del.exit46 +317: ; preds = %314, %310 + %318 = phi i8 [ %.pre, %314 ], [ %313, %310 ] + %319 = and i8 %318, 16 + %.not.i.i44.not = icmp eq i8 %319, 0 + br i1 %.not.i.i44.not, label %320, label %mpd_del.exit46 -318: ; preds = %315 - %319 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - call void %319(ptr noundef nonnull %12) #34 +320: ; preds = %317 + %321 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + call void %321(ptr noundef nonnull %12) #34 br label %mpd_del.exit46 -mpd_del.exit46: ; preds = %315, %318 - %320 = load i8, ptr %14, align 8, !tbaa !19 - %.not.i5.i = icmp ugt i8 %320, 31 - br i1 %.not.i5.i, label %324, label %321 +mpd_del.exit46: ; preds = %317, %320 + %322 = load i8, ptr %14, align 8, !tbaa !19 + %.not.i5.i = icmp ugt i8 %322, 31 + br i1 %.not.i5.i, label %326, label %323 -321: ; preds = %mpd_del.exit46 - %322 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - %323 = load ptr, ptr %22, align 8, !tbaa !17 - call void %322(ptr noundef %323) #34 +323: ; preds = %mpd_del.exit46 + %324 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + %325 = load ptr, ptr %22, align 8, !tbaa !17 + call void %324(ptr noundef %325) #34 %.pre70 = load i8, ptr %14, align 8, !tbaa !19 - br label %324 + br label %326 -324: ; preds = %321, %mpd_del.exit46 - %325 = phi i8 [ %.pre70, %321 ], [ %320, %mpd_del.exit46 ] - %326 = and i8 %325, 16 - %.not.i.i.not = icmp eq i8 %326, 0 - br i1 %.not.i.i.not, label %327, label %mpd_del.exit +326: ; preds = %323, %mpd_del.exit46 + %327 = phi i8 [ %.pre70, %323 ], [ %322, %mpd_del.exit46 ] + %328 = and i8 %327, 16 + %.not.i.i.not = icmp eq i8 %328, 0 + br i1 %.not.i.i.not, label %329, label %mpd_del.exit -327: ; preds = %324 - %328 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - call void %328(ptr noundef nonnull %14) #34 +329: ; preds = %326 + %330 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + call void %330(ptr noundef nonnull %14) #34 br label %mpd_del.exit -mpd_del.exit: ; preds = %324, %327 - %329 = getelementptr inbounds nuw i8, ptr %10, i64 28 - %330 = load i32, ptr %329, align 4, !tbaa !56 - %331 = and i32 %330, 958 - %332 = load i32, ptr %3, align 4, !tbaa !23 - %333 = or i32 %331, %332 - %334 = or i32 %333, 4160 - store i32 %334, ptr %3, align 4, !tbaa !23 +mpd_del.exit: ; preds = %326, %329 + %331 = load i32, ptr %243, align 4, !tbaa !56 + %332 = and i32 %331, 958 + %333 = load i32, ptr %3, align 4, !tbaa !23 + %334 = or i32 %332, %333 + %335 = or i32 %334, 4160 + store i32 %335, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit mpd_qcopy.exit: ; preds = %mpd_qresize.exit.i, %_mpd_qexp_check_one.exit, %mpd_del.exit, %mpd_seterror.exit, %72, %35 diff --git a/bench/cpython/optimized/unicodeobject.ll b/bench/cpython/optimized/unicodeobject.ll index da4ce3a311e..4a79544c4a3 100644 --- a/bench/cpython/optimized/unicodeobject.ll +++ b/bench/cpython/optimized/unicodeobject.ll @@ -47930,7 +47930,7 @@ define hidden void @_PyUnicode_ClearInterned(ptr noundef captures(address) %0) l %5 = getelementptr i8, ptr %0, i64 224392 %.val = load ptr, ptr %5, align 8, !tbaa !21 %6 = icmp eq ptr %.val, null - br i1 %6, label %61, label %7 + br i1 %6, label %60, label %7 7: ; preds = %1 %8 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 @@ -47961,7 +47961,7 @@ has_shared_intern_dict.exit: ; preds = %7 clear_interned_dict.exit: ; preds = %12, %13, %16 store ptr null, ptr %5, align 8, !tbaa !21 - br label %61 + br label %60 has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_intern_dict.exit call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -47972,11 +47972,11 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte %.not39 = icmp eq i32 %17, 0 br i1 %.not39, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %has_shared_intern_dict.exit.thread, %28 +.lr.ph: ; preds = %has_shared_intern_dict.exit.thread, %27 %18 = load ptr, ptr %3, align 8, !tbaa !183 %19 = getelementptr i8, ptr %18, i64 32 %.val20 = load i16, ptr %19, align 8, !tbaa !184 - switch i16 %.val20, label %25 [ + switch i16 %.val20, label %24 [ i16 2, label %.critedge.sink.split i16 3, label %20 i16 1, label %22 @@ -47985,7 +47985,7 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte 20: ; preds = %.lr.ph %21 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 %.not37 = icmp eq ptr %0, %21 - br i1 %.not37, label %.critedge, label %28 + br i1 %.not37, label %.critedge, label %27 22: ; preds = %.lr.ph %.val21 = load i32, ptr %18, align 8, !tbaa !195 @@ -47993,127 +47993,127 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte br i1 %.not.i24, label %23, label %.critedge 23: ; preds = %22 - %24 = add nuw i32 %.val21, 2 + %narrow = add nuw i32 %.val21, 2 br label %.critedge.sink.split -25: ; preds = %.lr.ph +24: ; preds = %.lr.ph unreachable .critedge.sink.split: ; preds = %.lr.ph, %23 - %.sink = phi i32 [ %24, %23 ], [ 2, %.lr.ph ] - store i32 %.sink, ptr %18, align 8, !tbaa !195 + %narrow.sink = phi i32 [ %narrow, %23 ], [ 2, %.lr.ph ] + store i32 %narrow.sink, ptr %18, align 8, !tbaa !195 br label %.critedge .critedge: ; preds = %.critedge.sink.split, %22, %20 - %26 = load ptr, ptr %3, align 8, !tbaa !183 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 32 - store i16 0, ptr %27, align 8, !tbaa !184 - br label %28 + %25 = load ptr, ptr %3, align 8, !tbaa !183 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 32 + store i16 0, ptr %26, align 8, !tbaa !184 + br label %27 -28: ; preds = %.critedge, %20 - %29 = call i32 @PyDict_Next(ptr noundef nonnull %.val, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4) #42 - %.not = icmp eq i32 %29, 0 +27: ; preds = %.critedge, %20 + %28 = call i32 @PyDict_Next(ptr noundef nonnull %.val, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4) #42 + %.not = icmp eq i32 %28, 0 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !522 -._crit_edge: ; preds = %28, %has_shared_intern_dict.exit.thread - %30 = getelementptr inbounds nuw i8, ptr %0, i64 11640 - %31 = load i64, ptr %30, align 8, !tbaa !235 - %32 = icmp sgt i64 %31, 0 - br i1 %32, label %.lr.ph42, label %._crit_edge43 +._crit_edge: ; preds = %27, %has_shared_intern_dict.exit.thread + %29 = getelementptr inbounds nuw i8, ptr %0, i64 11640 + %30 = load i64, ptr %29, align 8, !tbaa !235 + %31 = icmp sgt i64 %30, 0 + br i1 %31, label %.lr.ph42, label %._crit_edge43 .lr.ph42: ; preds = %._crit_edge - %33 = getelementptr inbounds nuw i8, ptr %0, i64 11648 - br label %45 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 11648 + br label %44 ._crit_edge43: ; preds = %Py_XINCREF.exit, %._crit_edge %.val.i25 = load ptr, ptr %5, align 8, !tbaa !21 %.not.i26 = icmp eq ptr %.val.i25, null %.pre46 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 - br i1 %.not.i26, label %clear_interned_dict.exit33, label %34 + br i1 %.not.i26, label %clear_interned_dict.exit33, label %33 -34: ; preds = %._crit_edge43 +33: ; preds = %._crit_edge43 %.not.i6.i27 = icmp eq ptr %0, %.pre46 br i1 %.not.i6.i27, label %has_shared_intern_dict.exit.thread.i32, label %has_shared_intern_dict.exit.i28 -has_shared_intern_dict.exit.i28: ; preds = %34 - %35 = getelementptr inbounds nuw i8, ptr %0, i64 8440 - %36 = load i64, ptr %35, align 8, !tbaa !521 - %37 = and i64 %36, 32 - %.not7.i29 = icmp eq i64 %37, 0 - br i1 %.not7.i29, label %has_shared_intern_dict.exit.thread.i32, label %38 +has_shared_intern_dict.exit.i28: ; preds = %33 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 8440 + %35 = load i64, ptr %34, align 8, !tbaa !521 + %36 = and i64 %35, 32 + %.not7.i29 = icmp eq i64 %36, 0 + br i1 %.not7.i29, label %has_shared_intern_dict.exit.thread.i32, label %37 -has_shared_intern_dict.exit.thread.i32: ; preds = %has_shared_intern_dict.exit.i28, %34 +has_shared_intern_dict.exit.thread.i32: ; preds = %has_shared_intern_dict.exit.i28, %33 call void @PyDict_Clear(ptr noundef nonnull %.val.i25) #42 - br label %38 + br label %37 -38: ; preds = %has_shared_intern_dict.exit.thread.i32, %has_shared_intern_dict.exit.i28 - %39 = load i32, ptr %.val.i25, align 8, !tbaa !195 - %.not.i.i30 = icmp sgt i32 %39, -1 - br i1 %.not.i.i30, label %40, label %Py_DECREF.exit.i31 +37: ; preds = %has_shared_intern_dict.exit.thread.i32, %has_shared_intern_dict.exit.i28 + %38 = load i32, ptr %.val.i25, align 8, !tbaa !195 + %.not.i.i30 = icmp sgt i32 %38, -1 + br i1 %.not.i.i30, label %39, label %Py_DECREF.exit.i31 -40: ; preds = %38 - %41 = add nsw i32 %39, -1 - store i32 %41, ptr %.val.i25, align 8, !tbaa !195 - %42 = icmp eq i32 %41, 0 - br i1 %42, label %43, label %Py_DECREF.exit.i31 +39: ; preds = %37 + %40 = add nsw i32 %38, -1 + store i32 %40, ptr %.val.i25, align 8, !tbaa !195 + %41 = icmp eq i32 %40, 0 + br i1 %41, label %42, label %Py_DECREF.exit.i31 -43: ; preds = %40 +42: ; preds = %39 call void @_Py_Dealloc(ptr noundef nonnull %.val.i25) #42 br label %Py_DECREF.exit.i31 -Py_DECREF.exit.i31: ; preds = %43, %40, %38 +Py_DECREF.exit.i31: ; preds = %42, %39, %37 store ptr null, ptr %5, align 8, !tbaa !21 %.pre45 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 br label %clear_interned_dict.exit33 clear_interned_dict.exit33: ; preds = %._crit_edge43, %Py_DECREF.exit.i31 - %44 = phi ptr [ %.pre46, %._crit_edge43 ], [ %.pre45, %Py_DECREF.exit.i31 ] - %.not38 = icmp eq ptr %0, %44 - br i1 %.not38, label %58, label %clear_global_interned_strings.exit - -45: ; preds = %.lr.ph42, %Py_XINCREF.exit - %46 = phi i64 [ %31, %.lr.ph42 ], [ %55, %Py_XINCREF.exit ] - %.040 = phi i64 [ 0, %.lr.ph42 ], [ %56, %Py_XINCREF.exit ] - %47 = load ptr, ptr %33, align 8, !tbaa !236 - %48 = getelementptr ptr, ptr %47, i64 %.040 - %49 = load ptr, ptr %48, align 8, !tbaa !183 - %.not.i34 = icmp eq ptr %49, null - br i1 %.not.i34, label %Py_XINCREF.exit, label %50 - -50: ; preds = %45 - %51 = load i32, ptr %49, align 8, !tbaa !195 - %52 = icmp slt i32 %51, 0 - br i1 %52, label %Py_XINCREF.exit, label %53 + %43 = phi ptr [ %.pre46, %._crit_edge43 ], [ %.pre45, %Py_DECREF.exit.i31 ] + %.not38 = icmp eq ptr %0, %43 + br i1 %.not38, label %57, label %clear_global_interned_strings.exit + +44: ; preds = %.lr.ph42, %Py_XINCREF.exit + %45 = phi i64 [ %30, %.lr.ph42 ], [ %54, %Py_XINCREF.exit ] + %.040 = phi i64 [ 0, %.lr.ph42 ], [ %55, %Py_XINCREF.exit ] + %46 = load ptr, ptr %32, align 8, !tbaa !236 + %47 = getelementptr ptr, ptr %46, i64 %.040 + %48 = load ptr, ptr %47, align 8, !tbaa !183 + %.not.i34 = icmp eq ptr %48, null + br i1 %.not.i34, label %Py_XINCREF.exit, label %49 + +49: ; preds = %44 + %50 = load i32, ptr %48, align 8, !tbaa !195 + %51 = icmp slt i32 %50, 0 + br i1 %51, label %Py_XINCREF.exit, label %52 -53: ; preds = %50 - %54 = add nuw i32 %51, 1 - store i32 %54, ptr %49, align 8, !tbaa !195 - %.pre44 = load i64, ptr %30, align 8, !tbaa !235 +52: ; preds = %49 + %53 = add nuw i32 %50, 1 + store i32 %53, ptr %48, align 8, !tbaa !195 + %.pre44 = load i64, ptr %29, align 8, !tbaa !235 br label %Py_XINCREF.exit -Py_XINCREF.exit: ; preds = %45, %50, %53 - %55 = phi i64 [ %46, %45 ], [ %46, %50 ], [ %.pre44, %53 ] - %56 = add nuw nsw i64 %.040, 1 - %57 = icmp slt i64 %56, %55 - br i1 %57, label %45, label %._crit_edge43, !llvm.loop !523 +Py_XINCREF.exit: ; preds = %44, %49, %52 + %54 = phi i64 [ %45, %44 ], [ %45, %49 ], [ %.pre44, %52 ] + %55 = add nuw nsw i64 %.040, 1 + %56 = icmp slt i64 %55, %54 + br i1 %56, label %44, label %._crit_edge43, !llvm.loop !523 -58: ; preds = %clear_interned_dict.exit33 - %59 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 - %.not.i35 = icmp eq ptr %59, null - br i1 %.not.i35, label %clear_global_interned_strings.exit, label %60 +57: ; preds = %clear_interned_dict.exit33 + %58 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 + %.not.i35 = icmp eq ptr %58, null + br i1 %.not.i35, label %clear_global_interned_strings.exit, label %59 -60: ; preds = %58 - call void @_Py_hashtable_destroy(ptr noundef nonnull %59) #42 +59: ; preds = %57 + call void @_Py_hashtable_destroy(ptr noundef nonnull %58) #42 store ptr null, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 br label %clear_global_interned_strings.exit -clear_global_interned_strings.exit: ; preds = %60, %58, %clear_interned_dict.exit33 +clear_global_interned_strings.exit: ; preds = %59, %57, %clear_interned_dict.exit33 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %61 + br label %60 -61: ; preds = %1, %clear_global_interned_strings.exit, %clear_interned_dict.exit +60: ; preds = %1, %clear_global_interned_strings.exit, %clear_interned_dict.exit ret void } diff --git a/bench/cxxopts/optimized/example.ll b/bench/cxxopts/optimized/example.ll index 94312f1c870..fe224cf5a3e 100644 --- a/bench/cxxopts/optimized/example.ll +++ b/bench/cxxopts/optimized/example.ll @@ -75201,185 +75201,186 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt %16 = select i1 %.not.not, i32 10, i32 16 br i1 %.not.not, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %27 - %.07279.us = phi i32 [ %28, %27 ], [ 0, %.lr.ph ] - %.sroa.064.078.us = phi ptr [ %29, %27 ], [ %10, %.lr.ph ] +.lr.ph.split.us: ; preds = %.lr.ph, %28 + %.07279.us = phi i32 [ %29, %28 ], [ 0, %.lr.ph ] + %.sroa.064.078.us = phi ptr [ %30, %28 ], [ %10, %.lr.ph ] %17 = load i8, ptr %.sroa.064.078.us, align 1, !tbaa !14 %18 = add i8 %17, -48 %or.cond.us = icmp ult i8 %18, 10 br i1 %or.cond.us, label %19, label %.split.us 19: ; preds = %.lr.ph.split.us - %20 = zext nneg i8 %18 to i32 - %21 = udiv i32 %spec.select, %16 - %22 = icmp ugt i32 %.07279.us, %21 - br i1 %22, label %.split81.us, label %23 + %20 = zext nneg i8 %17 to i32 + %21 = add nsw i32 %20, -48 + %22 = udiv i32 %spec.select, %16 + %23 = icmp ugt i32 %.07279.us, %22 + br i1 %23, label %.split81.us, label %24 + +24: ; preds = %19 + %25 = mul nuw i32 %.07279.us, %16 + %26 = sub nuw i32 %spec.select, %21 + %27 = icmp ugt i32 %25, %26 + br i1 %27, label %.split83.us, label %28 -23: ; preds = %19 - %24 = mul nuw i32 %.07279.us, %16 - %25 = sub nuw i32 %spec.select, %20 - %26 = icmp ugt i32 %24, %25 - br i1 %26, label %.split83.us, label %27 - -27: ; preds = %23 - %28 = add nuw i32 %24, %20 - %29 = getelementptr inbounds nuw i8, ptr %.sroa.064.078.us, i64 1 - %.not73.us = icmp eq ptr %29, %13 +28: ; preds = %24 + %29 = add nuw i32 %21, %25 + %30 = getelementptr inbounds nuw i8, ptr %.sroa.064.078.us, i64 1 + %.not73.us = icmp eq ptr %30, %13 br i1 %.not73.us, label %._crit_edge, label %.lr.ph.split.us -._crit_edge: ; preds = %62, %27, %2 - %.072.lcssa = phi i32 [ 0, %2 ], [ %28, %27 ], [ %63, %62 ] +._crit_edge: ; preds = %63, %28, %2 + %.072.lcssa = phi i32 [ 0, %2 ], [ %29, %28 ], [ %64, %63 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) invoke void @_ZN7cxxopts6values6detail11SignedCheckIiLb1EEclIjEEvbT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 1 dereferenceable(1) %3, i1 noundef zeroext %7, i32 noundef %.072.lcssa, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %65 unwind label %70 - -.lr.ph.split: ; preds = %.lr.ph, %62 - %.07279 = phi i32 [ %63, %62 ], [ 0, %.lr.ph ] - %.sroa.064.078 = phi ptr [ %64, %62 ], [ %10, %.lr.ph ] - %30 = load i8, ptr %.sroa.064.078, align 1, !tbaa !14 - %31 = sext i8 %30 to i32 - %32 = add i8 %30, -48 - %or.cond = icmp ult i8 %32, 10 - br i1 %or.cond, label %45, label %33 - -33: ; preds = %.lr.ph.split - %34 = add i8 %30, -97 - %35 = icmp ult i8 %34, 6 - br i1 %35, label %45, label %36 - -36: ; preds = %33 - %37 = add i8 %30, -65 - %38 = icmp ult i8 %37, 6 - br i1 %38, label %45, label %.split.us - -.split.us: ; preds = %36, %.lr.ph.split.us - %39 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %40 unwind label %41 - -40: ; preds = %.split.us - invoke void @__cxa_throw(ptr nonnull %39, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 - to label %.noexc unwind label %43 + to label %66 unwind label %71 + +.lr.ph.split: ; preds = %.lr.ph, %63 + %.07279 = phi i32 [ %64, %63 ], [ 0, %.lr.ph ] + %.sroa.064.078 = phi ptr [ %65, %63 ], [ %10, %.lr.ph ] + %31 = load i8, ptr %.sroa.064.078, align 1, !tbaa !14 + %32 = sext i8 %31 to i32 + %33 = add i8 %31, -48 + %or.cond = icmp ult i8 %33, 10 + br i1 %or.cond, label %46, label %34 + +34: ; preds = %.lr.ph.split + %35 = add i8 %31, -97 + %36 = icmp ult i8 %35, 6 + br i1 %36, label %46, label %37 -.noexc: ; preds = %40 - unreachable +37: ; preds = %34 + %38 = add i8 %31, -65 + %39 = icmp ult i8 %38, 6 + br i1 %39, label %46, label %.split.us + +.split.us: ; preds = %37, %.lr.ph.split.us + %40 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %40, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %41 unwind label %42 41: ; preds = %.split.us - %42 = landingpad { ptr, i32 } + invoke void @__cxa_throw(ptr nonnull %40, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 + to label %.noexc unwind label %44 + +.noexc: ; preds = %41 + unreachable + +42: ; preds = %.split.us + %43 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %39) #32 + call void @__cxa_free_exception(ptr nonnull %40) #32 br label %.body -43: ; preds = %40 - %44 = landingpad { ptr, i32 } +44: ; preds = %41 + %45 = landingpad { ptr, i32 } cleanup br label %.body -45: ; preds = %36, %33, %.lr.ph.split - %.sink = phi i32 [ -48, %.lr.ph.split ], [ -87, %33 ], [ -55, %36 ] - %46 = add nsw i32 %.sink, %31 - %47 = udiv i32 %spec.select, %16 - %48 = icmp ugt i32 %.07279, %47 - br i1 %48, label %.split81.us, label %54 +46: ; preds = %37, %34, %.lr.ph.split + %.sink = phi i32 [ -48, %.lr.ph.split ], [ -87, %34 ], [ -55, %37 ] + %47 = add nsw i32 %.sink, %32 + %48 = udiv i32 %spec.select, %16 + %49 = icmp ugt i32 %.07279, %48 + br i1 %49, label %.split81.us, label %55 -49: ; preds = %.invoke - %50 = landingpad { ptr, i32 } +50: ; preds = %.invoke + %51 = landingpad { ptr, i32 } cleanup br label %.body -.split81.us: ; preds = %45, %19 - %51 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %51, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %.invoke unwind label %52 +.split81.us: ; preds = %46, %19 + %52 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %52, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %.invoke unwind label %53 -52: ; preds = %.split81.us - %53 = landingpad { ptr, i32 } +53: ; preds = %.split81.us + %54 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %51) #32 + call void @__cxa_free_exception(ptr nonnull %52) #32 br label %.body -54: ; preds = %45 - %55 = mul nuw i32 %.07279, %16 - %56 = sub nuw i32 %spec.select, %46 - %57 = icmp ugt i32 %55, %56 - br i1 %57, label %.split83.us, label %62 +55: ; preds = %46 + %56 = mul nuw i32 %.07279, %16 + %57 = sub nuw i32 %spec.select, %47 + %58 = icmp ugt i32 %56, %57 + br i1 %58, label %.split83.us, label %63 -.split83.us: ; preds = %54, %23 - %58 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %58, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %.invoke unwind label %60 +.split83.us: ; preds = %55, %24 + %59 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %59, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %.invoke unwind label %61 .invoke: ; preds = %.split83.us, %.split81.us - %59 = phi ptr [ %51, %.split81.us ], [ %58, %.split83.us ] - invoke void @__cxa_throw(ptr nonnull %59, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 - to label %.cont unwind label %49 + %60 = phi ptr [ %52, %.split81.us ], [ %59, %.split83.us ] + invoke void @__cxa_throw(ptr nonnull %60, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 + to label %.cont unwind label %50 .cont: ; preds = %.invoke unreachable -60: ; preds = %.split83.us - %61 = landingpad { ptr, i32 } +61: ; preds = %.split83.us + %62 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %58) #32 + call void @__cxa_free_exception(ptr nonnull %59) #32 br label %.body -62: ; preds = %54 - %63 = add nuw i32 %46, %55 - %64 = getelementptr inbounds nuw i8, ptr %.sroa.064.078, i64 1 - %.not73 = icmp eq ptr %64, %13 +63: ; preds = %55 + %64 = add nuw i32 %47, %56 + %65 = getelementptr inbounds nuw i8, ptr %.sroa.064.078, i64 1 + %.not73 = icmp eq ptr %65, %13 br i1 %.not73, label %._crit_edge, label %.lr.ph.split -65: ; preds = %._crit_edge +66: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %3) - %66 = sub i32 0, %.072.lcssa - %storemerge = select i1 %7, i32 %66, i32 %.072.lcssa + %67 = sub i32 0, %.072.lcssa + %storemerge = select i1 %7, i32 %67, i32 %.072.lcssa store i32 %storemerge, ptr %1, align 4, !tbaa !198 - %67 = load ptr, ptr %9, align 8, !tbaa !12 - %68 = getelementptr inbounds nuw i8, ptr %4, i64 80 - %69 = icmp eq ptr %67, %68 - br i1 %69, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %68 = load ptr, ptr %9, align 8, !tbaa !12 + %69 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %70 = icmp eq ptr %68, %69 + br i1 %70, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i -70: ; preds = %._crit_edge - %71 = landingpad { ptr, i32 } +71: ; preds = %._crit_edge + %72 = landingpad { ptr, i32 } cleanup br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %65 - %72 = load i64, ptr %68, align 8, !tbaa !14 - %73 = add i64 %72, 1 - call void @_ZdlPvm(ptr noundef %67, i64 noundef %73) #34 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %66 + %73 = load i64, ptr %69, align 8, !tbaa !14 + %74 = add i64 %73, 1 + call void @_ZdlPvm(ptr noundef %68, i64 noundef %74) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - %74 = load ptr, ptr %8, align 8, !tbaa !12 - %75 = getelementptr inbounds nuw i8, ptr %4, i64 48 - %76 = icmp eq ptr %74, %75 - br i1 %76, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %66, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %75 = load ptr, ptr %8, align 8, !tbaa !12 + %76 = getelementptr inbounds nuw i8, ptr %4, i64 48 + %77 = icmp eq ptr %75, %76 + br i1 %77, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - %77 = load i64, ptr %75, align 8, !tbaa !14 - %78 = add i64 %77, 1 - call void @_ZdlPvm(ptr noundef %74, i64 noundef %78) #34 + %78 = load i64, ptr %76, align 8, !tbaa !14 + %79 = add i64 %78, 1 + call void @_ZdlPvm(ptr noundef %75, i64 noundef %79) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i - %79 = load ptr, ptr %4, align 8, !tbaa !12 - %80 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %81 = icmp eq ptr %79, %80 - br i1 %81, label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i + %80 = load ptr, ptr %4, align 8, !tbaa !12 + %81 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %82 = icmp eq ptr %80, %81 + br i1 %82, label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i - %82 = load i64, ptr %80, align 8, !tbaa !14 - %83 = add i64 %82, 1 - call void @_ZdlPvm(ptr noundef %79, i64 noundef %83) #34 + %83 = load i64, ptr %81, align 8, !tbaa !14 + %84 = add i64 %83, 1 + call void @_ZdlPvm(ptr noundef %80, i64 noundef %84) #34 br label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit _ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -.body: ; preds = %41, %43, %49, %60, %52, %70 - %.pn.pn = phi { ptr, i32 } [ %71, %70 ], [ %44, %43 ], [ %42, %41 ], [ %53, %52 ], [ %50, %49 ], [ %61, %60 ] +.body: ; preds = %42, %44, %50, %61, %53, %71 + %.pn.pn = phi { ptr, i32 } [ %72, %71 ], [ %45, %44 ], [ %43, %42 ], [ %54, %53 ], [ %51, %50 ], [ %62, %61 ] call void @_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #32 call void @llvm.lifetime.end.p0(ptr nonnull %4) resume { ptr, i32 } %.pn.pn diff --git a/bench/duckdb/optimized/encode.ll b/bench/duckdb/optimized/encode.ll index 88532493f25..da7193ad6aa 100644 --- a/bench/duckdb/optimized/encode.ll +++ b/bench/duckdb/optimized/encode.ll @@ -2633,7 +2633,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 310: ; preds = %308 %311 = load i32, ptr %300, align 8, !tbaa !150 - switch i32 %311, label %.thread532 [ + switch i32 %311, label %.thread530 [ i32 2, label %312 i32 3, label %316 i32 4, label %320 @@ -2656,7 +2656,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %314 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !151 %315 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %314, ptr %315, align 8, !tbaa !156, !alias.scope !151 - br label %.thread532 + br label %.thread530 316: ; preds = %310 %317 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2665,7 +2665,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %318 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !157 %319 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %318, ptr %319, align 8, !tbaa !162, !alias.scope !157 - br label %.thread532 + br label %.thread530 320: ; preds = %310 %321 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2674,17 +2674,17 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %322 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !163 %323 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %322, ptr %323, align 8, !tbaa !168, !alias.scope !163 - br label %.thread532 + br label %.thread530 324: ; preds = %310 %325 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @_ZN13duckdb_brotliL12InitializeH5EPNS_12HasherCommonEPNS_2H5EPK19BrotliEncoderParams(ptr noundef nonnull %175, ptr noundef nonnull %325) - br label %.thread532 + br label %.thread530 326: ; preds = %310 %327 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @_ZN13duckdb_brotliL12InitializeH6EPNS_12HasherCommonEPNS_2H6EPK19BrotliEncoderParams(ptr noundef nonnull %175, ptr noundef nonnull %327) - br label %.thread532 + br label %.thread530 328: ; preds = %310 %.val318 = load i32, ptr %30, align 4, !tbaa !49 @@ -2705,7 +2705,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %338 = zext i32 %337 to i64 %339 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %338, ptr %339, align 8, !tbaa !174, !alias.scope !169 - br label %.thread532 + br label %.thread530 340: ; preds = %310 %.val319 = load i32, ptr %30, align 4, !tbaa !49 @@ -2726,7 +2726,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %350 = zext i32 %349 to i64 %351 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %350, ptr %351, align 8, !tbaa !180, !alias.scope !175 - br label %.thread532 + br label %.thread530 352: ; preds = %310 %.val320 = load i32, ptr %30, align 4, !tbaa !49 @@ -2747,7 +2747,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %362 = zext i32 %361 to i64 %363 = getelementptr inbounds nuw i8, ptr %0, i64 2736 store i64 %362, ptr %363, align 8, !tbaa !186, !alias.scope !181 - br label %.thread532 + br label %.thread530 364: ; preds = %310 %365 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2756,7 +2756,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %366 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !187 %367 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %366, ptr %367, align 8, !tbaa !192, !alias.scope !187 - br label %.thread532 + br label %.thread530 368: ; preds = %310 %369 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2769,7 +2769,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %372, align 8, !tbaa !201, !alias.scope !197 %373 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %373, align 8, !tbaa !202, !alias.scope !197 - br label %.thread532 + br label %.thread530 374: ; preds = %310 %375 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2782,7 +2782,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %378, align 8, !tbaa !208, !alias.scope !205 %379 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %379, align 8, !tbaa !209, !alias.scope !205 - br label %.thread532 + br label %.thread530 380: ; preds = %310 %381 = getelementptr inbounds nuw i8, ptr %0, i64 1976 @@ -2795,7 +2795,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %384, align 8, !tbaa !217, !alias.scope !214 %385 = getelementptr inbounds nuw i8, ptr %0, i64 1992 store ptr %0, ptr %385, align 8, !tbaa !218, !alias.scope !214 - br label %.thread532 + br label %.thread530 386: ; preds = %310 %387 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2814,9 +2814,9 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i64 %392, ptr %387, align 8, !tbaa !225, !alias.scope !221 %393 = getelementptr inbounds nuw i8, ptr %0, i64 1728 store i32 %.neg.i, ptr %393, align 8, !tbaa !226, !alias.scope !221 - br label %.thread532 + br label %.thread530 -.thread532: ; preds = %310, %312, %316, %320, %324, %326, %328, %340, %352, %364, %368, %374, %380, %386 +.thread530: ; preds = %310, %312, %316, %320, %324, %326, %328, %340, %352, %364, %368, %374, %380, %386 %394 = getelementptr inbounds nuw i8, ptr %0, i64 1704 store i32 0, ptr %394, align 8, !tbaa !227 store i32 1, ptr %183, align 8, !tbaa !140 @@ -2831,8 +2831,8 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %398 = getelementptr inbounds nuw i8, ptr %0, i64 1704 br i1 %397, label %399, label %_ZN13duckdb_brotliL11HasherSetupEPNS_13MemoryManagerEPNS_6HasherEP19BrotliEncoderParamsPKhmmi.exit -399: ; preds = %.thread532, %396 - %400 = phi ptr [ %395, %.thread532 ], [ %398, %396 ] +399: ; preds = %.thread530, %396 + %400 = phi ptr [ %395, %.thread530 ], [ %398, %396 ] %401 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %402 = load i32, ptr %401, align 8, !tbaa !150 switch i32 %402, label %_ZN13duckdb_brotliL9PrepareH2EPNS_2H2EimPKh.exit [ diff --git a/bench/duckdb/optimized/utf8proc.ll b/bench/duckdb/optimized/utf8proc.ll index 33d4111c91f..4a921015d94 100644 --- a/bench/duckdb/optimized/utf8proc.ll +++ b/bench/duckdb/optimized/utf8proc.ll @@ -1482,7 +1482,7 @@ define noundef range(i64 -9223372036854775808, 1152921504606846976) i64 @_ZN6duc .split.split.us: ; preds = %.split, %53 %.064.us97 = phi i64 [ %38, %53 ], [ 0, %.split ] %.061.us98 = phi i64 [ %54, %53 ], [ 0, %.split ] - %36 = getelementptr inbounds i8, ptr %0, i64 %.064.us97 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 %.064.us97 %37 = call noundef i64 @_ZN6duckdb16utf8proc_iterateEPKhlPi(ptr noundef %36, i64 noundef -1, ptr noundef nonnull %8) %38 = add nsw i64 %37, %.064.us97 %39 = load i32, ptr %8, align 4, !tbaa !3 @@ -1515,7 +1515,7 @@ define noundef range(i64 -9223372036854775808, 1152921504606846976) i64 @_ZN6duc .split.split: ; preds = %.split, %74 %.064 = phi i64 [ %58, %74 ], [ 0, %.split ] %.061 = phi i64 [ %75, %74 ], [ 0, %.split ] - %56 = getelementptr inbounds i8, ptr %0, i64 %.064 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 %.064 %57 = call noundef i64 @_ZN6duckdb16utf8proc_iterateEPKhlPi(ptr noundef %56, i64 noundef -1, ptr noundef nonnull %8) %58 = add nsw i64 %57, %.064 %59 = load i32, ptr %8, align 4, !tbaa !3 diff --git a/bench/eastl/optimized/BenchmarkAlgorithm.ll b/bench/eastl/optimized/BenchmarkAlgorithm.ll index 7afe648626f..853b51e0aad 100644 --- a/bench/eastl/optimized/BenchmarkAlgorithm.ll +++ b/bench/eastl/optimized/BenchmarkAlgorithm.ll @@ -8576,11 +8576,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit.i: ; preds = %_ZN2EA4StdC9Stopwat br i1 %cmp6.i.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i.i, label %_ZN12_GLOBAL__N_111TestCopyStdIN9__gnu_cxx17__normal_iteratorIP8LargePODSt6vectorIS3_SaIS3_EEEES8_EEvRN2EA4StdC9StopwatchET_SD_T0_.exit for.body.preheader.i.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit.i - %sub.ptr.div10.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 16408 + %sub.ptr.div.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i - %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div10.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] + %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] %__result.addr.08.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %3, %for.body.preheader.i.i.i.i.i.i ] %__first.addr.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %1, %for.body.preheader.i.i.i.i.i.i ] %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %__first.addr.07.i.i.i.i.i.i, %__result.addr.08.i.i.i.i.i.i @@ -8655,11 +8655,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit.i72: ; preds = %_ZN2EA4StdC9Stopwat br i1 %cmp6.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %_ZN12_GLOBAL__N_110TestCopyEaIP8LargePODS2_EEvRN2EA4StdC9StopwatchET_S7_T0_.exit for.body.preheader.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit.i72 - %sub.ptr.div10.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i - %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i75, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div10.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i75, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %result.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %13, %for.body.preheader.i.i.i.i.i ] %first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i76, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %11, %for.body.preheader.i.i.i.i.i ] %cmp.not.i.i.i.i.i.i = icmp eq ptr %first.addr.07.i.i.i.i.i, %result.addr.08.i.i.i.i.i @@ -8921,11 +8921,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit: ; preds = %if.then2.i.i, %_ZN2 br i1 %cmp4.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %_ZSt13copy_backwardIN9__gnu_cxx17__normal_iteratorIP8LargePODSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit for.body.preheader.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit - %sub.ptr.div8.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i - %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div8.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %result.coerce, %for.body.preheader.i.i.i.i.i ] %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %last.coerce, %for.body.preheader.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -16408 @@ -9006,11 +9006,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit: ; preds = %if.then2.i.i, %_ZN2 br i1 %cmp4.i.i.i.i, label %for.body.preheader.i.i.i.i, label %_ZN5eastl13copy_backwardIP8LargePODS2_EET0_T_S4_S3_.exit for.body.preheader.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit - %sub.ptr.div8.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i, 16408 + %sub.ptr.div.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i, 16408 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i, %for.body.preheader.i.i.i.i - %n.07.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div8.i.i.i.i, %for.body.preheader.i.i.i.i ] + %n.07.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div.i.i.i.i, %for.body.preheader.i.i.i.i ] %resultEnd.addr.06.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %result, %for.body.preheader.i.i.i.i ] %last.addr.05.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %last, %for.body.preheader.i.i.i.i ] %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %last.addr.05.i.i.i.i, i64 -16408 @@ -11289,18 +11289,11 @@ if.then64.i.i.i: ; preds = %if.else61.i.i.i %add.ptr.i37.i.i.i = getelementptr inbounds i8, ptr %__p.sroa.0.0.i.i.i, i64 %add.ptr.i37.idx.i.i.i %add.ptr.i38.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i37.i.i.i, i64 -32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %__t65.sroa.0.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %add.ptr.i38.i.i.i, i64 32, i1 false) - %tobool.not.i.i.i.i.i42.i.i.i = icmp eq i64 %__n.0.i.i.i, 1 - br i1 %tobool.not.i.i.i.i.i42.i.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i, label %if.then.i.i.i.i.i43.i.i.i - -if.then.i.i.i.i.i43.i.i.i: ; preds = %if.then64.i.i.i %sub.ptr.sub.i.i.i.i.i46.i.i.i = add nsw i64 %add.ptr.i37.idx.i.i.i, -32 %sub.ptr.div.i.i.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i46.i.i.i, 5 %idx.neg.i.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i.i %add.ptr.i.i.i.i.i47.i.i.i = getelementptr inbounds %"struct.(anonymous namespace)::SizedPOD", ptr %add.ptr.i37.i.i.i, i64 %idx.neg.i.i.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i47.i.i.i, ptr nonnull align 1 %__p.sroa.0.0.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i46.i.i.i, i1 false) - br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i - -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i: ; preds = %if.then.i.i.i.i.i43.i.i.i, %if.then64.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %__p.sroa.0.0.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %__t65.sroa.0.i.i.i, i64 32, i1 false) br label %_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i @@ -11338,7 +11331,7 @@ for.cond.i.i.i.backedge: ; preds = %for.end110.i.i.i, % %__n.0.i.i.i.be = phi i64 [ %__k.0.i.i.i, %if.end59.i.i.i ], [ %sub20.i.i.i, %for.end110.i.i.i ] br label %for.cond.i.i.i, !llvm.loop !199 -_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i: ; preds = %for.end110.i.i.i, %for.end.i.i.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i, %if.then24.i.i.i +_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i: ; preds = %for.end110.i.i.i, %for.end.i.i.i, %if.then64.i.i.i, %if.then24.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %__t.sroa.0.i.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %__t65.sroa.0.i.i.i) invoke void @_ZN2EA4StdC9Stopwatch4StopEv(ptr noundef nonnull align 8 dereferenceable(24) %stopwatch1) @@ -14357,13 +14350,13 @@ while.end.i: ; preds = %if.end.i, %_ZN2EA4S br i1 %cmp6.i.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP10TestObjectSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i for.body.preheader.i.i.i.i.i.i: ; preds = %while.end.i - %sub.ptr.div11.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 24 + %sub.ptr.div.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 24 %.pre10.i.i.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i %119 = phi i64 [ %123, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %.pre10.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] - %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i636, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] + %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i636, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] %__result.addr.08.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %__result.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i.i ] %__first.addr.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %__first1.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i.i ] %inc.i.i.i.i.i.i.i = add nsw i64 %119, 1 @@ -14407,13 +14400,13 @@ for.body.preheader.i.i.i.i.i22.i: ; preds = %_ZSt4copyIN9__gnu_c %sub.ptr.rhs.cast.i.i.i.i632 = ptrtoint ptr %__result.sroa.0.0.lcssa.i to i64 %sub.ptr.sub.i.i.i.i633 = sub i64 %sub.ptr.lhs.cast.i.i.i.i631, %sub.ptr.rhs.cast.i.i.i.i632 %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.sroa.0.0.lcssa.i, i64 %sub.ptr.sub.i.i.i.i633 - %sub.ptr.div11.i.i.i.i.i23.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 24 + %sub.ptr.div.i.i.i.i.i23.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 24 %.pre10.i.i.i.i.i24.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i25.i for.body.i.i.i.i.i25.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i, %for.body.preheader.i.i.i.i.i22.i %124 = phi i64 [ %128, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %.pre10.i.i.i.i.i24.i, %for.body.preheader.i.i.i.i.i22.i ] - %__n.09.i.i.i.i.i26.i = phi i64 [ %dec.i.i.i.i.i41.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %sub.ptr.div11.i.i.i.i.i23.i, %for.body.preheader.i.i.i.i.i22.i ] + %__n.09.i.i.i.i.i26.i = phi i64 [ %dec.i.i.i.i.i41.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %sub.ptr.div.i.i.i.i.i23.i, %for.body.preheader.i.i.i.i.i22.i ] %__result.addr.08.i.i.i.i.i27.i = phi ptr [ %incdec.ptr1.i.i.i.i.i40.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %add.ptr.i.i.i.i.i, %for.body.preheader.i.i.i.i.i22.i ] %__first.addr.07.i.i.i.i.i28.i = phi ptr [ %incdec.ptr.i.i.i.i.i39.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %__first2.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i22.i ] %inc.i.i.i.i.i.i29.i = add nsw i64 %124, 1 @@ -14570,13 +14563,13 @@ if.then7.i: ; preds = %while.end.i643 br i1 %cmp6.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %call.i.i.noexc445 for.body.preheader.i.i.i.i.i: ; preds = %if.then7.i - %sub.ptr.div11.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 %.pre10.i.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i %149 = phi i64 [ %153, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %.pre10.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] - %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i648, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i648, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %result.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %result.addr.0.lcssa.i, %for.body.preheader.i.i.i.i.i ] %first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i649, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %first2.addr.0.lcssa.i, %for.body.preheader.i.i.i.i.i ] %inc.i.i.i.i.i.i644 = add nsw i64 %149, 1 @@ -14615,13 +14608,13 @@ if.else9.i: ; preds = %while.end.i643 br i1 %cmp6.i.i.i.i29.i, label %for.body.preheader.i.i.i.i31.i, label %call.i.i.noexc445 for.body.preheader.i.i.i.i31.i: ; preds = %if.else9.i - %sub.ptr.div11.i.i.i.i32.i = udiv exact i64 %sub.ptr.sub.i.i.i.i28.i, 24 + %sub.ptr.div.i.i.i.i32.i = udiv exact i64 %sub.ptr.sub.i.i.i.i28.i, 24 %.pre10.i.i.i.i33.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i34.i for.body.i.i.i.i34.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i, %for.body.preheader.i.i.i.i31.i %154 = phi i64 [ %158, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %.pre10.i.i.i.i33.i, %for.body.preheader.i.i.i.i31.i ] - %n.09.i.i.i.i35.i = phi i64 [ %dec.i.i.i.i48.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %sub.ptr.div11.i.i.i.i32.i, %for.body.preheader.i.i.i.i31.i ] + %n.09.i.i.i.i35.i = phi i64 [ %dec.i.i.i.i48.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %sub.ptr.div.i.i.i.i32.i, %for.body.preheader.i.i.i.i31.i ] %result.addr.08.i.i.i.i36.i = phi ptr [ %incdec.ptr1.i.i.i.i50.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %result.addr.0.lcssa.i, %for.body.preheader.i.i.i.i31.i ] %first.addr.07.i.i.i.i37.i = phi ptr [ %incdec.ptr.i.i.i.i49.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %first1.addr.0.lcssa.i, %for.body.preheader.i.i.i.i31.i ] %inc.i.i.i.i.i38.i = add nsw i64 %154, 1 @@ -17103,12 +17096,12 @@ if.then9: ; preds = %for.body for.body.preheader.i.i.i.i.i: ; preds = %if.then9 %add.ptr.i2 = getelementptr inbounds nuw i8, ptr %__first.coerce.pn27, i64 48 - %sub.ptr.div9.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 + %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 br label %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i _ZN10TestObjectaSEOS_.exit.i.i.i.i.i: ; preds = %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i %7 = phi i64 [ %.pre.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %.pre, %for.body.preheader.i.i.i.i.i ] - %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %sub.ptr.div9.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %add.ptr.i2, %for.body.preheader.i.i.i.i.i ] %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %__i.sroa.0.028, %for.body.preheader.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -24 @@ -17447,13 +17440,13 @@ if.then24: ; preds = %if.else br i1 %cmp6.i.i.i.i, label %for.body.preheader.i.i.i.i, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit for.body.preheader.i.i.i.i: ; preds = %if.then24 - %sub.ptr.div11.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i, 24 + %sub.ptr.div.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i, 24 %.pre10.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i15 for.body.i.i.i.i15: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i, %for.body.preheader.i.i.i.i %13 = phi i64 [ %17, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %.pre10.i.i.i.i, %for.body.preheader.i.i.i.i ] - %n.09.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i, %for.body.preheader.i.i.i.i ] + %n.09.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div.i.i.i.i, %for.body.preheader.i.i.i.i ] %result.addr.08.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i21, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %1, %for.body.preheader.i.i.i.i ] %first.addr.07.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i20, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %first, %for.body.preheader.i.i.i.i ] %inc.i.i.i.i.i16 = add nsw i64 %13, 1 @@ -17539,13 +17532,13 @@ if.else29: ; preds = %if.else br i1 %cmp6.i.i.i.i47, label %for.body.preheader.i.i.i.i49, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit70 for.body.preheader.i.i.i.i49: ; preds = %if.else29 - %sub.ptr.div11.i.i.i.i50 = udiv exact i64 %sub.ptr.sub21, 24 + %sub.ptr.div.i.i.i.i50 = udiv exact i64 %sub.ptr.sub21, 24 %.pre10.i.i.i.i51 = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i52 for.body.i.i.i.i52: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i65, %for.body.preheader.i.i.i.i49 %20 = phi i64 [ %24, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %.pre10.i.i.i.i51, %for.body.preheader.i.i.i.i49 ] - %n.09.i.i.i.i53 = phi i64 [ %dec.i.i.i.i66, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %sub.ptr.div11.i.i.i.i50, %for.body.preheader.i.i.i.i49 ] + %n.09.i.i.i.i53 = phi i64 [ %dec.i.i.i.i66, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %sub.ptr.div.i.i.i.i50, %for.body.preheader.i.i.i.i49 ] %result.addr.08.i.i.i.i54 = phi ptr [ %incdec.ptr1.i.i.i.i68, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %1, %for.body.preheader.i.i.i.i49 ] %first.addr.07.i.i.i.i55 = phi ptr [ %incdec.ptr.i.i.i.i67, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %first, %for.body.preheader.i.i.i.i49 ] %inc.i.i.i.i.i56 = add nsw i64 %20, 1 diff --git a/bench/eastl/optimized/EASprintfCore.ll b/bench/eastl/optimized/EASprintfCore.ll index 27548e0132d..0b8bda19d98 100644 --- a/bench/eastl/optimized/EASprintfCore.ll +++ b/bench/eastl/optimized/EASprintfCore.ll @@ -318,7 +318,7 @@ while.cond1.preheader.lr.ph.lr.ph: ; preds = %entry br label %while.cond1.preheader.lr.ph while.cond1.preheader.lr.ph: ; preds = %while.cond1.preheader.lr.ph.lr.ph, %while.cond.outer.backedge - %2 = phi i8 [ %0, %while.cond1.preheader.lr.ph.lr.ph ], [ %139, %while.cond.outer.backedge ] + %2 = phi i8 [ %0, %while.cond1.preheader.lr.ph.lr.ph ], [ %136, %while.cond.outer.backedge ] %pFormatCurrent.0.ph263 = phi ptr [ %pFormat, %while.cond1.preheader.lr.ph.lr.ph ], [ %pFormatCurrent.0.ph.be, %while.cond.outer.backedge ] %nWriteCountSum.0.ph262 = phi i32 [ 0, %while.cond1.preheader.lr.ph.lr.ph ], [ %nWriteCountSum.0.ph.be, %while.cond.outer.backedge ] %lValue.0.ph261 = phi i64 [ 0, %while.cond1.preheader.lr.ph.lr.ph ], [ %lValue.0.ph.be, %while.cond.outer.backedge ] @@ -328,7 +328,7 @@ while.cond1.preheader.lr.ph: ; preds = %while.cond1.prehead br label %while.cond1.preheader while.cond1.preheader: ; preds = %while.cond1.preheader.lr.ph, %while.cond.backedge - %3 = phi i8 [ %2, %while.cond1.preheader.lr.ph ], [ %120, %while.cond.backedge ] + %3 = phi i8 [ %2, %while.cond1.preheader.lr.ph ], [ %117, %while.cond.backedge ] %pFormatCurrent.0255 = phi ptr [ %pFormatCurrent.0.ph263, %while.cond1.preheader.lr.ph ], [ %call13, %while.cond.backedge ] %nWriteCountSum.0254 = phi i32 [ %nWriteCountSum.0.ph262, %while.cond1.preheader.lr.ph ], [ %nWriteCountSum.0.be, %while.cond.backedge ] br label %while.cond1 @@ -949,8 +949,8 @@ vaarg.end363: ; preds = %vaarg.in_mem359, %v br label %if.end366 if.end366: ; preds = %vaarg.end363, %if.then350 - %.sink373 = phi double [ %86, %vaarg.end363 ], [ %conv354, %if.then350 ] - %call365 = call noundef ptr @_ZN2EA4StdC12SprintfLocal11WriteDoubleIcEEPT_RKNS1_10FormatDataEdS4_(ptr noundef nonnull align 4 dereferenceable(40) %fd, double noundef %.sink373, ptr noundef nonnull %add.ptr) + %.sink368 = phi double [ %86, %vaarg.end363 ], [ %conv354, %if.then350 ] + %call365 = call noundef ptr @_ZN2EA4StdC12SprintfLocal11WriteDoubleIcEEPT_RKNS1_10FormatDataEdS4_(ptr noundef nonnull align 4 dereferenceable(40) %fd, double noundef %.sink368, ptr noundef nonnull %add.ptr) %tobool367.not = icmp eq ptr %call365, null br i1 %tobool367.not, label %FormatError, label %if.end369 @@ -1006,25 +1006,24 @@ if.then.i.i.i: ; preds = %if.then.i br i1 %cmp211.i.i.i, label %land.rhs.i.i.i.preheader, label %while.end.i.i.i land.rhs.i.i.i.preheader: ; preds = %if.then.i.i.i - %narrow322 = add nsw i32 %93, -1 - %94 = icmp samesign ugt i32 %narrow322, 5 - br i1 %94, label %while.end.i.i.i, label %while.end.i.i.loopexit.split.loop.exit29.i + %94 = add nsw i32 %93, -7 + %95 = icmp ult i32 %94, -6 + br i1 %95, label %while.end.i.i.i, label %while.end.i.i.loopexit.split.loop.exit29.i while.end.i.i.loopexit.split.loop.exit29.i: ; preds = %land.rhs.i.i.i.preheader - %95 = zext nneg i32 %narrow322 to i64 - %96 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %95 - %incdec.ptr.i.i.ptr.le.i = getelementptr inbounds nuw i8, ptr %96, i64 1 + %idx.ext.i.i.i = zext nneg i32 %93 to i64 + %incdec.ptr.i.i.ptr.le.i = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i br label %while.end.i.i.i while.end.i.i.i: ; preds = %land.rhs.i.i.i.preheader, %while.end.i.i.loopexit.split.loop.exit29.i, %if.then.i.i.i %pBufferCurrent.0.lcssa.i.i.i = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i ], [ %incdec.ptr.i.i.ptr.le.i, %while.end.i.i.loopexit.split.loop.exit29.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i.preheader ] %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i to i64 - %97 = trunc i64 %sub.ptr.lhs.cast.i.i.i to i32 - %98 = sub i32 %97, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %96 = trunc i64 %sub.ptr.lhs.cast.i.i.i to i32 + %97 = sub i32 %96, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i: ; preds = %while.end.i.i.i, %if.then.i - %retval.0.in.i.i.i = phi i32 [ %98, %while.end.i.i.i ], [ 6, %if.then.i ] + %retval.0.in.i.i.i = phi i32 [ %97, %while.end.i.i.i ], [ 6, %if.then.i ] %call2.i.i = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIccEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit @@ -1043,8 +1042,8 @@ if.then.i.i8.i: ; preds = %if.else.i land.rhs.i.i19.i: ; preds = %if.then.i.i8.i, %while.body.i.i22.i %pBufferCurrent.012.i.i20.i = phi ptr [ %incdec.ptr.i.i23.i, %while.body.i.i22.i ], [ %92, %if.then.i.i8.i ] - %99 = load i8, ptr %pBufferCurrent.012.i.i20.i, align 1, !noalias !12 - %tobool.not.i.i21.i = icmp eq i8 %99, 0 + %98 = load i8, ptr %pBufferCurrent.012.i.i20.i, align 1, !noalias !12 + %tobool.not.i.i21.i = icmp eq i8 %98, 0 br i1 %tobool.not.i.i21.i, label %while.end.i.i12.i, label %while.body.i.i22.i while.body.i.i22.i: ; preds = %land.rhs.i.i19.i @@ -1077,10 +1076,10 @@ sw.bb399: ; preds = %sw.bb375 vaarg.in_reg403: ; preds = %sw.bb399 %reg_save_area404 = load ptr, ptr %1, align 8 - %100 = zext nneg i32 %gp_offset401 to i64 - %101 = getelementptr i8, ptr %reg_save_area404, i64 %100 - %102 = add nuw nsw i32 %gp_offset401, 8 - store i32 %102, ptr %arguments, align 8 + %99 = zext nneg i32 %gp_offset401 to i64 + %100 = getelementptr i8, ptr %reg_save_area404, i64 %99 + %101 = add nuw nsw i32 %gp_offset401, 8 + store i32 %101, ptr %arguments, align 8 br label %vaarg.end409 vaarg.in_mem405: ; preds = %sw.bb399 @@ -1090,46 +1089,45 @@ vaarg.in_mem405: ; preds = %sw.bb399 br label %vaarg.end409 vaarg.end409: ; preds = %vaarg.in_mem405, %vaarg.in_reg403 - %vaarg.addr410 = phi ptr [ %101, %vaarg.in_reg403 ], [ %overflow_arg_area407, %vaarg.in_mem405 ] - %103 = load ptr, ptr %vaarg.addr410, align 8 + %vaarg.addr410 = phi ptr [ %100, %vaarg.in_reg403 ], [ %overflow_arg_area407, %vaarg.in_mem405 ] + %102 = load ptr, ptr %vaarg.addr410, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %helper2.i) - %cmp.i128 = icmp eq ptr %103, null + %cmp.i128 = icmp eq ptr %102, null br i1 %cmp.i128, label %if.then.i131, label %if.else.i129 if.then.i131: ; preds = %vaarg.end409 - %104 = load i32, ptr %mnPrecision.i, align 4, !noalias !16 - %cmp.not.i.i.i133 = icmp eq i32 %104, 2147483647 + %103 = load i32, ptr %mnPrecision.i, align 4, !noalias !16 + %cmp.not.i.i.i133 = icmp eq i32 %103, 2147483647 br i1 %cmp.not.i.i.i133, label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140, label %if.then.i.i.i134 if.then.i.i.i134: ; preds = %if.then.i131 - %cmp211.i.i.i136 = icmp sgt i32 %104, 0 + %cmp211.i.i.i136 = icmp sgt i32 %103, 0 br i1 %cmp211.i.i.i136, label %land.rhs.i.i.i143.preheader, label %while.end.i.i.i137 land.rhs.i.i.i143.preheader: ; preds = %if.then.i.i.i134 - %narrow320 = add nsw i32 %104, -1 - %105 = icmp samesign ugt i32 %narrow320, 5 + %104 = add nsw i32 %103, -7 + %105 = icmp ult i32 %104, -6 br i1 %105, label %while.end.i.i.i137, label %while.end.i.i.loopexit.split.loop.exit6.i while.end.i.i.loopexit.split.loop.exit6.i: ; preds = %land.rhs.i.i.i143.preheader - %106 = zext nneg i32 %narrow320 to i64 - %107 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %106 - %incdec.ptr.i.i.ptr.le.i149 = getelementptr inbounds nuw i8, ptr %107, i64 1 + %idx.ext.i.i.i135 = zext nneg i32 %103 to i64 + %incdec.ptr.i.i.ptr.le.i149 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i135 br label %while.end.i.i.i137 while.end.i.i.i137: ; preds = %land.rhs.i.i.i143.preheader, %while.end.i.i.loopexit.split.loop.exit6.i, %if.then.i.i.i134 %pBufferCurrent.0.lcssa.i.i.i138 = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i134 ], [ %incdec.ptr.i.i.ptr.le.i149, %while.end.i.i.loopexit.split.loop.exit6.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i143.preheader ] %sub.ptr.lhs.cast.i.i.i139 = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i138 to i64 - %108 = trunc i64 %sub.ptr.lhs.cast.i.i.i139 to i32 - %109 = sub i32 %108, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %106 = trunc i64 %sub.ptr.lhs.cast.i.i.i139 to i32 + %107 = sub i32 %106, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140 _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140: ; preds = %while.end.i.i.i137, %if.then.i131 - %retval.0.in.i.i.i141 = phi i32 [ %109, %while.end.i.i.i137 ], [ 6, %if.then.i131 ] + %retval.0.in.i.i.i141 = phi i32 [ %107, %while.end.i.i.i137 ], [ 6, %if.then.i131 ] %call2.i.i142 = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i141) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit if.else.i129: ; preds = %vaarg.end409 - %call3.i = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDscEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDs(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %103) + %call3.i = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDscEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDs(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %102) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit _ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit: ; preds = %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140, %if.else.i129 @@ -1145,10 +1143,10 @@ sw.bb417: ; preds = %sw.bb375, %sw.bb375 vaarg.in_reg421: ; preds = %sw.bb417 %reg_save_area422 = load ptr, ptr %1, align 8 - %110 = zext nneg i32 %gp_offset419 to i64 - %111 = getelementptr i8, ptr %reg_save_area422, i64 %110 - %112 = add nuw nsw i32 %gp_offset419, 8 - store i32 %112, ptr %arguments, align 8 + %108 = zext nneg i32 %gp_offset419 to i64 + %109 = getelementptr i8, ptr %reg_save_area422, i64 %108 + %110 = add nuw nsw i32 %gp_offset419, 8 + store i32 %110, ptr %arguments, align 8 br label %vaarg.end427 vaarg.in_mem423: ; preds = %sw.bb417 @@ -1158,46 +1156,45 @@ vaarg.in_mem423: ; preds = %sw.bb417 br label %vaarg.end427 vaarg.end427: ; preds = %vaarg.in_mem423, %vaarg.in_reg421 - %vaarg.addr428 = phi ptr [ %111, %vaarg.in_reg421 ], [ %overflow_arg_area425, %vaarg.in_mem423 ] - %113 = load ptr, ptr %vaarg.addr428, align 8 + %vaarg.addr428 = phi ptr [ %109, %vaarg.in_reg421 ], [ %overflow_arg_area425, %vaarg.in_mem423 ] + %111 = load ptr, ptr %vaarg.addr428, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %helper2.i150) - %cmp.i151 = icmp eq ptr %113, null + %cmp.i151 = icmp eq ptr %111, null br i1 %cmp.i151, label %if.then.i155, label %if.else.i152 if.then.i155: ; preds = %vaarg.end427 - %114 = load i32, ptr %mnPrecision.i, align 4, !noalias !21 - %cmp.not.i.i.i157 = icmp eq i32 %114, 2147483647 + %112 = load i32, ptr %mnPrecision.i, align 4, !noalias !21 + %cmp.not.i.i.i157 = icmp eq i32 %112, 2147483647 br i1 %cmp.not.i.i.i157, label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164, label %if.then.i.i.i158 if.then.i.i.i158: ; preds = %if.then.i155 - %cmp211.i.i.i160 = icmp sgt i32 %114, 0 + %cmp211.i.i.i160 = icmp sgt i32 %112, 0 br i1 %cmp211.i.i.i160, label %land.rhs.i.i.i167.preheader, label %while.end.i.i.i161 land.rhs.i.i.i167.preheader: ; preds = %if.then.i.i.i158 - %narrow = add nsw i32 %114, -1 - %115 = icmp samesign ugt i32 %narrow, 5 - br i1 %115, label %while.end.i.i.i161, label %while.end.i.i.loopexit.split.loop.exit6.i173 + %113 = add nsw i32 %112, -7 + %114 = icmp ult i32 %113, -6 + br i1 %114, label %while.end.i.i.i161, label %while.end.i.i.loopexit.split.loop.exit6.i173 while.end.i.i.loopexit.split.loop.exit6.i173: ; preds = %land.rhs.i.i.i167.preheader - %116 = zext nneg i32 %narrow to i64 - %117 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %116 - %incdec.ptr.i.i.ptr.le.i174 = getelementptr inbounds nuw i8, ptr %117, i64 1 + %idx.ext.i.i.i159 = zext nneg i32 %112 to i64 + %incdec.ptr.i.i.ptr.le.i174 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i159 br label %while.end.i.i.i161 while.end.i.i.i161: ; preds = %land.rhs.i.i.i167.preheader, %while.end.i.i.loopexit.split.loop.exit6.i173, %if.then.i.i.i158 %pBufferCurrent.0.lcssa.i.i.i162 = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i158 ], [ %incdec.ptr.i.i.ptr.le.i174, %while.end.i.i.loopexit.split.loop.exit6.i173 ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i167.preheader ] %sub.ptr.lhs.cast.i.i.i163 = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i162 to i64 - %118 = trunc i64 %sub.ptr.lhs.cast.i.i.i163 to i32 - %119 = sub i32 %118, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %115 = trunc i64 %sub.ptr.lhs.cast.i.i.i163 to i32 + %116 = sub i32 %115, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164 _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164: ; preds = %while.end.i.i.i161, %if.then.i155 - %retval.0.in.i.i.i165 = phi i32 [ %119, %while.end.i.i.i161 ], [ 6, %if.then.i155 ] + %retval.0.in.i.i.i165 = phi i32 [ %116, %while.end.i.i.i161 ], [ 6, %if.then.i155 ] %call2.i.i166 = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i165) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit if.else.i152: ; preds = %vaarg.end427 - %call3.i153 = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDicEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDi(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i150, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %113) + %call3.i153 = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDicEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDi(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i150, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %111) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit _ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit: ; preds = %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164, %if.else.i152 @@ -1213,8 +1210,8 @@ sw.epilog435: ; preds = %_ZN2EA4StdC12Sprint while.cond.backedge: ; preds = %sw.bb449, %sw.bb451, %sw.bb453, %sw.bb454, %sw.bb456, %sw.bb458, %sw.bb460, %sw.bb462, %sw.bb464, %sw.default467, %sw.epilog435 %nWriteCountSum.0.be = phi i32 [ %nWriteCountSum.3, %sw.epilog435 ], [ %nWriteCountSum.1, %sw.default467 ], [ %nWriteCountSum.1, %sw.bb464 ], [ %nWriteCountSum.1, %sw.bb462 ], [ %nWriteCountSum.1, %sw.bb460 ], [ %nWriteCountSum.1, %sw.bb458 ], [ %nWriteCountSum.1, %sw.bb456 ], [ %nWriteCountSum.1, %sw.bb454 ], [ %nWriteCountSum.1, %sw.bb453 ], [ %nWriteCountSum.1, %sw.bb451 ], [ %nWriteCountSum.1, %sw.bb449 ] - %120 = load i8, ptr %call13, align 1 - %tobool.not = icmp eq i8 %120, 0 + %117 = load i8, ptr %call13, align 1 + %tobool.not = icmp eq i8 %117, 0 br i1 %tobool.not, label %return, label %while.cond1.preheader, !llvm.loop !26 sw.bb436: ; preds = %if.then12 @@ -1224,10 +1221,10 @@ sw.bb436: ; preds = %if.then12 vaarg.in_reg440: ; preds = %sw.bb436 %reg_save_area441 = load ptr, ptr %1, align 8 - %121 = zext nneg i32 %gp_offset438 to i64 - %122 = getelementptr i8, ptr %reg_save_area441, i64 %121 - %123 = add nuw nsw i32 %gp_offset438, 8 - store i32 %123, ptr %arguments, align 8 + %118 = zext nneg i32 %gp_offset438 to i64 + %119 = getelementptr i8, ptr %reg_save_area441, i64 %118 + %120 = add nuw nsw i32 %gp_offset438, 8 + store i32 %120, ptr %arguments, align 8 br label %vaarg.end446 vaarg.in_mem442: ; preds = %sw.bb436 @@ -1237,10 +1234,10 @@ vaarg.in_mem442: ; preds = %sw.bb436 br label %vaarg.end446 vaarg.end446: ; preds = %vaarg.in_mem442, %vaarg.in_reg440 - %vaarg.addr447 = phi ptr [ %122, %vaarg.in_reg440 ], [ %overflow_arg_area444, %vaarg.in_mem442 ] - %124 = load ptr, ptr %vaarg.addr447, align 8 - %125 = load i32, ptr %mModifier.i, align 4 - switch i32 %125, label %sw.default467 [ + %vaarg.addr447 = phi ptr [ %119, %vaarg.in_reg440 ], [ %overflow_arg_area444, %vaarg.in_mem442 ] + %121 = load ptr, ptr %vaarg.addr447, align 8 + %122 = load i32, ptr %mModifier.i, align 4 + switch i32 %122, label %sw.default467 [ i32 12, label %sw.bb449 i32 1, label %sw.bb449 i32 13, label %sw.bb451 @@ -1256,55 +1253,55 @@ vaarg.end446: ; preds = %vaarg.in_mem442, %v sw.bb449: ; preds = %vaarg.end446, %vaarg.end446 %conv450 = trunc i32 %nWriteCountSum.1 to i8 - store i8 %conv450, ptr %124, align 1 + store i8 %conv450, ptr %121, align 1 br label %while.cond.backedge sw.bb451: ; preds = %vaarg.end446, %vaarg.end446 %conv452 = trunc i32 %nWriteCountSum.1 to i16 - store i16 %conv452, ptr %124, align 2 + store i16 %conv452, ptr %121, align 2 br label %while.cond.backedge sw.bb453: ; preds = %vaarg.end446 - store i32 %nWriteCountSum.1, ptr %124, align 4 + store i32 %nWriteCountSum.1, ptr %121, align 4 br label %while.cond.backedge sw.bb454: ; preds = %vaarg.end446 %conv455 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv455, ptr %124, align 8 + store i64 %conv455, ptr %121, align 8 br label %while.cond.backedge sw.bb456: ; preds = %vaarg.end446 %conv457 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv457, ptr %124, align 8 + store i64 %conv457, ptr %121, align 8 br label %while.cond.backedge sw.bb458: ; preds = %vaarg.end446 %conv459 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv459, ptr %124, align 8 + store i64 %conv459, ptr %121, align 8 br label %while.cond.backedge sw.bb460: ; preds = %vaarg.end446 %conv461 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv461, ptr %124, align 8 + store i64 %conv461, ptr %121, align 8 br label %while.cond.backedge sw.bb462: ; preds = %vaarg.end446 %conv463 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv463, ptr %124, align 8 + store i64 %conv463, ptr %121, align 8 br label %while.cond.backedge sw.bb464: ; preds = %vaarg.end446 %conv465 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv465, ptr %124, align 8 + store i64 %conv465, ptr %121, align 8 br label %while.cond.backedge sw.default467: ; preds = %vaarg.end446 - store i32 %nWriteCountSum.1, ptr %124, align 4 + store i32 %nWriteCountSum.1, ptr %121, align 4 br label %while.cond.backedge sw.bb469: ; preds = %if.then12, %if.then12 - %126 = load i32, ptr %mModifier.i, align 4 - switch i32 %126, label %FormatError [ + %123 = load i32, ptr %mModifier.i, align 4 + switch i32 %123, label %FormatError [ i32 12, label %sw.bb477 i32 1, label %sw.bb477 i32 13, label %sw.bb493 @@ -1319,10 +1316,10 @@ sw.bb477: ; preds = %sw.bb469, %sw.bb469 vaarg.in_reg481: ; preds = %sw.bb477 %reg_save_area482 = load ptr, ptr %1, align 8 - %127 = zext nneg i32 %gp_offset479 to i64 - %128 = getelementptr i8, ptr %reg_save_area482, i64 %127 - %129 = add nuw nsw i32 %gp_offset479, 8 - store i32 %129, ptr %arguments, align 8 + %124 = zext nneg i32 %gp_offset479 to i64 + %125 = getelementptr i8, ptr %reg_save_area482, i64 %124 + %126 = add nuw nsw i32 %gp_offset479, 8 + store i32 %126, ptr %arguments, align 8 br label %vaarg.end487 vaarg.in_mem483: ; preds = %sw.bb477 @@ -1332,9 +1329,9 @@ vaarg.in_mem483: ; preds = %sw.bb477 br label %vaarg.end487 vaarg.end487: ; preds = %vaarg.in_mem483, %vaarg.in_reg481 - %vaarg.addr488 = phi ptr [ %128, %vaarg.in_reg481 ], [ %overflow_arg_area485, %vaarg.in_mem483 ] - %130 = load i32, ptr %vaarg.addr488, align 4 - %conv489 = trunc i32 %130 to i8 + %vaarg.addr488 = phi ptr [ %125, %vaarg.in_reg481 ], [ %overflow_arg_area485, %vaarg.in_mem483 ] + %127 = load i32, ptr %vaarg.addr488, align 4 + %conv489 = trunc i32 %127 to i8 store i8 %conv489, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1345,10 +1342,10 @@ sw.bb493: ; preds = %sw.bb469 vaarg.in_reg497: ; preds = %sw.bb493 %reg_save_area498 = load ptr, ptr %1, align 8 - %131 = zext nneg i32 %gp_offset495 to i64 - %132 = getelementptr i8, ptr %reg_save_area498, i64 %131 - %133 = add nuw nsw i32 %gp_offset495, 8 - store i32 %133, ptr %arguments, align 8 + %128 = zext nneg i32 %gp_offset495 to i64 + %129 = getelementptr i8, ptr %reg_save_area498, i64 %128 + %130 = add nuw nsw i32 %gp_offset495, 8 + store i32 %130, ptr %arguments, align 8 br label %vaarg.end503 vaarg.in_mem499: ; preds = %sw.bb493 @@ -1358,9 +1355,9 @@ vaarg.in_mem499: ; preds = %sw.bb493 br label %vaarg.end503 vaarg.end503: ; preds = %vaarg.in_mem499, %vaarg.in_reg497 - %vaarg.addr504 = phi ptr [ %132, %vaarg.in_reg497 ], [ %overflow_arg_area501, %vaarg.in_mem499 ] - %134 = load i32, ptr %vaarg.addr504, align 4 - %conv507 = trunc i32 %134 to i8 + %vaarg.addr504 = phi ptr [ %129, %vaarg.in_reg497 ], [ %overflow_arg_area501, %vaarg.in_mem499 ] + %131 = load i32, ptr %vaarg.addr504, align 4 + %conv507 = trunc i32 %131 to i8 store i8 %conv507, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1371,10 +1368,10 @@ sw.bb510: ; preds = %sw.bb469, %sw.bb469 vaarg.in_reg514: ; preds = %sw.bb510 %reg_save_area515 = load ptr, ptr %1, align 8 - %135 = zext nneg i32 %gp_offset512 to i64 - %136 = getelementptr i8, ptr %reg_save_area515, i64 %135 - %137 = add nuw nsw i32 %gp_offset512, 8 - store i32 %137, ptr %arguments, align 8 + %132 = zext nneg i32 %gp_offset512 to i64 + %133 = getelementptr i8, ptr %reg_save_area515, i64 %132 + %134 = add nuw nsw i32 %gp_offset512, 8 + store i32 %134, ptr %arguments, align 8 br label %vaarg.end520 vaarg.in_mem516: ; preds = %sw.bb510 @@ -1384,9 +1381,9 @@ vaarg.in_mem516: ; preds = %sw.bb510 br label %vaarg.end520 vaarg.end520: ; preds = %vaarg.in_mem516, %vaarg.in_reg514 - %vaarg.addr521 = phi ptr [ %136, %vaarg.in_reg514 ], [ %overflow_arg_area518, %vaarg.in_mem516 ] - %138 = load i32, ptr %vaarg.addr521, align 4 - %conv522 = trunc i32 %138 to i8 + %vaarg.addr521 = phi ptr [ %133, %vaarg.in_reg514 ], [ %overflow_arg_area518, %vaarg.in_mem516 ] + %135 = load i32, ptr %vaarg.addr521, align 4 + %conv522 = trunc i32 %135 to i8 store i8 %conv522, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1420,8 +1417,8 @@ while.cond.outer.backedge: ; preds = %if.end10, %if.end54 %lValue.0.ph.be = phi i64 [ %lValue.3, %land.lhs.true ], [ %lValue.3, %FormatError ], [ %lValue.4, %if.end546 ], [ %lValue.0.ph261, %if.end10 ] %nWriteCountSum.0.ph.be = phi i32 [ %add535, %land.lhs.true ], [ %add535, %FormatError ], [ %add547, %if.end546 ], [ %nWriteCountSum.1, %if.end10 ] %pFormatCurrent.0.ph.be = phi ptr [ %call13, %land.lhs.true ], [ %call13, %FormatError ], [ %call13, %if.end546 ], [ %pFormatCurrent.1, %if.end10 ] - %139 = load i8, ptr %pFormatCurrent.0.ph.be, align 1 - %tobool.not253 = icmp eq i8 %139, 0 + %136 = load i8, ptr %pFormatCurrent.0.ph.be, align 1 + %tobool.not253 = icmp eq i8 %136, 0 br i1 %tobool.not253, label %return, label %while.cond1.preheader.lr.ph, !llvm.loop !26 sw.epilog542: ; preds = %vaarg.end487, %vaarg.end503, %vaarg.end520, %sw.bb526, %if.end369, %if.end341, %if.end169 diff --git a/bench/ffmpeg/optimized/pngdec.ll b/bench/ffmpeg/optimized/pngdec.ll index 34984ebcf1c..9eacdc292b8 100644 --- a/bench/ffmpeg/optimized/pngdec.ll +++ b/bench/ffmpeg/optimized/pngdec.ll @@ -3299,11 +3299,10 @@ bytestream2_get_byte.exit.i394: ; preds = %.lr.ph51.i, %1013 br i1 %1032, label %.lr.ph.i389, label %.loopexit.i .lr.ph.i389: ; preds = %.preheader47.i - %1033 = lshr i32 %.0.i495, 1 + %1033 = lshr i64 %188, 1 %notmask.i.i = shl nsw i32 -1, %1030 %1034 = xor i32 %notmask.i.i, -1 %1035 = icmp sgt i32 %1030, 8 - %wide.trip.count58.i = zext nneg i32 %1033 to i64 br i1 %1035, label %.lr.ph.split.us.preheader.i, label %.lr.ph.split.i .lr.ph.split.us.preheader.i: ; preds = %.lr.ph.i389 @@ -3332,7 +3331,7 @@ bytestream2_get_be16.exit.us.i: ; preds = %.lr.ph.split.us.i, %1046 = getelementptr inbounds nuw i8, ptr %58, i64 %1045 store i16 %.0.i46.us.i, ptr %1046, align 1, !tbaa !4 %indvars.iv.next56.i = add nuw nsw i64 %indvars.iv55.i, 1 - %exitcond59.not.i = icmp eq i64 %indvars.iv.next56.i, %wide.trip.count58.i + %exitcond59.not.i = icmp eq i64 %indvars.iv.next56.i, %1033 br i1 %exitcond59.not.i, label %.loopexit.i, label %.lr.ph.split.us.i, !llvm.loop !182 .lr.ph.split.i: ; preds = %.lr.ph.i389, %bytestream2_get_be16.exit.i @@ -3358,7 +3357,7 @@ bytestream2_get_be16.exit.i: ; preds = %.lr.ph.split.i, %10 %1057 = getelementptr inbounds nuw i8, ptr %58, i64 %indvars.iv.i390 store i8 %.0.i46.i, ptr %1057, align 1, !tbaa !4 %indvars.iv.next.i391 = add nuw nsw i64 %indvars.iv.i390, 1 - %exitcond.not.i392 = icmp eq i64 %indvars.iv.next.i391, %wide.trip.count58.i + %exitcond.not.i392 = icmp eq i64 %indvars.iv.next.i391, %1033 br i1 %exitcond.not.i392, label %.loopexit.i, label %.lr.ph.split.i, !llvm.loop !182 .loopexit.i: ; preds = %bytestream2_get_be16.exit.i, %bytestream2_get_be16.exit.us.i, %bytestream2_get_byte.exit.i394, %.preheader47.i, %.preheader.i393 diff --git a/bench/fmt/optimized/scan-test.ll b/bench/fmt/optimized/scan-test.ll index 90b2bfd8126..f394f4b48a0 100644 --- a/bench/fmt/optimized/scan-test.ll +++ b/bench/fmt/optimized/scan-test.ll @@ -10661,13 +10661,13 @@ define linkonce_odr hidden void @_ZN3fmt3v1114basic_scan_argINS0_12scan_contextE %10 = alloca %"struct.fmt::v11::format_specs", align 4 %11 = alloca %"struct.fmt::v11::format_specs", align 4 %12 = load i32, ptr %1, align 8, !tbaa !263 - switch i32 %12, label %203 [ - i32 6, label %180 + switch i32 %12, label %202 [ + i32 6, label %179 i32 1, label %13 i32 2, label %42 i32 3, label %81 i32 4, label %110 - i32 5, label %145 + i32 5, label %144 ] 13: ; preds = %3 @@ -10745,7 +10745,7 @@ _ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !398 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !395 - br label %204 + br label %203 42: ; preds = %3 %43 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10854,7 +10854,7 @@ _ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 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) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.9) - br label %204 + br label %203 81: ; preds = %3 %82 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10931,7 +10931,7 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !411 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !408 - br label %204 + br label %203 110: ; preds = %3 %111 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10964,69 +10964,68 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.8) #37, !noalias !417 unreachable -120: ; preds = %138, %.preheader.i27 - %121 = phi ptr [ %134, %138 ], [ %.pre41.i29, %.preheader.i27 ] - %122 = phi ptr [ %133, %138 ], [ %.pre.i28, %.preheader.i27 ] - %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %138 ], [ %.sroa.085.0.copyload, %.preheader.i27 ] - %.024.i30 = phi i32 [ %136, %138 ], [ 0, %.preheader.i27 ] - %.023.i31 = phi i64 [ %127, %138 ], [ 0, %.preheader.i27 ] - %.0.i32 = phi i8 [ %135, %138 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] +120: ; preds = %137, %.preheader.i27 + %121 = phi ptr [ %133, %137 ], [ %.pre41.i29, %.preheader.i27 ] + %122 = phi ptr [ %132, %137 ], [ %.pre.i28, %.preheader.i27 ] + %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %137 ], [ %.sroa.085.0.copyload, %.preheader.i27 ] + %.024.i30 = phi i32 [ %135, %137 ], [ 0, %.preheader.i27 ] + %.023.i31 = phi i64 [ %126, %137 ], [ 0, %.preheader.i27 ] + %.0.i32 = phi i8 [ %134, %137 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] %123 = mul i64 %.023.i31, 10 - %124 = zext nneg i8 %.0.i32 to i64 - %125 = add nuw nsw i64 %124, 4294967248 - %126 = and i64 %125, 4294967295 - %127 = add i64 %126, %123 - %128 = getelementptr inbounds nuw i8, ptr %122, i64 1 - store ptr %128, ptr %117, align 8, !tbaa !17, !noalias !417 - %.not.i.i.i33 = icmp eq ptr %128, %121 + %124 = and i8 %.0.i32, 15 + %125 = zext nneg i8 %124 to i64 + %126 = add i64 %123, %125 + %127 = getelementptr inbounds nuw i8, ptr %122, i64 1 + store ptr %127, ptr %117, align 8, !tbaa !17, !noalias !417 + %.not.i.i.i33 = icmp eq ptr %127, %121 br i1 %.not.i.i.i33, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38: ; preds = %120 - %129 = load ptr, ptr %.sroa.486.0.copyload, align 8, !tbaa !24, !noalias !417 - %130 = load ptr, ptr %129, align 8, !noalias !417 - tail call void %130(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.486.0.copyload), !noalias !417 - %131 = load ptr, ptr %117, align 8, !tbaa !17, !noalias !417 - %132 = load ptr, ptr %118, align 8, !tbaa !23, !noalias !417 - %.not.i.i39 = icmp eq ptr %131, %132 + %128 = load ptr, ptr %.sroa.486.0.copyload, align 8, !tbaa !24, !noalias !417 + %129 = load ptr, ptr %128, align 8, !noalias !417 + tail call void %129(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.486.0.copyload), !noalias !417 + %130 = load ptr, ptr %117, align 8, !tbaa !17, !noalias !417 + %131 = load ptr, ptr %118, align 8, !tbaa !23, !noalias !417 + %.not.i.i39 = icmp eq ptr %130, %131 %spec.select.i40 = select i1 %.not.i.i39, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.031.0.copyload35.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, %120 - %133 = phi ptr [ %128, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] - %134 = phi ptr [ %121, %120 ], [ %132, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] + %132 = phi ptr [ %127, %120 ], [ %130, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] + %133 = phi ptr [ %121, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %120 ], [ %spec.select.i40, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] - %135 = load i8, ptr %133, align 1, !tbaa !4, !noalias !417 - %136 = add nuw nsw i32 %.024.i30, 1 - %137 = add i8 %135, -58 - %or.cond5.i35 = icmp ult i8 %137, -10 - br i1 %or.cond5.i35, label %140, label %138 + %134 = load i8, ptr %132, align 1, !tbaa !4, !noalias !417 + %135 = add nuw nsw i32 %.024.i30, 1 + %136 = add i8 %134, -58 + %or.cond5.i35 = icmp ult i8 %136, -10 + br i1 %or.cond5.i35, label %139, label %137 -138: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 - %139 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !417 - %.not33.i = icmp eq ptr %139, null - br i1 %.not33.i, label %140, label %120, !llvm.loop !420 +137: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 + %138 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !417 + %.not33.i = icmp eq ptr %138, null + br i1 %.not33.i, label %139, label %120, !llvm.loop !420 -140: ; preds = %138, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 - %141 = icmp samesign ult i32 %.024.i30, 9 - br i1 %141, label %.sink.split.i37, label %142 +139: ; preds = %137, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 + %140 = icmp samesign ult i32 %.024.i30, 9 + br i1 %140, label %.sink.split.i37, label %141 -142: ; preds = %140 - %143 = icmp ne i32 %136, 10 - %.not.i36 = icmp ugt i64 %127, 2147483647 - %or.cond27.i = select i1 %143, i1 true, i1 %.not.i36 - br i1 %or.cond27.i, label %144, label %.sink.split.i37 +141: ; preds = %139 + %142 = icmp ne i32 %135, 10 + %.not.i36 = icmp ugt i64 %126, 2147483647 + %or.cond27.i = select i1 %142, i1 true, i1 %.not.i36 + br i1 %or.cond27.i, label %143, label %.sink.split.i37 -144: ; preds = %142 +143: ; preds = %141 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.25) #37, !noalias !417 unreachable -.sink.split.i37: ; preds = %142, %140 - store i64 %127, ptr %112, align 8, !tbaa !166, !noalias !417 +.sink.split.i37: ; preds = %141, %139 + store i64 %126, ptr %112, align 8, !tbaa !166, !noalias !417 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %110, %.sink.split.i37 %.sroa.075.0 = phi ptr [ %.sroa.085.0.copyload, %110 ], [ %.sroa.031.0.copyload36.i, %.sink.split.i37 ] - %.sroa.780.0 = phi i8 [ %.sroa.587.0.copyload, %110 ], [ %135, %.sink.split.i37 ] + %.sroa.780.0 = phi i8 [ %.sroa.587.0.copyload, %110 ], [ %134, %.sink.split.i37 ] store ptr %.sroa.075.0, ptr %0, align 8 %.sroa.677.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.486.0.copyload, ptr %.sroa.677.0..sroa_idx, align 8 @@ -11035,11 +11034,11 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.983.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.983.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.983, i64 7, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.983) - br label %204 + br label %203 -145: ; preds = %3 - %146 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %147 = load ptr, ptr %146, align 8, !tbaa !4 +144: ; preds = %3 + %145 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %146 = load ptr, ptr %145, align 8, !tbaa !4 %.sroa.099.0.copyload = load ptr, ptr %2, align 8, !tbaa !12, !noalias !421 %.sroa.4100.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4100.0.copyload = load ptr, ptr %.sroa.4100.0..sroa_idx, align 8, !tbaa !33, !noalias !421 @@ -11048,82 +11047,82 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.6102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 17 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.997) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6102.0..sroa_idx, i64 7, i1 false) - %148 = load ptr, ptr %.sroa.099.0.copyload, align 8, !tbaa !15, !noalias !424 - %.not48.i = icmp eq ptr %148, null + %147 = load ptr, ptr %.sroa.099.0.copyload, align 8, !tbaa !15, !noalias !424 + %.not48.i = icmp eq ptr %147, null br i1 %.not48.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %145 - %149 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 8 - %150 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 16 - %151 = getelementptr inbounds nuw i8, ptr %147, i64 8 - %152 = getelementptr inbounds nuw i8, ptr %147, i64 16 - br label %153 +.lr.ph.i: ; preds = %144 + %148 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 8 + %149 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 16 + %150 = getelementptr inbounds nuw i8, ptr %146, i64 8 + %151 = getelementptr inbounds nuw i8, ptr %146, i64 16 + br label %152 -153: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %.lr.ph.i +152: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %.lr.ph.i %.sroa.03.0.copyload69.i = phi ptr [ %.sroa.099.0.copyload, %.lr.ph.i ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %154 = phi i8 [ %.sroa.5101.0.copyload, %.lr.ph.i ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %.not.i43 = icmp eq i8 %154, 32 - br i1 %.not.i43, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %155 - -155: ; preds = %153 - %156 = load ptr, ptr %149, align 8, !tbaa !17, !noalias !427 - %157 = load ptr, ptr %150, align 8, !tbaa !23, !noalias !427 - %158 = getelementptr inbounds nuw i8, ptr %156, i64 1 - store ptr %158, ptr %149, align 8, !tbaa !17, !noalias !427 - %.not.i.i.i.i = icmp eq ptr %158, %157 + %153 = phi i8 [ %.sroa.5101.0.copyload, %.lr.ph.i ], [ %163, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] + %.not.i43 = icmp eq i8 %153, 32 + br i1 %.not.i43, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %154 + +154: ; preds = %152 + %155 = load ptr, ptr %148, align 8, !tbaa !17, !noalias !427 + %156 = load ptr, ptr %149, align 8, !tbaa !23, !noalias !427 + %157 = getelementptr inbounds nuw i8, ptr %155, i64 1 + store ptr %157, ptr %148, align 8, !tbaa !17, !noalias !427 + %.not.i.i.i.i = icmp eq ptr %157, %156 br i1 %.not.i.i.i.i, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i -_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %155 - %159 = load ptr, ptr %.sroa.4100.0.copyload, align 8, !tbaa !24, !noalias !427 - %160 = load ptr, ptr %159, align 8, !noalias !427 - tail call void %160(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.4100.0.copyload), !noalias !427 - %161 = load ptr, ptr %149, align 8, !tbaa !17, !noalias !427 - %162 = load ptr, ptr %150, align 8, !tbaa !23, !noalias !427 - %.not.i.i.i44 = icmp eq ptr %161, %162 +_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %154 + %158 = load ptr, ptr %.sroa.4100.0.copyload, align 8, !tbaa !24, !noalias !427 + %159 = load ptr, ptr %158, align 8, !noalias !427 + tail call void %159(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.4100.0.copyload), !noalias !427 + %160 = load ptr, ptr %148, align 8, !tbaa !17, !noalias !427 + %161 = load ptr, ptr %149, align 8, !tbaa !23, !noalias !427 + %.not.i.i.i44 = icmp eq ptr %160, %161 %spec.select.i45 = select i1 %.not.i.i.i44, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.03.0.copyload69.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i -_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, %155 - %163 = phi ptr [ %158, %155 ], [ %161, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] - %.sroa.03.0.copyload5.i = phi ptr [ %.sroa.03.0.copyload69.i, %155 ], [ %spec.select.i45, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] - %164 = load i8, ptr %163, align 1, !tbaa !4, !noalias !427 - %165 = load i64, ptr %151, align 8, !tbaa !26, !noalias !424 - %166 = add i64 %165, 1 - %167 = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 - %168 = icmp eq ptr %167, %152 - br i1 %168, label %169, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - -169: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i - %170 = icmp ult i64 %165, 16 - tail call void @llvm.assume(i1 %170) +_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, %154 + %162 = phi ptr [ %157, %154 ], [ %160, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] + %.sroa.03.0.copyload5.i = phi ptr [ %.sroa.03.0.copyload69.i, %154 ], [ %spec.select.i45, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] + %163 = load i8, ptr %162, align 1, !tbaa !4, !noalias !427 + %164 = load i64, ptr %150, align 8, !tbaa !26, !noalias !424 + %165 = add i64 %164, 1 + %166 = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 + %167 = icmp eq ptr %166, %151 + br i1 %167, label %168, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + +168: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i + %169 = icmp ult i64 %164, 16 + tail call void @llvm.assume(i1 %169) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %169, %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i - %171 = load i64, ptr %152, align 8, !noalias !424 - %172 = select i1 %168, i64 15, i64 %171 - %173 = icmp ugt i64 %166, %172 - br i1 %173, label %174, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %168, %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i + %170 = load i64, ptr %151, align 8, !noalias !424 + %171 = select i1 %167, i64 15, i64 %170 + %172 = icmp ugt i64 %165, %171 + br i1 %172, label %173, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i -174: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %147, i64 noundef %165, i64 noundef 0, ptr noundef null, i64 noundef 1), !noalias !424 - %.pre.i.i = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 +173: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %146, i64 noundef %164, i64 noundef 0, ptr noundef null, i64 noundef 1), !noalias !424 + %.pre.i.i = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; preds = %174, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - %175 = phi ptr [ %.pre.i.i, %174 ], [ %167, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] - %176 = getelementptr inbounds nuw i8, ptr %175, i64 %165 - store i8 %154, ptr %176, align 1, !tbaa !4, !noalias !424 - store i64 %166, ptr %151, align 8, !tbaa !26, !noalias !424 - %177 = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 - %178 = getelementptr inbounds nuw i8, ptr %177, i64 %166 - store i8 0, ptr %178, align 1, !tbaa !4, !noalias !424 - %179 = load ptr, ptr %.sroa.03.0.copyload5.i, align 8, !tbaa !15, !noalias !424 - %.not4.i = icmp eq ptr %179, null - br i1 %.not4.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %153, !llvm.loop !31 - -_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit: ; preds = %153, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %145 - %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %145 ], [ 32, %153 ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %.sroa.03.0.copyload6.lcssa.i = phi ptr [ %.sroa.099.0.copyload, %145 ], [ %.sroa.03.0.copyload69.i, %153 ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; preds = %173, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + %174 = phi ptr [ %.pre.i.i, %173 ], [ %166, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] + %175 = getelementptr inbounds nuw i8, ptr %174, i64 %164 + store i8 %153, ptr %175, align 1, !tbaa !4, !noalias !424 + store i64 %165, ptr %150, align 8, !tbaa !26, !noalias !424 + %176 = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 + %177 = getelementptr inbounds nuw i8, ptr %176, i64 %165 + store i8 0, ptr %177, align 1, !tbaa !4, !noalias !424 + %178 = load ptr, ptr %.sroa.03.0.copyload5.i, align 8, !tbaa !15, !noalias !424 + %.not4.i = icmp eq ptr %178, null + br i1 %.not4.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %152, !llvm.loop !31 + +_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit: ; preds = %152, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %144 + %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %144 ], [ 32, %152 ], [ %163, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] + %.sroa.03.0.copyload6.lcssa.i = phi ptr [ %.sroa.099.0.copyload, %144 ], [ %.sroa.03.0.copyload69.i, %152 ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] store ptr %.sroa.03.0.copyload6.lcssa.i, ptr %0, align 8, !tbaa !12 %.sroa.691.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4100.0.copyload, ptr %.sroa.691.0..sroa_idx, align 8, !tbaa !33 @@ -11132,90 +11131,90 @@ _ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcS %.sroa.997.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997, i64 7, i1 false), !tbaa.struct !37 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.997) - br label %204 + br label %203 -180: ; preds = %3 - %181 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %182 = load ptr, ptr %181, align 8, !tbaa !4 +179: ; preds = %3 + %180 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %181 = load ptr, ptr %180, align 8, !tbaa !4 %.sroa.0106.0.copyload = load ptr, ptr %2, align 8, !tbaa !12, !noalias !430 %.sroa.4107.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4107.0.copyload = load ptr, ptr %.sroa.4107.0..sroa_idx, align 8, !tbaa !33, !noalias !430 %.sroa.5108.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %183 = load i64, ptr %.sroa.5108.0..sroa_idx, align 8, !noalias !430 + %182 = load i64, ptr %.sroa.5108.0..sroa_idx, align 8, !noalias !430 tail call void @llvm.experimental.noalias.scope.decl(metadata !433) - %184 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 24 - %185 = load i8, ptr %184, align 8, !tbaa !35, !range !36, !noalias !433, !noundef !37 - %186 = trunc nuw i8 %185 to i1 - br i1 %186, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i - -_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i: ; preds = %180 - %187 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 8 - %188 = load ptr, ptr %187, align 8, !tbaa !17, !noalias !433 - %189 = ptrtoint ptr %188 to i64 - %190 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 16 - %191 = load ptr, ptr %190, align 8, !tbaa !23, !noalias !433 - %192 = ptrtoint ptr %191 to i64 - %.not31.i48 = icmp eq ptr %188, null + %183 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 24 + %184 = load i8, ptr %183, align 8, !tbaa !35, !range !36, !noalias !433, !noundef !37 + %185 = trunc nuw i8 %184 to i1 + br i1 %185, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i + +_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i: ; preds = %179 + %186 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 8 + %187 = load ptr, ptr %186, align 8, !tbaa !17, !noalias !433 + %188 = ptrtoint ptr %187 to i64 + %189 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 16 + %190 = load ptr, ptr %189, align 8, !tbaa !23, !noalias !433 + %191 = ptrtoint ptr %190 to i64 + %.not31.i48 = icmp eq ptr %187, null br i1 %.not31.i48, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i, label %.preheader.i49 .preheader.i49: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i - %.not32.i = icmp eq ptr %188, %191 + %.not32.i = icmp eq ptr %187, %190 br i1 %.not32.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.preheader.i49 - %193 = sub i64 %192, %189 - %scevgep.i = getelementptr i8, ptr %188, i64 %193 + %192 = sub i64 %191, %188 + %scevgep.i = getelementptr i8, ptr %187, i64 %192 br label %.lr.ph.i50 -_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, %180 +_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, %179 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str) #37, !noalias !433 unreachable -.lr.ph.i50: ; preds = %195, %.lr.ph.preheader.i - %.033.i = phi ptr [ %196, %195 ], [ %188, %.lr.ph.preheader.i ] - %194 = load i8, ptr %.033.i, align 1, !tbaa !4, !noalias !433 - %.not6.i = icmp eq i8 %194, 32 - br i1 %.not6.i, label %.critedge.loopexit.i, label %195 +.lr.ph.i50: ; preds = %194, %.lr.ph.preheader.i + %.033.i = phi ptr [ %195, %194 ], [ %187, %.lr.ph.preheader.i ] + %193 = load i8, ptr %.033.i, align 1, !tbaa !4, !noalias !433 + %.not6.i = icmp eq i8 %193, 32 + br i1 %.not6.i, label %.critedge.loopexit.i, label %194 -195: ; preds = %.lr.ph.i50 - %196 = getelementptr inbounds nuw i8, ptr %.033.i, i64 1 - %.not.i51 = icmp eq ptr %196, %191 +194: ; preds = %.lr.ph.i50 + %195 = getelementptr inbounds nuw i8, ptr %.033.i, i64 1 + %.not.i51 = icmp eq ptr %195, %190 br i1 %.not.i51, label %.critedge.loopexit.i, label %.lr.ph.i50, !llvm.loop !38 -.critedge.loopexit.i: ; preds = %195, %.lr.ph.i50 - %.0.lcssa.ph.i = phi ptr [ %.033.i, %.lr.ph.i50 ], [ %scevgep.i, %195 ] +.critedge.loopexit.i: ; preds = %194, %.lr.ph.i50 + %.0.lcssa.ph.i = phi ptr [ %.033.i, %.lr.ph.i50 ], [ %scevgep.i, %194 ] %.pre.i52 = ptrtoint ptr %.0.lcssa.ph.i to i64 br label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit _ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit: ; preds = %.preheader.i49, %.critedge.loopexit.i - %.pre-phi.i = phi i64 [ %.pre.i52, %.critedge.loopexit.i ], [ %189, %.preheader.i49 ] - %197 = sub i64 %.pre-phi.i, %189 - store ptr %188, ptr %182, align 8, !tbaa !15, !noalias !433 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %182, i64 8 - store i64 %197, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !39, !noalias !433 + %.pre-phi.i = phi i64 [ %.pre.i52, %.critedge.loopexit.i ], [ %188, %.preheader.i49 ] + %196 = sub i64 %.pre-phi.i, %188 + store ptr %187, ptr %181, align 8, !tbaa !15, !noalias !433 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %181, i64 8 + store i64 %196, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !39, !noalias !433 %.sroa.721.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 17 - %.sroa.5105.sroa.0.1.extract.shift = lshr i64 %183, 8 + %.sroa.5105.sroa.0.1.extract.shift = lshr i64 %182, 8 %.sroa.5105.sroa.0.1.extract.trunc = trunc nuw i64 %.sroa.5105.sroa.0.1.extract.shift to i56 store i56 %.sroa.5105.sroa.0.1.extract.trunc, ptr %.sroa.721.0..sroa_idx.i, align 1 - %198 = load ptr, ptr %187, align 8, !tbaa !15, !noalias !436 - %199 = getelementptr inbounds nuw i8, ptr %198, i64 %197 - store ptr %199, ptr %187, align 8, !tbaa !15, !noalias !436 - %200 = load i8, ptr %199, align 1, !tbaa !4, !noalias !436 - %201 = load ptr, ptr %190, align 8, !tbaa !23, !noalias !436 - %202 = icmp eq ptr %199, %201 - %spec.select.i53 = select i1 %202, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.0106.0.copyload + %197 = load ptr, ptr %186, align 8, !tbaa !15, !noalias !436 + %198 = getelementptr inbounds nuw i8, ptr %197, i64 %196 + store ptr %198, ptr %186, align 8, !tbaa !15, !noalias !436 + %199 = load i8, ptr %198, align 1, !tbaa !4, !noalias !436 + %200 = load ptr, ptr %189, align 8, !tbaa !23, !noalias !436 + %201 = icmp eq ptr %198, %200 + %spec.select.i53 = select i1 %201, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.0106.0.copyload store ptr %spec.select.i53, ptr %0, align 8, !tbaa !12, !alias.scope !433 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4107.0.copyload, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !33, !alias.scope !433 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i8 %200, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !4, !alias.scope !433 - br label %204 + store i8 %199, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !4, !alias.scope !433 + br label %203 -203: ; preds = %3 +202: ; preds = %3 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) - br label %204 + br label %203 -204: ; preds = %203, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit +203: ; preds = %202, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit ret void } @@ -11474,7 +11473,7 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st 8: ; preds = %4 tail call void @_ZN3fmt3v116detail8read_hexIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_(ptr dead_on_unwind writable sret(%"class.fmt::v11::detail::scan_buffer::iterator") align 8 %0, ptr noundef nonnull byval(%"class.fmt::v11::detail::scan_buffer::iterator") align 8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) - br label %42 + br label %41 9: ; preds = %4 %.sroa.09.0.copyload = load ptr, ptr %1, align 8, !tbaa !12 @@ -11503,68 +11502,67 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.8) #37, !noalias !443 unreachable -17: ; preds = %35, %.preheader.i - %18 = phi ptr [ %31, %35 ], [ %.pre41.i, %.preheader.i ] - %19 = phi ptr [ %30, %35 ], [ %.pre.i, %.preheader.i ] - %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %35 ], [ %.sroa.09.0.copyload, %.preheader.i ] - %.024.i = phi i32 [ %33, %35 ], [ 0, %.preheader.i ] - %.023.i = phi i64 [ %24, %35 ], [ 0, %.preheader.i ] - %.0.i = phi i8 [ %32, %35 ], [ %.sroa.3.0.copyload, %.preheader.i ] +17: ; preds = %34, %.preheader.i + %18 = phi ptr [ %30, %34 ], [ %.pre41.i, %.preheader.i ] + %19 = phi ptr [ %29, %34 ], [ %.pre.i, %.preheader.i ] + %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %34 ], [ %.sroa.09.0.copyload, %.preheader.i ] + %.024.i = phi i32 [ %32, %34 ], [ 0, %.preheader.i ] + %.023.i = phi i64 [ %23, %34 ], [ 0, %.preheader.i ] + %.0.i = phi i8 [ %31, %34 ], [ %.sroa.3.0.copyload, %.preheader.i ] %20 = mul i64 %.023.i, 10 - %21 = zext nneg i8 %.0.i to i64 - %22 = add nuw nsw i64 %21, 4294967248 - %23 = and i64 %22, 4294967295 - %24 = add i64 %23, %20 - %25 = getelementptr inbounds nuw i8, ptr %19, i64 1 - store ptr %25, ptr %14, align 8, !tbaa !17, !noalias !443 - %.not.i.i.i = icmp eq ptr %25, %18 + %21 = and i8 %.0.i, 15 + %22 = zext nneg i8 %21 to i64 + %23 = add i64 %20, %22 + %24 = getelementptr inbounds nuw i8, ptr %19, i64 1 + store ptr %24, ptr %14, align 8, !tbaa !17, !noalias !443 + %.not.i.i.i = icmp eq ptr %24, %18 br i1 %.not.i.i.i, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i: ; preds = %17 - %26 = load ptr, ptr %.sroa.2.0.copyload, align 8, !tbaa !24, !noalias !443 - %27 = load ptr, ptr %26, align 8, !noalias !443 - tail call void %27(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.2.0.copyload), !noalias !443 - %28 = load ptr, ptr %14, align 8, !tbaa !17, !noalias !443 - %29 = load ptr, ptr %15, align 8, !tbaa !23, !noalias !443 - %.not.i.i = icmp eq ptr %28, %29 + %25 = load ptr, ptr %.sroa.2.0.copyload, align 8, !tbaa !24, !noalias !443 + %26 = load ptr, ptr %25, align 8, !noalias !443 + tail call void %26(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.2.0.copyload), !noalias !443 + %27 = load ptr, ptr %14, align 8, !tbaa !17, !noalias !443 + %28 = load ptr, ptr %15, align 8, !tbaa !23, !noalias !443 + %.not.i.i = icmp eq ptr %27, %28 %spec.select.i = select i1 %.not.i.i, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.031.0.copyload35.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, %17 - %30 = phi ptr [ %25, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] - %31 = phi ptr [ %18, %17 ], [ %29, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] + %29 = phi ptr [ %24, %17 ], [ %27, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] + %30 = phi ptr [ %18, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %17 ], [ %spec.select.i, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] - %32 = load i8, ptr %30, align 1, !tbaa !4, !noalias !443 - %33 = add nuw nsw i32 %.024.i, 1 - %34 = add i8 %32, -58 - %or.cond5.i = icmp ult i8 %34, -10 - br i1 %or.cond5.i, label %37, label %35 - -35: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i - %36 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !443 - %.not33.i = icmp eq ptr %36, null - br i1 %.not33.i, label %37, label %17, !llvm.loop !420 - -37: ; preds = %35, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i - %38 = icmp samesign ult i32 %.024.i, 9 - br i1 %38, label %.sink.split.i, label %39 - -39: ; preds = %37 - %40 = icmp ne i32 %33, 10 - %.not.i = icmp ugt i64 %24, 2147483647 - %or.cond27.i = select i1 %40, i1 true, i1 %.not.i - br i1 %or.cond27.i, label %41, label %.sink.split.i - -41: ; preds = %39 + %31 = load i8, ptr %29, align 1, !tbaa !4, !noalias !443 + %32 = add nuw nsw i32 %.024.i, 1 + %33 = add i8 %31, -58 + %or.cond5.i = icmp ult i8 %33, -10 + br i1 %or.cond5.i, label %36, label %34 + +34: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i + %35 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !443 + %.not33.i = icmp eq ptr %35, null + br i1 %.not33.i, label %36, label %17, !llvm.loop !420 + +36: ; preds = %34, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i + %37 = icmp samesign ult i32 %.024.i, 9 + br i1 %37, label %.sink.split.i, label %38 + +38: ; preds = %36 + %39 = icmp ne i32 %32, 10 + %.not.i = icmp ugt i64 %23, 2147483647 + %or.cond27.i = select i1 %39, i1 true, i1 %.not.i + br i1 %or.cond27.i, label %40, label %.sink.split.i + +40: ; preds = %38 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.25) #37, !noalias !443 unreachable -.sink.split.i: ; preds = %39, %37 - store i64 %24, ptr %2, align 8, !tbaa !166, !noalias !443 +.sink.split.i: ; preds = %38, %36 + store i64 %23, ptr %2, align 8, !tbaa !166, !noalias !443 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %9, %.sink.split.i - %.sroa.7.0 = phi i8 [ %.sroa.3.0.copyload, %9 ], [ %32, %.sink.split.i ] + %.sroa.7.0 = phi i8 [ %.sroa.3.0.copyload, %9 ], [ %31, %.sink.split.i ] %.sroa.0.0 = phi ptr [ %.sroa.09.0.copyload, %9 ], [ %.sroa.031.0.copyload36.i, %.sink.split.i ] store ptr %.sroa.0.0, ptr %0, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -11573,9 +11571,9 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type store i8 %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 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.4.0..sroa_idx, i64 7, i1 false) - br label %42 + br label %41 -42: ; preds = %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %8 +41: ; preds = %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %8 ret void } diff --git a/bench/git/optimized/cache-tree.ll b/bench/git/optimized/cache-tree.ll index 3ac831eb78c..7e65ab601bc 100644 --- a/bench/git/optimized/cache-tree.ll +++ b/bench/git/optimized/cache-tree.ll @@ -602,22 +602,22 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br i1 %.not.us.i, label %23, label %14 14: ; preds = %.lr.ph.split.us.i - %15 = add i32 %.03768.us.i, 1 - %16 = icmp ugt i32 %15, 10 - %17 = load ptr, ptr @stderr, align 8, !tbaa !46 - br i1 %16, label %.thread57.i, label %18 + %15 = icmp ugt i32 %.03768.us.i, 9 + br i1 %15, label %.thread57.i, label %16 -18: ; preds = %14 +16: ; preds = %14 + %17 = add nuw nsw i32 %.03768.us.i, 1 + %18 = load ptr, ptr @stderr, align 8, !tbaa !46 %19 = getelementptr inbounds nuw i8, ptr %10, i64 108 %20 = getelementptr inbounds nuw i8, ptr %10, i64 72 %21 = tail call ptr @oid_to_hex(ptr noundef nonnull %20) #19 - %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str.16, ptr noundef nonnull %19, ptr noundef %21) #22 + %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %18, ptr noundef nonnull @.str.16, ptr noundef nonnull %19, ptr noundef %21) #22 %.pre.i = load i32, ptr %4, align 4, !tbaa !42 br label %23 -23: ; preds = %18, %.lr.ph.split.us.i - %24 = phi i32 [ %7, %.lr.ph.split.us.i ], [ %.pre.i, %18 ] - %.3.ph.us.i = phi i32 [ %.03768.us.i, %.lr.ph.split.us.i ], [ %15, %18 ] +23: ; preds = %16, %.lr.ph.split.us.i + %24 = phi i32 [ %7, %.lr.ph.split.us.i ], [ %.pre.i, %16 ] + %.3.ph.us.i = phi i32 [ %.03768.us.i, %.lr.ph.split.us.i ], [ %17, %16 ] %indvars.iv.next78.i = add nuw nsw i64 %indvars.iv77.i, 1 %25 = zext i32 %24 to i64 %26 = icmp samesign ult i64 %indvars.iv.next78.i, %25 @@ -628,158 +628,159 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 %28 = zext i32 %5 to i64 br label %29 -29: ; preds = %36, %.lr.ph.split.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.split.i ], [ %indvars.iv.next.i, %36 ] +29: ; preds = %37, %.lr.ph.split.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.split.i ], [ %indvars.iv.next.i, %37 ] %30 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv.i %31 = load ptr, ptr %30, align 8, !tbaa !44 %32 = getelementptr inbounds nuw i8, ptr %31, i64 56 %33 = load i32, ptr %32, align 8, !tbaa !20 %34 = and i32 %33, 12288 %.not.i = icmp eq i32 %34, 0 - br i1 %.not.i, label %36, label %verify_cache.exit.thread + br i1 %.not.i, label %37, label %verify_cache.exit.thread .thread57.i: ; preds = %14 - %35 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %17) #23 + %35 = load ptr, ptr @stderr, align 8, !tbaa !46 + %36 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %35) #23 br label %verify_cache.exit.thread -36: ; preds = %29 +37: ; preds = %29 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next.i, %28 br i1 %exitcond.not, label %.preheader.i, label %29, !llvm.loop !48 ._crit_edge.i: ; preds = %23 - %37 = icmp eq i32 %.3.ph.us.i, 0 - br i1 %37, label %.preheader.i, label %verify_cache.exit.thread - -.preheader.i: ; preds = %36, %._crit_edge.i - %38 = phi i32 [ %24, %._crit_edge.i ], [ %5, %36 ] - %39 = icmp ugt i32 %38, 1 - br i1 %39, label %.lr.ph72.i, label %verify_cache.exit.thread25 - -.lr.ph72.i: ; preds = %.preheader.i, %68 - %40 = phi i32 [ %69, %68 ], [ %38, %.preheader.i ] - %indvars.iv82.i = phi i64 [ %indvars.iv.next83.i, %68 ], [ 0, %.preheader.i ] - %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %68 ], [ 1, %.preheader.i ] - %.470.i = phi i32 [ %.7.i, %68 ], [ 0, %.preheader.i ] - %41 = load ptr, ptr %0, align 8, !tbaa !43 - %42 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv82.i - %43 = load ptr, ptr %42, align 8, !tbaa !44 - %44 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv80.i - %45 = load ptr, ptr %44, align 8, !tbaa !44 - %46 = getelementptr inbounds nuw i8, ptr %43, i64 108 - %47 = getelementptr inbounds nuw i8, ptr %45, i64 108 - %48 = getelementptr inbounds nuw i8, ptr %43, i64 64 - %49 = load i32, ptr %48, align 8, !tbaa !20 - %50 = getelementptr inbounds nuw i8, ptr %45, i64 64 - %51 = load i32, ptr %50, align 8, !tbaa !20 - %52 = icmp ult i32 %49, %51 - br i1 %52, label %53, label %68 - -53: ; preds = %.lr.ph72.i - %54 = sext i32 %49 to i64 - %55 = getelementptr inbounds i8, ptr %47, i64 %54 - %56 = load i8, ptr %55, align 1, !tbaa !38 - %57 = icmp eq i8 %56, 47 - br i1 %57, label %58, label %68 - -58: ; preds = %53 - %59 = tail call i32 @strncmp(ptr noundef nonnull %46, ptr noundef nonnull %47, i64 noundef %54) #20 - %60 = icmp eq i32 %59, 0 - br i1 %60, label %61, label %68 - -61: ; preds = %58 - %62 = add i32 %.470.i, 1 - %63 = icmp ugt i32 %62, 10 - %64 = load ptr, ptr @stderr, align 8, !tbaa !46 - br i1 %63, label %.thread60.i, label %66 - -.thread60.i: ; preds = %61 - %65 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %64) #23 + %38 = icmp eq i32 %.3.ph.us.i, 0 + br i1 %38, label %.preheader.i, label %verify_cache.exit.thread + +.preheader.i: ; preds = %37, %._crit_edge.i + %39 = phi i32 [ %24, %._crit_edge.i ], [ %5, %37 ] + %40 = icmp ugt i32 %39, 1 + br i1 %40, label %.lr.ph72.i, label %verify_cache.exit.thread25 + +.lr.ph72.i: ; preds = %.preheader.i, %69 + %41 = phi i32 [ %70, %69 ], [ %39, %.preheader.i ] + %indvars.iv82.i = phi i64 [ %indvars.iv.next83.i, %69 ], [ 0, %.preheader.i ] + %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %69 ], [ 1, %.preheader.i ] + %.470.i = phi i32 [ %.7.i, %69 ], [ 0, %.preheader.i ] + %42 = load ptr, ptr %0, align 8, !tbaa !43 + %43 = getelementptr inbounds nuw ptr, ptr %42, i64 %indvars.iv82.i + %44 = load ptr, ptr %43, align 8, !tbaa !44 + %45 = getelementptr inbounds nuw ptr, ptr %42, i64 %indvars.iv80.i + %46 = load ptr, ptr %45, align 8, !tbaa !44 + %47 = getelementptr inbounds nuw i8, ptr %44, i64 108 + %48 = getelementptr inbounds nuw i8, ptr %46, i64 108 + %49 = getelementptr inbounds nuw i8, ptr %44, i64 64 + %50 = load i32, ptr %49, align 8, !tbaa !20 + %51 = getelementptr inbounds nuw i8, ptr %46, i64 64 + %52 = load i32, ptr %51, align 8, !tbaa !20 + %53 = icmp ult i32 %50, %52 + br i1 %53, label %54, label %69 + +54: ; preds = %.lr.ph72.i + %55 = sext i32 %50 to i64 + %56 = getelementptr inbounds i8, ptr %48, i64 %55 + %57 = load i8, ptr %56, align 1, !tbaa !38 + %58 = icmp eq i8 %57, 47 + br i1 %58, label %59, label %69 + +59: ; preds = %54 + %60 = tail call i32 @strncmp(ptr noundef nonnull %47, ptr noundef nonnull %48, i64 noundef %55) #20 + %61 = icmp eq i32 %60, 0 + br i1 %61, label %62, label %69 + +62: ; preds = %59 + %63 = add i32 %.470.i, 1 + %64 = icmp ugt i32 %63, 10 + %65 = load ptr, ptr @stderr, align 8, !tbaa !46 + br i1 %64, label %.thread60.i, label %67 + +.thread60.i: ; preds = %62 + %66 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %65) #23 br label %verify_cache.exit.thread -66: ; preds = %61 - %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %64, ptr noundef nonnull @.str.17, ptr noundef nonnull %46, ptr noundef nonnull %47) #22 +67: ; preds = %62 + %68 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull @.str.17, ptr noundef nonnull %47, ptr noundef nonnull %48) #22 %.pre87.i = load i32, ptr %4, align 4, !tbaa !42 - br label %68 + br label %69 -68: ; preds = %66, %58, %53, %.lr.ph72.i - %69 = phi i32 [ %.pre87.i, %66 ], [ %40, %58 ], [ %40, %53 ], [ %40, %.lr.ph72.i ] - %.7.i = phi i32 [ %62, %66 ], [ %.470.i, %58 ], [ %.470.i, %53 ], [ %.470.i, %.lr.ph72.i ] +69: ; preds = %67, %59, %54, %.lr.ph72.i + %70 = phi i32 [ %.pre87.i, %67 ], [ %41, %59 ], [ %41, %54 ], [ %41, %.lr.ph72.i ] + %.7.i = phi i32 [ %63, %67 ], [ %.470.i, %59 ], [ %.470.i, %54 ], [ %.470.i, %.lr.ph72.i ] %indvars.iv.next81.i = add nuw nsw i64 %indvars.iv80.i, 1 - %70 = zext i32 %69 to i64 - %71 = icmp samesign ult i64 %indvars.iv.next81.i, %70 + %71 = zext i32 %70 to i64 + %72 = icmp samesign ult i64 %indvars.iv.next81.i, %71 %indvars.iv.next83.i = add nuw nsw i64 %indvars.iv82.i, 1 - br i1 %71, label %.lr.ph72.i, label %verify_cache.exit, !llvm.loop !49 + br i1 %72, label %.lr.ph72.i, label %verify_cache.exit, !llvm.loop !49 -verify_cache.exit: ; preds = %68 +verify_cache.exit: ; preds = %69 %.not28 = icmp eq i32 %.7.i, 0 br i1 %.not28, label %verify_cache.exit.thread25, label %verify_cache.exit.thread verify_cache.exit.thread25: ; preds = %2, %.preheader.i, %verify_cache.exit - %72 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %73 = load ptr, ptr %72, align 8, !tbaa !23 - %.not17 = icmp eq ptr %73, null - br i1 %.not17, label %74, label %76 - -74: ; preds = %verify_cache.exit.thread25 - %75 = tail call noundef ptr @xcalloc(i64 noundef 1, i64 noundef 56) #19 - store i32 -1, ptr %75, align 8, !tbaa !4 - store ptr %75, ptr %72, align 8, !tbaa !23 - br label %76 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %74 = load ptr, ptr %73, align 8, !tbaa !23 + %.not17 = icmp eq ptr %74, null + br i1 %.not17, label %75, label %77 + +75: ; preds = %verify_cache.exit.thread25 + %76 = tail call noundef ptr @xcalloc(i64 noundef 1, i64 noundef 56) #19 + store i32 -1, ptr %76, align 8, !tbaa !4 + store ptr %76, ptr %73, align 8, !tbaa !23 + br label %77 -76: ; preds = %74, %verify_cache.exit.thread25 - %77 = and i32 %1, 1 - %.not18 = icmp eq i32 %77, 0 - br i1 %.not18, label %78, label %82 +77: ; preds = %75, %verify_cache.exit.thread25 + %78 = and i32 %1, 1 + %.not18 = icmp eq i32 %78, 0 + br i1 %.not18, label %79, label %83 -78: ; preds = %76 - %79 = load ptr, ptr @the_repository, align 8, !tbaa !40 - %80 = tail call i32 @repo_has_promisor_remote(ptr noundef %79) #19 - %.not19 = icmp eq i32 %80, 0 - br i1 %.not19, label %82, label %81 +79: ; preds = %77 + %80 = load ptr, ptr @the_repository, align 8, !tbaa !40 + %81 = tail call i32 @repo_has_promisor_remote(ptr noundef %80) #19 + %.not19 = icmp eq i32 %81, 0 + br i1 %.not19, label %83, label %82 -81: ; preds = %78 +82: ; preds = %79 tail call void @prefetch_cache_entries(ptr noundef nonnull %0, ptr noundef nonnull @must_check_existence) #19 - br label %82 + br label %83 -82: ; preds = %81, %78, %76 - %83 = tail call i64 @trace_performance_enter() #19 - %84 = load ptr, ptr @the_repository, align 8, !tbaa !40 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 486, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %84) #19 +83: ; preds = %82, %79, %77 + %84 = tail call i64 @trace_performance_enter() #19 + %85 = load ptr, ptr @the_repository, align 8, !tbaa !40 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 486, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %85) #19 tail call void @begin_odb_transaction() #19 - %85 = load ptr, ptr %72, align 8, !tbaa !23 - %86 = load ptr, ptr %0, align 8, !tbaa !43 - %87 = load i32, ptr %4, align 4, !tbaa !42 - %88 = call fastcc i32 @update_one(ptr noundef %85, ptr noundef %86, i32 noundef %87, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %3, i32 noundef %1) + %86 = load ptr, ptr %73, align 8, !tbaa !23 + %87 = load ptr, ptr %0, align 8, !tbaa !43 + %88 = load i32, ptr %4, align 4, !tbaa !42 + %89 = call fastcc i32 @update_one(ptr noundef %86, ptr noundef %87, i32 noundef %88, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %3, i32 noundef %1) tail call void @end_odb_transaction() #19 - %89 = load ptr, ptr @the_repository, align 8, !tbaa !40 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 491, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %89) #19 - %90 = load i32, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 8), align 8, !tbaa !50 - %.not.i21 = icmp eq i32 %90, 0 - %91 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 - %92 = and i8 %91, 1 - %.not2029 = icmp ne i8 %92, 0 + %90 = load ptr, ptr @the_repository, align 8, !tbaa !40 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 491, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %90) #19 + %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 8), align 8, !tbaa !50 + %.not.i21 = icmp eq i32 %91, 0 + %92 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 + %93 = and i8 %92, 1 + %.not2029 = icmp ne i8 %93, 0 %.not20 = select i1 %.not.i21, i1 %.not2029, i1 false - br i1 %.not20, label %95, label %93 - -93: ; preds = %82 - %94 = tail call i64 @getnanotime() #19 - tail call void (ptr, i32, i64, ptr, ...) @trace_performance_leave_fl(ptr noundef nonnull @.str, i32 noundef 492, i64 noundef %94, ptr noundef nonnull @.str.4) #19 - br label %95 - -95: ; preds = %93, %82 - %96 = icmp slt i32 %88, 0 - br i1 %96, label %verify_cache.exit.thread, label %97 - -97: ; preds = %95 - %98 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %99 = load i32, ptr %98, align 4, !tbaa !39 - %100 = or i32 %99, 32 - store i32 %100, ptr %98, align 4, !tbaa !39 + br i1 %.not20, label %96, label %94 + +94: ; preds = %83 + %95 = tail call i64 @getnanotime() #19 + tail call void (ptr, i32, i64, ptr, ...) @trace_performance_leave_fl(ptr noundef nonnull @.str, i32 noundef 492, i64 noundef %95, ptr noundef nonnull @.str.4) #19 + br label %96 + +96: ; preds = %94, %83 + %97 = icmp slt i32 %89, 0 + br i1 %97, label %verify_cache.exit.thread, label %98 + +98: ; preds = %96 + %99 = getelementptr inbounds nuw i8, ptr %0, i64 20 + %100 = load i32, ptr %99, align 4, !tbaa !39 + %101 = or i32 %100, 32 + store i32 %101, ptr %99, align 4, !tbaa !39 br label %verify_cache.exit.thread -verify_cache.exit.thread: ; preds = %29, %.thread60.i, %.thread57.i, %._crit_edge.i, %95, %verify_cache.exit, %97 - %.0 = phi i32 [ 0, %97 ], [ -1, %verify_cache.exit ], [ %88, %95 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] +verify_cache.exit.thread: ; preds = %29, %.thread60.i, %.thread57.i, %._crit_edge.i, %96, %verify_cache.exit, %98 + %.0 = phi i32 [ 0, %98 ], [ -1, %verify_cache.exit ], [ %89, %96 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } diff --git a/bench/git/optimized/tree-walk.ll b/bench/git/optimized/tree-walk.ll index 24736665945..ccfb1a19f1f 100644 --- a/bench/git/optimized/tree-walk.ll +++ b/bench/git/optimized/tree-walk.ll @@ -736,7 +736,7 @@ define dso_local range(i32 -2147483648, 1) i32 @traverse_trees(ptr noundef %0, i 13: ; preds = %4 %14 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.6) #15 - br label %302 + br label %300 15: ; preds = %4 %16 = load i32, ptr @traverse_trees_count, align 4, !tbaa !42 @@ -1293,135 +1293,131 @@ extended_entry_extract.exit169: ; preds = %.lr.ph50.i, %.crite br i1 %or.cond.i, label %.thread, label %246 246: ; preds = %243 - %247 = icmp slt i32 %.0125345, 0 - br i1 %247, label %.lr.ph230.preheader, label %248 - -248: ; preds = %246 - %249 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 0) - %250 = getelementptr inbounds nuw i8, ptr %.val155, i64 8 - %251 = load i32, ptr %250, align 8, !tbaa !83 - %252 = and i32 %251, 32 - %253 = icmp eq i32 %252, 0 - %254 = icmp slt i32 %249, 1 - %or.cond.i.i = select i1 %253, i1 true, i1 %254 - br i1 %or.cond.i.i, label %prune_traversal.exit, label %255 - -255: ; preds = %248 - %256 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 1) - %257 = icmp eq i32 %249, 2 - %258 = icmp eq i32 %256, 0 - %or.cond3.i.i = select i1 %257, i1 %258, i1 false - br i1 %or.cond3.i.i, label %.thread, label %259 - -259: ; preds = %255 - %260 = icmp slt i32 %256, 1 - br i1 %260, label %.thread, label %261 - -261: ; preds = %259 - %262 = getelementptr inbounds nuw i8, ptr %.5, i64 52 - %263 = load i32, ptr %262, align 4, !tbaa !80 - %264 = and i32 %263, 61440 - %265 = icmp eq i32 %264, 16384 - %266 = icmp eq i32 %256, 1 - %or.cond7.i.i = select i1 %265, i1 %266, i1 false - br i1 %or.cond7.i.i, label %.thread, label %267 - -267: ; preds = %261 - %268 = icmp eq i32 %249, 1 - %or.cond11.i.i = select i1 %257, i1 %266, i1 false - %or.cond35.i.i = select i1 %268, i1 true, i1 %or.cond11.i.i + %247 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 0) + %248 = getelementptr inbounds nuw i8, ptr %.val155, i64 8 + %249 = load i32, ptr %248, align 8, !tbaa !83 + %250 = and i32 %249, 32 + %251 = icmp eq i32 %250, 0 + %252 = icmp slt i32 %247, 1 + %or.cond.i.i = select i1 %251, i1 true, i1 %252 + br i1 %or.cond.i.i, label %prune_traversal.exit, label %253 + +253: ; preds = %246 + %254 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 1) + %255 = icmp eq i32 %247, 2 + %256 = icmp eq i32 %254, 0 + %or.cond3.i.i = select i1 %255, i1 %256, i1 false + br i1 %or.cond3.i.i, label %.thread, label %257 + +257: ; preds = %253 + %258 = icmp slt i32 %254, 1 + br i1 %258, label %.thread, label %259 + +259: ; preds = %257 + %260 = getelementptr inbounds nuw i8, ptr %.5, i64 52 + %261 = load i32, ptr %260, align 4, !tbaa !80 + %262 = and i32 %261, 61440 + %263 = icmp eq i32 %262, 16384 + %264 = icmp eq i32 %254, 1 + %or.cond7.i.i = select i1 %263, i1 %264, i1 false + br i1 %or.cond7.i.i, label %.thread, label %265 + +265: ; preds = %259 + %266 = icmp eq i32 %247, 1 + %or.cond11.i.i = select i1 %255, i1 %264, i1 false + %or.cond35.i.i = select i1 %266, i1 true, i1 %or.cond11.i.i %not.or.cond35.i.i = xor i1 %or.cond35.i.i, true %spec.select.i.i = sext i1 %not.or.cond35.i.i to i32 br label %prune_traversal.exit -prune_traversal.exit: ; preds = %248, %267 - %.0.i170 = phi i32 [ %249, %248 ], [ %spec.select.i.i, %267 ] - %269 = icmp slt i32 %.0.i170, 0 - br i1 %269, label %.lr.ph230.preheader, label %270 +prune_traversal.exit: ; preds = %246, %265 + %.0.i170 = phi i32 [ %247, %246 ], [ %spec.select.i.i, %265 ] + %267 = icmp slt i32 %.0.i170, 0 + br i1 %267, label %.lr.ph230.preheader, label %268 -270: ; preds = %prune_traversal.exit +268: ; preds = %prune_traversal.exit %.not146 = icmp eq i32 %.0.i170, 0 - br i1 %.not146, label %279, label %.thread - -.thread: ; preds = %243, %255, %259, %261, %270 - %.0.i170186192 = phi i32 [ %.0.i170, %270 ], [ 1, %261 ], [ %249, %259 ], [ 1, %255 ], [ 2, %243 ] - %271 = load ptr, ptr %63, align 8, !tbaa !86 - %272 = call i32 %271(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 - %273 = icmp slt i32 %272, 0 - br i1 %273, label %274, label %276 - -274: ; preds = %.thread - %275 = load i32, ptr %64, align 8, !tbaa !87 - %.not147 = icmp eq i32 %275, 0 - br i1 %.not147, label %.lr.ph230.preheader, label %276 - -276: ; preds = %274, %.thread - %.3130 = phi i32 [ %272, %274 ], [ %.0127344, %.thread ] - %277 = sext i32 %272 to i64 - %278 = and i64 %.1120, %277 - br label %279 - -279: ; preds = %276, %270 - %.0.i170187 = phi i32 [ %.0.i170186192, %276 ], [ 0, %270 ] - %.2129 = phi i32 [ %.3130, %276 ], [ %.0127344, %270 ] - %.2121 = phi i64 [ %278, %276 ], [ %.1120, %270 ] + br i1 %.not146, label %277, label %.thread + +.thread: ; preds = %243, %253, %257, %259, %268 + %.0.i170186192 = phi i32 [ %.0.i170, %268 ], [ 1, %259 ], [ %247, %257 ], [ 1, %253 ], [ 2, %243 ] + %269 = load ptr, ptr %63, align 8, !tbaa !86 + %270 = call i32 %269(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 + %271 = icmp slt i32 %270, 0 + br i1 %271, label %272, label %274 + +272: ; preds = %.thread + %273 = load i32, ptr %64, align 8, !tbaa !87 + %.not147 = icmp eq i32 %273, 0 + br i1 %.not147, label %.lr.ph230.preheader, label %274 + +274: ; preds = %272, %.thread + %.3130 = phi i32 [ %270, %272 ], [ %.0127344, %.thread ] + %275 = sext i32 %270 to i64 + %276 = and i64 %.1120, %275 + br label %277 + +277: ; preds = %274, %268 + %.0.i170187 = phi i32 [ %.0.i170186192, %274 ], [ 0, %268 ] + %.2129 = phi i32 [ %.3130, %274 ], [ %.0127344, %268 ] + %.2121 = phi i64 [ %276, %274 ], [ %.1120, %268 ] br label %.lr.ph228 -.lr.ph228: ; preds = %279, %update_extended_entry.exit - %indvars.iv271 = phi i64 [ %indvars.iv.next272, %update_extended_entry.exit ], [ 0, %279 ] - %280 = shl nuw i64 1, %indvars.iv271 - %281 = and i64 %280, %.2121 - %.not148 = icmp eq i64 %281, 0 - br i1 %.not148, label %update_extended_entry.exit, label %282 - -282: ; preds = %.lr.ph228 - %283 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv271 - %284 = getelementptr inbounds nuw %struct.name_entry, ptr %25, i64 %indvars.iv271 - %285 = getelementptr inbounds nuw i8, ptr %283, i64 56 - %286 = load ptr, ptr %285, align 8, !tbaa !88 - %287 = getelementptr inbounds nuw i8, ptr %284, i64 40 - %288 = load ptr, ptr %287, align 8, !tbaa !71 - %289 = icmp eq ptr %286, %288 - br i1 %289, label %290, label %291 - -290: ; preds = %282 - call void @update_tree_entry(ptr noundef nonnull %283) +.lr.ph228: ; preds = %277, %update_extended_entry.exit + %indvars.iv271 = phi i64 [ %indvars.iv.next272, %update_extended_entry.exit ], [ 0, %277 ] + %278 = shl nuw i64 1, %indvars.iv271 + %279 = and i64 %278, %.2121 + %.not148 = icmp eq i64 %279, 0 + br i1 %.not148, label %update_extended_entry.exit, label %280 + +280: ; preds = %.lr.ph228 + %281 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv271 + %282 = getelementptr inbounds nuw %struct.name_entry, ptr %25, i64 %indvars.iv271 + %283 = getelementptr inbounds nuw i8, ptr %281, i64 56 + %284 = load ptr, ptr %283, align 8, !tbaa !88 + %285 = getelementptr inbounds nuw i8, ptr %282, i64 40 + %286 = load ptr, ptr %285, align 8, !tbaa !71 + %287 = icmp eq ptr %284, %286 + br i1 %287, label %288, label %289 + +288: ; preds = %280 + call void @update_tree_entry(ptr noundef nonnull %281) br label %update_extended_entry.exit -291: ; preds = %282 - %292 = call ptr @xmalloc(i64 noundef 16) #15 - %293 = load ptr, ptr %287, align 8, !tbaa !71 - %294 = getelementptr inbounds nuw i8, ptr %292, i64 8 - store ptr %293, ptr %294, align 8, !tbaa !72 - %295 = getelementptr inbounds nuw i8, ptr %283, i64 80 - %296 = load ptr, ptr %295, align 8, !tbaa !62 - store ptr %296, ptr %292, align 8, !tbaa !89 - store ptr %292, ptr %295, align 8, !tbaa !62 +289: ; preds = %280 + %290 = call ptr @xmalloc(i64 noundef 16) #15 + %291 = load ptr, ptr %285, align 8, !tbaa !71 + %292 = getelementptr inbounds nuw i8, ptr %290, i64 8 + store ptr %291, ptr %292, align 8, !tbaa !72 + %293 = getelementptr inbounds nuw i8, ptr %281, i64 80 + %294 = load ptr, ptr %293, align 8, !tbaa !62 + store ptr %294, ptr %290, align 8, !tbaa !89 + store ptr %290, ptr %293, align 8, !tbaa !62 br label %update_extended_entry.exit -update_extended_entry.exit: ; preds = %291, %290, %.lr.ph228 +update_extended_entry.exit: ; preds = %289, %288, %.lr.ph228 %indvars.iv.next272 = add nuw nsw i64 %indvars.iv271, 1 %exitcond276.not = icmp eq i64 %indvars.iv.next272, %wide.trip.count275 br i1 %exitcond276.not, label %.lr.ph204.preheader.loopexit, label %.lr.ph228, !llvm.loop !68 -.lr.ph230.preheader: ; preds = %246, %274, %prune_traversal.exit, %._crit_edge222 - %.1128.ph = phi i32 [ %.0127344, %246 ], [ %272, %274 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] +.lr.ph230.preheader: ; preds = %272, %prune_traversal.exit, %._crit_edge222 + %.1128.ph = phi i32 [ %270, %272 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] %wide.trip.count281 = zext nneg i32 %65 to i64 br label %.lr.ph230 .lr.ph230: ; preds = %.lr.ph230.preheader, %free_extended_entry.exit %indvars.iv277 = phi i64 [ 0, %.lr.ph230.preheader ], [ %indvars.iv.next278, %free_extended_entry.exit ] - %297 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv277 - %298 = getelementptr i8, ptr %297, i64 80 - %.val156 = load ptr, ptr %298, align 8, !tbaa !62 + %295 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv277 + %296 = getelementptr i8, ptr %295, i64 80 + %.val156 = load ptr, ptr %296, align 8, !tbaa !62 %.not1.i = icmp eq ptr %.val156, null br i1 %.not1.i, label %free_extended_entry.exit, label %.lr.ph.i171 .lr.ph.i171: ; preds = %.lr.ph230, %.lr.ph.i171 - %.02.i = phi ptr [ %299, %.lr.ph.i171 ], [ %.val156, %.lr.ph230 ] - %299 = load ptr, ptr %.02.i, align 8, !tbaa !89 + %.02.i = phi ptr [ %297, %.lr.ph.i171 ], [ %.val156, %.lr.ph230 ] + %297 = load ptr, ptr %.02.i, align 8, !tbaa !89 call void @free(ptr noundef nonnull %.02.i) #15 - %.not.i172 = icmp eq ptr %299, null + %.not.i172 = icmp eq ptr %297, null br i1 %.not.i172, label %free_extended_entry.exit, label %.lr.ph.i171, !llvm.loop !90 free_extended_entry.exit: ; preds = %.lr.ph.i171, %.lr.ph230 @@ -1436,12 +1432,12 @@ free_extended_entry.exit: ; preds = %.lr.ph.i171, %.lr.p call void @free(ptr noundef %.0124) #15 store ptr null, ptr %3, align 8, !tbaa !67 call void @strbuf_release(ptr noundef nonnull %9) #15 - %300 = load i32, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 - %301 = add nsw i32 %300, -1 - store i32 %301, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 - br label %302 + %298 = load i32, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 + %299 = add nsw i32 %298, -1 + store i32 %299, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 + br label %300 -302: ; preds = %._crit_edge231, %13 +300: ; preds = %._crit_edge231, %13 %.0122 = phi i32 [ -1, %13 ], [ %.1128.ph316, %._crit_edge231 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) ret i32 %.0122 diff --git a/bench/git/optimized/walker.ll b/bench/git/optimized/walker.ll index faa497bf8e3..55be210ead3 100644 --- a/bench/git/optimized/walker.ll +++ b/bench/git/optimized/walker.ll @@ -81,9 +81,9 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p %7 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %8 -8: ; preds = %.lr.ph, %31 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %31 ] - %.02539 = phi i32 [ 0, %.lr.ph ], [ %.2, %31 ] +8: ; preds = %.lr.ph, %29 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %29 ] + %.02539 = phi i32 [ 0, %.lr.ph ], [ %.2, %29 ] %9 = load ptr, ptr %7, align 8, !tbaa !14 %10 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %9, i32 noundef 9) #16 %.not = icmp eq ptr %10, null @@ -98,60 +98,52 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p %.024 = phi ptr [ %12, %11 ], [ null, %8 ] %14 = sext i32 %.02539 to i64 %.not29 = icmp slt i64 %indvars.iv, %14 - br i1 %.not29, label %25, label %15 + br i1 %.not29, label %23, label %st_mult.exit33 -15: ; preds = %13 +st_mult.exit33: ; preds = %13 %.not30 = icmp eq i32 %.02539, 0 - %16 = shl nsw i32 %.02539, 1 - %17 = select i1 %.not30, i32 64, i32 %16 - %18 = zext nneg i32 %17 to i64 - %mul.ov.i = icmp slt i32 %17, 0 - br i1 %mul.ov.i, label %19, label %st_mult.exit33 - -19: ; preds = %15 - call void (ptr, ...) @die(ptr noundef nonnull @.str.5, i64 noundef 8, i64 noundef range(i64 -2147483648, 2147483648) %18) #17 - unreachable - -st_mult.exit33: ; preds = %15 - %20 = load ptr, ptr %0, align 8, !tbaa !12 - %21 = shl nuw nsw i64 %18, 3 - %22 = call ptr @xrealloc(ptr noundef %20, i64 noundef %21) #15 - store ptr %22, ptr %0, align 8, !tbaa !12 - %23 = load ptr, ptr %1, align 8, !tbaa !12 - %24 = call ptr @xrealloc(ptr noundef %23, i64 noundef %21) #15 - store ptr %24, ptr %1, align 8, !tbaa !12 - br label %25 - -25: ; preds = %st_mult.exit33, %13 - %.2 = phi i32 [ %17, %st_mult.exit33 ], [ %.02539, %13 ] - %26 = call ptr @xstrdup(ptr noundef nonnull %9) #15 - %27 = load ptr, ptr %0, align 8, !tbaa !12 - %28 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv - store ptr %26, ptr %28, align 8, !tbaa !19 + %15 = shl nuw nsw i32 %.02539, 1 + %16 = select i1 %.not30, i32 64, i32 %15 + %17 = zext nneg i32 %16 to i64 + %18 = load ptr, ptr %0, align 8, !tbaa !12 + %19 = shl nuw nsw i64 %17, 3 + %20 = call ptr @xrealloc(ptr noundef %18, i64 noundef %19) #15 + store ptr %20, ptr %0, align 8, !tbaa !12 + %21 = load ptr, ptr %1, align 8, !tbaa !12 + %22 = call ptr @xrealloc(ptr noundef %21, i64 noundef %19) #15 + store ptr %22, ptr %1, align 8, !tbaa !12 + br label %23 + +23: ; preds = %st_mult.exit33, %13 + %.2 = phi i32 [ %16, %st_mult.exit33 ], [ %.02539, %13 ] + %24 = call ptr @xstrdup(ptr noundef nonnull %9) #15 + %25 = load ptr, ptr %0, align 8, !tbaa !12 + %26 = getelementptr inbounds nuw ptr, ptr %25, i64 %indvars.iv + store ptr %24, ptr %26, align 8, !tbaa !19 %.not.i = icmp eq ptr %.024, null - br i1 %.not.i, label %31, label %29 + br i1 %.not.i, label %29, label %27 -29: ; preds = %25 - %30 = call ptr @xstrdup(ptr noundef nonnull %.024) #15 - br label %31 +27: ; preds = %23 + %28 = call ptr @xstrdup(ptr noundef nonnull %.024) #15 + br label %29 -31: ; preds = %29, %25 - %32 = phi ptr [ %30, %29 ], [ null, %25 ] - %33 = load ptr, ptr %1, align 8, !tbaa !12 - %34 = getelementptr inbounds nuw ptr, ptr %33, i64 %indvars.iv - store ptr %32, ptr %34, align 8, !tbaa !19 +29: ; preds = %27, %23 + %30 = phi ptr [ %28, %27 ], [ null, %23 ] + %31 = load ptr, ptr %1, align 8, !tbaa !12 + %32 = getelementptr inbounds nuw ptr, ptr %31, i64 %indvars.iv + store ptr %30, ptr %32, align 8, !tbaa !19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %35 = load ptr, ptr @stdin, align 8, !tbaa !10 - %36 = call i32 @strbuf_getline_lf(ptr noundef nonnull %3, ptr noundef %35) #15 - %37 = icmp eq i32 %36, -1 - br i1 %37, label %._crit_edge.loopexit, label %8 + %33 = load ptr, ptr @stdin, align 8, !tbaa !10 + %34 = call i32 @strbuf_getline_lf(ptr noundef nonnull %3, ptr noundef %33) #15 + %35 = icmp eq i32 %34, -1 + br i1 %35, label %._crit_edge.loopexit, label %8 -._crit_edge.loopexit: ; preds = %31 - %38 = trunc nuw i64 %indvars.iv.next to i32 +._crit_edge.loopexit: ; preds = %29 + %36 = trunc nuw i64 %indvars.iv.next to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %2 - %.023.lcssa = phi i32 [ 0, %2 ], [ %38, %._crit_edge.loopexit ] + %.023.lcssa = phi i32 [ 0, %2 ], [ %36, %._crit_edge.loopexit ] call void @strbuf_release(ptr noundef nonnull %3) #15 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.023.lcssa diff --git a/bench/graphviz/optimized/blockpath.ll b/bench/graphviz/optimized/blockpath.ll index 6d65c950b3d..5fb7f2c64e9 100644 --- a/bench/graphviz/optimized/blockpath.ll +++ b/bench/graphviz/optimized/blockpath.ll @@ -337,9 +337,9 @@ clone_graph.exit.i: ; preds = %._crit_edge67.i.i, 147: ; preds = %.lr.ph.i44.i %148 = icmp eq i64 %spec.select.i.i10.i.i, 0 - %149 = shl i64 %spec.select.i.i10.i.i, 1 + %149 = shl nuw nsw i64 %spec.select.i.i10.i.i, 1 %spec.select.i.i.i.i = select i1 %148, i64 1, i64 %149 - %mul.ov.i.i.i.i = icmp ugt i64 %spec.select.i.i.i.i, 2305843009213693951 + %mul.ov.i.i.i.i = icmp samesign ugt i64 %spec.select.i.i.i.i, 2305843009213693951 br i1 %mul.ov.i.i.i.i, label %166, label %150 150: ; preds = %147 @@ -1317,9 +1317,9 @@ measure_distance.exit.i: ; preds = %tailrecurse.i.i, %5 583: ; preds = %577 %584 = icmp eq i64 %578, 0 - %585 = shl i64 %578, 1 + %585 = shl nuw nsw i64 %578, 1 %spec.select.i.i59.i = select i1 %584, i64 1, i64 %585 - %mul.ov.i.i60.i = icmp ugt i64 %spec.select.i.i59.i, 2305843009213693951 + %mul.ov.i.i60.i = icmp samesign ugt i64 %spec.select.i.i59.i, 2305843009213693951 br i1 %mul.ov.i.i60.i, label %604, label %586 586: ; preds = %583 diff --git a/bench/gromacs/optimized/atomdata.ll b/bench/gromacs/optimized/atomdata.ll index 2194a70a2ae..7bf07829c38 100644 --- a/bench/gromacs/optimized/atomdata.ll +++ b/bench/gromacs/optimized/atomdata.ll @@ -2398,8 +2398,8 @@ _ZNSt6vectorIfN3gmx9AllocatorIfNS0_20HostAllocationPolicyEEEE6resizeEm.exit218.i 194: ; preds = %194, %.lr.ph256.split.us.i %indvars.iv = phi i64 [ %indvars.iv.next, %194 ], [ 0, %.lr.ph256.split.us.i ] %195 = add nuw nsw i64 %indvars.iv, %192 - %.idx164 = shl i64 %195, 3 - %196 = getelementptr i8, ptr %190, i64 %.idx164 + %.idx163 = shl i64 %195, 3 + %196 = getelementptr i8, ptr %190, i64 %.idx163 store float 0.000000e+00, ptr %196, align 4, !tbaa !71 %197 = getelementptr i8, ptr %196, i64 4 store float 0.000000e+00, ptr %197, align 4, !tbaa !71 @@ -3314,9 +3314,9 @@ _ZN3gmxL15sc_iClusterSizeENS_15NbnxmKernelTypeE.exit: ; preds = %_ZN3gmxL28kerne ._ZNSt6vectorIN3gmx11BasicVectorIfEENS0_9AllocatorIS2_NS0_20HostAllocationPolicyEEEE6resizeEm.exit_crit_edge: ; preds = %590 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 224 %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !181 - %.phi.trans.insert90 = getelementptr inbounds nuw i8, ptr %0, i64 228 - %.pre91 = load i32, ptr %.phi.trans.insert90, align 4, !tbaa !182 - %592 = icmp eq i32 %.pre91, 1 + %.phi.trans.insert89 = getelementptr inbounds nuw i8, ptr %0, i64 228 + %.pre90 = load i32, ptr %.phi.trans.insert89, align 4, !tbaa !182 + %592 = icmp eq i32 %.pre90, 1 %593 = select i1 %592, i32 4, i32 3 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEENS0_9AllocatorIS2_NS0_20HostAllocationPolicyEEEE6resizeEm.exit diff --git a/bench/gromacs/optimized/tngio.ll b/bench/gromacs/optimized/tngio.ll index 7b090d3dd5c..90953e1a1ab 100644 --- a/bench/gromacs/optimized/tngio.ll +++ b/bench/gromacs/optimized/tngio.ll @@ -681,63 +681,63 @@ _ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86: ; preds = %_ZNSt12_Vect br label %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 - %.sroa.13156.3498 = phi ptr [ %21, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] - %.sroa.22159.8497 = phi ptr [ %22, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] + %.sroa.13156.3499 = phi ptr [ %21, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] + %.sroa.22159.8498 = phi ptr [ %22, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %.sroa.0139.7 = phi ptr [ %24, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %.sroa.22.7 = phi ptr [ %25, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %26 = getelementptr inbounds nuw i8, ptr %1, i64 136 %27 = load ptr, ptr %26, align 8, !tbaa !97 %28 = getelementptr inbounds nuw i8, ptr %1, i64 144 %29 = load ptr, ptr %28, align 8, !tbaa !97 - %.not182364 = icmp eq ptr %27, %29 - br i1 %.not182364, label %._crit_edge373, label %.lr.ph372 + %.not182365 = icmp eq ptr %27, %29 + br i1 %.not182365, label %._crit_edge374, label %.lr.ph373 -.lr.ph372: ; preds = %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 +.lr.ph373: ; preds = %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 %30 = getelementptr inbounds nuw i8, ptr %1, i64 112 %31 = getelementptr inbounds nuw i8, ptr %8, i64 1 br label %35 -._crit_edge373.loopexit: ; preds = %._crit_edge - %.pre472 = load i32, ptr %14, align 8, !tbaa !42 - %.pre473 = sext i32 %.pre472 to i64 - br label %._crit_edge373 - -._crit_edge373: ; preds = %._crit_edge373.loopexit, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 - %.pre-phi = phi i64 [ %.pre473, %._crit_edge373.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.0139.2.lcssa = phi ptr [ %.sroa.0139.6.lcssa, %._crit_edge373.loopexit ], [ %.sroa.0139.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.22.2.lcssa = phi ptr [ %.sroa.22.6.lcssa, %._crit_edge373.loopexit ], [ %.sroa.22.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge373.loopexit ], [ %.sroa.22159.8497, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge373.loopexit ], [ %.sroa.13156.3498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] +._crit_edge374.loopexit: ; preds = %._crit_edge + %.pre473 = load i32, ptr %14, align 8, !tbaa !42 + %.pre474 = sext i32 %.pre473 to i64 + br label %._crit_edge374 + +._crit_edge374: ; preds = %._crit_edge374.loopexit, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 + %.pre-phi = phi i64 [ %.pre474, %._crit_edge374.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.0139.2.lcssa = phi ptr [ %.sroa.0139.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.0139.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.22.2.lcssa = phi ptr [ %.sroa.22.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22159.8498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.13156.3499, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] %32 = invoke i32 @tng_particle_data_block_add(ptr noundef %12, i64 noundef 268435460, ptr noundef nonnull @.str.9, i8 noundef signext 2, i8 noundef signext 0, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 0, i64 noundef %.pre-phi, i64 noundef 3, ptr noundef %.sroa.0150.2.lcssa) to label %324 unwind label %33 -33: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i, %18, %324, %._crit_edge373 - %.sroa.0139.1 = phi ptr [ null, %18 ], [ %.sroa.0139.2.lcssa, %324 ], [ %.sroa.0139.2.lcssa, %._crit_edge373 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.22.1 = phi ptr [ null, %18 ], [ %.sroa.22.2.lcssa, %324 ], [ %.sroa.22.2.lcssa, %._crit_edge373 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.22159.1 = phi ptr [ null, %18 ], [ %.sroa.22159.2.lcssa, %324 ], [ %.sroa.22159.2.lcssa, %._crit_edge373 ], [ %22, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.0150.1 = phi ptr [ null, %18 ], [ %.sroa.0150.2.lcssa, %324 ], [ %.sroa.0150.2.lcssa, %._crit_edge373 ], [ %21, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] +33: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i, %18, %324, %._crit_edge374 + %.sroa.0139.1 = phi ptr [ null, %18 ], [ %.sroa.0139.2.lcssa, %324 ], [ %.sroa.0139.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.22.1 = phi ptr [ null, %18 ], [ %.sroa.22.2.lcssa, %324 ], [ %.sroa.22.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.22159.1 = phi ptr [ null, %18 ], [ %.sroa.22159.2.lcssa, %324 ], [ %.sroa.22159.2.lcssa, %._crit_edge374 ], [ %22, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.0150.1 = phi ptr [ null, %18 ], [ %.sroa.0150.2.lcssa, %324 ], [ %.sroa.0150.2.lcssa, %._crit_edge374 ], [ %21, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] %34 = landingpad { ptr, i32 } cleanup br label %337 -35: ; preds = %.lr.ph372, %._crit_edge - %.sroa.0150.2371 = phi ptr [ %.sroa.13156.3498, %.lr.ph372 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] - %.sroa.13156.0370 = phi ptr [ %.sroa.13156.3498, %.lr.ph372 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] - %.sroa.22159.2369 = phi ptr [ %.sroa.22159.8497, %.lr.ph372 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] - %.sroa.0136.0368 = phi ptr [ %27, %.lr.ph372 ], [ %254, %._crit_edge ] - %.sroa.22.2367 = phi ptr [ %.sroa.22.7, %.lr.ph372 ], [ %.sroa.22.6.lcssa, %._crit_edge ] - %.sroa.13.0366 = phi ptr [ %.sroa.0139.7, %.lr.ph372 ], [ %.sroa.13.2.lcssa, %._crit_edge ] - %.sroa.0139.2365 = phi ptr [ %.sroa.0139.7, %.lr.ph372 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] +35: ; preds = %.lr.ph373, %._crit_edge + %.sroa.0150.2372 = phi ptr [ %.sroa.13156.3499, %.lr.ph373 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] + %.sroa.13156.0371 = phi ptr [ %.sroa.13156.3499, %.lr.ph373 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] + %.sroa.22159.2370 = phi ptr [ %.sroa.22159.8498, %.lr.ph373 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] + %.sroa.0136.0369 = phi ptr [ %27, %.lr.ph373 ], [ %254, %._crit_edge ] + %.sroa.22.2368 = phi ptr [ %.sroa.22.7, %.lr.ph373 ], [ %.sroa.22.6.lcssa, %._crit_edge ] + %.sroa.13.0367 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.13.2.lcssa, %._crit_edge ] + %.sroa.0139.2366 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] call void @llvm.lifetime.start.p0(ptr nonnull %11) store ptr null, ptr %11, align 8, !tbaa !98 - %36 = load i32, ptr %.sroa.0136.0368, align 8, !tbaa !100 + %36 = load i32, ptr %.sroa.0136.0369, align 8, !tbaa !100 %37 = sext i32 %36 to i64 %38 = load ptr, ptr %30, align 8, !tbaa !107 %39 = getelementptr inbounds nuw %struct.gmx_moltype_t, ptr %38, i64 %37 %40 = load ptr, ptr %39, align 8, !tbaa !108 %41 = load ptr, ptr %40, align 8, !tbaa !116 %42 = getelementptr inbounds nuw i8, ptr %39, i64 8 - %43 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0368, i64 4 + %43 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0369, i64 4 %44 = load i32, ptr %43, align 4, !tbaa !117 %45 = sext i32 %44 to i64 %.val = load ptr, ptr %0, align 8, !tbaa !41 @@ -746,7 +746,7 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr null, ptr %4, align 8, !tbaa !120 %46 = invoke i32 @tng_molecule_add(ptr noundef %.val, ptr noundef %41, ptr noundef nonnull %11) - to label %.noexc90 unwind label %.loopexit.split-lp201.loopexit + to label %.noexc90 unwind label %.loopexit.split-lp202.loopexit .noexc90: ; preds = %35 %.not.i = icmp eq i32 %46, 0 @@ -771,7 +771,7 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %6) - to label %.noexc91 unwind label %.loopexit.split-lp201.loopexit.split-lp + to label %.noexc91 unwind label %.loopexit.split-lp202.loopexit.split-lp .noexc91: ; preds = %56 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -820,7 +820,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, ._crit_edge.i: ; preds = %110, %.lr.ph.i, %.preheader.i %69 = load ptr, ptr %11, align 8, !tbaa !98 %70 = invoke i32 @tng_molecule_cnt_set(ptr noundef %.val, ptr noundef %69, i64 noundef range(i64 -2147483648, 2147483648) %45) - to label %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit unwind label %.loopexit.split-lp201.loopexit + to label %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit unwind label %.loopexit.split-lp202.loopexit .lr.ph.splitthread-pre-split.i: ; preds = %110 %.pr.i = load i32, ptr %49, align 8, !tbaa !123 @@ -872,14 +872,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, .critedge.i: ; preds = %88, %74 %94 = load ptr, ptr %11, align 8, !tbaa !98 %95 = invoke i32 @tng_molecule_chain_add(ptr noundef %.val, ptr noundef %94, ptr noundef nonnull %8, ptr noundef nonnull %3) - to label %.noexc93 unwind label %.loopexit200 + to label %.noexc93 unwind label %.loopexit201 .noexc93: ; preds = %.critedge.i, %88 %96 = load ptr, ptr %3, align 8, !tbaa !118 %97 = load ptr, ptr %81, align 8, !tbaa !134 %98 = load ptr, ptr %97, align 8, !tbaa !116 %99 = invoke i32 @tng_chain_residue_add(ptr noundef %.val, ptr noundef %96, ptr noundef %98, ptr noundef nonnull %4) - to label %.noexc94 unwind label %.loopexit200 + to label %.noexc94 unwind label %.loopexit201 .noexc94: ; preds = %.noexc93, %85 %100 = load ptr, ptr %4, align 8, !tbaa !120 @@ -892,7 +892,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, %107 = load ptr, ptr %106, align 8, !tbaa !136 %108 = load ptr, ptr %107, align 8, !tbaa !116 %109 = invoke i32 @tng_residue_atom_add(ptr noundef %.val, ptr noundef %100, ptr noundef %104, ptr noundef %108, ptr noundef nonnull %9) - to label %.noexc95 unwind label %.loopexit200 + to label %.noexc95 unwind label %.loopexit201 .noexc95: ; preds = %.noexc94 call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -914,8 +914,8 @@ _ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecu br label %115 115: ; preds = %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit, %_ZL11IS_CHEMBONDi.exit.thread - %indvars.iv463 = phi i64 [ 0, %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit ], [ %indvars.iv.next464, %_ZL11IS_CHEMBONDi.exit.thread ] - %116 = getelementptr inbounds nuw %struct.t_interaction_function, ptr @interaction_function, i64 %indvars.iv463 + %indvars.iv464 = phi i64 [ 0, %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit ], [ %indvars.iv.next465, %_ZL11IS_CHEMBONDi.exit.thread ] + %116 = getelementptr inbounds nuw %struct.t_interaction_function, ptr @interaction_function, i64 %indvars.iv464 %117 = getelementptr inbounds nuw i8, ptr %116, i64 16 %118 = load i32, ptr %117, align 16, !tbaa !141 %119 = icmp eq i32 %118, 2 @@ -925,11 +925,11 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 %120 = getelementptr inbounds nuw i8, ptr %116, i64 28 %121 = load i32, ptr %120, align 4, !tbaa !143 %122 = and i32 %121, 8 - %.not186 = icmp eq i32 %122, 0 - br i1 %.not186, label %_ZL11IS_CHEMBONDi.exit.thread, label %123 + %.not187 = icmp eq i32 %122, 0 + br i1 %.not187, label %_ZL11IS_CHEMBONDi.exit.thread, label %123 123: ; preds = %_ZL11IS_CHEMBONDi.exit - %124 = getelementptr inbounds nuw %struct.InteractionList, ptr %114, i64 %indvars.iv463 + %124 = getelementptr inbounds nuw %struct.InteractionList, ptr %114, i64 %indvars.iv464 %125 = getelementptr inbounds nuw i8, ptr %124, i64 8 %126 = load ptr, ptr %125, align 8, !tbaa !144 %127 = load ptr, ptr %124, align 8, !tbaa !145 @@ -967,18 +967,18 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 %152 = icmp slt i32 %151, %150 br i1 %152, label %.lr.ph, label %_ZL11IS_CHEMBONDi.exit.thread, !llvm.loop !147 -.loopexit200: ; preds = %.critedge.i, %.noexc93, %.noexc94 - %lpad.loopexit202 = landingpad { ptr, i32 } +.loopexit201: ; preds = %.critedge.i, %.noexc93, %.noexc94 + %lpad.loopexit203 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp201.loopexit: ; preds = %._crit_edge.i, %35 - %lpad.loopexit205 = landingpad { ptr, i32 } +.loopexit.split-lp202.loopexit: ; preds = %._crit_edge.i, %35 + %lpad.loopexit206 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp201.loopexit.split-lp: ; preds = %56 - %lpad.loopexit.split-lp206 = landingpad { ptr, i32 } +.loopexit.split-lp202.loopexit.split-lp: ; preds = %56 + %lpad.loopexit.split-lp207 = landingpad { ptr, i32 } cleanup br label %.body @@ -988,8 +988,8 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 br label %.body _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ZL11IS_CHEMBONDi.exit - %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next464, 95 + %indvars.iv.next465 = add nuw nsw i64 %indvars.iv464, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next465, 95 br i1 %exitcond.not, label %155, label %115, !llvm.loop !148 155: ; preds = %_ZL11IS_CHEMBONDi.exit.thread @@ -1003,22 +1003,22 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %163 = lshr exact i64 %162, 2 %164 = trunc i64 %163 to i32 %165 = icmp sgt i32 %164, 1 - br i1 %165, label %.lr.ph331, label %.preheader192 + br i1 %165, label %.lr.ph332, label %.preheader193 -.preheader192: ; preds = %188, %155 +.preheader193: ; preds = %188, %155 %166 = load i32, ptr %42, align 8, !tbaa !149 %167 = icmp sgt i32 %166, 0 - br i1 %167, label %.lr.ph339, label %._crit_edge + br i1 %167, label %.lr.ph340, label %._crit_edge -.lr.ph339: ; preds = %.preheader192 +.lr.ph340: ; preds = %.preheader193 %168 = getelementptr inbounds nuw i8, ptr %39, i64 16 br label %203 -.lr.ph331: ; preds = %155, %188 - %indvars.iv466 = phi i64 [ %indvars.iv.next467, %188 ], [ 1, %155 ] +.lr.ph332: ; preds = %155, %188 + %indvars.iv467 = phi i64 [ %indvars.iv.next468, %188 ], [ 1, %155 ] %169 = phi ptr [ %190, %188 ], [ %159, %155 ] %170 = load ptr, ptr %11, align 8, !tbaa !98 - %171 = getelementptr inbounds nuw i32, ptr %169, i64 %indvars.iv466 + %171 = getelementptr inbounds nuw i32, ptr %169, i64 %indvars.iv467 %172 = load i32, ptr %171, align 4, !tbaa !146 %173 = sext i32 %172 to i64 %174 = getelementptr inbounds nuw i8, ptr %171, i64 4 @@ -1027,10 +1027,10 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %177 = invoke i32 @tng_molecule_bond_add(ptr noundef %12, ptr noundef %170, i64 noundef %173, i64 noundef %176, ptr noundef nonnull %10) to label %178 unwind label %198 -178: ; preds = %.lr.ph331 +178: ; preds = %.lr.ph332 %179 = load ptr, ptr %11, align 8, !tbaa !98 %180 = load ptr, ptr %156, align 8, !tbaa !145 - %181 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv466 + %181 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv467 %182 = load i32, ptr %181, align 4, !tbaa !146 %183 = sext i32 %182 to i64 %184 = getelementptr inbounds nuw i8, ptr %181, i64 8 @@ -1040,7 +1040,7 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ to label %188 unwind label %198 188: ; preds = %178 - %indvars.iv.next467 = add nuw nsw i64 %indvars.iv466, 4 + %indvars.iv.next468 = add nuw nsw i64 %indvars.iv467, 4 %189 = load ptr, ptr %157, align 8, !tbaa !144 %190 = load ptr, ptr %156, align 8, !tbaa !145 %191 = ptrtoint ptr %189 to i64 @@ -1048,11 +1048,11 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %193 = sub i64 %191, %192 %194 = lshr exact i64 %193, 2 %195 = trunc i64 %194 to i32 - %196 = trunc nuw i64 %indvars.iv.next467 to i32 + %196 = trunc nuw i64 %indvars.iv.next468 to i32 %197 = icmp slt i32 %196, %195 - br i1 %197, label %.lr.ph331, label %.preheader192, !llvm.loop !150 + br i1 %197, label %.lr.ph332, label %.preheader193, !llvm.loop !150 -198: ; preds = %178, %.lr.ph331 +198: ; preds = %178, %.lr.ph332 %199 = landingpad { ptr, i32 } cleanup br label %.body @@ -1062,37 +1062,37 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %201 = icmp slt i32 %200, 2 %202 = icmp slt i32 %251, 1 %or.cond = or i1 %201, %202 - br i1 %or.cond, label %._crit_edge, label %.lr.ph352.split - -203: ; preds = %.lr.ph339, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 - %indvars.iv469 = phi i64 [ 0, %.lr.ph339 ], [ %indvars.iv.next470, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0150.5337 = phi ptr [ %.sroa.0150.2371, %.lr.ph339 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13156.1336 = phi ptr [ %.sroa.13156.0370, %.lr.ph339 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22159.5335 = phi ptr [ %.sroa.22159.2369, %.lr.ph339 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22.5334 = phi ptr [ %.sroa.22.2367, %.lr.ph339 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13.1333 = phi ptr [ %.sroa.13.0366, %.lr.ph339 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0139.5332 = phi ptr [ %.sroa.0139.2365, %.lr.ph339 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + br i1 %or.cond, label %._crit_edge, label %.lr.ph353.split + +203: ; preds = %.lr.ph340, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 + %indvars.iv470 = phi i64 [ 0, %.lr.ph340 ], [ %indvars.iv.next471, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0150.5338 = phi ptr [ %.sroa.0150.2372, %.lr.ph340 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13156.1337 = phi ptr [ %.sroa.13156.0371, %.lr.ph340 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22159.5336 = phi ptr [ %.sroa.22159.2370, %.lr.ph340 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22.5335 = phi ptr [ %.sroa.22.2368, %.lr.ph340 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13.1334 = phi ptr [ %.sroa.13.0367, %.lr.ph340 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0139.5333 = phi ptr [ %.sroa.0139.2366, %.lr.ph340 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] %204 = load ptr, ptr %168, align 8, !tbaa !151 - %205 = getelementptr inbounds nuw %struct.t_atom, ptr %204, i64 %indvars.iv469 + %205 = getelementptr inbounds nuw %struct.t_atom, ptr %204, i64 %indvars.iv470 %206 = getelementptr inbounds nuw i8, ptr %205, i64 4 - %.not.i96 = icmp eq ptr %.sroa.13156.1336, %.sroa.22159.5335 + %.not.i96 = icmp eq ptr %.sroa.13156.1337, %.sroa.22159.5336 br i1 %.not.i96, label %209, label %207 207: ; preds = %203 %208 = load float, ptr %206, align 4, !tbaa !152 - store float %208, ptr %.sroa.13156.1336, align 4, !tbaa !152 + store float %208, ptr %.sroa.13156.1337, align 4, !tbaa !152 br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit 209: ; preds = %203 - %210 = ptrtoint ptr %.sroa.13156.1336 to i64 - %211 = ptrtoint ptr %.sroa.0150.5337 to i64 + %210 = ptrtoint ptr %.sroa.13156.1337 to i64 + %211 = ptrtoint ptr %.sroa.0150.5338 to i64 %212 = sub i64 %210, %211 %213 = icmp eq i64 %212, 9223372036854775804 br i1 %213, label %214, label %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i 214: ; preds = %209 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc97 unwind label %.loopexit.split-lp194 + to label %.noexc97 unwind label %.loopexit.split-lp195 .noexc97: ; preds = %214 unreachable @@ -1108,7 +1108,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i: ; preds = %209 call void @llvm.assume(i1 %.not.i.i.i) %220 = shl nuw nsw i64 %219, 2 %221 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %220) #21 - to label %.noexc98 unwind label %.loopexit193 + to label %.noexc98 unwind label %.loopexit194 .noexc98: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i %222 = getelementptr inbounds i8, ptr %221, i64 %212 @@ -1118,15 +1118,15 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i: ; preds = %209 br i1 %224, label %225, label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i 225: ; preds = %.noexc98 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %.sroa.0150.5337, i64 %212, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %.sroa.0150.5338, i64 %212, i1 false) br label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i _ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i: ; preds = %225, %.noexc98 - %.not.i17.i.i = icmp eq ptr %.sroa.0150.5337, null + %.not.i17.i.i = icmp eq ptr %.sroa.0150.5338, null br i1 %.not.i17.i.i, label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i, label %226 226: ; preds = %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.5337, i64 noundef %212) #23 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.5338, i64 noundef %212) #23 br label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i: ; preds = %226, %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i @@ -1136,29 +1136,29 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP _ZNSt6vectorIfSaIfEE9push_backERKf.exit: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i, %207 %228 = phi ptr [ %.pre, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %204, %207 ] - %.sroa.22159.9 = phi ptr [ %227, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.22159.5335, %207 ] - %.pn184 = phi ptr [ %222, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.13156.1336, %207 ] - %.sroa.0150.9 = phi ptr [ %221, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.0150.5337, %207 ] - %.sroa.13156.4 = getelementptr inbounds nuw i8, ptr %.pn184, i64 4 - %229 = getelementptr inbounds nuw %struct.t_atom, ptr %228, i64 %indvars.iv469 - %.not.i99 = icmp eq ptr %.sroa.13.1333, %.sroa.22.5334 + %.sroa.22159.9 = phi ptr [ %227, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.22159.5336, %207 ] + %.pn185 = phi ptr [ %222, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.13156.1337, %207 ] + %.sroa.0150.9 = phi ptr [ %221, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.0150.5338, %207 ] + %.sroa.13156.4 = getelementptr inbounds nuw i8, ptr %.pn185, i64 4 + %229 = getelementptr inbounds nuw %struct.t_atom, ptr %228, i64 %indvars.iv470 + %.not.i99 = icmp eq ptr %.sroa.13.1334, %.sroa.22.5335 br i1 %.not.i99, label %232, label %230 230: ; preds = %_ZNSt6vectorIfSaIfEE9push_backERKf.exit %231 = load float, ptr %229, align 4, !tbaa !152 - store float %231, ptr %.sroa.13.1333, align 4, !tbaa !152 + store float %231, ptr %.sroa.13.1334, align 4, !tbaa !152 br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 232: ; preds = %_ZNSt6vectorIfSaIfEE9push_backERKf.exit - %233 = ptrtoint ptr %.sroa.22.5334 to i64 - %234 = ptrtoint ptr %.sroa.0139.5332 to i64 + %233 = ptrtoint ptr %.sroa.22.5335 to i64 + %234 = ptrtoint ptr %.sroa.0139.5333 to i64 %235 = sub i64 %233, %234 %236 = icmp eq i64 %235, 9223372036854775804 br i1 %236, label %237, label %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 237: ; preds = %232 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc106 unwind label %.loopexit.split-lp194 + to label %.noexc106 unwind label %.loopexit.split-lp195 .noexc106: ; preds = %237 unreachable @@ -1174,7 +1174,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100: ; preds = %232 call void @llvm.assume(i1 %.not.i.i.i102) %243 = shl nuw nsw i64 %242, 2 %244 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %243) #21 - to label %.noexc107 unwind label %.loopexit193 + to label %.noexc107 unwind label %.loopexit194 .noexc107: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 %245 = getelementptr inbounds i8, ptr %244, i64 %235 @@ -1184,15 +1184,15 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100: ; preds = %232 br i1 %247, label %248, label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 248: ; preds = %.noexc107 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %.sroa.0139.5332, i64 %235, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %.sroa.0139.5333, i64 %235, i1 false) br label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 _ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103: ; preds = %248, %.noexc107 - %.not.i17.i.i104 = icmp eq ptr %.sroa.0139.5332, null + %.not.i17.i.i104 = icmp eq ptr %.sroa.0139.5333, null br i1 %.not.i17.i.i104, label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105, label %249 249: ; preds = %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0139.5332, i64 noundef %235) #23 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0139.5333, i64 noundef %235) #23 br label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105: ; preds = %249, %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 @@ -1200,67 +1200,68 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105, %230 - %.sroa.0139.8 = phi ptr [ %244, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.0139.5332, %230 ] - %.pn185 = phi ptr [ %245, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.13.1333, %230 ] - %.sroa.22.8 = phi ptr [ %250, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.22.5334, %230 ] - %.sroa.13.4 = getelementptr inbounds nuw i8, ptr %.pn185, i64 4 - %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1 + %.sroa.0139.8 = phi ptr [ %244, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.0139.5333, %230 ] + %.pn186 = phi ptr [ %245, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.13.1334, %230 ] + %.sroa.22.8 = phi ptr [ %250, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.22.5335, %230 ] + %.sroa.13.4 = getelementptr inbounds nuw i8, ptr %.pn186, i64 4 + %indvars.iv.next471 = add nuw nsw i64 %indvars.iv470, 1 %251 = load i32, ptr %42, align 8, !tbaa !149 %252 = sext i32 %251 to i64 - %253 = icmp slt i64 %indvars.iv.next470, %252 + %253 = icmp slt i64 %indvars.iv.next471, %252 br i1 %253, label %203, label %.preheader, !llvm.loop !153 -.loopexit193: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 - %.sroa.22159.6.ph = phi ptr [ %.sroa.13156.1336, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.22159.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] - %.sroa.0150.6.ph = phi ptr [ %.sroa.0150.5337, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.0150.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] - %lpad.loopexit197 = landingpad { ptr, i32 } +.loopexit194: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 + %.sroa.22159.6.ph = phi ptr [ %.sroa.13156.1337, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.22159.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] + %.sroa.0150.6.ph = phi ptr [ %.sroa.0150.5338, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.0150.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] + %lpad.loopexit198 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp194: ; preds = %214, %237 - %.sroa.22159.6.ph195 = phi ptr [ %.sroa.22159.9, %237 ], [ %.sroa.13156.1336, %214 ] - %.sroa.0150.6.ph196 = phi ptr [ %.sroa.0150.9, %237 ], [ %.sroa.0150.5337, %214 ] - %lpad.loopexit.split-lp198 = landingpad { ptr, i32 } +.loopexit.split-lp195: ; preds = %214, %237 + %.sroa.22159.6.ph196 = phi ptr [ %.sroa.22159.9, %237 ], [ %.sroa.13156.1337, %214 ] + %.sroa.0150.6.ph197 = phi ptr [ %.sroa.0150.9, %237 ], [ %.sroa.0150.5338, %214 ] + %lpad.loopexit.split-lp199 = landingpad { ptr, i32 } cleanup br label %.body -._crit_edge: ; preds = %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, %.preheader192, %.preheader - %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2365, %.preheader192 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0366, %.preheader192 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2367, %.preheader192 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2369, %.preheader192 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0370, %.preheader192 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2371, %.preheader192 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] +._crit_edge: ; preds = %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, %.preheader193, %.preheader + %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2366, %.preheader193 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0367, %.preheader193 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2368, %.preheader193 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2370, %.preheader193 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0371, %.preheader193 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2372, %.preheader193 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) - %254 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0368, i64 56 + %254 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0369, i64 56 %.not182 = icmp eq ptr %254, %29 - br i1 %.not182, label %._crit_edge373.loopexit, label %35 - -.lr.ph352.split: ; preds = %.preheader, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 - %.074351 = phi i32 [ %321, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ 1, %.preheader ] - %.sroa.0150.7350 = phi ptr [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0150.9, %.preheader ] - %.sroa.13156.2349 = phi ptr [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13156.4, %.preheader ] - %.sroa.22159.7348 = phi ptr [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22159.9, %.preheader ] - %.sroa.22.6347 = phi ptr [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22.8, %.preheader ] - %.sroa.13.2346 = phi ptr [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13.4, %.preheader ] - %.sroa.0139.6345 = phi ptr [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0139.8, %.preheader ] + br i1 %.not182, label %._crit_edge374.loopexit, label %35 + +.lr.ph353.split: ; preds = %.preheader, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 + %.074352 = phi i32 [ %321, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ 1, %.preheader ] + %.sroa.0150.7351 = phi ptr [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0150.9, %.preheader ] + %.sroa.13156.2350 = phi ptr [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13156.4, %.preheader ] + %.sroa.22159.7349 = phi ptr [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22159.9, %.preheader ] + %.sroa.22.6348 = phi ptr [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22.8, %.preheader ] + %.sroa.13.2347 = phi ptr [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13.4, %.preheader ] + %.sroa.0139.6346 = phi ptr [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0139.8, %.preheader ] %255 = load i32, ptr %42, align 8, !tbaa !149 %256 = icmp slt i32 %255, 1 br i1 %256, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, label %.lr.ph.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph352.split - %257 = zext nneg i32 %255 to i64 - %258 = sub nsw i64 0, %257 - %259 = getelementptr inbounds float, ptr %.sroa.13156.2349, i64 %258 +.lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph353.split + %narrow = sub nsw i32 0, %255 + %257 = sext i32 %narrow to i64 + %258 = getelementptr inbounds float, ptr %.sroa.13156.2350, i64 %257 + %259 = zext nneg i32 %255 to i64 br label %260 260: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i - %.sroa.22159.10 = phi ptr [ %.sroa.22159.7348, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.sroa.0150.10 = phi ptr [ %.sroa.0150.7350, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %261 = phi ptr [ %.sroa.22159.7348, %.lr.ph.i.i.i.i.i.i.i ], [ %284, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %262 = phi ptr [ %.sroa.13156.2349, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.07.i.i.i.i.i.i.i = phi i64 [ %257, %.lr.ph.i.i.i.i.i.i.i ], [ %286, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.056.i.i.i.i.i.i.i = phi ptr [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %285, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.sroa.22159.10 = phi ptr [ %.sroa.22159.7349, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.sroa.0150.10 = phi ptr [ %.sroa.0150.7351, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %261 = phi ptr [ %.sroa.22159.7349, %.lr.ph.i.i.i.i.i.i.i ], [ %284, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %262 = phi ptr [ %.sroa.13156.2350, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.07.i.i.i.i.i.i.i = phi i64 [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %286, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.056.i.i.i.i.i.i.i = phi ptr [ %258, %.lr.ph.i.i.i.i.i.i.i ], [ %285, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %262, %261 br i1 %.not.i.i.i.i.i.i.i.i.i, label %265, label %263 @@ -1278,7 +1279,7 @@ _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfE 270: ; preds = %265 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc109 unwind label %.loopexit.split-lp188 + to label %.noexc109 unwind label %.loopexit.split-lp189 .noexc109: ; preds = %270 unreachable @@ -1294,7 +1295,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %26 call void @llvm.assume(i1 %.not.i.i.i.i.i.i.i.i.i.i.i) %276 = shl nuw nsw i64 %275, 2 %277 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %276) #21 - to label %.noexc110 unwind label %.loopexit187 + to label %.noexc110 unwind label %.loopexit188 .noexc110: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i %278 = getelementptr inbounds i8, ptr %277, i64 %268 @@ -1336,18 +1337,19 @@ _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i: ; preds br i1 %289, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, label %.lr.ph.i.i.i.i.i.i.i111 .lr.ph.i.i.i.i.i.i.i111: ; preds = %288 - %290 = zext nneg i32 %.pr to i64 - %291 = sub nsw i64 0, %290 - %292 = getelementptr inbounds float, ptr %.sroa.13.2346, i64 %291 + %narrow183 = sub nsw i32 0, %.pr + %290 = sext i32 %narrow183 to i64 + %291 = getelementptr inbounds float, ptr %.sroa.13.2347, i64 %290 + %292 = zext nneg i32 %.pr to i64 br label %293 293: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph.i.i.i.i.i.i.i111 - %.sroa.0139.9 = phi ptr [ %.sroa.0139.6345, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22.9 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %294 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %317, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %295 = phi ptr [ %.sroa.13.2346, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.07.i.i.i.i.i.i.i114 = phi i64 [ %290, %.lr.ph.i.i.i.i.i.i.i111 ], [ %319, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.056.i.i.i.i.i.i.i115 = phi ptr [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %318, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0139.9 = phi ptr [ %.sroa.0139.6346, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22.9 = phi ptr [ %.sroa.22.6348, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %294 = phi ptr [ %.sroa.22.6348, %.lr.ph.i.i.i.i.i.i.i111 ], [ %317, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %295 = phi ptr [ %.sroa.13.2347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.07.i.i.i.i.i.i.i114 = phi i64 [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %319, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.056.i.i.i.i.i.i.i115 = phi ptr [ %291, %.lr.ph.i.i.i.i.i.i.i111 ], [ %318, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %.not.i.i.i.i.i.i.i.i.i116 = icmp eq ptr %295, %294 br i1 %.not.i.i.i.i.i.i.i.i.i116, label %298, label %296 @@ -1408,34 +1410,34 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123, %296 %.sroa.0139.10 = phi ptr [ %310, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %.sroa.0139.9, %296 ] - %.pn183 = phi ptr [ %311, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %295, %296 ] + %.pn184 = phi ptr [ %311, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %295, %296 ] %.sroa.22.10 = phi ptr [ %316, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %.sroa.22.9, %296 ] %317 = phi ptr [ %316, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %294, %296 ] - %.sroa.13.5 = getelementptr inbounds nuw i8, ptr %.pn183, i64 4 + %.sroa.13.5 = getelementptr inbounds nuw i8, ptr %.pn184, i64 4 %318 = getelementptr inbounds nuw i8, ptr %.056.i.i.i.i.i.i.i115, i64 4 %319 = add nsw i64 %.07.i.i.i.i.i.i.i114, -1 %320 = icmp sgt i64 %.07.i.i.i.i.i.i.i114, 1 br i1 %320, label %293, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, !llvm.loop !154 -_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph352.split, %288 - %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7350, %.lr.ph352.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2349, %.lr.ph352.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7348, %.lr.ph352.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.0139.11 = phi ptr [ %.sroa.0139.6345, %288 ], [ %.sroa.0139.6345, %.lr.ph352.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13.6 = phi ptr [ %.sroa.13.2346, %288 ], [ %.sroa.13.2346, %.lr.ph352.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22.11 = phi ptr [ %.sroa.22.6347, %288 ], [ %.sroa.22.6347, %.lr.ph352.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %321 = add nuw nsw i32 %.074351, 1 +_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph353.split, %288 + %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7351, %.lr.ph353.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2350, %.lr.ph353.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7349, %.lr.ph353.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0139.11 = phi ptr [ %.sroa.0139.6346, %288 ], [ %.sroa.0139.6346, %.lr.ph353.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13.6 = phi ptr [ %.sroa.13.2347, %288 ], [ %.sroa.13.2347, %.lr.ph353.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22.11 = phi ptr [ %.sroa.22.6348, %288 ], [ %.sroa.22.6348, %.lr.ph353.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %321 = add nuw nsw i32 %.074352, 1 %322 = load i32, ptr %43, align 4, !tbaa !117 %323 = icmp slt i32 %321, %322 - br i1 %323, label %.lr.ph352.split, label %._crit_edge, !llvm.loop !155 + br i1 %323, label %.lr.ph353.split, label %._crit_edge, !llvm.loop !155 -.loopexit187: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i - %lpad.loopexit189 = landingpad { ptr, i32 } +.loopexit188: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i + %lpad.loopexit190 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp188: ; preds = %270 - %lpad.loopexit.split-lp190 = landingpad { ptr, i32 } +.loopexit.split-lp189: ; preds = %270 + %lpad.loopexit.split-lp191 = landingpad { ptr, i32 } cleanup br label %.body @@ -1449,16 +1451,16 @@ _ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert cleanup br label %.body -.body: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit187, %.loopexit.split-lp188, %.loopexit193, %.loopexit.split-lp194, %.loopexit200, %.loopexit.split-lp201.loopexit.split-lp, %.loopexit.split-lp201.loopexit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %198, %153 - %.sroa.0139.4 = phi ptr [ %.sroa.0139.2365, %153 ], [ %.sroa.0139.2365, %198 ], [ %.sroa.0139.2365, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2365, %.loopexit200 ], [ %.sroa.0139.2365, %.loopexit.split-lp201.loopexit ], [ %.sroa.0139.2365, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.0139.5332, %.loopexit193 ], [ %.sroa.0139.5332, %.loopexit.split-lp194 ], [ %.sroa.0139.6345, %.loopexit187 ], [ %.sroa.0139.6345, %.loopexit.split-lp188 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] - %.sroa.22.4 = phi ptr [ %.sroa.22.2367, %153 ], [ %.sroa.22.2367, %198 ], [ %.sroa.22.2367, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2367, %.loopexit200 ], [ %.sroa.22.2367, %.loopexit.split-lp201.loopexit ], [ %.sroa.22.2367, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.22.5334, %.loopexit193 ], [ %.sroa.22.5334, %.loopexit.split-lp194 ], [ %.sroa.22.6347, %.loopexit187 ], [ %.sroa.22.6347, %.loopexit.split-lp188 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] - %.sroa.22159.4 = phi ptr [ %.sroa.22159.2369, %153 ], [ %.sroa.22159.2369, %198 ], [ %.sroa.22159.2369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2369, %.loopexit200 ], [ %.sroa.22159.2369, %.loopexit.split-lp201.loopexit ], [ %.sroa.22159.2369, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit193 ], [ %.sroa.22159.6.ph195, %.loopexit.split-lp194 ], [ %.sroa.22159.10, %.loopexit187 ], [ %.sroa.22159.10, %.loopexit.split-lp188 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] - %.sroa.0150.4 = phi ptr [ %.sroa.0150.2371, %153 ], [ %.sroa.0150.2371, %198 ], [ %.sroa.0150.2371, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2371, %.loopexit200 ], [ %.sroa.0150.2371, %.loopexit.split-lp201.loopexit ], [ %.sroa.0150.2371, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit193 ], [ %.sroa.0150.6.ph196, %.loopexit.split-lp194 ], [ %.sroa.0150.10, %.loopexit187 ], [ %.sroa.0150.10, %.loopexit.split-lp188 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] - %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit202, %.loopexit200 ], [ %lpad.loopexit205, %.loopexit.split-lp201.loopexit ], [ %lpad.loopexit.split-lp206, %.loopexit.split-lp201.loopexit.split-lp ], [ %lpad.loopexit197, %.loopexit193 ], [ %lpad.loopexit.split-lp198, %.loopexit.split-lp194 ], [ %lpad.loopexit189, %.loopexit187 ], [ %lpad.loopexit.split-lp190, %.loopexit.split-lp188 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +.body: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit188, %.loopexit.split-lp189, %.loopexit194, %.loopexit.split-lp195, %.loopexit201, %.loopexit.split-lp202.loopexit.split-lp, %.loopexit.split-lp202.loopexit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %198, %153 + %.sroa.0139.4 = phi ptr [ %.sroa.0139.2366, %153 ], [ %.sroa.0139.2366, %198 ], [ %.sroa.0139.2366, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2366, %.loopexit201 ], [ %.sroa.0139.2366, %.loopexit.split-lp202.loopexit ], [ %.sroa.0139.2366, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0139.5333, %.loopexit194 ], [ %.sroa.0139.5333, %.loopexit.split-lp195 ], [ %.sroa.0139.6346, %.loopexit188 ], [ %.sroa.0139.6346, %.loopexit.split-lp189 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] + %.sroa.22.4 = phi ptr [ %.sroa.22.2368, %153 ], [ %.sroa.22.2368, %198 ], [ %.sroa.22.2368, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2368, %.loopexit201 ], [ %.sroa.22.2368, %.loopexit.split-lp202.loopexit ], [ %.sroa.22.2368, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22.5335, %.loopexit194 ], [ %.sroa.22.5335, %.loopexit.split-lp195 ], [ %.sroa.22.6348, %.loopexit188 ], [ %.sroa.22.6348, %.loopexit.split-lp189 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] + %.sroa.22159.4 = phi ptr [ %.sroa.22159.2370, %153 ], [ %.sroa.22159.2370, %198 ], [ %.sroa.22159.2370, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2370, %.loopexit201 ], [ %.sroa.22159.2370, %.loopexit.split-lp202.loopexit ], [ %.sroa.22159.2370, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit194 ], [ %.sroa.22159.6.ph196, %.loopexit.split-lp195 ], [ %.sroa.22159.10, %.loopexit188 ], [ %.sroa.22159.10, %.loopexit.split-lp189 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] + %.sroa.0150.4 = phi ptr [ %.sroa.0150.2372, %153 ], [ %.sroa.0150.2372, %198 ], [ %.sroa.0150.2372, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2372, %.loopexit201 ], [ %.sroa.0150.2372, %.loopexit.split-lp202.loopexit ], [ %.sroa.0150.2372, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit194 ], [ %.sroa.0150.6.ph197, %.loopexit.split-lp195 ], [ %.sroa.0150.10, %.loopexit188 ], [ %.sroa.0150.10, %.loopexit.split-lp189 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] + %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit203, %.loopexit201 ], [ %lpad.loopexit206, %.loopexit.split-lp202.loopexit ], [ %lpad.loopexit.split-lp207, %.loopexit.split-lp202.loopexit.split-lp ], [ %lpad.loopexit198, %.loopexit194 ], [ %lpad.loopexit.split-lp199, %.loopexit.split-lp195 ], [ %lpad.loopexit190, %.loopexit188 ], [ %lpad.loopexit.split-lp191, %.loopexit.split-lp189 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %337 -324: ; preds = %._crit_edge373 +324: ; preds = %._crit_edge374 %325 = load i32, ptr %14, align 8, !tbaa !42 %326 = sext i32 %325 to i64 %327 = invoke i32 @tng_particle_data_block_add(ptr noundef %12, i64 noundef 268435472, ptr noundef nonnull @.str.10, i8 noundef signext 2, i8 noundef signext 0, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 0, i64 noundef %326, i64 noundef 3, ptr noundef %.sroa.0139.2.lcssa) diff --git a/bench/hwloc/optimized/topology-synthetic.ll b/bench/hwloc/optimized/topology-synthetic.ll index cde81c3c12d..1eb6d1e570f 100644 --- a/bench/hwloc/optimized/topology-synthetic.ll +++ b/bench/hwloc/optimized/topology-synthetic.ll @@ -1538,9 +1538,9 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %99 = load i8, ptr %.1.i, align 1, !tbaa !56 %100 = add i8 %99, -58 %or.cond367.i = icmp ult i8 %100, -10 - br i1 %or.cond367.i, label %104, label %.thread524.i + br i1 %or.cond367.i, label %104, label %.thread523.i -.thread524.i: ; preds = %95 +.thread523.i: ; preds = %95 %101 = getelementptr inbounds nuw i8, ptr %46, i64 16 store i32 -1, ptr %101, align 8, !tbaa !90 %102 = getelementptr inbounds nuw i8, ptr %46, i64 20 @@ -1640,12 +1640,12 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n store i32 %140, ptr %130, align 4, !tbaa !101 br label %141 -141: ; preds = %139, %137, %134, %.thread524.i - %142 = phi ptr [ %129, %137 ], [ %129, %139 ], [ %129, %134 ], [ %101, %.thread524.i ] - %.2522.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread524.i ] - %143 = call i64 @strtoul(ptr noundef nonnull %.2522.i, ptr noundef nonnull %8, i32 noundef 0) #25 +141: ; preds = %139, %137, %134, %.thread523.i + %142 = phi ptr [ %129, %137 ], [ %129, %139 ], [ %129, %134 ], [ %101, %.thread523.i ] + %.2521.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread523.i ] + %143 = call i64 @strtoul(ptr noundef nonnull %.2521.i, ptr noundef nonnull %8, i32 noundef 0) #25 %144 = load ptr, ptr %8, align 8, !tbaa !81 - %145 = icmp eq ptr %144, %.2522.i + %145 = icmp eq ptr %144, %.2521.i br i1 %145, label %146, label %150 146: ; preds = %141 @@ -1654,7 +1654,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n 147: ; preds = %146 %148 = load ptr, ptr @stderr, align 8, !tbaa !37 - %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.14, ptr noundef nonnull %.2522.i) #29 + %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.14, ptr noundef nonnull %.2521.i) #29 br label %.thread374.sink.split.i 150: ; preds = %141 @@ -1667,7 +1667,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n 152: ; preds = %151 %153 = load ptr, ptr @stderr, align 8, !tbaa !37 - %154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %153, ptr noundef nonnull @.str.15, ptr noundef nonnull %.2522.i) #29 + %154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %153, ptr noundef nonnull @.str.15, ptr noundef nonnull %.2521.i) #29 br label %.thread374.sink.split.i 155: ; preds = %150 @@ -1688,8 +1688,8 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br i1 %164, label %.thread374.i, label %165 165: ; preds = %161, %155 - %166 = add i64 %.0283427.i, 1 - %167 = icmp ugt i64 %166, 127 + %166 = add nuw nsw i64 %.0283427.i, 1 + %167 = icmp ugt i64 %.0283427.i, 126 br i1 %167, label %168, label %172 168: ; preds = %165 @@ -1918,7 +1918,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n .preheader.i: ; preds = %256 %260 = icmp ugt i64 %182, 1 - br i1 %260, label %.lr.ph435.i, label %.thread532.i + br i1 %260, label %.lr.ph435.i, label %.thread531.i 261: ; preds = %256 %.not358.i = icmp eq i32 %.0292.i, 0 @@ -1972,10 +1972,10 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %477 284: ; preds = %._crit_edge436.i - br i1 %.not347.i, label %.thread532.i, label %285 + br i1 %.not347.i, label %.thread531.i, label %285 285: ; preds = %284 - %286 = trunc nuw i64 %.0283419.i to i32 + %286 = trunc i64 %.0283419.i to i32 %287 = add nsw i32 %286, -2 %288 = load i64, ptr %25, align 8, !tbaa !82 %.not350.i = icmp eq i64 %288, 0 @@ -2092,13 +2092,13 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br i1 %.not393.i, label %.thread391.i, label %.thread391.sink.split.i .thread391.sink.split.i: ; preds = %332, %326 - %.sink572.i = phi i32 [ %325, %326 ], [ %333, %332 ] - %.sink568.i = phi i32 [ 5, %326 ], [ 10, %332 ] + %.sink571.i = phi i32 [ %325, %326 ], [ %333, %332 ] + %.sink567.i = phi i32 [ 5, %326 ], [ 10, %332 ] %.sink.i = phi i32 [ 1, %326 ], [ 2, %332 ] - %349 = zext i32 %.sink572.i to i64 + %349 = zext i32 %.sink571.i to i64 %350 = getelementptr inbounds nuw %struct.hwloc_synthetic_level_data_s, ptr %28, i64 %349 %351 = getelementptr inbounds nuw i8, ptr %350, i64 16 - store i32 %.sink568.i, ptr %351, align 8, !tbaa !90 + store i32 %.sink567.i, ptr %351, align 8, !tbaa !90 %352 = getelementptr inbounds nuw i8, ptr %350, i64 20 store i32 1, ptr %352, align 4, !tbaa !101 %353 = getelementptr inbounds nuw i8, ptr %350, i64 24 @@ -2106,7 +2106,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %.thread391.i .thread391.i: ; preds = %.thread391.sink.split.i, %332, %326, %316 - br i1 %294, label %354, label %.thread532.i + br i1 %294, label %354, label %.thread531.i 354: ; preds = %.thread391.i %355 = add i32 %297, 1 @@ -2117,14 +2117,14 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %360 = getelementptr inbounds nuw %struct.hwloc_synthetic_level_data_s, ptr %28, i64 %359 %361 = getelementptr inbounds nuw i8, ptr %360, i64 16 store i32 3, ptr %361, align 8, !tbaa !90 - br label %.thread532.i + br label %.thread531.i -.thread532.i: ; preds = %354, %.thread391.i, %284, %.preheader.i +.thread531.i: ; preds = %354, %.thread391.i, %284, %.preheader.i %362 = phi i32 [ %317, %.thread391.i ], [ %317, %354 ], [ %239, %284 ], [ %239, %.preheader.i ] %.not353.i = icmp eq i32 %362, 0 br i1 %.not353.i, label %363, label %.lr.ph452.i -363: ; preds = %.thread532.i +363: ; preds = %.thread531.i %364 = load i64, ptr %25, align 8, !tbaa !82 %.not354.i = icmp eq i64 %364, 0 br i1 %.not354.i, label %365, label %.lr.ph452.i @@ -2158,8 +2158,8 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %379 = add nuw nsw i64 %.0283419.i, 1 br label %.lr.ph452.i -.lr.ph452.i: ; preds = %369, %363, %.thread532.i - %.3.i = phi i64 [ %.0283419.i, %.thread532.i ], [ %.0283419.i, %363 ], [ %379, %369 ] +.lr.ph452.i: ; preds = %369, %363, %.thread531.i + %.3.i = phi i64 [ %.0283419.i, %.thread531.i ], [ %.0283419.i, %363 ], [ %379, %369 ] %380 = getelementptr inbounds nuw i8, ptr %9, i64 52 %.promoted454.i = load i32, ptr %380, align 4 br label %381 diff --git a/bench/hyperscan/optimized/ng_revacc.ll b/bench/hyperscan/optimized/ng_revacc.ll index a3c25c2aa69..571c07c2846 100644 --- a/bench/hyperscan/optimized/ng_revacc.ll +++ b/bench/hyperscan/optimized/ng_revacc.ll @@ -1300,8 +1300,7 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS ret void 38: ; preds = %.preheader92, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 - %indvars.iv112 = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next113, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] - %indvars.iv = phi i64 [ 1, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] + %indvars.iv = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store i32 0, ptr %14, align 8 store ptr null, ptr %15, align 8 @@ -1309,11 +1308,11 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS store ptr %14, ptr %17, align 8 store i64 0, ptr %18, align 8 %39 = load ptr, ptr %9, align 8 - %.not88103 = icmp eq ptr %39, %7 - br i1 %.not88103, label %._crit_edge, label %.lr.ph105 + %.not88102 = icmp eq ptr %39, %7 + br i1 %.not88102, label %._crit_edge, label %.lr.ph104 -.lr.ph105: ; preds = %38 - %40 = icmp samesign ult i64 %indvars.iv112, 15 +.lr.ph104: ; preds = %38 + %40 = icmp samesign ult i64 %indvars.iv, 15 br label %72 ._crit_edge.loopexit: ; preds = %.critedge @@ -1405,18 +1404,17 @@ _ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57: ; preds = %_ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EEvRSt3setIT_T0_T1_ESH_.exit call void @llvm.lifetime.end.p0(ptr nonnull %6) - %indvars.iv.next113 = add nuw nsw i64 %indvars.iv112, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond115.not = icmp eq i64 %indvars.iv.next113, 16 - br i1 %exitcond115.not, label %33, label %38, !llvm.loop !26 + %exitcond112.not = icmp eq i64 %indvars.iv.next, 16 + br i1 %exitcond112.not, label %33, label %38, !llvm.loop !26 -72: ; preds = %.lr.ph105, %.critedge - %.sroa.077.0104 = phi ptr [ %39, %.lr.ph105 ], [ %145, %.critedge ] - %73 = getelementptr inbounds nuw i8, ptr %.sroa.077.0104, i64 32 +72: ; preds = %.lr.ph104, %.critedge + %.sroa.077.0103 = phi ptr [ %39, %.lr.ph104 ], [ %145, %.critedge ] + %73 = getelementptr inbounds nuw i8, ptr %.sroa.077.0103, i64 32 %.sroa.075.0.copyload = load ptr, ptr %73, align 8 %74 = getelementptr inbounds nuw i8, ptr %.sroa.075.0.copyload, i64 16 %75 = load ptr, ptr %2, align 8 - %76 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %75, i64 %indvars.iv112 + %76 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %75, i64 %indvars.iv %77 = load i64, ptr %74, align 8 %78 = load i64, ptr %76, align 8 %79 = or i64 %78, %77 @@ -1459,7 +1457,7 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS br i1 %or.cond, label %.preheader, label %106 .preheader: ; preds = %.lr.ph99 - br i1 %40, label %.lr.ph102, label %.critedge + br i1 %40, label %.lr.ph101, label %.critedge 102: ; preds = %_ZNSt8_Rb_treeIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEES8_St9_IdentityIS8_ESt4lessIS8_ESaIS8_EE10_M_insert_IRKS8_NSE_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS8_EPSt18_Rb_tree_node_baseSM_OT_RT0_.exit.i %103 = landingpad { ptr, i32 } @@ -1467,14 +1465,14 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS invoke void @_ZNSt8_Rb_treeIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEES8_St9_IdentityIS8_ESt4lessIS8_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef %.02630.i.i) to label %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit62 unwind label %146 -.lr.ph102: ; preds = %.preheader, %.lr.ph102 - %indvars.iv109 = phi i64 [ %indvars.iv.next110, %.lr.ph102 ], [ %indvars.iv, %.preheader ] +.lr.ph101: ; preds = %.preheader, %.lr.ph101 + %indvars.iv108 = phi i64 [ %indvars.iv.next109, %.lr.ph101 ], [ %indvars.iv, %.preheader ] + %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 %104 = load ptr, ptr %2, align 8 - %105 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %104, i64 %indvars.iv109 + %105 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %104, i64 %indvars.iv.next109 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %105, i8 -1, i64 32, i1 false) - %indvars.iv.next110 = add nuw nsw i64 %indvars.iv109, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next110, 16 - br i1 %exitcond.not, label %.critedge, label %.lr.ph102 + %exitcond.not = icmp eq i64 %indvars.iv.next109, 15 + br i1 %exitcond.not, label %.critedge, label %.lr.ph101 106: ; preds = %.lr.ph99 %107 = getelementptr inbounds nuw i8, ptr %.fr35.i.i, i64 80 @@ -1507,14 +1505,14 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS br i1 %.not.i.i, label %._crit_edge.thread.i.i, label %.lr.ph.split.i.i.backedge .lr.ph.split.i.i.backedge: ; preds = %114, %.thread - %.02632.i.i.be = phi ptr [ %.026.i.i, %114 ], [ %.026.i.i124, %.thread ] + %.02632.i.i.be = phi ptr [ %.026.i.i, %114 ], [ %.026.i.i121, %.thread ] br label %.lr.ph.split.i.i, !llvm.loop !27 .thread: ; preds = %.lr.ph.split.i.i, %112 %116 = getelementptr inbounds nuw i8, ptr %.02632.i.i, i64 24 - %.026.i.i124 = load ptr, ptr %116, align 8 - %.not.i.i125 = icmp eq ptr %.026.i.i124, null - br i1 %.not.i.i125, label %._crit_edge.i.i.thread, label %.lr.ph.split.i.i.backedge + %.026.i.i121 = load ptr, ptr %116, align 8 + %.not.i.i122 = icmp eq ptr %.026.i.i121, null + br i1 %.not.i.i122, label %._crit_edge.i.i.thread, label %.lr.ph.split.i.i.backedge ._crit_edge.thread.i.i: ; preds = %114, %110 %.025.lcssa42.i.i = phi ptr [ %14, %110 ], [ %.02632.i.i, %114 ] @@ -1590,8 +1588,8 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS %.not89 = icmp eq ptr %.sroa.071.0, %95 br i1 %.not89, label %.critedge, label %.lr.ph99 -.critedge: ; preds = %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EE6insertERKS8_.exit61, %.lr.ph102, %72, %.preheader - %145 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.077.0104) #16 +.critedge: ; preds = %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EE6insertERKS8_.exit61, %.lr.ph101, %72, %.preheader + %145 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.077.0103) #16 %.not88 = icmp eq ptr %145, %7 br i1 %.not88, label %._crit_edge.loopexit, label %72 diff --git a/bench/lean4/optimized/name.ll b/bench/lean4/optimized/name.ll index ed6be26b1ce..559acc98d72 100644 --- a/bench/lean4/optimized/name.ll +++ b/bench/lean4/optimized/name.ll @@ -1637,87 +1637,72 @@ define noundef i64 @_ZNK4lean4name9size_coreEb(ptr noundef nonnull readonly alig %9 = ptrtoint ptr %8 to i64 %10 = and i64 %9, 1 %.not = icmp eq i64 %10, 0 - br i1 %.not, label %.preheader, label %.loopexit + br i1 %.not, label %_ZN4lean4name4kindEP11lean_object.exit, label %.loopexit -.preheader: ; preds = %2, %107 - %.016 = phi i64 [ %108, %107 ], [ 0, %2 ] - %.015 = phi ptr [ %104, %107 ], [ %8, %2 ] - %11 = ptrtoint ptr %.015 to i64 - %12 = and i64 %11, 1 - %.not.i.i.i = icmp eq i64 %12, 0 - br i1 %.not.i.i.i, label %16, label %13 - -13: ; preds = %.preheader - %14 = lshr i64 %11, 1 - %15 = trunc i64 %14 to i32 - br label %_ZN4lean4name4kindEP11lean_object.exit - -16: ; preds = %.preheader - %17 = getelementptr i8, ptr %.015, i64 4 - %.val.i.i.i = load i32, ptr %17, align 4 - %18 = lshr i32 %.val.i.i.i, 24 - br label %_ZN4lean4name4kindEP11lean_object.exit - -_ZN4lean4name4kindEP11lean_object.exit: ; preds = %13, %16 - %.0.i.i.i = phi i32 [ %15, %13 ], [ %18, %16 ] - %19 = icmp eq i32 %.0.i.i.i, 1 - %20 = getelementptr inbounds nuw i8, ptr %.015, i64 16 - %21 = load ptr, ptr %20, align 8, !tbaa !6 - br i1 %19, label %22, label %28 +_ZN4lean4name4kindEP11lean_object.exit: ; preds = %2, %100 + %.016 = phi i64 [ %101, %100 ], [ 0, %2 ] + %.015 = phi ptr [ %97, %100 ], [ %8, %2 ] + %11 = getelementptr i8, ptr %.015, i64 4 + %.val.i.i.i = load i32, ptr %11, align 4 + %.mask = and i32 %.val.i.i.i, -16777216 + %12 = icmp eq i32 %.mask, 16777216 + %13 = getelementptr inbounds nuw i8, ptr %.015, i64 16 + %14 = load ptr, ptr %13, align 8, !tbaa !6 + br i1 %12, label %15, label %21 -22: ; preds = %_ZN4lean4name4kindEP11lean_object.exit - br i1 %1, label %23, label %25 +15: ; preds = %_ZN4lean4name4kindEP11lean_object.exit + br i1 %1, label %16, label %18 -23: ; preds = %22 - %24 = getelementptr i8, ptr %21, i64 24 - %.val.i.i = load i64, ptr %24, align 8, !tbaa !33 +16: ; preds = %15 + %17 = getelementptr i8, ptr %14, i64 24 + %.val.i.i = load i64, ptr %17, align 8, !tbaa !33 br label %_ZN4lean10object_refD2Ev.exit -25: ; preds = %22 - %26 = getelementptr i8, ptr %21, i64 8 - %.val.i.i17 = load i64, ptr %26, align 8, !tbaa !33 - %27 = add i64 %.val.i.i17, -1 +18: ; preds = %15 + %19 = getelementptr i8, ptr %14, i64 8 + %.val.i.i17 = load i64, ptr %19, align 8, !tbaa !33 + %20 = add i64 %.val.i.i17, -1 br label %_ZN4lean10object_refD2Ev.exit -28: ; preds = %_ZN4lean4name4kindEP11lean_object.exit - store ptr %21, ptr %7, align 8, !tbaa !6 - %29 = ptrtoint ptr %21 to i64 - %30 = and i64 %29, 1 - %.not.i.i.i18 = icmp eq i64 %30, 0 - br i1 %.not.i.i.i18, label %31, label %37 +21: ; preds = %_ZN4lean4name4kindEP11lean_object.exit + store ptr %14, ptr %7, align 8, !tbaa !6 + %22 = ptrtoint ptr %14 to i64 + %23 = and i64 %22, 1 + %.not.i.i.i18 = icmp eq i64 %23, 0 + br i1 %.not.i.i.i18, label %24, label %30 -31: ; preds = %28 - %.val.i.i.i.i = load i32, ptr %21, align 4, !tbaa !9 - %32 = icmp sgt i32 %.val.i.i.i.i, 0 - br i1 %32, label %33, label %35, !prof !12 +24: ; preds = %21 + %.val.i.i.i.i = load i32, ptr %14, align 4, !tbaa !9 + %25 = icmp sgt i32 %.val.i.i.i.i, 0 + br i1 %25, label %26, label %28, !prof !12 -33: ; preds = %31 - %34 = add nuw nsw i32 %.val.i.i.i.i, 1 - store i32 %34, ptr %21, align 4, !tbaa !9 +26: ; preds = %24 + %27 = add nuw nsw i32 %.val.i.i.i.i, 1 + store i32 %27, ptr %14, align 4, !tbaa !9 br label %.critedge.i.i.i.i.i -35: ; preds = %31 +28: ; preds = %24 %.not.i.i.i.i = icmp eq i32 %.val.i.i.i.i, 0 - br i1 %.not.i.i.i.i, label %.critedge.i.i.i.i.i, label %36 + br i1 %.not.i.i.i.i, label %.critedge.i.i.i.i.i, label %29 -36: ; preds = %35 - tail call void @lean_inc_ref_cold(ptr noundef nonnull %21) +29: ; preds = %28 + tail call void @lean_inc_ref_cold(ptr noundef nonnull %14) br label %.critedge.i.i.i.i.i -37: ; preds = %28 +30: ; preds = %21 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %38 = icmp eq ptr %21, inttoptr (i64 1 to ptr) + %31 = icmp eq ptr %14, inttoptr (i64 1 to ptr) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br i1 %38, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader + br i1 %31, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader -.critedge.i.i.i.i.i: ; preds = %33, %35, %36 +.critedge.i.i.i.i.i: ; preds = %26, %28, %29 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr inttoptr (i64 1 to ptr), ptr %4, align 8, !tbaa !6 - %39 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %21, ptr noundef nonnull inttoptr (i64 1 to ptr)) - to label %_ZN4leaneqERKNS_3natEj.exit.i unwind label %40 + %32 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %14, ptr noundef nonnull inttoptr (i64 1 to ptr)) + to label %_ZN4leaneqERKNS_3natEj.exit.i unwind label %33 -40: ; preds = %.critedge.i.i.i.i.i - %41 = landingpad { ptr, i32 } +33: ; preds = %.critedge.i.i.i.i.i + %34 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #19 call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -1726,33 +1711,33 @@ _ZN4lean4name4kindEP11lean_object.exit: ; preds = %13, %16 _ZN4leaneqERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %4) %.pre33 = load ptr, ptr %7, align 8, !tbaa !6 - br i1 %39, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader + br i1 %32, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader -.preheader.i.preheader: ; preds = %_ZN4leaneqERKNS_3natEj.exit.i, %37 - %.ph = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ %21, %37 ] +.preheader.i.preheader: ; preds = %_ZN4leaneqERKNS_3natEj.exit.i, %30 + %.ph = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ %14, %30 ] br label %.preheader.i .preheader.i: ; preds = %.preheader.i.preheader, %_ZN4lean10object_refD2Ev.exit13.i - %42 = phi ptr [ %61, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] - %.05.i = phi i32 [ %83, %_ZN4lean10object_refD2Ev.exit13.i ], [ 0, %.preheader.i.preheader ] + %35 = phi ptr [ %54, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] + %.05.i = phi i32 [ %76, %_ZN4lean10object_refD2Ev.exit13.i ], [ 0, %.preheader.i.preheader ] call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr inttoptr (i64 1 to ptr), ptr %3, align 8, !tbaa !6 - %43 = ptrtoint ptr %42 to i64 - %44 = and i64 %43, 1 - %or.cond.not.i.i.i.i.i = icmp eq i64 %44, 0 - br i1 %or.cond.not.i.i.i.i.i, label %.critedge.i.i.i.i.i.i, label %45, !prof !34 + %36 = ptrtoint ptr %35 to i64 + %37 = and i64 %36, 1 + %or.cond.not.i.i.i.i.i = icmp eq i64 %37, 0 + br i1 %or.cond.not.i.i.i.i.i, label %.critedge.i.i.i.i.i.i, label %38, !prof !34 -45: ; preds = %.preheader.i - %46 = icmp eq ptr %42, inttoptr (i64 1 to ptr) +38: ; preds = %.preheader.i + %39 = icmp eq ptr %35, inttoptr (i64 1 to ptr) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br i1 %46, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %50 + br i1 %39, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %43 .critedge.i.i.i.i.i.i: ; preds = %.preheader.i - %47 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef %42, ptr noundef nonnull inttoptr (i64 1 to ptr)) - to label %_ZN4leanneERKNS_3natEj.exit.i unwind label %48 + %40 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef %35, ptr noundef nonnull inttoptr (i64 1 to ptr)) + to label %_ZN4leanneERKNS_3natEj.exit.i unwind label %41 -48: ; preds = %.critedge.i.i.i.i.i.i - %49 = landingpad { ptr, i32 } +41: ; preds = %.critedge.i.i.i.i.i.i + %42 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #19 call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -1761,178 +1746,178 @@ _ZN4leaneqERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i _ZN4leanneERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %3) %.pre32.pre = load ptr, ptr %7, align 8, !tbaa !6 - br i1 %47, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %_ZN4leanneERKNS_3natEj.exit.i._crit_edge + br i1 %40, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %_ZN4leanneERKNS_3natEj.exit.i._crit_edge _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3natEj.exit.i %.pre35 = ptrtoint ptr %.pre32.pre to i64 - br label %50 + br label %43 -50: ; preds = %_ZN4leanneERKNS_3natEj.exit.i._crit_edge, %45 - %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %43, %45 ] - %51 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %42, %45 ] +43: ; preds = %_ZN4leanneERKNS_3natEj.exit.i._crit_edge, %38 + %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %36, %38 ] + %44 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %35, %38 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr inttoptr (i64 21 to ptr), ptr %6, align 8, !tbaa !6 - %52 = and i64 %.pre-phi, 1 - %.not.i.i.i.i19 = icmp eq i64 %52, 0 - br i1 %.not.i.i.i.i19, label %.critedge.i.i.i.i, label %53, !prof !37 + %45 = and i64 %.pre-phi, 1 + %.not.i.i.i.i19 = icmp eq i64 %45, 0 + br i1 %.not.i.i.i.i19, label %.critedge.i.i.i.i, label %46, !prof !37 -53: ; preds = %50 - %54 = udiv i64 %.pre-phi, 20 - %55 = shl nuw nsw i64 %54, 1 - %56 = or disjoint i64 %55, 1 - %57 = inttoptr i64 %56 to ptr - br label %59 +46: ; preds = %43 + %47 = udiv i64 %.pre-phi, 20 + %48 = shl nuw nsw i64 %47, 1 + %49 = or disjoint i64 %48, 1 + %50 = inttoptr i64 %49 to ptr + br label %52 -.critedge.i.i.i.i: ; preds = %50 - %58 = invoke ptr @lean_nat_big_div(ptr noundef %51, ptr noundef nonnull inttoptr (i64 21 to ptr)) - to label %.critedge.i.i.i._crit_edge.i unwind label %84 +.critedge.i.i.i.i: ; preds = %43 + %51 = invoke ptr @lean_nat_big_div(ptr noundef %44, ptr noundef nonnull inttoptr (i64 21 to ptr)) + to label %.critedge.i.i.i._crit_edge.i unwind label %77 .critedge.i.i.i._crit_edge.i: ; preds = %.critedge.i.i.i.i %.pre.i = load ptr, ptr %7, align 8, !tbaa !6 %.pre22.i = ptrtoint ptr %.pre.i to i64 - br label %59 - -59: ; preds = %.critedge.i.i.i._crit_edge.i, %53 - %.pre-phi.i = phi i64 [ %.pre22.i, %.critedge.i.i.i._crit_edge.i ], [ %.pre-phi, %53 ] - %60 = phi ptr [ %.pre.i, %.critedge.i.i.i._crit_edge.i ], [ %51, %53 ] - %61 = phi ptr [ %58, %.critedge.i.i.i._crit_edge.i ], [ %57, %53 ] - store ptr %61, ptr %5, align 8, !tbaa !6, !alias.scope !38 - %62 = and i64 %.pre-phi.i, 1 - %.not.i.i.i8.i = icmp eq i64 %62, 0 - br i1 %.not.i.i.i8.i, label %63, label %_ZN4lean10object_refD2Ev.exit.i - -63: ; preds = %59 - %64 = load i32, ptr %60, align 4, !tbaa !9 - %65 = icmp sgt i32 %64, 1 - br i1 %65, label %66, label %68, !prof !12 + br label %52 -66: ; preds = %63 - %67 = add nsw i32 %64, -1 - store i32 %67, ptr %60, align 4, !tbaa !9 +52: ; preds = %.critedge.i.i.i._crit_edge.i, %46 + %.pre-phi.i = phi i64 [ %.pre22.i, %.critedge.i.i.i._crit_edge.i ], [ %.pre-phi, %46 ] + %53 = phi ptr [ %.pre.i, %.critedge.i.i.i._crit_edge.i ], [ %44, %46 ] + %54 = phi ptr [ %51, %.critedge.i.i.i._crit_edge.i ], [ %50, %46 ] + store ptr %54, ptr %5, align 8, !tbaa !6, !alias.scope !38 + %55 = and i64 %.pre-phi.i, 1 + %.not.i.i.i8.i = icmp eq i64 %55, 0 + br i1 %.not.i.i.i8.i, label %56, label %_ZN4lean10object_refD2Ev.exit.i + +56: ; preds = %52 + %57 = load i32, ptr %53, align 4, !tbaa !9 + %58 = icmp sgt i32 %57, 1 + br i1 %58, label %59, label %61, !prof !12 + +59: ; preds = %56 + %60 = add nsw i32 %57, -1 + store i32 %60, ptr %53, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit.i -68: ; preds = %63 - %.not.i.i.i.i.i = icmp eq i32 %64, 0 - br i1 %.not.i.i.i.i.i, label %_ZN4lean10object_refD2Ev.exit.i, label %69 - -69: ; preds = %68 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %60) - to label %_ZN4lean10object_refD2Ev.exit.i unwind label %86 - -_ZN4lean10object_refD2Ev.exit.i: ; preds = %69, %68, %66, %59 - store ptr %61, ptr %7, align 8, !tbaa !6 - %70 = load ptr, ptr %6, align 8, !tbaa !6 - %71 = ptrtoint ptr %70 to i64 - %72 = and i64 %71, 1 - %.not.i.i11.i = icmp eq i64 %72, 0 - br i1 %.not.i.i11.i, label %73, label %_ZN4lean10object_refD2Ev.exit13.i - -73: ; preds = %_ZN4lean10object_refD2Ev.exit.i - %74 = load i32, ptr %70, align 4, !tbaa !9 - %75 = icmp sgt i32 %74, 1 - br i1 %75, label %76, label %78, !prof !12 - -76: ; preds = %73 - %77 = add nsw i32 %74, -1 - store i32 %77, ptr %70, align 4, !tbaa !9 +61: ; preds = %56 + %.not.i.i.i.i.i = icmp eq i32 %57, 0 + br i1 %.not.i.i.i.i.i, label %_ZN4lean10object_refD2Ev.exit.i, label %62 + +62: ; preds = %61 + invoke void @lean_dec_ref_cold(ptr noundef nonnull %53) + to label %_ZN4lean10object_refD2Ev.exit.i unwind label %79 + +_ZN4lean10object_refD2Ev.exit.i: ; preds = %62, %61, %59, %52 + store ptr %54, ptr %7, align 8, !tbaa !6 + %63 = load ptr, ptr %6, align 8, !tbaa !6 + %64 = ptrtoint ptr %63 to i64 + %65 = and i64 %64, 1 + %.not.i.i11.i = icmp eq i64 %65, 0 + br i1 %.not.i.i11.i, label %66, label %_ZN4lean10object_refD2Ev.exit13.i + +66: ; preds = %_ZN4lean10object_refD2Ev.exit.i + %67 = load i32, ptr %63, align 4, !tbaa !9 + %68 = icmp sgt i32 %67, 1 + br i1 %68, label %69, label %71, !prof !12 + +69: ; preds = %66 + %70 = add nsw i32 %67, -1 + store i32 %70, ptr %63, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit13.i -78: ; preds = %73 - %.not.i.i.i12.i = icmp eq i32 %74, 0 - br i1 %.not.i.i.i12.i, label %_ZN4lean10object_refD2Ev.exit13.i, label %79 +71: ; preds = %66 + %.not.i.i.i12.i = icmp eq i32 %67, 0 + br i1 %.not.i.i.i12.i, label %_ZN4lean10object_refD2Ev.exit13.i, label %72 -79: ; preds = %78 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %70) - to label %_ZN4lean10object_refD2Ev.exit13.i unwind label %80 +72: ; preds = %71 + invoke void @lean_dec_ref_cold(ptr noundef nonnull %63) + to label %_ZN4lean10object_refD2Ev.exit13.i unwind label %73 -80: ; preds = %79 - %81 = landingpad { ptr, i32 } +73: ; preds = %72 + %74 = landingpad { ptr, i32 } catch ptr null - %82 = extractvalue { ptr, i32 } %81, 0 - tail call void @__clang_call_terminate(ptr %82) #20 + %75 = extractvalue { ptr, i32 } %74, 0 + tail call void @__clang_call_terminate(ptr %75) #20 unreachable -_ZN4lean10object_refD2Ev.exit13.i: ; preds = %79, %78, %76, %_ZN4lean10object_refD2Ev.exit.i +_ZN4lean10object_refD2Ev.exit13.i: ; preds = %72, %71, %69, %_ZN4lean10object_refD2Ev.exit.i call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - %83 = add nuw nsw i32 %.05.i, 1 + %76 = add nuw nsw i32 %.05.i, 1 br label %.preheader.i, !llvm.loop !41 -84: ; preds = %.critedge.i.i.i.i - %85 = landingpad { ptr, i32 } +77: ; preds = %.critedge.i.i.i.i + %78 = landingpad { ptr, i32 } cleanup - br label %88 + br label %81 -86: ; preds = %69 - %87 = landingpad { ptr, i32 } +79: ; preds = %62 + %80 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #19 - br label %88 + br label %81 -88: ; preds = %86, %84 - %.pn.i = phi { ptr, i32 } [ %87, %86 ], [ %85, %84 ] +81: ; preds = %79, %77 + %.pn.i = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #19 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.body -_ZN4leanL10num_digitsENS_3natE.exit.loopexit: ; preds = %45, %_ZN4leanneERKNS_3natEj.exit.i - %.pre32 = phi ptr [ inttoptr (i64 1 to ptr), %45 ], [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i ] - %89 = zext nneg i32 %.05.i to i64 +_ZN4leanL10num_digitsENS_3natE.exit.loopexit: ; preds = %38, %_ZN4leanneERKNS_3natEj.exit.i + %.pre32 = phi ptr [ inttoptr (i64 1 to ptr), %38 ], [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i ] + %82 = zext nneg i32 %.05.i to i64 br label %_ZN4leanL10num_digitsENS_3natE.exit -_ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, %_ZN4leaneqERKNS_3natEj.exit.i, %37 - %90 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %37 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] - %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %37 ], [ %89, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] - %91 = ptrtoint ptr %90 to i64 - %92 = and i64 %91, 1 - %.not.i.i = icmp eq i64 %92, 0 - br i1 %.not.i.i, label %93, label %_ZN4lean10object_refD2Ev.exit +_ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, %_ZN4leaneqERKNS_3natEj.exit.i, %30 + %83 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %30 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %30 ], [ %82, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %84 = ptrtoint ptr %83 to i64 + %85 = and i64 %84, 1 + %.not.i.i = icmp eq i64 %85, 0 + br i1 %.not.i.i, label %86, label %_ZN4lean10object_refD2Ev.exit -93: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit - %94 = load i32, ptr %90, align 4, !tbaa !9 - %95 = icmp sgt i32 %94, 1 - br i1 %95, label %96, label %98, !prof !12 +86: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit + %87 = load i32, ptr %83, align 4, !tbaa !9 + %88 = icmp sgt i32 %87, 1 + br i1 %88, label %89, label %91, !prof !12 -96: ; preds = %93 - %97 = add nsw i32 %94, -1 - store i32 %97, ptr %90, align 4, !tbaa !9 +89: ; preds = %86 + %90 = add nsw i32 %87, -1 + store i32 %90, ptr %83, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit -98: ; preds = %93 - %.not.i.i.i20 = icmp eq i32 %94, 0 - br i1 %.not.i.i.i20, label %_ZN4lean10object_refD2Ev.exit, label %99 +91: ; preds = %86 + %.not.i.i.i20 = icmp eq i32 %87, 0 + br i1 %.not.i.i.i20, label %_ZN4lean10object_refD2Ev.exit, label %92 -99: ; preds = %98 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %90) - to label %_ZN4lean10object_refD2Ev.exit unwind label %100 +92: ; preds = %91 + invoke void @lean_dec_ref_cold(ptr noundef nonnull %83) + to label %_ZN4lean10object_refD2Ev.exit unwind label %93 -100: ; preds = %99 - %101 = landingpad { ptr, i32 } +93: ; preds = %92 + %94 = landingpad { ptr, i32 } catch ptr null - %102 = extractvalue { ptr, i32 } %101, 0 - tail call void @__clang_call_terminate(ptr %102) #20 + %95 = extractvalue { ptr, i32 } %94, 0 + tail call void @__clang_call_terminate(ptr %95) #20 unreachable -.body: ; preds = %40, %48, %88 - %eh.lpad-body = phi { ptr, i32 } [ %41, %40 ], [ %49, %48 ], [ %.pn.i, %88 ] +.body: ; preds = %33, %41, %81 + %eh.lpad-body = phi { ptr, i32 } [ %34, %33 ], [ %42, %41 ], [ %.pn.i, %81 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #19 resume { ptr, i32 } %eh.lpad-body -_ZN4lean10object_refD2Ev.exit: ; preds = %99, %98, %96, %_ZN4leanL10num_digitsENS_3natE.exit, %23, %25 - %.pn = phi i64 [ %.val.i.i, %23 ], [ %27, %25 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %96 ], [ %.06.i, %98 ], [ %.06.i, %99 ] +_ZN4lean10object_refD2Ev.exit: ; preds = %92, %91, %89, %_ZN4leanL10num_digitsENS_3natE.exit, %16, %18 + %.pn = phi i64 [ %.val.i.i, %16 ], [ %20, %18 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %89 ], [ %.06.i, %91 ], [ %.06.i, %92 ] %.1 = add i64 %.pn, %.016 - %103 = getelementptr inbounds nuw i8, ptr %.015, i64 8 - %104 = load ptr, ptr %103, align 8, !tbaa !26 - %105 = ptrtoint ptr %104 to i64 - %106 = and i64 %105, 1 - %.not21 = icmp eq i64 %106, 0 - br i1 %.not21, label %107, label %.loopexit - -107: ; preds = %_ZN4lean10object_refD2Ev.exit - %108 = add i64 %.1, 1 - br label %.preheader, !llvm.loop !42 + %96 = getelementptr inbounds nuw i8, ptr %.015, i64 8 + %97 = load ptr, ptr %96, align 8, !tbaa !26 + %98 = ptrtoint ptr %97 to i64 + %99 = and i64 %98, 1 + %.not21 = icmp eq i64 %99, 0 + br i1 %.not21, label %100, label %.loopexit + +100: ; preds = %_ZN4lean10object_refD2Ev.exit + %101 = add i64 %.1, 1 + br label %_ZN4lean4name4kindEP11lean_object.exit, !llvm.loop !42 .loopexit: ; preds = %_ZN4lean10object_refD2Ev.exit, %2 %.0 = phi i64 [ 11, %2 ], [ %.1, %_ZN4lean10object_refD2Ev.exit ] diff --git a/bench/libigl/optimized/cotmatrix.ll b/bench/libigl/optimized/cotmatrix.ll index 724b6e22236..d3da1570cdc 100644 --- a/bench/libigl/optimized/cotmatrix.ll +++ b/bench/libigl/optimized/cotmatrix.ll @@ -789,9 +789,9 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18sc %.sroa.0586.0.vec.insert.us = insertelement <2 x double> poison, double %225, i64 0 %.sroa.0586.8.vec.insert.us = insertelement <2 x double> %.sroa.0586.0.vec.insert.us, double %228, i64 1 %231 = fmul <2 x double> %.sroa.0595.8.vec.insert.us, %.sroa.0586.8.vec.insert.us - %shift2392 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> - %foldExtExtBinop2393 = fadd <2 x double> %231, %shift2392 - %232 = extractelement <2 x double> %foldExtExtBinop2393, i64 0 + %shift2377 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> + %foldExtExtBinop2378 = fadd <2 x double> %231, %shift2377 + %232 = extractelement <2 x double> %foldExtExtBinop2378, i64 0 %233 = fmul double %221, %230 %234 = fadd double %233, %232 %235 = mul nsw i64 %188, %.01721268.us @@ -985,9 +985,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL 320: ; preds = %314, %._crit_edge.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = phi <2 x double> [ %319, %314 ], [ %313, %._crit_edge.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i ] - %shift2395 = shufflevector <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, <2 x double> poison, <2 x i32> - %foldExtExtBinop2396 = fadd <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %shift2395 - %321 = extractelement <2 x double> %foldExtExtBinop2396, i64 0 + %shift2380 = shufflevector <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, <2 x double> poison, <2 x i32> + %foldExtExtBinop2381 = fadd <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %shift2380 + %321 = extractelement <2 x double> %foldExtExtBinop2381, i64 0 br i1 %279, label %.lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdLi1ELi3ELi1ELi1ELi3EEEEENS2_INS_7ProductINS_9TransposeIKNS3_IdLin1ELi1ELi0ELin1ELi1EEEEENS_5BlockINS3_IdLin1ELi3ELi0ELin1ELi3EEELin1ELi3ELb0EEELi1EEEEENS0_9assign_opIddEELi0EE11assignCoeffEl.exit.us14.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i .lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %320, %.lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -1021,9 +1021,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL %333 = getelementptr inbounds double, ptr %268, i64 %332 %334 = load <2 x double>, ptr %333, align 1, !tbaa !92 %335 = fmul <2 x double> %331, %334 - %shift2398 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> - %foldExtExtBinop2399 = fadd <2 x double> %335, %shift2398 - %336 = extractelement <2 x double> %foldExtExtBinop2399, i64 0 + %shift2383 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> + %foldExtExtBinop2384 = fadd <2 x double> %335, %shift2383 + %336 = extractelement <2 x double> %foldExtExtBinop2384, i64 0 br label %.lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i .lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph85.i.i.i.i.i.preheader.us23.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -1052,9 +1052,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL %347 = getelementptr inbounds double, ptr %268, i64 %346 %348 = load <2 x double>, ptr %347, align 1, !tbaa !92 %349 = fmul <2 x double> %331, %348 - %shift2401 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> - %foldExtExtBinop2402 = fadd <2 x double> %349, %shift2401 - %350 = extractelement <2 x double> %foldExtExtBinop2402, i64 0 + %shift2386 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> + %foldExtExtBinop2387 = fadd <2 x double> %349, %shift2386 + %350 = extractelement <2 x double> %foldExtExtBinop2387, i64 0 %351 = getelementptr inbounds nuw double, ptr %11, i64 %.07.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i store double %350, ptr %351, align 8, !tbaa !22 %352 = add nuw nsw i64 %.07.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, 1 diff --git a/bench/libigl/optimized/exact_geodesic.ll b/bench/libigl/optimized/exact_geodesic.ll index baa9bbe67d1..45e327b6371 100644 --- a/bench/libigl/optimized/exact_geodesic.ll +++ b/bench/libigl/optimized/exact_geodesic.ll @@ -15345,9 +15345,9 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %62 -62: ; preds = %98, %.lr.ph.i21 - %.sroa.0.018.i22 = phi ptr [ %.sroa.0.015.i19, %.lr.ph.i21 ], [ %.sroa.0.0.i31, %98 ] - %.pn17.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.sroa.0.018.i22, %98 ] +62: ; preds = %100, %.lr.ph.i21 + %.sroa.0.018.i22 = phi ptr [ %.sroa.0.015.i19, %.lr.ph.i21 ], [ %.sroa.0.0.i31, %100 ] + %.pn17.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.sroa.0.018.i22, %100 ] %63 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 16 %64 = load i32, ptr %63, align 4, !tbaa !429 %65 = load i32, ptr %60, align 4, !tbaa !429 @@ -15358,7 +15358,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %70 = icmp ult i32 %68, %69 %71 = icmp ult i32 %64, %65 %.0.i.i.i24 = select i1 %66, i1 %70, i1 %71 - br i1 %.0.i.i.i24, label %72, label %83 + br i1 %.0.i.i.i24, label %72, label %85 72: ; preds = %62 call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -15366,71 +15366,71 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %73 = ptrtoint ptr %.sroa.0.018.i22 to i64 %74 = sub i64 %73, %6 %75 = icmp sgt i64 %74, 12 - br i1 %75, label %76, label %79, !prof !348 + br i1 %75, label %76, label %81, !prof !348 76: ; preds = %72 %77 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 24 - %.neg22.i38 = udiv exact i64 %74, 12 - %.neg22.neg.i39 = sub nsw i64 0, %.neg22.i38 - %78 = getelementptr inbounds %"struct.igl::geodesic::HalfEdge", ptr %77, i64 %.neg22.neg.i39 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %78, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %74, i1 false) + %78 = udiv exact i64 %74, 12 + %79 = sub nsw i64 0, %78 + %80 = getelementptr inbounds %"struct.igl::geodesic::HalfEdge", ptr %77, i64 %79 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %80, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %74, i1 false) br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -79: ; preds = %72 - %80 = icmp eq i64 %74, 12 - br i1 %80, label %81, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 +81: ; preds = %72 + %82 = icmp eq i64 %74, 12 + br i1 %82, label %83, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -81: ; preds = %79 - %82 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(12) %0, i64 12, i1 false), !tbaa.struct !422 +83: ; preds = %81 + %84 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %0, i64 12, i1 false), !tbaa.struct !422 br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37: ; preds = %81, %79, %76 +_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37: ; preds = %83, %81, %76 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 4 dereferenceable(12) %3, i64 12, i1 false), !tbaa.struct !422 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %98 + br label %100 -83: ; preds = %62 +85: ; preds = %62 %.sroa.03.0.copyload.i.i25 = load i32, ptr %.sroa.0.018.i22, align 4, !tbaa !24 - %84 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 4 - %85 = load i32, ptr %84, align 4, !tbaa !429 - %86 = icmp eq i32 %64, %85 - %87 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 8 - %88 = load i32, ptr %87, align 4 - %89 = icmp ult i32 %68, %88 - %90 = icmp ult i32 %64, %85 - %.0.i.i12.i.i26 = select i1 %86, i1 %89, i1 %90 + %86 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 4 + %87 = load i32, ptr %86, align 4, !tbaa !429 + %88 = icmp eq i32 %64, %87 + %89 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 8 + %90 = load i32, ptr %89, align 4 + %91 = icmp ult i32 %68, %90 + %92 = icmp ult i32 %64, %87 + %.0.i.i12.i.i26 = select i1 %88, i1 %91, i1 %92 br i1 %.0.i.i12.i.i26, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27 -.lr.ph.i.i33: ; preds = %83, %.lr.ph.i.i33 - %.sroa.09.013.i.i34 = phi ptr [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ], [ %.sroa.0.018.i22, %83 ] +.lr.ph.i.i33: ; preds = %85, %.lr.ph.i.i33 + %.sroa.09.013.i.i34 = phi ptr [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ], [ %.sroa.0.018.i22, %85 ] %.sroa.0.0.i.i35 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -12 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.09.013.i.i34, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.0.i.i35, i64 12, i1 false), !tbaa.struct !422 - %91 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -20 - %92 = load i32, ptr %91, align 4, !tbaa !429 - %93 = icmp eq i32 %64, %92 - %94 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -16 - %95 = load i32, ptr %94, align 4 - %96 = icmp ult i32 %68, %95 - %97 = icmp ult i32 %64, %92 - %.0.i.i.i.i36 = select i1 %93, i1 %96, i1 %97 + %93 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -20 + %94 = load i32, ptr %93, align 4, !tbaa !429 + %95 = icmp eq i32 %64, %94 + %96 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -16 + %97 = load i32, ptr %96, align 4 + %98 = icmp ult i32 %68, %97 + %99 = icmp ult i32 %64, %94 + %.0.i.i.i.i36 = select i1 %95, i1 %98, i1 %99 br i1 %.0.i.i.i.i36, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, !llvm.loop !473 -_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27: ; preds = %.lr.ph.i.i33, %83 - %.sroa.09.0.lcssa.i.i28 = phi ptr [ %.sroa.0.018.i22, %83 ], [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ] +_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27: ; preds = %.lr.ph.i.i33, %85 + %.sroa.09.0.lcssa.i.i28 = phi ptr [ %.sroa.0.018.i22, %85 ], [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ] store i32 %.sroa.03.0.copyload.i.i25, ptr %.sroa.09.0.lcssa.i.i28, align 4, !tbaa !24 %.sroa.4.0..sroa_idx5.i.i29 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.lcssa.i.i28, i64 4 store i32 %64, ptr %.sroa.4.0..sroa_idx5.i.i29, align 4, !tbaa !24 %.sroa.5.0..sroa_idx7.i.i30 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.lcssa.i.i28, i64 8 store i32 %68, ptr %.sroa.5.0..sroa_idx7.i.i30, align 4, !tbaa !24 - br label %98 + br label %100 -98: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 +100: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 %.sroa.0.0.i31 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i22, i64 12 %.not.i32 = icmp eq ptr %.sroa.0.0.i31, %1 br i1 %.not.i32, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit, label %62, !llvm.loop !474 -_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit: ; preds = %98, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i9, %.preheader.i18, %58, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit +_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit: ; preds = %100, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i9, %.preheader.i18, %58, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit ret void } diff --git a/bench/libquic/optimized/s3_enc.ll b/bench/libquic/optimized/s3_enc.ll index 77e347a813c..6bf440a7b40 100644 --- a/bench/libquic/optimized/s3_enc.ll +++ b/bench/libquic/optimized/s3_enc.ll @@ -249,50 +249,50 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt call void @llvm.lifetime.start.p0(ptr nonnull %15) call void @EVP_MD_CTX_init(ptr noundef nonnull %12) #6 call void @EVP_MD_CTX_init(ptr noundef nonnull %13) #6 - %.not49 = icmp eq i64 %2, 0 - br i1 %.not49, label %._crit_edge48, label %.lr.ph47 + %.not47 = icmp eq i64 %2, 0 + br i1 %.not47, label %._crit_edge, label %.lr.ph -.lr.ph47: ; preds = %11 - %.not38 = icmp eq i64 %8, 0 - %.not39 = icmp eq i64 %10, 0 +.lr.ph: ; preds = %11 + %.not39 = icmp eq i64 %8, 0 + %.not40 = icmp eq i64 %10, 0 br label %16 -16: ; preds = %.lr.ph47, %46 - %.045 = phi i64 [ 0, %.lr.ph47 ], [ %17, %46 ] - %.03044 = phi i64 [ 0, %.lr.ph47 ], [ %39, %46 ] - %.03143 = phi i8 [ 65, %.lr.ph47 ], [ %19, %46 ] - %.03342 = phi ptr [ %1, %.lr.ph47 ], [ %47, %46 ] - %17 = add nuw nsw i64 %.045, 1 - %exitcond = icmp eq i64 %.045, 16 - br i1 %exitcond, label %18, label %._crit_edge - -18: ; preds = %16 +16: ; preds = %.lr.ph, %46 + %.046 = phi i64 [ 0, %.lr.ph ], [ %17, %46 ] + %.03045 = phi i64 [ 0, %.lr.ph ], [ %39, %46 ] + %.03144 = phi i8 [ 65, %.lr.ph ], [ %18, %46 ] + %.03343 = phi ptr [ %1, %.lr.ph ], [ %47, %46 ] + %17 = add nuw nsw i64 %.046, 1 + %exitcond = icmp eq i64 %.046, 16 + br i1 %exitcond, label %21, label %.preheader.preheader + +.preheader.preheader: ; preds = %16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %14, i8 %.03144, i64 %17, i1 false), !tbaa !54 + %18 = add nuw nsw i8 %.03144, 1 + %19 = call ptr @EVP_sha1() #6 + %20 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %13, ptr noundef %19, ptr noundef null) #6 + %.not38 = icmp eq i32 %20, 0 + br i1 %.not38, label %22, label %23 + +21: ; preds = %16 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 68, ptr noundef nonnull @.str, i32 noundef 170) #6 br label %51 -._crit_edge: ; preds = %16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %14, i8 %.03143, i64 %17, i1 false), !tbaa !54 - %19 = add nuw nsw i8 %.03143, 1 - %20 = call ptr @EVP_sha1() #6 - %21 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %13, ptr noundef %20, ptr noundef null) #6 - %.not = icmp eq i32 %21, 0 - br i1 %.not, label %22, label %23 - -22: ; preds = %._crit_edge +22: ; preds = %.preheader.preheader call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 6, ptr noundef nonnull @.str, i32 noundef 179) #6 br label %51 -23: ; preds = %._crit_edge +23: ; preds = %.preheader.preheader %24 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %17) #6 %25 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %3, i64 noundef %4) #6 - br i1 %.not38, label %28, label %26 + br i1 %.not39, label %28, label %26 26: ; preds = %23 %27 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %7, i64 noundef %8) #6 br label %28 28: ; preds = %26, %23 - br i1 %.not39, label %31, label %29 + br i1 %.not40, label %31, label %29 29: ; preds = %28 %30 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %9, i64 noundef %10) #6 @@ -302,8 +302,8 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt %32 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef null) #6 %33 = call ptr @EVP_md5() #6 %34 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %12, ptr noundef %33, ptr noundef null) #6 - %.not40 = icmp eq i32 %34, 0 - br i1 %.not40, label %35, label %36 + %.not41 = icmp eq i32 %34, 0 + br i1 %.not41, label %35, label %36 35: ; preds = %31 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 6, ptr noundef nonnull @.str, i32 noundef 194) #6 @@ -312,33 +312,33 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt 36: ; preds = %31 %37 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %12, ptr noundef %3, i64 noundef %4) #6 %38 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %12, ptr noundef nonnull %15, i64 noundef 20) #6 - %39 = add nuw nsw i64 %.03044, 16 + %39 = add nuw nsw i64 %.03045, 16 %40 = icmp ugt i64 %39, %2 br i1 %40, label %41, label %44 41: ; preds = %36 %42 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef null) #6 - %43 = sub i64 %2, %.03044 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.03342, ptr nonnull align 16 %15, i64 %43, i1 false) + %43 = sub i64 %2, %.03045 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.03343, ptr nonnull align 16 %15, i64 %43, i1 false) br label %46 44: ; preds = %36 - %45 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef %.03342, ptr noundef null) #6 + %45 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef %.03343, ptr noundef null) #6 br label %46 46: ; preds = %44, %41 - %47 = getelementptr inbounds nuw i8, ptr %.03342, i64 16 + %47 = getelementptr inbounds nuw i8, ptr %.03343, i64 16 %48 = icmp ult i64 %39, %2 - br i1 %48, label %16, label %._crit_edge48, !llvm.loop !55 + br i1 %48, label %16, label %._crit_edge, !llvm.loop !55 -._crit_edge48: ; preds = %46, %11 +._crit_edge: ; preds = %46, %11 call void @OPENSSL_cleanse(ptr noundef nonnull %15, i64 noundef 20) #6 %49 = call i32 @EVP_MD_CTX_cleanup(ptr noundef nonnull %12) #6 %50 = call i32 @EVP_MD_CTX_cleanup(ptr noundef nonnull %13) #6 br label %51 -51: ; preds = %._crit_edge48, %35, %22, %18 - %.032 = phi i32 [ 0, %18 ], [ 0, %35 ], [ 0, %22 ], [ 1, %._crit_edge48 ] +51: ; preds = %._crit_edge, %35, %22, %21 + %.032 = phi i32 [ 0, %21 ], [ 0, %35 ], [ 0, %22 ], [ 1, %._crit_edge ] call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %14) call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/linux/optimized/scsi.ll b/bench/linux/optimized/scsi.ll index 8573218ed59..04aacfeaa01 100644 --- a/bench/linux/optimized/scsi.ll +++ b/bench/linux/optimized/scsi.ll @@ -2059,14 +2059,14 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext %10 = getelementptr inbounds nuw i8, ptr %3, i64 4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 440 %12 = zext i8 %1 to i32 - %narrow = add nuw nsw i32 %4, 24 - %13 = zext nneg i32 %narrow to i64 + %narrow8 = add nuw nsw i32 %4, 24 + %13 = zext nneg i32 %narrow8 to i64 %14 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %13, i32 noundef 3264) #18 %15 = icmp eq ptr %14, null br i1 %15, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %6, %42 - %16 = phi ptr [ %45, %42 ], [ %14, %6 ] + %16 = phi ptr [ %44, %42 ], [ %14, %6 ] %17 = phi i32 [ %37, %42 ], [ %4, %6 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !14 @@ -2110,7 +2110,7 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext %37 = add nuw nsw i32 %36, 4 call void @llvm.lifetime.end.p0(ptr nonnull %3) %38 = icmp samesign ugt i32 %37, %17 - br i1 %38, label %39, label %47 + br i1 %38, label %39, label %46 39: ; preds = %34 %40 = load i1, ptr @scsi_get_vpd_buf.__print_once, align 1 @@ -2123,20 +2123,20 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext 42: ; preds = %41, %39 call void @kfree(ptr noundef nonnull %16) #15 - %43 = zext i16 %35 to i64 - %44 = add nuw nsw i64 %43, 28 - %45 = call noalias align 8 ptr @__kmalloc(i64 noundef %44, i32 noundef 3264) #18 - %46 = icmp eq ptr %45, null - br i1 %46, label %.loopexit, label %.lr.ph - -47: ; preds = %34 - %48 = getelementptr inbounds nuw i8, ptr %16, i64 16 - store i32 %37, ptr %48, align 8 + %narrow = add nuw nsw i32 %36, 28 + %43 = zext nneg i32 %narrow to i64 + %44 = call noalias align 8 ptr @__kmalloc(i64 noundef %43, i32 noundef 3264) #18 + %45 = icmp eq ptr %44, null + br i1 %45, label %.loopexit, label %.lr.ph + +46: ; preds = %34 + %47 = getelementptr inbounds nuw i8, ptr %16, i64 16 + store i32 %37, ptr %47, align 8 br label %.loopexit -.loopexit: ; preds = %42, %6, %47, %.thread, %2 - %49 = phi ptr [ null, %.thread ], [ %16, %47 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] - ret ptr %49 +.loopexit: ; preds = %42, %6, %46, %.thread, %2 + %48 = phi ptr [ null, %.thread ], [ %16, %46 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] + ret ptr %48 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/APINotesReader.ll b/bench/llvm/optimized/APINotesReader.ll index 2ce494e5549..c540dd53589 100644 --- a/bench/llvm/optimized/APINotesReader.ll +++ b/bench/llvm/optimized/APINotesReader.ll @@ -16434,50 +16434,56 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %26, label %.lr.ph + br i1 %22, label %27, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 + +.lr.ph116: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 -26: ; preds = %16 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %28 = load i8, ptr %27, align 8 - %29 = and i8 %28, -2 - store i8 %29, ptr %27, align 8 +27: ; preds = %16 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, -2 + store i8 %30, ptr %28, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !97 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 - %34 = and i32 %.sroa.032.0.extract.trunc45, %20 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %._crit_edge, label %39, !llvm.loop !969 - -._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !97 + %32 = and i32 %23, %.sroa.032.0.extract.trunc45 + %33 = shl i32 %32, %59 + %34 = or i32 %33, %60 + %35 = and i32 %.sroa.032.0.extract.trunc45, %20 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %._crit_edge, label %40, !llvm.loop !969 + +._crit_edge: ; preds = %31 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !97 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +40: ; preds = %31 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !969 + +._crit_edge.i.i.i.i.loopexit: ; preds = %40 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i -._crit_edge.i.i.i.i: ; preds = %39 +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #21 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !970 @@ -16519,90 +16525,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %.lr.ph116, %40 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.144") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 - %60 = trunc i8 %59 to i1 - %61 = load i64, ptr %8, align 8, !tbaa !8 - br i1 %60, label %63, label %62 - -62: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 + %61 = load i8, ptr %24, align 8 + %62 = trunc i8 %61 to i1 + %63 = load i64, ptr %8, align 8, !tbaa !8 + br i1 %62, label %65, label %64 + +64: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %63, 4294967295 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -63: ; preds = %58 +65: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !91 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !89 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #19 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 - -72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %73 = load ptr, ptr %8, align 8, !tbaa !91 - %.not.i.i16 = icmp eq ptr %73, null +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 + %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 + +67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %68 = load ptr, ptr %8, align 8, !tbaa !91 + %.not.i.i16 = icmp eq ptr %68, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 - %74 = load ptr, ptr %73, align 8, !tbaa !89 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #19 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 + %69 = load ptr, ptr %68, align 8, !tbaa !89 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 + %71 = load ptr, ptr %70, align 8 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #19 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 + br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %78 = load i8, ptr %77, align 8 - %79 = or i8 %78, 1 - store i8 %79, ptr %77, align 8 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %73 = load i8, ptr %72, align 8 + %74 = or i8 %73, 1 + store i8 %74, ptr %72, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !91 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] - %80 = trunc i8 %.sroa.18.0 to i1 +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %75 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %81 = inttoptr i64 %.sroa.032.0 to ptr - %82 = load ptr, ptr %81, align 8, !tbaa !89 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 - %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #19 + %76 = inttoptr i64 %.sroa.032.0 to ptr + %77 = load ptr, ptr %76, align 8, !tbaa !89 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 + %79 = load ptr, ptr %78, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #19 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ASTReader.ll b/bench/llvm/optimized/ASTReader.ll index 8930b6a4f69..d01a9a5b4cb 100644 --- a/bench/llvm/optimized/ASTReader.ll +++ b/bench/llvm/optimized/ASTReader.ll @@ -147674,50 +147674,56 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %26, label %.lr.ph + br i1 %22, label %27, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 -26: ; preds = %16 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %28 = load i8, ptr %27, align 8 - %29 = and i8 %28, -2 - store i8 %29, ptr %27, align 8 +.lr.ph116: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 + +27: ; preds = %16 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, -2 + store i8 %30, ptr %28, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 - %34 = and i32 %.sroa.032.0.extract.trunc45, %20 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %._crit_edge, label %39, !llvm.loop !5767 - -._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !807 + %32 = and i32 %23, %.sroa.032.0.extract.trunc45 + %33 = shl i32 %32, %59 + %34 = or i32 %33, %60 + %35 = and i32 %.sroa.032.0.extract.trunc45, %20 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %._crit_edge, label %40, !llvm.loop !5767 + +._crit_edge: ; preds = %31 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +40: ; preds = %31 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !5767 -._crit_edge.i.i.i.i: ; preds = %39 +._crit_edge.i.i.i.i.loopexit: ; preds = %40 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i + +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #44 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !5768 @@ -147759,90 +147765,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %.lr.ph116, %40 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.3457") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 - %60 = trunc i8 %59 to i1 - %61 = load i64, ptr %8, align 8, !tbaa !696 - br i1 %60, label %63, label %62 - -62: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 + %61 = load i8, ptr %24, align 8 + %62 = trunc i8 %61 to i1 + %63 = load i64, ptr %8, align 8, !tbaa !696 + br i1 %62, label %65, label %64 + +64: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %63, 4294967295 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -63: ; preds = %58 +65: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !1435 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #39 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 + %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 -72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %73 = load ptr, ptr %8, align 8, !tbaa !1435 - %.not.i.i16 = icmp eq ptr %73, null +67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %68 = load ptr, ptr %8, align 8, !tbaa !1435 + %.not.i.i16 = icmp eq ptr %68, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 - %74 = load ptr, ptr %73, align 8, !tbaa !8 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #39 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 + %69 = load ptr, ptr %68, align 8, !tbaa !8 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 + %71 = load ptr, ptr %70, align 8 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #39 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 + br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %78 = load i8, ptr %77, align 8 - %79 = or i8 %78, 1 - store i8 %79, ptr %77, align 8 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %73 = load i8, ptr %72, align 8 + %74 = or i8 %73, 1 + store i8 %74, ptr %72, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !1435 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] - %80 = trunc i8 %.sroa.18.0 to i1 +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %75 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %81 = inttoptr i64 %.sroa.032.0 to ptr - %82 = load ptr, ptr %81, align 8, !tbaa !8 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 - %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #39 + %76 = inttoptr i64 %.sroa.032.0 to ptr + %77 = load ptr, ptr %76, align 8, !tbaa !8 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 + %79 = load ptr, ptr %78, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #39 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/GlobalModuleIndex.ll b/bench/llvm/optimized/GlobalModuleIndex.ll index f8e57adf65c..799b718b50c 100644 --- a/bench/llvm/optimized/GlobalModuleIndex.ll +++ b/bench/llvm/optimized/GlobalModuleIndex.ll @@ -7811,50 +7811,56 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %26, label %.lr.ph + br i1 %22, label %27, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 + +.lr.ph116: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 -26: ; preds = %16 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %28 = load i8, ptr %27, align 8 - %29 = and i8 %28, -2 - store i8 %29, ptr %27, align 8 +27: ; preds = %16 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, -2 + store i8 %30, ptr %28, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !36 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 - %34 = and i32 %.sroa.032.0.extract.trunc45, %20 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %._crit_edge, label %39, !llvm.loop !630 - -._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !36 + %32 = and i32 %23, %.sroa.032.0.extract.trunc45 + %33 = shl i32 %32, %59 + %34 = or i32 %33, %60 + %35 = and i32 %.sroa.032.0.extract.trunc45, %20 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %._crit_edge, label %40, !llvm.loop !630 + +._crit_edge: ; preds = %31 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !36 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +40: ; preds = %31 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !630 + +._crit_edge.i.i.i.i.loopexit: ; preds = %40 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i -._crit_edge.i.i.i.i: ; preds = %39 +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #31 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !631 @@ -7896,90 +7902,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %.lr.ph116, %40 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.39") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 - %60 = trunc i8 %59 to i1 - %61 = load i64, ptr %8, align 8, !tbaa !51 - br i1 %60, label %63, label %62 + %61 = load i8, ptr %24, align 8 + %62 = trunc i8 %61 to i1 + %63 = load i64, ptr %8, align 8, !tbaa !51 + br i1 %62, label %65, label %64 -62: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 +64: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %63, 4294967295 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -63: ; preds = %58 +65: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !37 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !42 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #27 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 + %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 -72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %73 = load ptr, ptr %8, align 8, !tbaa !37 - %.not.i.i16 = icmp eq ptr %73, null +67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %68 = load ptr, ptr %8, align 8, !tbaa !37 + %.not.i.i16 = icmp eq ptr %68, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 - %74 = load ptr, ptr %73, align 8, !tbaa !42 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 - %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #27 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 + %69 = load ptr, ptr %68, align 8, !tbaa !42 + %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 + %71 = load ptr, ptr %70, align 8 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #27 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 + br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %78 = load i8, ptr %77, align 8 - %79 = or i8 %78, 1 - store i8 %79, ptr %77, align 8 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %73 = load i8, ptr %72, align 8 + %74 = or i8 %73, 1 + store i8 %74, ptr %72, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !37 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] - %80 = trunc i8 %.sroa.18.0 to i1 +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %75 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %81 = inttoptr i64 %.sroa.032.0 to ptr - %82 = load ptr, ptr %81, align 8, !tbaa !42 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 - %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #27 + %76 = inttoptr i64 %.sroa.032.0 to ptr + %77 = load ptr, ptr %76, align 8, !tbaa !42 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 + %79 = load ptr, ptr %78, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #27 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ItaniumMangle.ll b/bench/llvm/optimized/ItaniumMangle.ll index 6da83a37685..6700519f3bb 100644 --- a/bench/llvm/optimized/ItaniumMangle.ll +++ b/bench/llvm/optimized/ItaniumMangle.ll @@ -42916,7 +42916,7 @@ define internal fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePr 10: ; preds = %2 %11 = ptrtoint ptr %9 to i64 call fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePrefixEN5clang10GlobalDeclEb(ptr noundef nonnull align 8 dereferenceable(280) %0, i64 %11, i1 noundef zeroext false) - br label %94 + br label %93 12: ; preds = %2 %13 = call noundef ptr @_ZNK5clang12TemplateName26getAsDependentTemplateNameEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #30 @@ -42948,12 +42948,12 @@ define internal fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePr store i64 %25, ptr %7, align 8 %26 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEm(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, i64 noundef %25) call void @llvm.lifetime.end.p0(ptr nonnull %7) - br i1 %26, label %94, label %28 + br i1 %26, label %93, label %28 _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit: ; preds = %19 %27 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEPKN5clang9NamedDeclE(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, ptr noundef nonnull %20) call void @llvm.lifetime.end.p0(ptr nonnull %7) - br i1 %27, label %94, label %28 + br i1 %27, label %93, label %28 28: ; preds = %21, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %12 %29 = getelementptr inbounds nuw i8, ptr %13, i64 8 @@ -42987,22 +42987,22 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi store i64 %40, ptr %6, align 8 %41 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEm(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, i64 noundef %40) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %41, label %94, label %43 + br i1 %41, label %93, label %43 _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24: ; preds = %34 %42 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEPKN5clang9NamedDeclE(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, ptr noundef nonnull %35) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %42, label %94, label %43 + br i1 %42, label %93, label %43 43: ; preds = %36, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24, %33 %44 = getelementptr inbounds nuw i8, ptr %13, i64 16 %45 = load ptr, ptr %44, align 8 %.not18 = icmp eq ptr %45, null - %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val20 = load ptr, ptr %46, align 8 - br i1 %.not18, label %71, label %47 + br i1 %.not18, label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit, label %46 -47: ; preds = %43 +46: ; preds = %43 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.val20 = load ptr, ptr %47, align 8 %48 = getelementptr inbounds nuw i8, ptr %45, i64 16 %49 = load ptr, ptr %48, align 8, !tbaa !544 %50 = load i64, ptr %49, align 8, !tbaa !547 @@ -43022,11 +43022,11 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi %64 = icmp ugt i64 %56, %63 br i1 %64, label %65, label %67 -65: ; preds = %47 +65: ; preds = %46 %66 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %52, ptr noundef nonnull %54, i64 noundef %56) #30 br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit -67: ; preds = %47 +67: ; preds = %46 %.not.i.i = icmp eq i64 %56, 0 br i1 %.not.i.i, label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit, label %68 @@ -43037,60 +43037,56 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi store ptr %70, ptr %59, align 8, !tbaa !529 br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit -71: ; preds = %43 - call fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler18mangleOperatorNameEN5clang22OverloadedOperatorKindEj(ptr %.val20, i32 noundef 0, i32 noundef -1) - br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - -_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit: ; preds = %68, %67, %65, %71 +_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit: ; preds = %43, %68, %67, %65 %.sroa.0.0.copyload = load i64, ptr %8, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 %.sroa.0.0.copyload, ptr %5, align 8 - %72 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEb(ptr noundef nonnull align 8 dereferenceable(8) %5, i1 noundef zeroext false) #30 - %.not.not.i25 = icmp eq ptr %72, null - br i1 %.not.not.i25, label %84, label %73 + %71 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEb(ptr noundef nonnull align 8 dereferenceable(8) %5, i1 noundef zeroext false) #30 + %.not.not.i25 = icmp eq ptr %71, null + br i1 %.not.not.i25, label %83, label %72 -73: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - %74 = load ptr, ptr %72, align 8, !tbaa !22 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %76 = load ptr, ptr %75, align 8 - %77 = call noundef ptr %76(ptr noundef nonnull align 8 dereferenceable(33) %72) #30 - %78 = ptrtoint ptr %77 to i64 +72: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit + %73 = load ptr, ptr %71, align 8, !tbaa !22 + %74 = getelementptr inbounds nuw i8, ptr %73, i64 32 + %75 = load ptr, ptr %74, align 8 + %76 = call noundef ptr %75(ptr noundef nonnull align 8 dereferenceable(33) %71) #30 + %77 = ptrtoint ptr %76 to i64 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %78, ptr %4, align 8, !tbaa !105 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %80 = load i32, ptr %79, align 8, !tbaa !542 - %81 = add i32 %80, 1 - store i32 %81, ptr %79, align 8, !tbaa !542 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %82, ptr noundef nonnull align 8 dereferenceable(8) %4) - store i32 %80, ptr %83, align 4, !tbaa !487 + store i64 %77, ptr %4, align 8, !tbaa !105 + %78 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %79 = load i32, ptr %78, align 8, !tbaa !542 + %80 = add i32 %79, 1 + store i32 %80, ptr %78, align 8, !tbaa !542 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %81, ptr noundef nonnull align 8 dereferenceable(8) %4) + store i32 %79, ptr %82, align 4, !tbaa !487 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit -84: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - %85 = load ptr, ptr %0, align 8, !tbaa !541 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 8 - %87 = load ptr, ptr %86, align 8, !tbaa !128 +83: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit + %84 = load ptr, ptr %0, align 8, !tbaa !541 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 8 + %86 = load ptr, ptr %85, align 8, !tbaa !128 %.sroa.0.0.copyload.i26 = load i64, ptr %5, align 8 - %88 = call i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameENS_12TemplateNameEb(ptr noundef nonnull align 8 dereferenceable(23216) %87, i64 %.sroa.0.0.copyload.i26, i1 noundef zeroext false) #30 - store i64 %88, ptr %5, align 8 + %87 = call i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameENS_12TemplateNameEb(ptr noundef nonnull align 8 dereferenceable(23216) %86, i64 %.sroa.0.0.copyload.i26, i1 noundef zeroext false) #30 + store i64 %87, ptr %5, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store i64 %88, ptr %3, align 8, !tbaa !105 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %90 = load i32, ptr %89, align 8, !tbaa !542 - %91 = add i32 %90, 1 - store i32 %91, ptr %89, align 8, !tbaa !542 - %92 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %92, ptr noundef nonnull align 8 dereferenceable(8) %3) - store i32 %90, ptr %93, align 4, !tbaa !487 + store i64 %87, ptr %3, align 8, !tbaa !105 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %89 = load i32, ptr %88, align 8, !tbaa !542 + %90 = add i32 %89, 1 + store i32 %90, ptr %88, align 8, !tbaa !542 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(8) %3) + store i32 %89, ptr %92, align 4, !tbaa !487 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit -_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit: ; preds = %73, %84 +_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit: ; preds = %72, %83 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %94 + br label %93 -94: ; preds = %36, %21, %10, %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24 +93: ; preds = %36, %21, %10, %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24 ret void } diff --git a/bench/llvm/optimized/RegAllocGreedy.ll b/bench/llvm/optimized/RegAllocGreedy.ll index a7dcade38f8..76c0dd42d5c 100644 --- a/bench/llvm/optimized/RegAllocGreedy.ll +++ b/bench/llvm/optimized/RegAllocGreedy.ll @@ -3432,30 +3432,30 @@ define hidden i32 @_ZN4llvm8RAGreedy9tryAssignERKNS_12LiveIntervalERNS_15Allocat %10 = sub nsw i32 0, %9 %11 = getelementptr inbounds nuw i8, ptr %2, i64 72 %12 = load i32, ptr %11, align 8, !tbaa !267 - %.not100130 = icmp eq i32 %12, %10 - br i1 %.not100130, label %.critedge42, label %.lr.ph133 + %.not98128 = icmp eq i32 %12, %10 + br i1 %.not98128, label %.critedge42, label %.lr.ph131 -.lr.ph133: ; preds = %5 +.lr.ph131: ; preds = %5 %13 = getelementptr inbounds nuw i8, ptr %0, i64 96 %14 = getelementptr inbounds nuw i8, ptr %2, i64 56 br label %15 -15: ; preds = %.lr.ph133, %_ZN4llvm15AllocationOrder8IteratorppEv.exit - %.sroa.076.0132 = phi i32 [ 0, %.lr.ph133 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] - %.sroa.8.0131 = phi i32 [ %10, %.lr.ph133 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] - %.not = icmp eq i32 %.sroa.076.0132, 0 +15: ; preds = %.lr.ph131, %_ZN4llvm15AllocationOrder8IteratorppEv.exit + %.sroa.076.0130 = phi i32 [ 0, %.lr.ph131 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.sroa.8.0129 = phi i32 [ %10, %.lr.ph131 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.not = icmp eq i32 %.sroa.076.0130, 0 br i1 %.not, label %16, label %.critedge.thread 16: ; preds = %15 %17 = load ptr, ptr %13, align 8, !tbaa !192 - %18 = icmp slt i32 %.sroa.8.0131, 0 + %18 = icmp slt i32 %.sroa.8.0129, 0 br i1 %18, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread _ZNK4llvm15AllocationOrder8IteratordeEv.exit: ; preds = %16 %19 = load ptr, ptr %2, align 8, !tbaa !270 %20 = load i64, ptr %7, align 8, !tbaa !266 %21 = getelementptr inbounds nuw i16, ptr %19, i64 %20 - %22 = sext i32 %.sroa.8.0131 to i64 + %22 = sext i32 %.sroa.8.0129 to i64 %23 = getelementptr inbounds i16, ptr %21, i64 %22 %.sroa.0.0.in.i = load i16, ptr %23, align 2, !tbaa !271 %.sroa.0.0.i = zext i16 %.sroa.0.0.in.i to i32 @@ -3464,7 +3464,7 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit: ; preds = %16 br i1 %.not35, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50, label %35 _ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread: ; preds = %16 - %25 = zext nneg i32 %.sroa.8.0131 to i64 + %25 = zext nneg i32 %.sroa.8.0129 to i64 %26 = load ptr, ptr %14, align 8, !tbaa !272 %27 = getelementptr inbounds nuw i16, ptr %26, i64 %25 %.sroa.0.0.in.i84 = load i16, ptr %27, align 2, !tbaa !271 @@ -3492,9 +3492,9 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati 35: ; preds = %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit54 %.sroa.076.1 = phi i32 [ %.sroa.0.0.i53, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit54 ], [ 0, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit ], [ 0, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread ] %36 = load i32, ptr %11, align 8, !tbaa !267 - %37 = icmp slt i32 %.sroa.8.0131, %36 + %37 = icmp slt i32 %.sroa.8.0129, %36 %38 = zext i1 %37 to i32 - %spec.select = add nsw i32 %.sroa.8.0131, %38 + %spec.select = add nsw i32 %.sroa.8.0129, %38 %39 = icmp sgt i32 %spec.select, -1 %40 = icmp slt i32 %spec.select, %36 %or.cond13.i = and i1 %39, %40 @@ -3505,8 +3505,8 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati %42 = zext nneg i32 %spec.select to i64 %43 = getelementptr inbounds nuw i16, ptr %41, i64 %42 %44 = load i16, ptr %43, align 2, !tbaa !271 - %.not.i117 = icmp eq i16 %44, 0 - br i1 %.not.i117, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %.lr.ph + %.not.i115 = icmp eq i16 %44, 0 + br i1 %.not.i115, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %.lr.ph .lr.ph: ; preds = %.lr.ph.i %45 = load ptr, ptr %2, align 8, !tbaa !270 @@ -3526,8 +3526,8 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati ._crit_edge.i.i.i.i.i.i.us: ; preds = %53, %.lr.ph.split.us %52 = phi i16 [ %44, %.lr.ph.split.us ], [ %55, %53 ] - %indvars.iv.i120.us = phi i64 [ %42, %.lr.ph.split.us ], [ %indvars.iv.next.i.us, %53 ] - %.sroa.8.2118.us = phi i32 [ %spec.select, %.lr.ph.split.us ], [ %66, %53 ] + %indvars.iv.i118.us = phi i64 [ %42, %.lr.ph.split.us ], [ %indvars.iv.next.i.us, %53 ] + %.sroa.8.2116.us = phi i32 [ %spec.select, %.lr.ph.split.us ], [ %66, %53 ] switch i64 %46, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit [ i64 3, label %56 i64 2, label %._crit_edge._crit_edge.i.i.i.i.i.i.us @@ -3567,7 +3567,7 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us: ; preds = %._crit_edg br i1 %.not4.i.us, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %65 65: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us - %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i120.us, 1 + %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i118.us, 1 %66 = trunc nuw i64 %indvars.iv.next.i.us to i32 %67 = icmp sgt i32 %36, %66 br i1 %67, label %53, label %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, !llvm.loop !273 @@ -3584,8 +3584,8 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us: ; preds = %._crit_edg .lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.split, %69 %72 = phi i16 [ %44, %.lr.ph.split ], [ %71, %69 ] - %indvars.iv.i120 = phi i64 [ %42, %.lr.ph.split ], [ %indvars.iv.next.i, %69 ] - %.sroa.8.2118 = phi i32 [ %spec.select, %.lr.ph.split ], [ %105, %69 ] + %indvars.iv.i118 = phi i64 [ %42, %.lr.ph.split ], [ %indvars.iv.next.i, %69 ] + %.sroa.8.2116 = phi i32 [ %spec.select, %.lr.ph.split ], [ %105, %69 ] br label %73 73: ; preds = %88, %.lr.ph.i.i.i.i.i.i @@ -3666,7 +3666,7 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i: ; preds = %73, %_ZNK4llv br i1 %.not4.i, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %104 104: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i - %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i120, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i118, 1 %105 = trunc nuw i64 %indvars.iv.next.i to i32 %106 = icmp sgt i32 %36, %105 br i1 %106, label %69, label %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, !llvm.loop !273 @@ -3678,16 +3678,16 @@ default.unreachable: ; preds = %._crit_edge.loopexi unreachable _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i, %._crit_edge._crit_edge52.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i, %69, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us, %._crit_edge.i.i.i.i.i.i.us, %53, %.lr.ph.i, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, %35 - %.sroa.8.3 = phi i32 [ %spec.select, %35 ], [ %36, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge ], [ %spec.select, %.lr.ph.i ], [ %.sroa.8.2118.us, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us ], [ %.sroa.8.2118.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us ], [ %spec.select, %._crit_edge.i.i.i.i.i.i.us ], [ %66, %53 ], [ %.sroa.8.2118, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i ], [ %.sroa.8.2118, %._crit_edge._crit_edge52.i.i.i.i.i.i ], [ %.sroa.8.2118, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %105, %69 ] - %.not100 = icmp eq i32 %.sroa.8.3, %12 - br i1 %.not100, label %.critedge, label %15, !llvm.loop !275 + %.sroa.8.3 = phi i32 [ %spec.select, %35 ], [ %36, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge ], [ %spec.select, %.lr.ph.i ], [ %.sroa.8.2116.us, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us ], [ %.sroa.8.2116.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us ], [ %spec.select, %._crit_edge.i.i.i.i.i.i.us ], [ %66, %53 ], [ %.sroa.8.2116, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i ], [ %.sroa.8.2116, %._crit_edge._crit_edge52.i.i.i.i.i.i ], [ %.sroa.8.2116, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %105, %69 ] + %.not98 = icmp eq i32 %.sroa.8.3, %12 + br i1 %.not98, label %.critedge, label %15, !llvm.loop !275 .critedge: ; preds = %_ZN4llvm15AllocationOrder8IteratorppEv.exit - %.not101 = icmp eq i32 %.sroa.076.1, 0 - br i1 %.not101, label %.critedge42, label %.critedge.thread + %.not99 = icmp eq i32 %.sroa.076.1, 0 + br i1 %.not99, label %.critedge42, label %.critedge.thread .critedge.thread: ; preds = %15, %.critedge - %.sroa.076.0106 = phi i32 [ %.sroa.076.1, %.critedge ], [ %.sroa.076.0132, %15 ] + %.sroa.076.0104 = phi i32 [ %.sroa.076.1, %.critedge ], [ %.sroa.076.0130, %15 ] %107 = getelementptr inbounds nuw i8, ptr %0, i64 72 %108 = load ptr, ptr %107, align 8, !tbaa !276 %109 = getelementptr inbounds nuw i8, ptr %1, i64 112 @@ -3696,7 +3696,7 @@ _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15Allocati %111 = getelementptr inbounds nuw i8, ptr %108, i64 240 %112 = load i32, ptr %111, align 8, !tbaa !26 %113 = icmp ugt i32 %112, %110 - br i1 %113, label %114, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 + br i1 %113, label %114, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 114: ; preds = %.critedge.thread %115 = getelementptr inbounds nuw i8, ptr %108, i64 232 @@ -3706,7 +3706,7 @@ _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15Allocati %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 %120 = load i32, ptr %119, align 8, !tbaa !26 %.not.i.i = icmp eq i32 %120, 0 - br i1 %.not.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + br i1 %.not.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %114 %121 = getelementptr inbounds nuw i8, ptr %118, i64 8 @@ -3716,8 +3716,8 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre %.not.i56 = icmp eq i32 %124, 0 %125 = add i32 %123, -1 %126 = icmp ult i32 %125, 1073741823 - %or.cond99 = select i1 %.not.i56, i1 %126, i1 false - br i1 %or.cond99, label %127, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 + %or.cond = select i1 %.not.i56, i1 %126, i1 false + br i1 %or.cond, label %127, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 127: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i %128 = load ptr, ptr %2, align 8, !tbaa !270 @@ -3775,7 +3775,7 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre ._crit_edge.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i, %127 %.pre-phi56.i.i.i.i.i = phi i64 [ %156, %._crit_edge.loopexit.i.i.i.i.i ], [ %129, %127 ] %.029.lcssa.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i ], [ %128, %127 ] - switch i64 %.pre-phi56.i.i.i.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 [ + switch i64 %.pre-phi56.i.i.i.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 [ i64 3, label %157 i64 2, label %._crit_edge._crit_edge.i.i.i.i.i i64 1, label %._crit_edge._crit_edge52.i.i.i.i.i @@ -3807,7 +3807,7 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre %168 = load i16, ptr %.2.i.i.i.i.i, align 2, !tbaa !271 %169 = zext i16 %168 to i32 %170 = icmp eq i32 %123, %169 - br i1 %170, label %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 + br i1 %170, label %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit: ; preds = %147 %171 = getelementptr inbounds nuw i8, ptr %.02946.i.i.i.i.i, i64 6 @@ -3823,8 +3823,8 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195 _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit: ; preds = %133, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit193, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195, %157, %._crit_edge._crit_edge.i.i.i.i.i, %._crit_edge._crit_edge52.i.i.i.i.i %.028.i.i.i.i.i = phi ptr [ %.029.lcssa.i.i.i.i.i, %157 ], [ %.1.i.i.i.i.i, %._crit_edge._crit_edge.i.i.i.i.i ], [ %.2.i.i.i.i.i, %._crit_edge._crit_edge52.i.i.i.i.i ], [ %171, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit ], [ %172, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit193 ], [ %173, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195 ], [ %.02946.i.i.i.i.i, %133 ] - %.not103 = icmp eq ptr %.028.i.i.i.i.i, %130 - br i1 %.not103, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, label %174 + %.not100 = icmp eq ptr %.028.i.i.i.i.i, %130 + br i1 %.not100, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, label %174 174: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit %175 = getelementptr inbounds nuw i8, ptr %0, i64 920 @@ -3850,25 +3850,25 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit: ; preds = %133, %_ZNK4llvm store ptr %1, ptr %6, align 8, !tbaa !181 %187 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPKNS_12LiveIntervalENS_11SmallVectorIS3_Lj8EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj8EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(104) %186, ptr noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 + br label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 -_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92: ; preds = %114, %._crit_edge._crit_edge52.i.i.i.i.i, %._crit_edge.i.i.i.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %.critedge.thread, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, %185 +_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89: ; preds = %114, %._crit_edge._crit_edge52.i.i.i.i.i, %._crit_edge.i.i.i.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %.critedge.thread, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, %185 %188 = getelementptr inbounds nuw i8, ptr %0, i64 29008 - %189 = zext nneg i32 %.sroa.076.0106 to i64 + %189 = zext nneg i32 %.sroa.076.0104 to i64 %190 = load ptr, ptr %188, align 8, !tbaa !279 %191 = getelementptr inbounds nuw i8, ptr %190, i64 %189 %192 = load i8, ptr %191, align 1, !tbaa !250 %.not37 = icmp eq i8 %192, 0 br i1 %.not37, label %.critedge42, label %193 -193: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 +193: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 %194 = call i32 @_ZN4llvm8RAGreedy8tryEvictERKNS_12LiveIntervalERNS_15AllocationOrderERNS_15SmallVectorImplINS_8RegisterEEEhRKNS_8SmallSetIS7_Lj16ESt4lessIS7_EEE(ptr noundef nonnull align 8 dereferenceable(29026) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(76) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, i8 noundef zeroext %192, ptr noundef nonnull align 1 %4) %.not38 = icmp eq i32 %194, 0 - %195 = select i1 %.not38, i32 %.sroa.076.0106, i32 %194 + %195 = select i1 %.not38, i32 %.sroa.076.0104, i32 %194 br label %.critedge42 -.critedge42: ; preds = %5, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, %181, %182, %.critedge, %193, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 - %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0106, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 ], [ 0, %5 ] +.critedge42: ; preds = %5, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, %181, %182, %.critedge, %193, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 + %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0104, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 ], [ 0, %5 ] ret i32 %.sroa.082.0 } @@ -15086,21 +15086,27 @@ _ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit %86 = getelementptr inbounds nuw i8, ptr %85, i64 16 %87 = load i32, ptr %86, align 8, !tbaa !26 %.not.i.i92 = icmp eq i32 %87, 0 - br i1 %.not.i.i92, label %.critedge88, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i - -_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %81 - %88 = getelementptr inbounds nuw i8, ptr %85, i64 8 - %89 = load ptr, ptr %88, align 8, !tbaa !25 - %90 = load i32, ptr %89, align 4, !tbaa !68 - %91 = load i32, ptr %85, align 8, !tbaa !68 - %.not.i93 = icmp eq i32 %91, 0 - %.not80 = icmp ne i32 %90, 0 - %92 = icmp ne i32 %90, %73 - %93 = and i1 %.not80, %92 - %or.cond133 = select i1 %.not.i93, i1 %93, i1 false - br i1 %or.cond133, label %94, label %.critedge88 - -94: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + br i1 %.not.i.i92, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, label %88 + +88: ; preds = %81 + %89 = getelementptr inbounds nuw i8, ptr %85, i64 8 + %90 = load ptr, ptr %89, align 8, !tbaa !25 + %91 = load i32, ptr %90, align 4, !tbaa !68 + br label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + +_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %88, %81 + %.sroa.03.0.i.i = phi i32 [ %91, %88 ], [ 0, %81 ] + %92 = load i32, ptr %85, align 4, !tbaa !68 + %.not.i93 = icmp eq i32 %92, 0 + br i1 %.not.i93, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit, label %.critedge88 + +_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + %.not80 = icmp ne i32 %.sroa.03.0.i.i, 0 + %93 = icmp ne i32 %.sroa.03.0.i.i, %73 + %or.cond = and i1 %.not80, %93 + br i1 %or.cond, label %94, label %.critedge88 + +94: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit %95 = getelementptr inbounds nuw i8, ptr %0, i64 28904 call void @llvm.lifetime.start.p0(ptr nonnull %9) store ptr %1, ptr %9, align 8, !tbaa !181 @@ -15200,7 +15206,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %135 = getelementptr inbounds nuw i8, ptr %1, i64 8 %136 = load i32, ptr %135, align 8, !tbaa !26 %.not.i.i96 = icmp eq i32 %136, 0 - br i1 %.not.i.i96, label %.thread132, label %137 + br i1 %.not.i.i96, label %.thread131, label %137 137: ; preds = %.thread %138 = load i32, ptr %64, align 8, !tbaa !26 @@ -15211,24 +15217,24 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds 140: ; preds = %137 %141 = load i32, ptr %64, align 8, !tbaa !26 %.not82 = icmp eq i32 %141, %138 - br i1 %.not82, label %.thread132, label %.critedge88 + br i1 %.not82, label %.thread131, label %.critedge88 142: ; preds = %133 %143 = icmp samesign ugt i32 %70, 5 - br i1 %143, label %148, label %.thread132 + br i1 %143, label %148, label %.thread131 -.thread132: ; preds = %.thread, %140, %142 +.thread131: ; preds = %.thread, %140, %142 %144 = getelementptr inbounds nuw i8, ptr %1, i64 116 %145 = load float, ptr %144, align 4, !tbaa !831 %146 = load float, ptr @_ZN4llvm9huge_valfE, align 4, !tbaa !807 %147 = fcmp une float %145, %146 br i1 %147, label %150, label %148 -148: ; preds = %.thread132, %142 +148: ; preds = %.thread131, %142 %149 = call noundef i32 @_ZN4llvm8RAGreedy23tryLastChanceRecoloringERKNS_12LiveIntervalERNS_15AllocationOrderERNS_15SmallVectorImplINS_8RegisterEEERNS_8SmallSetIS7_Lj16ESt4lessIS7_EEERNS_11SmallVectorISt4pairIPS2_NS_10MCRegisterEELj8EEEj(ptr noundef nonnull align 8 dereferenceable(29026) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(76) %8, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef nonnull align 8 dereferenceable(144) %4, i32 noundef %5) br label %.critedge88 -150: ; preds = %.thread132 +150: ; preds = %.thread131 %151 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZL22EnableDeferredSpilling, i64 120), align 8, !tbaa !71, !range !56, !noundef !57 %152 = trunc nuw i8 %151 to i1 br i1 %152, label %162, label %153 @@ -15307,8 +15313,8 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %204 = extractvalue { ptr, i64 } %202, 1 %.idx = shl nuw nsw i64 %204, 2 %205 = getelementptr inbounds nuw i8, ptr %203, i64 %.idx - %.not83135 = icmp eq i64 %204, 0 - br i1 %.not83135, label %._crit_edge, label %.lr.ph + %.not83132 = icmp eq i64 %204, 0 + br i1 %.not83132, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %170 %206 = getelementptr inbounds nuw i8, ptr %0, i64 816 @@ -15327,20 +15333,20 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %216 = call { ptr, i64 } %215(ptr noundef nonnull align 8 dereferenceable(8) %212) #24 %217 = extractvalue { ptr, i64 } %216, 0 %218 = extractvalue { ptr, i64 } %216, 1 - %.idx142 = shl nuw nsw i64 %218, 2 - %219 = getelementptr inbounds nuw i8, ptr %217, i64 %.idx142 - %.not84137 = icmp eq i64 %218, 0 - br i1 %.not84137, label %._crit_edge141, label %.lr.ph140 + %.idx139 = shl nuw nsw i64 %218, 2 + %219 = getelementptr inbounds nuw i8, ptr %217, i64 %.idx139 + %.not84134 = icmp eq i64 %218, 0 + br i1 %.not84134, label %._crit_edge138, label %.lr.ph137 -.lr.ph140: ; preds = %._crit_edge +.lr.ph137: ; preds = %._crit_edge %220 = getelementptr inbounds nuw i8, ptr %0, i64 816 %221 = getelementptr inbounds nuw i8, ptr %13, i64 16 %222 = getelementptr inbounds nuw i8, ptr %13, i64 64 br label %238 223: ; preds = %.lr.ph, %223 - %.073136 = phi ptr [ %203, %.lr.ph ], [ %235, %223 ] - %.sroa.013.0.copyload = load i32, ptr %.073136, align 4, !tbaa !68 + %.073133 = phi ptr [ %203, %.lr.ph ], [ %235, %223 ] + %.sroa.013.0.copyload = load i32, ptr %.073133, align 4, !tbaa !68 %224 = load ptr, ptr %206, align 8, !tbaa !739 %225 = load ptr, ptr %207, align 8, !tbaa !728 %226 = load ptr, ptr %225, align 8, !tbaa !25 @@ -15353,18 +15359,18 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %233 = getelementptr inbounds nuw %"class.llvm::Register", ptr %226, i64 %231 %234 = load ptr, ptr %179, align 8, !tbaa !144 call void @_ZN4llvm18LiveDebugVariables13splitRegisterENS_8RegisterENS_8ArrayRefIS1_EERNS_13LiveIntervalsE(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 %.sroa.013.0.copyload, ptr %233, i64 %232, ptr noundef nonnull align 8 dereferenceable(440) %234) #24 - %235 = getelementptr inbounds nuw i8, ptr %.073136, i64 4 + %235 = getelementptr inbounds nuw i8, ptr %.073133, i64 4 %.not83 = icmp eq ptr %235, %205 br i1 %.not83, label %._crit_edge, label %223 -._crit_edge141: ; preds = %238, %._crit_edge +._crit_edge138: ; preds = %238, %._crit_edge %236 = load i8, ptr @_ZN4llvm12RegAllocBase13VerifyEnabledE, align 1, !tbaa !81, !range !56, !noundef !57 %237 = trunc nuw i8 %236 to i1 br i1 %237, label %251, label %255 -238: ; preds = %.lr.ph140, %238 - %.074138 = phi ptr [ %217, %.lr.ph140 ], [ %250, %238 ] - %.sroa.04.0.copyload = load i32, ptr %.074138, align 4, !tbaa !68 +238: ; preds = %.lr.ph137, %238 + %.074135 = phi ptr [ %217, %.lr.ph137 ], [ %250, %238 ] + %.sroa.04.0.copyload = load i32, ptr %.074135, align 4, !tbaa !68 %239 = load ptr, ptr %220, align 8, !tbaa !739 %240 = load ptr, ptr %221, align 8, !tbaa !728 %241 = load ptr, ptr %240, align 8, !tbaa !25 @@ -15377,17 +15383,17 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %248 = getelementptr inbounds nuw %"class.llvm::Register", ptr %241, i64 %246 %249 = load ptr, ptr %179, align 8, !tbaa !144 call void @_ZN4llvm18LiveDebugVariables13splitRegisterENS_8RegisterENS_8ArrayRefIS1_EERNS_13LiveIntervalsE(ptr noundef nonnull align 8 dereferenceable(8) %239, i32 %.sroa.04.0.copyload, ptr %248, i64 %247, ptr noundef nonnull align 8 dereferenceable(440) %249) #24 - %250 = getelementptr inbounds nuw i8, ptr %.074138, i64 4 + %250 = getelementptr inbounds nuw i8, ptr %.074135, i64 4 %.not84 = icmp eq ptr %250, %219 - br i1 %.not84, label %._crit_edge141, label %238 + br i1 %.not84, label %._crit_edge138, label %238 -251: ; preds = %._crit_edge141 +251: ; preds = %._crit_edge138 %252 = load ptr, ptr %177, align 8, !tbaa !325 %253 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN4llvm4errsEv() #24 %254 = call noundef zeroext i1 @_ZNK4llvm15MachineFunction6verifyEPNS_4PassEPKcPNS_11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(1065) %252, ptr noundef nonnull %0, ptr noundef nonnull @.str.61, ptr noundef nonnull %253, i1 noundef zeroext true) #24 br label %255 -255: ; preds = %251, %._crit_edge141 +255: ; preds = %251, %._crit_edge138 call void @_ZN4llvm13LiveRangeEditD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %13) #24 call void @llvm.lifetime.end.p0(ptr nonnull %13) %256 = load ptr, ptr %10, align 8, !tbaa !606 @@ -15402,8 +15408,8 @@ _ZN4llvm10TimeRegionD2Ev.exit: ; preds = %255, %257 call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %.critedge88 -.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %81, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 - %.sroa.0121.1 = phi i32 [ 0, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %149, %148 ], [ 0, %61 ], [ %60, %59 ], [ %20, %56 ], [ %20, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit ], [ %20, %21 ], [ 0, %.critedge ], [ %73, %94 ], [ 0, %140 ], [ %139, %137 ], [ 0, %_ZN4llvm10TimeRegionD2Ev.exit ], [ 0, %169 ], [ %20, %24 ], [ %73, %74 ], [ %73, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i ], [ %73, %81 ], [ %20, %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i ] +.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 + %.sroa.0121.1 = phi i32 [ 0, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %149, %148 ], [ 0, %61 ], [ %60, %59 ], [ %20, %56 ], [ %20, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit ], [ %20, %21 ], [ 0, %.critedge ], [ %73, %94 ], [ %73, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit ], [ 0, %140 ], [ %139, %137 ], [ 0, %_ZN4llvm10TimeRegionD2Ev.exit ], [ 0, %169 ], [ %20, %24 ], [ %73, %74 ], [ %73, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i ], [ %20, %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i ] %258 = load ptr, ptr %8, align 8, !tbaa !270 %259 = getelementptr inbounds nuw i8, ptr %8, i64 24 %260 = icmp eq ptr %258, %259 diff --git a/bench/llvm/optimized/SemaOverload.ll b/bench/llvm/optimized/SemaOverload.ll index 9ea43b417c0..c06a75560a7 100644 --- a/bench/llvm/optimized/SemaOverload.ll +++ b/bench/llvm/optimized/SemaOverload.ll @@ -90997,33 +90997,32 @@ _ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit: ; preds = %7, %13, %2 .lr.ph: ; preds = %34 %41 = getelementptr inbounds nuw i8, ptr %0, i64 640 %42 = and i64 %38, 7 - %43 = add nuw nsw i64 %42, 1 - br label %44 + br label %43 -44: ; preds = %.lr.ph, %52 - %indvars.iv = phi i64 [ %43, %.lr.ph ], [ %indvars.iv.next, %52 ] - %45 = trunc nuw nsw i64 %indvars.iv to i32 - %46 = or i32 %40, %45 - %47 = zext i32 %46 to i64 - %.not = icmp eq i64 %indvars.iv, %47 - br i1 %.not, label %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit, label %52 +43: ; preds = %.lr.ph, %51 + %indvars.iv = phi i64 [ %42, %.lr.ph ], [ %indvars.iv.next, %51 ] + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %44 = trunc nuw nsw i64 %indvars.iv.next to i32 + %45 = or i32 %40, %44 + %46 = zext i32 %45 to i64 + %.not = icmp eq i64 %indvars.iv.next, %46 + br i1 %.not, label %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit, label %51 -_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %44 - %48 = or i64 %.sroa.0.0.copyload.i, %indvars.iv +_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %43 + %47 = or i64 %.sroa.0.0.copyload.i, %indvars.iv.next call void @llvm.lifetime.start.p0(ptr nonnull %4) - %49 = load ptr, ptr %41, align 8, !tbaa !1912 - %50 = call i64 @_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23216) %49, i64 %48, ptr noundef %36) #30 - store i64 %50, ptr %4, align 8 - %51 = call noundef zeroext i1 @_ZN4llvm9SetVectorIN5clang8QualTypeENS_11SmallVectorIS2_Lj8EEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_vEEEELj8EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull align 8 dereferenceable(8) %4) + %48 = load ptr, ptr %41, align 8, !tbaa !1912 + %49 = call i64 @_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23216) %48, i64 %47, ptr noundef %36) #30 + store i64 %49, ptr %4, align 8 + %50 = call noundef zeroext i1 @_ZN4llvm9SetVectorIN5clang8QualTypeENS_11SmallVectorIS2_Lj8EEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_vEEEELj8EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %52 + br label %51 -52: ; preds = %44, %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 8 - br i1 %exitcond.not, label %.loopexit, label %44, !llvm.loop !2293 +51: ; preds = %43, %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit + %exitcond.not = icmp eq i64 %indvars.iv.next, 7 + br i1 %exitcond.not, label %.loopexit, label %43, !llvm.loop !2293 -.loopexit: ; preds = %52, %34, %_ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit, %2 +.loopexit: ; preds = %51, %34, %_ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit, %2 ret void } diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index 8f23c3ed15d..97812797b52 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -17677,14 +17677,15 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS br i1 %or.cond, label %.loopexit28, label %.lr.ph33 .lr.ph33: ; preds = %5 - %16 = zext nneg i32 %14 to i64 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %narrow = add nuw i32 %14, 1 + %17 = zext i32 %narrow to i64 %.pre = load ptr, ptr %4, align 8 br label %19 .loopexit: ; preds = %35, %19 %18 = phi ptr [ %20, %19 ], [ %43, %35 ] - %exitcond.not = icmp eq i64 %.02732, %16 + %exitcond.not = icmp eq i64 %23, %17 br i1 %exitcond.not, label %.loopexit28, label %19, !llvm.loop !309 19: ; preds = %.lr.ph33, %.loopexit @@ -17700,7 +17701,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS .lr.ph: ; preds = %19 %27 = sext i32 %22 to i64 - %28 = load ptr, ptr %17, align 8 + %28 = load ptr, ptr %16, align 8 %29 = getelementptr i32, ptr %28, i64 %27 %30 = getelementptr i8, ptr %29, i64 4 %31 = load i32, ptr %30, align 4 @@ -17743,15 +17744,16 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat br i1 %.not43, label %._crit_edge, label %.lr.ph46 .lr.ph46: ; preds = %4 - %9 = zext nneg i32 %8 to i64 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 80 - %11 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 80 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %narrow = add nuw i32 %8, 1 + %11 = zext i32 %narrow to i64 %.pre = load ptr, ptr %3, align 8 br label %13 .loopexit: ; preds = %.lr.ph41, %.preheader %12 = phi ptr [ %30, %.preheader ], [ %52, %.lr.ph41 ] - %exitcond.not = icmp eq i64 %.045, %9 + %exitcond.not = icmp eq i64 %29, %11 br i1 %exitcond.not, label %._crit_edge, label %13, !llvm.loop !311 13: ; preds = %.lr.ph46, %.loopexit @@ -17761,12 +17763,12 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat %15 = getelementptr inbounds nuw i32, ptr %14, i64 %.045 %16 = load i32, ptr %15, align 4 %17 = sext i32 %16 to i64 - %18 = load ptr, ptr %10, align 8 + %18 = load ptr, ptr %9, align 8 %19 = getelementptr inbounds i32, ptr %18, i64 %17 %20 = load i32, ptr %19, align 4 store i32 %.03344, ptr %19, align 4 %21 = add nsw i64 %17, 1 - %22 = load ptr, ptr %10, align 8 + %22 = load ptr, ptr %9, align 8 %23 = getelementptr inbounds i32, ptr %22, i64 %21 %24 = load i32, ptr %23, align 4 %25 = icmp slt i32 %20, %24 @@ -17794,7 +17796,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %.03437 = phi i64 [ %26, %.lr.ph.preheader ], [ %43, %.lr.ph ] - %35 = load ptr, ptr %11, align 8 + %35 = load ptr, ptr %10, align 8 %36 = getelementptr inbounds i32, ptr %35, i64 %.03437 %37 = load i32, ptr %36, align 4 %38 = sext i32 %37 to i64 @@ -17805,7 +17807,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat store i32 %41, ptr %42, align 4 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %43 = add nsw i64 %.03437, 1 - %44 = load ptr, ptr %10, align 8 + %44 = load ptr, ptr %9, align 8 %45 = getelementptr inbounds i32, ptr %44, i64 %21 %46 = load i32, ptr %45, align 4 %47 = sext i32 %46 to i64 @@ -17814,7 +17816,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph41: ; preds = %.preheader, %.lr.ph41 %.03540 = phi i64 [ %51, %.lr.ph41 ], [ %21, %.preheader ] - %49 = load ptr, ptr %10, align 8 + %49 = load ptr, ptr %9, align 8 %50 = getelementptr inbounds i32, ptr %49, i64 %.03540 store i32 %.1.lcssa, ptr %50, align 4 %51 = add nsw i64 %.03540, 1 diff --git a/bench/meshlab/optimized/filter_parametrization.ll b/bench/meshlab/optimized/filter_parametrization.ll index ac3ad365b38..1b458f4d795 100644 --- a/bench/meshlab/optimized/filter_parametrization.ll +++ b/bench/meshlab/optimized/filter_parametrization.ll @@ -3271,9 +3271,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %86 = getelementptr inbounds nuw i8, ptr %18, i64 8 %87 = getelementptr inbounds nuw i8, ptr %18, i64 16 %.not.i108 = icmp eq i64 %83, 0 - br i1 %.not.i108, label %.thread261, label %89 + br i1 %.not.i108, label %.thread259, label %89 -.thread261: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i +.thread259: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i store i64 %83, ptr %86, align 8 store i64 3, ptr %87, align 8 %88 = load ptr, ptr %11, align 8 @@ -3323,10 +3323,10 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %107 = icmp slt i64 %106, %101 br i1 %107, label %.lr.ph.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, !llvm.loop !30 -._crit_edge.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i, %.thread261, %98 - %108 = phi i64 [ 0, %.thread261 ], [ %101, %98 ], [ %101, %.lr.ph.i.i.i.i.i ] - %109 = phi ptr [ %88, %.thread261 ], [ %99, %98 ], [ %99, %.lr.ph.i.i.i.i.i ] - %110 = phi ptr [ null, %.thread261 ], [ %.sink.i, %98 ], [ %.sink.i, %.lr.ph.i.i.i.i.i ] +._crit_edge.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i, %.thread259, %98 + %108 = phi i64 [ 0, %.thread259 ], [ %101, %98 ], [ %101, %.lr.ph.i.i.i.i.i ] + %109 = phi ptr [ %88, %.thread259 ], [ %99, %98 ], [ %99, %.lr.ph.i.i.i.i.i ] + %110 = phi ptr [ null, %.thread259 ], [ %.sink.i, %98 ], [ %.sink.i, %.lr.ph.i.i.i.i.i ] %111 = icmp slt i64 %108, %85 br i1 %111, label %.lr.ph.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit @@ -3601,7 +3601,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %226 = getelementptr inbounds nuw i8, ptr %20, i64 8 %227 = load i64, ptr %226, align 8 %228 = icmp sgt i64 %227, 3074457345618258602 - br i1 %228, label %.invoke264, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 + br i1 %228, label %.invoke262, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 229: ; preds = %219 %230 = landingpad { ptr, i32 } @@ -3613,9 +3613,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %232 = getelementptr inbounds nuw i8, ptr %28, i64 8 %233 = getelementptr inbounds nuw i8, ptr %28, i64 16 %.not.i138 = icmp eq i64 %227, 0 - br i1 %.not.i138, label %.thread262, label %235 + br i1 %.not.i138, label %.thread260, label %235 -.thread262: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 +.thread260: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 store i64 %227, ptr %232, align 8 store i64 3, ptr %233, align 8 %234 = load ptr, ptr %20, align 8 @@ -3627,21 +3627,21 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi 237: ; preds = %235 %238 = icmp samesign ugt i64 %231, 2305843009213693951 - br i1 %238, label %.invoke264, label %239 + br i1 %238, label %.invoke262, label %239 239: ; preds = %237 %240 = mul i64 %227, 24 %241 = call noalias ptr @malloc(i64 noundef %240) #43 %242 = icmp eq ptr %241, null - br i1 %242, label %.invoke264, label %244 + br i1 %242, label %.invoke262, label %244 -.invoke264: ; preds = %239, %237, %.sink.split.i117 +.invoke262: ; preds = %239, %237, %.sink.split.i117 %243 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %243, align 8 invoke void @__cxa_throw(ptr nonnull %243, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont265 unwind label %262 + to label %.cont263 unwind label %262 -.cont265: ; preds = %.invoke264 +.cont263: ; preds = %.invoke262 unreachable 244: ; preds = %235, %239 @@ -3665,10 +3665,10 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %253 = icmp slt i64 %252, %247 br i1 %253, label %.lr.ph.i.i.i.i.i132, label %._crit_edge.i.i.i.i.i128, !llvm.loop !30 -._crit_edge.i.i.i.i.i128: ; preds = %.lr.ph.i.i.i.i.i132, %.thread262, %244 - %254 = phi i64 [ 0, %.thread262 ], [ %247, %244 ], [ %247, %.lr.ph.i.i.i.i.i132 ] - %255 = phi ptr [ %234, %.thread262 ], [ %245, %244 ], [ %245, %.lr.ph.i.i.i.i.i132 ] - %256 = phi ptr [ null, %.thread262 ], [ %.sink.i140, %244 ], [ %.sink.i140, %.lr.ph.i.i.i.i.i132 ] +._crit_edge.i.i.i.i.i128: ; preds = %.lr.ph.i.i.i.i.i132, %.thread260, %244 + %254 = phi i64 [ 0, %.thread260 ], [ %247, %244 ], [ %247, %.lr.ph.i.i.i.i.i132 ] + %255 = phi ptr [ %234, %.thread260 ], [ %245, %244 ], [ %245, %.lr.ph.i.i.i.i.i132 ] + %256 = phi ptr [ null, %.thread260 ], [ %.sink.i140, %244 ], [ %.sink.i140, %.lr.ph.i.i.i.i.i132 ] %257 = icmp slt i64 %254, %231 br i1 %257, label %.lr.ph.i.i.i.i.i.i129, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 @@ -3682,7 +3682,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %exitcond.not.i.i.i.i.i.i131 = icmp eq i64 %261, %231 br i1 %exitcond.not.i.i.i.i.i.i131, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101, label %.lr.ph.i.i.i.i.i.i129, !llvm.loop !31 -262: ; preds = %.invoke264 +262: ; preds = %.invoke262 %263 = landingpad { ptr, i32 } cleanup br label %.body99 @@ -3692,16 +3692,16 @@ _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERK %264 = getelementptr inbounds nuw i8, ptr %22, i64 8 %265 = load i64, ptr %264, align 8 %266 = icmp sgt i64 %265, 3074457345618258602 - br i1 %266, label %.invoke266, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i + br i1 %266, label %.invoke264, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 %267 = mul nsw i64 %265, 3 %268 = getelementptr inbounds nuw i8, ptr %29, i64 8 %269 = getelementptr inbounds nuw i8, ptr %29, i64 16 %.not.i158 = icmp eq i64 %265, 0 - br i1 %.not.i158, label %.thread263, label %271 + br i1 %.not.i158, label %.thread261, label %271 -.thread263: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i +.thread261: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i store i64 %265, ptr %268, align 8 store i64 3, ptr %269, align 8 %270 = load ptr, ptr %22, align 8 @@ -3713,21 +3713,21 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi 273: ; preds = %271 %274 = icmp samesign ugt i64 %267, 4611686018427387903 - br i1 %274, label %.invoke266, label %275 + br i1 %274, label %.invoke264, label %275 275: ; preds = %273 %276 = mul i64 %265, 12 %277 = call noalias ptr @malloc(i64 noundef %276) #43 %278 = icmp eq ptr %277, null - br i1 %278, label %.invoke266, label %280 + br i1 %278, label %.invoke264, label %280 -.invoke266: ; preds = %275, %273, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 +.invoke264: ; preds = %275, %273, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 %279 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %279, align 8 invoke void @__cxa_throw(ptr nonnull %279, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont267 unwind label %298 + to label %.cont265 unwind label %298 -.cont267: ; preds = %.invoke266 +.cont265: ; preds = %.invoke264 unreachable 280: ; preds = %271, %275 @@ -3751,10 +3751,10 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %289 = icmp slt i64 %288, %283 br i1 %289, label %.lr.ph.i.i.i.i.i153, label %._crit_edge.i.i.i.i.i149, !llvm.loop !38 -._crit_edge.i.i.i.i.i149: ; preds = %.lr.ph.i.i.i.i.i153, %.thread263, %280 - %290 = phi i64 [ 0, %.thread263 ], [ %283, %280 ], [ %283, %.lr.ph.i.i.i.i.i153 ] - %291 = phi ptr [ %270, %.thread263 ], [ %281, %280 ], [ %281, %.lr.ph.i.i.i.i.i153 ] - %292 = phi ptr [ null, %.thread263 ], [ %.sink.i160, %280 ], [ %.sink.i160, %.lr.ph.i.i.i.i.i153 ] +._crit_edge.i.i.i.i.i149: ; preds = %.lr.ph.i.i.i.i.i153, %.thread261, %280 + %290 = phi i64 [ 0, %.thread261 ], [ %283, %280 ], [ %283, %.lr.ph.i.i.i.i.i153 ] + %291 = phi ptr [ %270, %.thread261 ], [ %281, %280 ], [ %281, %.lr.ph.i.i.i.i.i153 ] + %292 = phi ptr [ null, %.thread261 ], [ %.sink.i160, %280 ], [ %.sink.i160, %.lr.ph.i.i.i.i.i153 ] %293 = icmp slt i64 %290, %267 br i1 %293, label %.lr.ph.i.i.i.i.i.i150, label %_ZN5Eigen6MatrixIiLin1ELin1ELi0ELin1ELin1EEC2INS0_IiLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit @@ -3768,7 +3768,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %exitcond.not.i.i.i.i.i.i152 = icmp eq i64 %297, %267 br i1 %exitcond.not.i.i.i.i.i.i152, label %_ZN5Eigen6MatrixIiLin1ELin1ELi0ELin1ELin1EEC2INS0_IiLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit, label %.lr.ph.i.i.i.i.i.i150, !llvm.loop !39 -298: ; preds = %.invoke266 +298: ; preds = %.invoke264 %299 = landingpad { ptr, i32 } cleanup br label %.body103 @@ -56164,14 +56164,15 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS br i1 %or.cond, label %.loopexit28, label %.lr.ph33 .lr.ph33: ; preds = %5 - %16 = zext nneg i32 %14 to i64 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %narrow = add nuw i32 %14, 1 + %17 = zext i32 %narrow to i64 %.pre = load ptr, ptr %4, align 8 br label %19 .loopexit: ; preds = %35, %19 %18 = phi ptr [ %20, %19 ], [ %43, %35 ] - %exitcond.not = icmp eq i64 %.02732, %16 + %exitcond.not = icmp eq i64 %23, %17 br i1 %exitcond.not, label %.loopexit28, label %19, !llvm.loop !1128 19: ; preds = %.lr.ph33, %.loopexit @@ -56187,7 +56188,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS .lr.ph: ; preds = %19 %27 = sext i32 %22 to i64 - %28 = load ptr, ptr %17, align 8 + %28 = load ptr, ptr %16, align 8 %29 = getelementptr i32, ptr %28, i64 %27 %30 = getelementptr i8, ptr %29, i64 4 %31 = load i32, ptr %30, align 4 @@ -56230,15 +56231,16 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat br i1 %.not43, label %._crit_edge, label %.lr.ph46 .lr.ph46: ; preds = %4 - %9 = zext nneg i32 %8 to i64 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 80 - %11 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 80 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %narrow = add nuw i32 %8, 1 + %11 = zext i32 %narrow to i64 %.pre = load ptr, ptr %3, align 8 br label %13 .loopexit: ; preds = %.lr.ph41, %.preheader %12 = phi ptr [ %30, %.preheader ], [ %52, %.lr.ph41 ] - %exitcond.not = icmp eq i64 %.045, %9 + %exitcond.not = icmp eq i64 %29, %11 br i1 %exitcond.not, label %._crit_edge, label %13, !llvm.loop !1130 13: ; preds = %.lr.ph46, %.loopexit @@ -56248,12 +56250,12 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat %15 = getelementptr inbounds nuw i32, ptr %14, i64 %.045 %16 = load i32, ptr %15, align 4 %17 = sext i32 %16 to i64 - %18 = load ptr, ptr %10, align 8 + %18 = load ptr, ptr %9, align 8 %19 = getelementptr inbounds i32, ptr %18, i64 %17 %20 = load i32, ptr %19, align 4 store i32 %.03344, ptr %19, align 4 %21 = add nsw i64 %17, 1 - %22 = load ptr, ptr %10, align 8 + %22 = load ptr, ptr %9, align 8 %23 = getelementptr inbounds i32, ptr %22, i64 %21 %24 = load i32, ptr %23, align 4 %25 = icmp slt i32 %20, %24 @@ -56281,7 +56283,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %.03437 = phi i64 [ %26, %.lr.ph.preheader ], [ %43, %.lr.ph ] - %35 = load ptr, ptr %11, align 8 + %35 = load ptr, ptr %10, align 8 %36 = getelementptr inbounds i32, ptr %35, i64 %.03437 %37 = load i32, ptr %36, align 4 %38 = sext i32 %37 to i64 @@ -56292,7 +56294,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat store i32 %41, ptr %42, align 4 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %43 = add nsw i64 %.03437, 1 - %44 = load ptr, ptr %10, align 8 + %44 = load ptr, ptr %9, align 8 %45 = getelementptr inbounds i32, ptr %44, i64 %21 %46 = load i32, ptr %45, align 4 %47 = sext i32 %46 to i64 @@ -56301,7 +56303,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph41: ; preds = %.preheader, %.lr.ph41 %.03540 = phi i64 [ %51, %.lr.ph41 ], [ %21, %.preheader ] - %49 = load ptr, ptr %10, align 8 + %49 = load ptr, ptr %9, align 8 %50 = getelementptr inbounds i32, ptr %49, i64 %.03540 store i32 %.1.lcssa, ptr %50, align 4 %51 = add nsw i64 %.03540, 1 diff --git a/bench/oiio/optimized/exrinput_c.ll b/bench/oiio/optimized/exrinput_c.ll index de98adc77be..8fdf5613910 100644 --- a/bench/oiio/optimized/exrinput_c.ll +++ b/bench/oiio/optimized/exrinput_c.ll @@ -10056,7 +10056,7 @@ define hidden noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16rea 16: ; preds = %7 tail call void @_ZNK11OpenImageIO6v3_1_010ImageInput8errorfmtIJEEEvPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(184) %0, ptr noundef nonnull @.str.87) - br label %152 + br label %151 17: ; preds = %7 %18 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput9init_partEii(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %1, i32 noundef %2) @@ -10084,7 +10084,7 @@ define hidden noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16rea %35 = add nsw i32 %22, %4 %36 = load i32, ptr %23, align 4, !tbaa !303 %37 = call noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %34, i32 noundef %4, i32 noundef %35, i32 poison, i32 poison, i32 noundef 0, i32 noundef %36, ptr noundef %6, i64 noundef %25, i64 noundef %27) - br label %151 + br label %150 38: ; preds = %17 %39 = sub nsw i32 %4, %30 @@ -10134,7 +10134,7 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh 63: ; preds = %48, %38 %64 = landingpad { ptr, i32 } cleanup - br label %150 + br label %149 .critedge: ; preds = %46, %51 %65 = add nsw i32 %20, %3 @@ -10145,17 +10145,17 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh %.sroa.speculated129 = call i32 @llvm.smin.i32(i32 %67, i32 %68) %69 = load i32, ptr %23, align 4, !tbaa !303 %70 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated133, i32 noundef %4, i32 noundef %.sroa.speculated129, i32 poison, i32 poison, i32 noundef 0, i32 noundef %69, ptr noundef %6, i64 noundef %25, i64 noundef %27) - to label %145 unwind label %71 + to label %144 unwind label %71 71: ; preds = %.critedge %72 = landingpad { ptr, i32 } cleanup - br label %150 + br label %149 ._crit_edge: ; preds = %.loopexit, %.preheader %73 = load ptr, ptr %14, align 8, !tbaa !138 %74 = invoke i32 @exr_decoding_choose_default_routines(ptr noundef %73, i32 noundef %1, ptr noundef nonnull %11) - to label %128 unwind label %135 + to label %127 unwind label %134 _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph, %.loopexit %indvars.iv153 = phi i64 [ 0, %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph ], [ %indvars.iv.next154, %.loopexit ] @@ -10224,53 +10224,53 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread: ; preds = %_ZNK1 .lr.ph.split.us.preheader: ; preds = %.lr.ph.thread, %.lr.ph %110 = phi ptr [ %107, %.lr.ph.thread ], [ %108, %.lr.ph ] %.in = phi i16 [ %105, %.lr.ph.thread ], [ %103, %.lr.ph ] - %111 = zext nneg i16 %.in to i64 + %wide.trip.count151 = zext nneg i16 %.in to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %115 - %indvars.iv148 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next149, %115 ] - %112 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %110, i64 %indvars.iv148 - %113 = load ptr, ptr %112, align 8, !tbaa !344 - %.not.i.us = icmp eq ptr %113, null +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %114 + %indvars.iv148 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next149, %114 ] + %111 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %110, i64 %indvars.iv148 + %112 = load ptr, ptr %111, align 8, !tbaa !344 + %.not.i.us = icmp eq ptr %112, null br i1 %.not.i.us, label %.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us: ; preds = %.lr.ph.split.us - %char0 = load i8, ptr %113, align 1 - %114 = icmp eq i8 %char0, 0 - br i1 %114, label %.thread, label %115 + %char0 = load i8, ptr %112, align 1 + %113 = icmp eq i8 %char0, 0 + br i1 %113, label %.thread, label %114 -115: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us +114: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 - %exitcond152.not = icmp eq i64 %indvars.iv.next149, %111 + %exitcond152.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count151 br i1 %exitcond152.not, label %.loopexit, label %.lr.ph.split.us, !llvm.loop !346 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread %indvars.iv = phi i64 [ 0, %.lr.ph.split.preheader ], [ %indvars.iv.next, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] - %116 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %108, i64 %indvars.iv - %117 = load ptr, ptr %116, align 8, !tbaa !344 - %.not.i = icmp eq ptr %117, null + %115 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %108, i64 %indvars.iv + %116 = load ptr, ptr %115, align 8, !tbaa !344 + %.not.i = icmp eq ptr %116, null br i1 %.not.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit: ; preds = %.lr.ph.split - %118 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %117) #29 - %119 = icmp eq i64 %102, %118 - br i1 %119, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread + %117 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %116) #29 + %118 = icmp eq i64 %102, %117 + br i1 %118, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit - %bcmp.i = call i32 @bcmp(ptr %99, ptr nonnull %117, i64 %102) + %bcmp.i = call i32 @bcmp(ptr %99, ptr nonnull %116, i64 %102) %.not.i.i = icmp eq i32 %bcmp.i, 0 br i1 %.not.i.i, label %.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread .thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %.lr.ph.split.us, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us - %.us-phi = phi ptr [ %112, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us ], [ %112, %.lr.ph.split.us ], [ %116, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ] - %120 = getelementptr inbounds nuw i8, ptr %6, i64 %.098140 - %121 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - store ptr %120, ptr %121, align 8, !tbaa !67 - %122 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 - store i32 %61, ptr %122, align 8, !tbaa !347 - %123 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 36 - store i32 %62, ptr %123, align 4, !tbaa !348 - %124 = add i64 %90, %.098140 + %.us-phi = phi ptr [ %111, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us ], [ %111, %.lr.ph.split.us ], [ %115, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ] + %119 = getelementptr inbounds nuw i8, ptr %6, i64 %.098140 + %120 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + store ptr %119, ptr %120, align 8, !tbaa !67 + %121 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 + store i32 %61, ptr %121, align 8, !tbaa !347 + %122 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 36 + store i32 %62, ptr %122, align 4, !tbaa !348 + %123 = add i64 %90, %.098140 br label %.loopexit _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread: ; preds = %.lr.ph.split, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit @@ -10278,68 +10278,68 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !346 -.loopexit: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, %115, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit, %.thread - %.2100 = phi i64 [ %124, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %115 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] +.loopexit: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, %114, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit, %.thread + %.2100 = phi i64 [ %123, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %114 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1 - %125 = load i32, ptr %23, align 4, !tbaa !303 - %126 = sext i32 %125 to i64 - %127 = icmp slt i64 %indvars.iv.next154, %126 - br i1 %127, label %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit, label %._crit_edge, !llvm.loop !349 + %124 = load i32, ptr %23, align 4, !tbaa !303 + %125 = sext i32 %124 to i64 + %126 = icmp slt i64 %indvars.iv.next154, %125 + br i1 %126, label %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit, label %._crit_edge, !llvm.loop !349 -128: ; preds = %._crit_edge - %129 = icmp eq i32 %74, 0 - br i1 %129, label %130, label %.critedge116 +127: ; preds = %._crit_edge + %128 = icmp eq i32 %74, 0 + br i1 %128, label %129, label %.critedge116 -130: ; preds = %128 - %131 = load ptr, ptr %14, align 8, !tbaa !138 - %132 = invoke i32 @exr_decoding_run(ptr noundef %131, i32 noundef %1, ptr noundef nonnull %11) - to label %133 unwind label %135 +129: ; preds = %127 + %130 = load ptr, ptr %14, align 8, !tbaa !138 + %131 = invoke i32 @exr_decoding_run(ptr noundef %130, i32 noundef %1, ptr noundef nonnull %11) + to label %132 unwind label %134 -133: ; preds = %130 - %134 = icmp eq i32 %132, 0 - br i1 %134, label %145, label %.critedge116 +132: ; preds = %129 + %133 = icmp eq i32 %131, 0 + br i1 %133, label %144, label %.critedge116 -135: ; preds = %130, %._crit_edge - %136 = landingpad { ptr, i32 } +134: ; preds = %129, %._crit_edge + %135 = landingpad { ptr, i32 } cleanup - br label %150 + br label %149 -.critedge116: ; preds = %128, %133 - %137 = add nsw i32 %20, %3 - %138 = load i32, ptr %8, align 4, !tbaa !202 - %.sroa.speculated122 = call i32 @llvm.smin.i32(i32 %137, i32 %138) - %139 = add nsw i32 %22, %4 - %140 = load i32, ptr %9, align 4, !tbaa !202 - %.sroa.speculated = call i32 @llvm.smin.i32(i32 %139, i32 %140) - %141 = load i32, ptr %23, align 4, !tbaa !303 - %142 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated122, i32 noundef %4, i32 noundef %.sroa.speculated, i32 poison, i32 poison, i32 noundef 0, i32 noundef %141, ptr noundef %6, i64 noundef %25, i64 noundef %27) - to label %145 unwind label %143 - -143: ; preds = %.critedge116 - %144 = landingpad { ptr, i32 } +.critedge116: ; preds = %127, %132 + %136 = add nsw i32 %20, %3 + %137 = load i32, ptr %8, align 4, !tbaa !202 + %.sroa.speculated122 = call i32 @llvm.smin.i32(i32 %136, i32 %137) + %138 = add nsw i32 %22, %4 + %139 = load i32, ptr %9, align 4, !tbaa !202 + %.sroa.speculated = call i32 @llvm.smin.i32(i32 %138, i32 %139) + %140 = load i32, ptr %23, align 4, !tbaa !303 + %141 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated122, i32 noundef %4, i32 noundef %.sroa.speculated, i32 poison, i32 poison, i32 noundef 0, i32 noundef %140, ptr noundef %6, i64 noundef %25, i64 noundef %27) + to label %144 unwind label %142 + +142: ; preds = %.critedge116 + %143 = landingpad { ptr, i32 } cleanup - br label %150 + br label %149 -145: ; preds = %.critedge116, %.critedge, %133 - %.2 = phi i1 [ true, %133 ], [ %70, %.critedge ], [ %142, %.critedge116 ] - %146 = invoke i32 @exr_decoding_destroy(ptr noundef %43, ptr noundef nonnull %11) - to label %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit unwind label %147 +144: ; preds = %.critedge116, %.critedge, %132 + %.2 = phi i1 [ true, %132 ], [ %70, %.critedge ], [ %141, %.critedge116 ] + %145 = invoke i32 @exr_decoding_destroy(ptr noundef %43, ptr noundef nonnull %11) + to label %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit unwind label %146 -147: ; preds = %145 - %148 = landingpad { ptr, i32 } +146: ; preds = %144 + %147 = landingpad { ptr, i32 } catch ptr null - %149 = extractvalue { ptr, i32 } %148, 0 - call void @__clang_call_terminate(ptr %149) #31 + %148 = extractvalue { ptr, i32 } %147, 0 + call void @__clang_call_terminate(ptr %148) #31 unreachable -_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = %145 +_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = %144 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %151 + br label %150 -150: ; preds = %135, %143, %71, %63 - %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %144, %143 ], [ %136, %135 ] +149: ; preds = %134, %142, %71, %63 + %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %143, %142 ], [ %135, %134 ] call void @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #29 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) @@ -10348,14 +10348,14 @@ _ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = call void @llvm.lifetime.end.p0(ptr nonnull %8) resume { ptr, i32 } %.pn113 -151: ; preds = %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit, %33 +150: ; preds = %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit, %33 %.1 = phi i1 [ %37, %33 ], [ %.2, %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %152 + br label %151 -152: ; preds = %151, %16 - %.0 = phi i1 [ %.1, %151 ], [ false, %16 ] +151: ; preds = %150, %16 + %.0 = phi i1 [ %.1, %150 ], [ false, %16 ] ret i1 %.0 } @@ -43083,9 +43083,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i: ; preds = %128, % br i1 %136, label %.lr.ph.i.i.i, label %.loopexit.i.i.i .lr.ph.i.i.i: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i - %wide.trip.count111.i.i.i = zext nneg i16 %135 to i64 %137 = load ptr, ptr %5, align 8, !tbaa !343 %138 = icmp eq i64 %.sroa.5.0.i.i.i, 0 + %wide.trip.count111.i.i.i = zext nneg i16 %135 to i64 br i1 %138, label %.lr.ph.split.us.i.i.i, label %.lr.ph.split.i.i.i .lr.ph.split.us.i.i.i: ; preds = %.lr.ph.i.i.i, %142 @@ -43471,9 +43471,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i: ; preds = %116, % br i1 %124, label %.lr.ph.i.i.i, label %.loopexit.i.i.i .lr.ph.i.i.i: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i - %wide.trip.count66.i.i.i = zext nneg i16 %123 to i64 %125 = load ptr, ptr %5, align 8, !tbaa !343 %126 = icmp eq i64 %.sroa.5.0.i.i.i, 0 + %wide.trip.count66.i.i.i = zext nneg i16 %123 to i64 br i1 %126, label %.lr.ph.split.us.i.i.i, label %.lr.ph.split.i.i.i .lr.ph.split.us.i.i.i: ; preds = %.lr.ph.i.i.i, %130 @@ -44535,9 +44535,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit: ; preds = %102, %105, % br i1 %122, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit - %wide.trip.count161 = zext nneg i16 %121 to i64 %123 = load ptr, ptr %0, align 8, !tbaa !343 %124 = icmp eq i64 %.sroa.5.0, 0 + %wide.trip.count161 = zext nneg i16 %121 to i64 br i1 %124, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %128 diff --git a/bench/openjdk/optimized/check_classname.ll b/bench/openjdk/optimized/check_classname.ll index d8a9114dc8f..d594ddca90a 100644 --- a/bench/openjdk/optimized/check_classname.ll +++ b/bench/openjdk/optimized/check_classname.ll @@ -5,91 +5,94 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nofree norecurse nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define hidden zeroext range(i8 0, 2) i8 @verifyClassname(ptr noundef %0, i8 noundef zeroext %1) local_unnamed_addr #0 { - %3 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #5 + %3 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #4 %4 = trunc i64 %3 to i32 %.not = icmp eq i32 %4, 0 - br i1 %.not, label %31, label %5 + br i1 %.not, label %29, label %5 5: ; preds = %2 %6 = load i8, ptr %0, align 1 %7 = icmp eq i8 %6, 91 - br i1 %7, label %8, label %31 + br i1 %7, label %8, label %29 8: ; preds = %5 %.not15 = icmp eq i8 %1, 0 - br i1 %.not15, label %39, label %9 - -9: ; preds = %8 - %10 = add i32 %4, -1 - %umin.i = tail call i32 @llvm.umin.i32(i32 %10, i32 255) - br label %11 - -11: ; preds = %27, %9 - %.01531.i = phi i32 [ 0, %9 ], [ %28, %27 ] - %.01630.i = phi i32 [ %4, %9 ], [ %30, %27 ] - %.01829.i = phi ptr [ %0, %9 ], [ %29, %27 ] - %12 = load i8, ptr %.01829.i, align 1 - switch i8 %12, label %skip_over_field_signature.exit [ - i8 91, label %27 - i8 90, label %13 - i8 66, label %13 - i8 67, label %13 - i8 83, label %13 - i8 73, label %13 - i8 70, label %13 - i8 74, label %13 - i8 68, label %13 - i8 76, label %15 + br i1 %.not15, label %37, label %.preheader + +thread-pre-split: ; preds = %27 + %9 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 + %10 = add nuw nsw i32 %.01531.i, 1 + %.pr = load i8, ptr %9, align 1 + br label %.preheader + +.preheader: ; preds = %8, %thread-pre-split + %11 = phi i8 [ %.pr, %thread-pre-split ], [ 91, %8 ] + %.01531.i = phi i32 [ %10, %thread-pre-split ], [ 0, %8 ] + %.01630.i = phi i32 [ %28, %thread-pre-split ], [ %4, %8 ] + %.01829.i = phi ptr [ %9, %thread-pre-split ], [ %0, %8 ] + switch i8 %11, label %skip_over_field_signature.exit [ + i8 91, label %26 + i8 90, label %12 + i8 66, label %12 + i8 67, label %12 + i8 83, label %12 + i8 73, label %12 + i8 70, label %12 + i8 74, label %12 + i8 68, label %12 + i8 76, label %14 ] -13: ; preds = %11, %11, %11, %11, %11, %11, %11, %11 - %14 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 +12: ; preds = %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader + %13 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 br label %skip_over_field_signature.exit -15: ; preds = %11 - %16 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 - %17 = add i32 %.01630.i, -1 - %18 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %16, i32 noundef %17) - %.not21.i = icmp ne ptr %18, null - %19 = ptrtoint ptr %18 to i64 - %20 = ptrtoint ptr %.01829.i to i64 - %21 = sub i64 %20, %19 - %22 = icmp slt i64 %21, -1 - %or.cond.i = and i1 %.not21.i, %22 - br i1 %or.cond.i, label %23, label %skip_over_field_signature.exit - -23: ; preds = %15 - %24 = load i8, ptr %18, align 1 - %25 = icmp eq i8 %24, 59 - %26 = getelementptr inbounds nuw i8, ptr %18, i64 1 - %spec.select.i = select i1 %25, ptr %26, ptr null +14: ; preds = %.preheader + %15 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 + %16 = add i32 %.01630.i, -1 + %17 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %15, i32 noundef %16) + %.not21.i = icmp ne ptr %17, null + %18 = ptrtoint ptr %17 to i64 + %19 = ptrtoint ptr %.01829.i to i64 + %20 = sub i64 %19, %18 + %21 = icmp slt i64 %20, -1 + %or.cond.i = and i1 %.not21.i, %21 + br i1 %or.cond.i, label %22, label %skip_over_field_signature.exit + +22: ; preds = %14 + %23 = load i8, ptr %17, align 1 + %24 = icmp eq i8 %23, 59 + %25 = getelementptr inbounds nuw i8, ptr %17, i64 1 + %spec.select.i = select i1 %24, ptr %25, ptr null br label %skip_over_field_signature.exit -27: ; preds = %11 - %28 = add nuw nsw i32 %.01531.i, 1 - %29 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 - %30 = add i32 %.01630.i, -1 - %exitcond.i = icmp eq i32 %.01531.i, %umin.i - br i1 %exitcond.i, label %skip_over_field_signature.exit, label %11, !llvm.loop !6 +26: ; preds = %.preheader + %exitcond.i = icmp eq i32 %.01531.i, 255 + br i1 %exitcond.i, label %skip_over_field_signature.exit, label %27 + +27: ; preds = %26 + %28 = add i32 %.01630.i, -1 + %.not.i = icmp eq i32 %28, 0 + br i1 %.not.i, label %skip_over_field_signature.exit, label %thread-pre-split, !llvm.loop !6 -31: ; preds = %5, %2 - %32 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %0, i32 noundef %4) +29: ; preds = %5, %2 + %30 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %0, i32 noundef %4) br label %skip_over_field_signature.exit -skip_over_field_signature.exit: ; preds = %27, %11, %23, %15, %13, %31 - %.0 = phi ptr [ %32, %31 ], [ %14, %13 ], [ null, %15 ], [ %spec.select.i, %23 ], [ null, %11 ], [ null, %27 ] +skip_over_field_signature.exit: ; preds = %27, %26, %.preheader, %22, %14, %12, %29 + %.0 = phi ptr [ %30, %29 ], [ %13, %12 ], [ null, %14 ], [ %spec.select.i, %22 ], [ null, %.preheader ], [ null, %26 ], [ null, %27 ] %.not16 = icmp ne ptr %.0, null - %33 = ptrtoint ptr %.0 to i64 - %34 = ptrtoint ptr %0 to i64 - %35 = sub i64 %33, %34 - %36 = and i64 %3, 4294967295 - %37 = icmp eq i64 %35, %36 - %narrow = select i1 %.not16, i1 %37, i1 false - %38 = zext i1 %narrow to i8 - br label %39 - -39: ; preds = %8, %skip_over_field_signature.exit - %.013 = phi i8 [ %38, %skip_over_field_signature.exit ], [ 0, %8 ] + %31 = ptrtoint ptr %.0 to i64 + %32 = ptrtoint ptr %0 to i64 + %33 = sub i64 %31, %32 + %34 = and i64 %3, 4294967295 + %35 = icmp eq i64 %33, %34 + %narrow = select i1 %.not16, i1 %35, i1 false + %36 = zext i1 %narrow to i8 + br label %37 + +37: ; preds = %8, %skip_over_field_signature.exit + %.013 = phi i8 [ %36, %skip_over_field_signature.exit ], [ 0, %8 ] ret i8 %.013 } @@ -382,15 +385,11 @@ next_utf2unicode.exit: ; preds = %3, %13, %5, %9 ret void } -; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #4 - attributes #0 = { nofree norecurse nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { nounwind willreturn memory(read) } +attributes #4 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/openjdk/optimized/hb-blob.ll b/bench/openjdk/optimized/hb-blob.ll index 52acf62845c..54852b58b43 100644 --- a/bench/openjdk/optimized/hb-blob.ll +++ b/bench/openjdk/optimized/hb-blob.ll @@ -807,23 +807,23 @@ define hidden noalias noundef ptr @hb_blob_create_from_file_or_fail(ptr noundef br i1 %9, label %10, label %15 10: ; preds = %7 - %11 = shl i64 %.030, 1 - %12 = icmp ugt i64 %11, 536870912 - br i1 %12, label %36, label %13 + %11 = icmp samesign ugt i64 %.030, 268435456 + br i1 %11, label %36, label %12 -13: ; preds = %10 - %14 = tail call ptr @realloc(ptr noundef %.132, i64 noundef %11) #24 +12: ; preds = %10 + %13 = shl nuw nsw i64 %.030, 1 + %14 = tail call ptr @realloc(ptr noundef %.132, i64 noundef %13) #24 %.not39 = icmp eq ptr %14, null br i1 %.not39, label %36, label %._crit_edge -._crit_edge: ; preds = %13 - %.pre = sub i64 %11, %.029.ph +._crit_edge: ; preds = %12 + %.pre = sub i64 %13, %.029.ph br label %15 15: ; preds = %._crit_edge, %7 %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %8, %7 ] %.2 = phi ptr [ %14, %._crit_edge ], [ %.132, %7 ] - %.1 = phi i64 [ %11, %._crit_edge ], [ %.030, %7 ] + %.1 = phi i64 [ %13, %._crit_edge ], [ %.030, %7 ] %16 = getelementptr inbounds i8, ptr %.2, i64 %.029.ph %17 = tail call i64 @fread(ptr noundef %16, i64 noundef 1, i64 noundef %.pre-phi, ptr noundef nonnull %4) %18 = tail call i32 @ferror(ptr noundef nonnull %4) #21 @@ -870,8 +870,8 @@ _ZL16hb_object_createI9hb_blob_tJEEPT_DpT0_.exit.thread.i: ; preds = %25, %21 store ptr @free, ptr %35, align 8 br label %hb_blob_create_or_fail.exit -36: ; preds = %15, %13, %10 - %.3 = phi ptr [ %.132, %10 ], [ %.132, %13 ], [ %.2, %15 ] +36: ; preds = %15, %12, %10 + %.3 = phi ptr [ %.132, %10 ], [ %.132, %12 ], [ %.2, %15 ] %37 = tail call i32 @fclose(ptr noundef nonnull %4) br label %38 diff --git a/bench/openjdk/optimized/hb-ot-layout.ll b/bench/openjdk/optimized/hb-ot-layout.ll index 3796a435bd8..cf5791442f4 100644 --- a/bench/openjdk/optimized/hb-ot-layout.ll +++ b/bench/openjdk/optimized/hb-ot-layout.ll @@ -40261,8 +40261,8 @@ _ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i: ; preds = %17, %.lr.ph.i.i.i.i 28: ; preds = %29, %_ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %29 ], [ 8, %_ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i ] - %.not10.i.i = icmp eq i64 %indvars.iv.i.i, 0 - br i1 %.not10.i.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.i, label %29 + %.not9.i.i = icmp eq i64 %indvars.iv.i.i, 0 + br i1 %.not9.i.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.i, label %29 29: ; preds = %28 %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 @@ -40356,7 +40356,7 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable %73 = load ptr, ptr %72, align 8 %74 = zext i32 %69 to i64 %75 = getelementptr inbounds nuw %struct.hb_bit_page_t, ptr %73, i64 %74 - %.0.i18 = select i1 %.not.i, ptr %75, ptr @_hb_NullPool + %.0.i17 = select i1 %.not.i, ptr %75, ptr @_hb_NullPool %76 = and i32 %3, 511 %77 = icmp eq i32 %76, 0 br i1 %77, label %_ZNK13hb_bit_page_t8previousEPj.exit.thread, label %78 @@ -40366,37 +40366,37 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable %80 = lshr i32 %79, 6 %81 = and i32 %80, 7 %82 = and i32 %79, 63 - %.not.i19 = icmp eq i32 %82, 63 + %.not.i18 = icmp eq i32 %82, 63 %83 = add nuw nsw i32 %82, 1 %84 = zext nneg i32 %83 to i64 %notmask.i = shl nsw i64 -1, %84 %85 = xor i64 %notmask.i, -1 - %86 = select i1 %.not.i19, i64 -1, i64 %85 - %87 = getelementptr inbounds nuw i8, ptr %.0.i18, i64 8 + %86 = select i1 %.not.i18, i64 -1, i64 %85 + %87 = getelementptr inbounds nuw i8, ptr %.0.i17, i64 8 %88 = zext nneg i32 %81 to i64 %89 = getelementptr inbounds nuw i64, ptr %87, i64 %88 %90 = load i64, ptr %89, align 8 %91 = and i64 %90, %86 %.not2023.i = icmp eq i64 %91, 0 - br i1 %.not2023.i, label %.lr.ph.i20, label %96 + br i1 %.not2023.i, label %.lr.ph.i19, label %96 ._crit_edge.loopexit.i: ; preds = %94 - %92 = trunc nuw nsw i64 %indvars.iv.next.i22 to i32 + %92 = trunc nuw nsw i64 %indvars.iv.next.i21 to i32 br label %96 -.lr.ph.i20: ; preds = %78, %94 - %indvars.iv.i21 = phi i64 [ %indvars.iv.next.i22, %94 ], [ %88, %78 ] - %93 = icmp slt i64 %indvars.iv.i21, 1 +.lr.ph.i19: ; preds = %78, %94 + %indvars.iv.i20 = phi i64 [ %indvars.iv.next.i21, %94 ], [ %88, %78 ] + %93 = icmp slt i64 %indvars.iv.i20, 1 br i1 %93, label %_ZNK13hb_bit_page_t8previousEPj.exit.thread, label %94 -94: ; preds = %.lr.ph.i20 - %indvars.iv.next.i22 = add nsw i64 %indvars.iv.i21, -1 - %95 = getelementptr i64, ptr %.0.i18, i64 %indvars.iv.i21 +94: ; preds = %.lr.ph.i19 + %indvars.iv.next.i21 = add nsw i64 %indvars.iv.i20, -1 + %95 = getelementptr i64, ptr %.0.i17, i64 %indvars.iv.i20 %.pr.i = load i64, ptr %95, align 8 %.not20.i = icmp eq i64 %.pr.i, 0 - br i1 %.not20.i, label %.lr.ph.i20, label %._crit_edge.loopexit.i, !llvm.loop !266 + br i1 %.not20.i, label %.lr.ph.i19, label %._crit_edge.loopexit.i, !llvm.loop !266 -_ZNK13hb_bit_page_t8previousEPj.exit.thread: ; preds = %.lr.ph.i20, %67 +_ZNK13hb_bit_page_t8previousEPj.exit.thread: ; preds = %.lr.ph.i19, %67 store i32 -1, ptr %1, align 4 %.pre = load ptr, ptr %43, align 8 br label %_ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable_ifIXT0_EvE4typeELPv0EEEbRKT_Pj14hb_not_found_tj.exit._crit_edge @@ -40441,35 +40441,35 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable br label %120 120: ; preds = %121, %113 - %indvars.iv.i23 = phi i64 [ %indvars.iv.next.i24, %121 ], [ 8, %113 ] - %.not10.i = icmp eq i64 %indvars.iv.i23, 0 - br i1 %.not10.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread, label %121 + %indvars.iv.i22 = phi i64 [ %indvars.iv.next.i23, %121 ], [ 8, %113 ] + %.not9.i = icmp eq i64 %indvars.iv.i22, 0 + br i1 %.not9.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread, label %121 121: ; preds = %120 - %indvars.iv.next.i24 = add nsw i64 %indvars.iv.i23, -1 - %122 = getelementptr i64, ptr %119, i64 %indvars.iv.i23 + %indvars.iv.next.i23 = add nsw i64 %indvars.iv.i22, -1 + %122 = getelementptr i64, ptr %119, i64 %indvars.iv.i22 %123 = load i64, ptr %122, align 8 - %.not.i25 = icmp eq i64 %123, 0 - br i1 %.not.i25, label %120, label %_ZNK13hb_bit_page_t7get_maxEv.exit, !llvm.loop !265 + %.not.i24 = icmp eq i64 %123, 0 + br i1 %.not.i24, label %120, label %_ZNK13hb_bit_page_t7get_maxEv.exit, !llvm.loop !265 _ZNK13hb_bit_page_t7get_maxEv.exit: ; preds = %121 - %124 = trunc nsw i64 %indvars.iv.next.i24 to i32 + %124 = trunc nsw i64 %indvars.iv.next.i23 to i32 %125 = shl i32 %124, 6 %126 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %123, i1 true) %127 = trunc nuw nsw i64 %126 to i32 %128 = or disjoint i32 %125, %127 %.not = icmp eq i32 %128, -64 - br i1 %.not, label %110, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37, !llvm.loop !267 + br i1 %.not, label %110, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36, !llvm.loop !267 -_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37: ; preds = %_ZNK13hb_bit_page_t7get_maxEv.exit +_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36: ; preds = %_ZNK13hb_bit_page_t7get_maxEv.exit %129 = xor i32 %128, 63 br label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread -_ZNK13hb_bit_page_t7get_maxEv.exit.thread: ; preds = %120, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37 - %.06.i35 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37 ], [ 0, %120 ] +_ZNK13hb_bit_page_t7get_maxEv.exit.thread: ; preds = %120, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 + %.06.i34 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 ], [ 0, %120 ] %130 = load i32, ptr %115, align 4 %131 = shl i32 %130, 9 - %132 = add i32 %131, %.06.i35 + %132 = add i32 %131, %.06.i34 store i32 %132, ptr %1, align 4 br label %134 diff --git a/bench/openssl/optimized/tls13encryptiontest.ll b/bench/openssl/optimized/tls13encryptiontest.ll index 3dc0fb65196..f0d6d475443 100644 --- a/bench/openssl/optimized/tls13encryptiontest.ll +++ b/bench/openssl/optimized/tls13encryptiontest.ll @@ -323,25 +323,25 @@ declare ptr @OPENSSL_hexstr2buf(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %0, ptr noundef nonnull writeonly captures(none) %1) unnamed_addr #0 { - br label %5 - -3: ; preds = %5 - %4 = add nuw nsw i64 %.03353, 1 - %exitcond.not = icmp eq i64 %4, 3 - br i1 %exitcond.not, label %11, label %5, !llvm.loop !41 - -5: ; preds = %2, %3 - %.03353 = phi i64 [ 0, %2 ], [ %4, %3 ] - %.03652 = phi i64 [ 0, %2 ], [ %9, %3 ] - %6 = getelementptr inbounds nuw ptr, ptr %0, i64 %.03353 - %7 = load ptr, ptr %6, align 8, !tbaa !42 - %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #6 - %9 = add i64 %8, %.03652 - %10 = and i64 %9, 1 - %.not46 = icmp eq i64 %10, 0 - br i1 %.not46, label %3, label %.loopexit - -11: ; preds = %3 + br label %3 + +3: ; preds = %2, %8 + %.03353 = phi i64 [ 0, %2 ], [ %10, %8 ] + %.03652 = phi i64 [ 0, %2 ], [ %9, %8 ] + %4 = getelementptr inbounds nuw ptr, ptr %0, i64 %.03353 + %5 = load ptr, ptr %4, align 8, !tbaa !41 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #6 + %7 = and i64 %6, 1 + %.not46 = icmp eq i64 %7, 0 + br i1 %.not46, label %8, label %.loopexit + +8: ; preds = %3 + %9 = add i64 %6, %.03652 + %10 = add nuw nsw i64 %.03353, 1 + %exitcond.not = icmp eq i64 %10, 3 + br i1 %exitcond.not, label %11, label %3, !llvm.loop !42 + +11: ; preds = %8 %12 = lshr exact i64 %9, 1 %13 = tail call noalias ptr @CRYPTO_malloc(i64 noundef %12, ptr noundef nonnull @.str.1, i32 noundef 218) #5 %14 = icmp eq ptr %13, null @@ -351,7 +351,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %.13458 = phi i64 [ %38, %._crit_edge ], [ 0, %11 ] %.03857 = phi i64 [ %.139.lcssa, %._crit_edge ], [ 0, %11 ] %15 = getelementptr inbounds nuw ptr, ptr %0, i64 %.13458 - %16 = load ptr, ptr %15, align 8, !tbaa !42 + %16 = load ptr, ptr %15, align 8, !tbaa !41 %17 = load i8, ptr %16, align 1, !tbaa !43 %.not54 = icmp eq i8 %17, 0 br i1 %.not54, label %._crit_edge, label %.lr.ph @@ -361,7 +361,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %.03756 = phi i64 [ %34, %28 ], [ 0, %.preheader ] %.13955 = phi i64 [ %32, %28 ], [ %.03857, %.preheader ] %19 = tail call i32 @OPENSSL_hexchar2int(i8 noundef zeroext %18) #5 - %20 = load ptr, ptr %15, align 8, !tbaa !42 + %20 = load ptr, ptr %15, align 8, !tbaa !41 %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.03756 %22 = getelementptr inbounds nuw i8, ptr %21, i64 1 %23 = load i8, ptr %22, align 1, !tbaa !43 @@ -383,7 +383,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %33 = getelementptr inbounds nuw i8, ptr %13, i64 %.13955 store i8 %31, ptr %33, align 1, !tbaa !43 %34 = add i64 %.03756, 2 - %35 = load ptr, ptr %15, align 8, !tbaa !42 + %35 = load ptr, ptr %15, align 8, !tbaa !41 %36 = getelementptr inbounds nuw i8, ptr %35, i64 %34 %37 = load i8, ptr %36, align 1, !tbaa !43 %.not = icmp eq i8 %37, 0 @@ -392,15 +392,15 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) ._crit_edge: ; preds = %28, %.preheader %.139.lcssa = phi i64 [ %.03857, %.preheader ], [ %32, %28 ] %38 = add nuw nsw i64 %.13458, 1 - %exitcond61.not = icmp eq i64 %38, 3 - br i1 %exitcond61.not, label %39, label %.preheader, !llvm.loop !45 + %exitcond60.not = icmp eq i64 %38, 3 + br i1 %exitcond60.not, label %39, label %.preheader, !llvm.loop !45 39: ; preds = %._crit_edge store i64 %12, ptr %1, align 8, !tbaa !21 br label %.loopexit -.loopexit: ; preds = %5, %27, %11, %39 - %.0 = phi ptr [ null, %27 ], [ %13, %39 ], [ null, %11 ], [ null, %5 ] +.loopexit: ; preds = %3, %27, %11, %39 + %.0 = phi ptr [ null, %27 ], [ %13, %39 ], [ null, %11 ], [ null, %3 ] ret ptr %.0 } @@ -472,8 +472,8 @@ attributes #6 = { nounwind willreturn memory(read) } !38 = !{!"record_functions_st", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136} !39 = distinct !{!39, !40} !40 = !{!"llvm.loop.mustprogress"} -!41 = distinct !{!41, !40} -!42 = !{!13, !13, i64 0} +!41 = !{!13, !13, i64 0} +!42 = distinct !{!42, !40} !43 = !{!7, !7, i64 0} !44 = distinct !{!44, !40} !45 = distinct !{!45, !40} diff --git a/bench/openusd/optimized/faceVertex.ll b/bench/openusd/optimized/faceVertex.ll index 7d2e39d52a6..28d706018e4 100644 --- a/bench/openusd/optimized/faceVertex.ll +++ b/bench/openusd/optimized/faceVertex.ll @@ -1535,8 +1535,8 @@ _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread: ; br i1 %69, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader, label %.loopexit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread - %wide.trip.count = zext nneg i16 %68 to i64 %70 = sext i16 %50 to i64 + %wide.trip.count = zext nneg i16 %68 to i64 br label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit @@ -2274,10 +2274,10 @@ define noundef i32 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20createUnOrderedEdge .lr.ph65: ; preds = %22 %29 = shl nuw i16 %13, 1 - %wide.trip.count71 = zext i16 %29 to i64 %30 = getelementptr inbounds nuw i8, ptr %0, i64 96 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 %32 = load float, ptr @_ZN10OpenSubdiv6v3_6_03Sdc6Crease18SHARPNESS_INFINITEE, align 4 + %wide.trip.count71 = zext i16 %29 to i64 br label %33 33: ; preds = %.lr.ph65, %_ZN10OpenSubdiv6v3_6_03Bfr10FaceVertex4Edge7AddFaceEib.exit @@ -2750,8 +2750,8 @@ define void @_ZN10OpenSubdiv6v3_6_03Bfr10FaceVertex28assignUnOrderedFaceNeighbor .lr.ph: ; preds = %3 %7 = shl nuw i16 %5, 1 - %wide.trip.count = zext i16 %7 to i64 %8 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %wide.trip.count = zext i16 %7 to i64 br label %9 9: ; preds = %.lr.ph, %20 diff --git a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll index 7ea242da814..2883f34dd5f 100644 --- a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll +++ b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll @@ -4722,7 +4722,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -4764,7 +4764,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split121.us: ; preds = %63 @@ -5148,7 +5148,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h9456782672c51bbb %.sroa.019.3 = phi i64 [ %.sroa.015.0, %250 ], [ %.sroa.019.0.ph164, %242 ], [ %.sroa.019.0.ph164, %234 ], [ %.sroa.019.0.ph164, %231 ] %.sroa.06.5 = phi i1 [ true, %250 ], [ %.sroa.06.0.ph165, %242 ], [ %.sroa.06.0.ph165, %234 ], [ %.sroa.06.0.ph165, %231 ] %238 = icmp ult i64 %48, %34 - %239 = add nuw i64 %48, 1 + %239 = add nuw nsw i64 %48, 1 br i1 %238, label %.lr.ph, label %.outer._crit_edge 240: ; preds = %234 @@ -5176,7 +5176,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h9456782672c51bbb 251: ; preds = %216, %209 %252 = icmp ult i64 %70, %34 - %253 = add nuw i64 %70, 1 + %253 = add nuw nsw i64 %70, 1 br i1 %252, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -5245,7 +5245,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 43: ; preds = %.lr.ph.split.us %44 = icmp ult i64 %41, %33 - %45 = add nuw i64 %41, 1 + %45 = add nuw nsw i64 %41, 1 br i1 %44, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -5287,7 +5287,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 66: ; preds = %62, %56, %49 %67 = icmp ult i64 %47, %33 - %68 = add nuw i64 %47, 1 + %68 = add nuw nsw i64 %47, 1 br i1 %67, label %.lr.ph.split.split.us, label %.outer._crit_edge .split129.us: ; preds = %62 @@ -5707,7 +5707,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hf23f2f33b224d140 %.sroa.019.3 = phi i64 [ %.sroa.015.0, %267 ], [ %.sroa.019.0.ph172, %259 ], [ %.sroa.019.0.ph172, %251 ], [ %.sroa.019.0.ph172, %248 ] %.sroa.06.5 = phi i1 [ true, %267 ], [ %.sroa.06.0.ph173, %259 ], [ %.sroa.06.0.ph173, %251 ], [ %.sroa.06.0.ph173, %248 ] %255 = icmp ult i64 %47, %33 - %256 = add nuw i64 %47, 1 + %256 = add nuw nsw i64 %47, 1 br i1 %255, label %.lr.ph, label %.outer._crit_edge 257: ; preds = %251 @@ -5735,7 +5735,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hf23f2f33b224d140 268: ; preds = %233, %226 %269 = icmp ult i64 %69, %33 - %270 = add nuw i64 %69, 1 + %270 = add nuw nsw i64 %69, 1 br i1 %269, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -5805,7 +5805,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -5847,7 +5847,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split129.us: ; preds = %63 @@ -6283,7 +6283,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h3d68b55b5fabe7ec %.sroa.019.3 = phi i64 [ %.sroa.015.0, %276 ], [ %.sroa.019.0.ph172, %268 ], [ %.sroa.019.0.ph172, %260 ], [ %.sroa.019.0.ph172, %257 ] %.sroa.06.5 = phi i1 [ true, %276 ], [ %.sroa.06.0.ph173, %268 ], [ %.sroa.06.0.ph173, %260 ], [ %.sroa.06.0.ph173, %257 ] %264 = icmp ult i64 %48, %34 - %265 = add nuw i64 %48, 1 + %265 = add nuw nsw i64 %48, 1 br i1 %264, label %.lr.ph, label %.outer._crit_edge 266: ; preds = %260 @@ -6311,7 +6311,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h3d68b55b5fabe7ec 277: ; preds = %242, %235 %278 = icmp ult i64 %70, %34 - %279 = add nuw i64 %70, 1 + %279 = add nuw nsw i64 %70, 1 br i1 %278, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -6381,7 +6381,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -6423,7 +6423,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split121.us: ; preds = %63 @@ -6807,7 +6807,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hc6004f41a3b2239b %.sroa.019.3 = phi i64 [ %.sroa.015.0, %250 ], [ %.sroa.019.0.ph164, %242 ], [ %.sroa.019.0.ph164, %234 ], [ %.sroa.019.0.ph164, %231 ] %.sroa.06.5 = phi i1 [ true, %250 ], [ %.sroa.06.0.ph165, %242 ], [ %.sroa.06.0.ph165, %234 ], [ %.sroa.06.0.ph165, %231 ] %238 = icmp ult i64 %48, %34 - %239 = add nuw i64 %48, 1 + %239 = add nuw nsw i64 %48, 1 br i1 %238, label %.lr.ph, label %.outer._crit_edge 240: ; preds = %234 @@ -6835,7 +6835,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hc6004f41a3b2239b 251: ; preds = %216, %209 %252 = icmp ult i64 %70, %34 - %253 = add nuw i64 %70, 1 + %253 = add nuw nsw i64 %70, 1 br i1 %252, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -21690,7 +21690,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h5627fedb8b598f9bE.exit2 store i32 1, ptr %708, align 4, !noalias !1167 %709 = icmp samesign ult i64 %.sroa.0128.1769.i.i, %.sroa.0.0.sroa.speculated.i361.i.i %710 = zext i1 %709 to i64 - %.sroa.0128.1.i.i = add nuw i64 %.sroa.0128.1769.i.i, %710 + %.sroa.0128.1.i.i = add nuw nsw i64 %.sroa.0128.1769.i.i, %710 br i1 %709, label %.lr.ph770.i.i, label %._crit_edge771.i.i .lr.ph.i112.i: ; preds = %719, %.lr.ph.preheader.i.i @@ -24246,7 +24246,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17hce70b9dbdc8b1214E.exit2 store i32 1, ptr %1608, align 4, !noalias !1355 %1609 = icmp samesign ult i64 %.sroa.0128.1769.i.i317, %.sroa.0.0.sroa.speculated.i361.i.i315 %1610 = zext i1 %1609 to i64 - %.sroa.0128.1.i.i333 = add nuw i64 %.sroa.0128.1769.i.i317, %1610 + %.sroa.0128.1.i.i333 = add nuw nsw i64 %.sroa.0128.1769.i.i317, %1610 br i1 %1609, label %.lr.ph770.i.i316, label %._crit_edge771.i.i334 .lr.ph.i112.i322: ; preds = %1619, %.lr.ph.preheader.i.i321 @@ -26798,7 +26798,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17he69cc7e364323581E.exit2 store i32 1, ptr %2506, align 4, !noalias !1543 %2507 = icmp samesign ult i64 %.sroa.0128.1769.i.i821, %.sroa.0.0.sroa.speculated.i361.i.i819 %2508 = zext i1 %2507 to i64 - %.sroa.0128.1.i.i843 = add nuw i64 %.sroa.0128.1769.i.i821, %2508 + %.sroa.0128.1.i.i843 = add nuw nsw i64 %.sroa.0128.1769.i.i821, %2508 br i1 %2507, label %.lr.ph770.i.i820, label %._crit_edge771.i.i844 .lr.ph.i112.i828: ; preds = %2517, %.lr.ph.preheader.i.i827 @@ -28525,7 +28525,7 @@ default.unreachable: ; preds = %.thread288 br i1 %.not256, label %335, label %332 332: ; preds = %329 - %333 = add i64 %.sroa.0.0.sroa.speculated.i265, %.sroa.0162.0 + %333 = add nuw nsw i64 %.sroa.0.0.sroa.speculated.i265, %.sroa.0162.0 %334 = icmp ult i64 %333, 1048577 br i1 %334, label %337, label %335 diff --git a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll index 03bede9a30a..8e6f179ed14 100644 --- a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll +++ b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll @@ -324948,8 +324948,8 @@ define hidden void @_ZN10polars_ops5frame4join12merge_sorted19get_merge_indicato cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke147, %140, %124, %189, %151, %144, %94 - %.sroa.01.1.ph.ph = phi i1 [ true, %189 ], [ false, %151 ], [ false, %144 ], [ true, %94 ], [ true, %124 ], [ true, %140 ], [ true, %.invoke147 ] +.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke146, %140, %124, %189, %151, %144, %94 + %.sroa.01.1.ph.ph = phi i1 [ true, %189 ], [ false, %151 ], [ false, %144 ], [ true, %94 ], [ true, %124 ], [ true, %140 ], [ true, %.invoke146 ] %lpad.loopexit.split-lp85 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -324963,7 +324963,7 @@ define hidden void @_ZN10polars_ops5frame4join12merge_sorted19get_merge_indicato 99: ; preds = %94 %100 = load i128, ptr %15, align 16, !range !31843, !noundef !3 %.not = icmp eq i128 %100, 2 - br i1 %.not, label %.invoke147, label %101, !prof !331 + br i1 %.not, label %.invoke146, label %101, !prof !331 101: ; preds = %99 %102 = getelementptr inbounds nuw i8, ptr %15, i64 16 @@ -325045,14 +325045,14 @@ thread-pre-split: ; preds = %_ZN4core3cmp10Parti 128: ; preds = %thread-pre-split, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h52361581e7d50d83E.exit" %129 = phi i64 [ %.pr, %thread-pre-split ], [ %127, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h52361581e7d50d83E.exit" ] %.not9 = icmp eq i64 %129, 0 - br i1 %.not9, label %.invoke147, label %131, !prof !331 + br i1 %.not9, label %.invoke146, label %131, !prof !331 -.invoke147: ; preds = %128, %99 +.invoke146: ; preds = %128, %99 %130 = phi ptr [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.307, %99 ], [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.309, %128 ] invoke void @_ZN4core6option13unwrap_failed17h4c7f35545a6d0c7eE(ptr noalias noundef readonly align 8 dereferenceable(24) %130) #25 - to label %.cont148 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %.cont147 unwind label %.loopexit.split-lp.loopexit.split-lp -.cont148: ; preds = %.invoke147 +.cont147: ; preds = %.invoke146 unreachable 131: ; preds = %128 diff --git a/bench/postgres/optimized/fastpath.ll b/bench/postgres/optimized/fastpath.ll index 39cab73acdd..fec2b5036e5 100644 --- a/bench/postgres/optimized/fastpath.ll +++ b/bench/postgres/optimized/fastpath.ll @@ -411,9 +411,8 @@ parse_fcall_arguments.exit: ; preds = %186, %127 br i1 %or.cond, label %.lr.ph.preheader, label %.critedge .lr.ph.preheader: ; preds = %parse_fcall_arguments.exit - %sext79 = shl i32 %108, 16 - %192 = ashr exact i32 %sext79, 16 - %wide.trip.count = zext i32 %192 to i64 + %192 = and i32 %108, 32767 + %wide.trip.count = zext nneg i32 %192 to i64 br label %.lr.ph 193: ; preds = %.lr.ph diff --git a/bench/postgres/optimized/fe-exec.ll b/bench/postgres/optimized/fe-exec.ll index ba4ab89dfba..9a3dc309e92 100644 --- a/bench/postgres/optimized/fe-exec.ll +++ b/bench/postgres/optimized/fe-exec.ll @@ -246,7 +246,6 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu br i1 %.not, label %32, label %.preheader44 .preheader44: ; preds = %5, %25 - %indvars.iv52 = phi i32 [ %indvars.iv.next53, %25 ], [ -1, %5 ] %indvars.iv = phi i64 [ %indvars.iv.next, %25 ], [ 0, %5 ] %.03747 = phi i64 [ %28, %25 ], [ %7, %5 ] %9 = getelementptr inbounds nuw %struct.PGEvent, ptr %0, i64 %indvars.iv @@ -270,22 +269,18 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu br i1 %.not43, label %.preheader, label %25 .preheader: ; preds = %.preheader44 - %.not49 = icmp eq i64 %indvars.iv, 0 - br i1 %.not49, label %._crit_edge, label %.lr.ph.preheader + %.not50 = icmp eq i64 %indvars.iv, 0 + br i1 %.not50, label %._crit_edge, label %.lr.ph -.lr.ph.preheader: ; preds = %.preheader - %21 = zext i32 %indvars.iv52 to i64 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv55 = phi i64 [ %21, %.lr.ph.preheader ], [ %indvars.iv.next56, %.lr.ph ] - %22 = getelementptr inbounds nuw %struct.PGEvent, ptr %8, i64 %indvars.iv55 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %24 = load ptr, ptr %23, align 8 - tail call void @free(ptr noundef %24) #28 - %indvars.iv.next56 = add nsw i64 %indvars.iv55, -1 - %.not61 = icmp eq i64 %indvars.iv55, 0 - br i1 %.not61, label %._crit_edge, label %.lr.ph, !llvm.loop !3 +.lr.ph: ; preds = %.preheader, %.lr.ph + %indvars.iv54 = phi i64 [ %indvars.iv.next55, %.lr.ph ], [ %indvars.iv, %.preheader ] + %indvars.iv.next55 = add nsw i64 %indvars.iv54, -1 + %21 = getelementptr inbounds nuw %struct.PGEvent, ptr %8, i64 %indvars.iv.next55 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %23 = load ptr, ptr %22, align 8 + tail call void @free(ptr noundef %23) #28 + %24 = icmp sgt i64 %indvars.iv54, 1 + br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !3 ._crit_edge: ; preds = %.lr.ph, %.preheader tail call void @free(ptr noundef nonnull %8) #28 @@ -297,7 +292,6 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu %28 = add i64 %27, %26 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %6 - %indvars.iv.next53 = add nsw i32 %indvars.iv52, 1 br i1 %exitcond.not, label %29, label %.preheader44, !llvm.loop !5 29: ; preds = %25 diff --git a/bench/postgres/optimized/pl_gram.ll b/bench/postgres/optimized/pl_gram.ll index e8191837724..5e1a4332dbf 100644 --- a/bench/postgres/optimized/pl_gram.ll +++ b/bench/postgres/optimized/pl_gram.ll @@ -5356,7 +5356,7 @@ define internal fastcc noundef ptr @read_into_scalar_list(ptr noundef %0, ptr no store i32 %10, ptr %8, align 16 %11 = tail call i32 @plpgsql_yylex(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5) #11 %12 = icmp eq i32 %11, 44 - br i1 %12, label %.lr.ph, label %.lr.ph72.preheader + br i1 %12, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %6 %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -5446,9 +5446,9 @@ NameOfDatum.exit: ; preds = %36, %38 ._crit_edge.loopexit: ; preds = %NameOfDatum.exit %53 = trunc nuw nsw i64 %indvars.iv.next to i32 - br label %.lr.ph72.preheader + br label %._crit_edge -.lr.ph72.preheader: ; preds = %6, %._crit_edge.loopexit +._crit_edge: ; preds = %._crit_edge.loopexit, %6 %.0.lcssa = phi i32 [ 1, %6 ], [ %53, %._crit_edge.loopexit ] %.lcssa = phi i32 [ %11, %6 ], [ %46, %._crit_edge.loopexit ] tail call void @plpgsql_push_back_token(i32 noundef %.lcssa, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5) #11 @@ -5472,27 +5472,25 @@ NameOfDatum.exit: ; preds = %36, %38 %65 = tail call ptr @palloc(i64 noundef %64) #11 %66 = getelementptr inbounds nuw i8, ptr %54, i64 56 store ptr %65, ptr %66, align 8 - %67 = add nsw i32 %.0.lcssa, -1 - %68 = zext nneg i32 %67 to i64 - br label %.lr.ph72 - -.lr.ph72: ; preds = %.lr.ph72.preheader, %.lr.ph72 - %indvars.iv77 = phi i64 [ %68, %.lr.ph72.preheader ], [ %indvars.iv.next78, %.lr.ph72 ] - %69 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv77 - %70 = load ptr, ptr %69, align 8 - %71 = load ptr, ptr %63, align 8 - %72 = getelementptr inbounds nuw ptr, ptr %71, i64 %indvars.iv77 - store ptr %70, ptr %72, align 8 - %73 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv77 - %74 = load i32, ptr %73, align 4 - %75 = load ptr, ptr %66, align 8 - %76 = getelementptr inbounds nuw i32, ptr %75, i64 %indvars.iv77 - store i32 %74, ptr %76, align 4 - %indvars.iv.next78 = add nsw i64 %indvars.iv77, -1 - %.not = icmp eq i64 %indvars.iv77, 0 - br i1 %.not, label %._crit_edge73, label %.lr.ph72, !llvm.loop !17 - -._crit_edge73: ; preds = %.lr.ph72 + br label %67 + +67: ; preds = %._crit_edge, %67 + %indvars.iv75 = phi i64 [ %60, %._crit_edge ], [ %indvars.iv.next76, %67 ] + %indvars.iv.next76 = add nsw i64 %indvars.iv75, -1 + %68 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv.next76 + %69 = load ptr, ptr %68, align 8 + %70 = load ptr, ptr %63, align 8 + %71 = getelementptr inbounds nuw ptr, ptr %70, i64 %indvars.iv.next76 + store ptr %69, ptr %71, align 8 + %72 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv.next76 + %73 = load i32, ptr %72, align 4 + %74 = load ptr, ptr %66, align 8 + %75 = getelementptr inbounds nuw i32, ptr %74, i64 %indvars.iv.next76 + store i32 %73, ptr %75, align 4 + %76 = icmp samesign ugt i64 %indvars.iv75, 1 + br i1 %76, label %67, label %77, !llvm.loop !17 + +77: ; preds = %67 tail call void @plpgsql_adddatum(ptr noundef nonnull %54) #11 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/qemu/optimized/fdt.ll b/bench/qemu/optimized/fdt.ll index dea593690ef..e07c8f19d24 100644 --- a/bench/qemu/optimized/fdt.ll +++ b/bench/qemu/optimized/fdt.ll @@ -923,8 +923,8 @@ fdt_check_node_offset_.exit.i: ; preds = %24 %44 = add i32 %43, %29 %45 = icmp ult i32 %44, %29 %46 = icmp ugt i32 %44, -5 - %or.cond42 = or i1 %45, %46 - br i1 %or.cond42, label %fdt_next_node.exit.thread, label %.lr.ph + %or.cond43 = or i1 %45, %46 + br i1 %or.cond43, label %fdt_next_node.exit.thread, label %.lr.ph .lr.ph: ; preds = %28 %47 = load i8, ptr %8, align 1 @@ -957,7 +957,7 @@ fdt_check_node_offset_.exit.i: ; preds = %24 72: ; preds = %.lr.ph, %.backedge.i %73 = phi i32 [ %44, %.lr.ph ], [ %153, %.backedge.i ] %74 = phi i32 [ %29, %.lr.ph ], [ %152, %.backedge.i ] - %.143 = phi i32 [ %.019, %.lr.ph ], [ %.2, %.backedge.i ] + %.144 = phi i32 [ %.019, %.lr.ph ], [ %.2, %.backedge.i ] %75 = add nuw i32 %73, 4 %76 = icmp ugt i32 %75, %60 br i1 %76, label %fdt_next_node.exit.thread, label %77 @@ -997,8 +997,8 @@ fdt_check_node_offset_.exit.i: ; preds = %24 %107 = zext i8 %106 to i32 %108 = or disjoint i32 %105, %107 %109 = icmp ugt i32 %93, %108 - %or.cond33 = or i1 %.not.i.old, %109 - br i1 %or.cond33, label %fdt_next_node.exit.thread, label %fdt_offset_ptr.exit13._crit_edge + %or.cond34 = or i1 %.not.i.old, %109 + br i1 %or.cond34, label %fdt_next_node.exit.thread, label %fdt_offset_ptr.exit13._crit_edge fdt_offset_ptr.exit13._crit_edge: ; preds = %77, %94 %110 = zext nneg i32 %74 to i64 @@ -1100,7 +1100,7 @@ fdt_next_tag.exit: ; preds = %.critedge.i ] .backedge.i: ; preds = %157, %fdt_next_tag.exit - %.2 = phi i32 [ %.143, %fdt_next_tag.exit ], [ %158, %157 ] + %.2 = phi i32 [ %.144, %fdt_next_tag.exit ], [ %158, %157 ] %153 = add i32 %43, %152 %154 = icmp slt i32 %151, 0 %155 = icmp ult i32 %153, %152 @@ -1110,18 +1110,18 @@ fdt_next_tag.exit: ; preds = %.critedge.i br i1 %or.cond, label %fdt_next_node.exit.thread, label %72, !llvm.loop !6 157: ; preds = %fdt_next_tag.exit - %158 = add i32 %.143, -1 + %158 = add i32 %.144, -1 %159 = icmp slt i32 %158, 0 br i1 %159, label %fdt_next_node.exit.thread, label %.backedge.i fdt_next_node.exit: ; preds = %fdt_next_tag.exit - %160 = icmp ugt i32 %.143, 2147483646 + %160 = icmp ugt i32 %.144, 2147483646 br i1 %160, label %fdt_next_node.exit.thread, label %161 161: ; preds = %fdt_next_node.exit - %162 = add nuw nsw i32 %.143, 1 - %.not49 = icmp eq i32 %.143, 0 - br i1 %.not49, label %fdt_next_node.exit.thread, label %20, !llvm.loop !7 + %162 = add nuw nsw i32 %.144, 1 + %.not33 = icmp eq i32 %.144, 0 + br i1 %.not33, label %fdt_next_node.exit.thread, label %20, !llvm.loop !7 fdt_next_node.exit.thread: ; preds = %fdt_check_node_offset_.exit.i, %161, %fdt_next_node.exit, %28, %157, %94, %72, %.backedge.i, %.critedge.i, %fdt_offset_ptr.exit13._crit_edge, %137, %fdt_next_tag.exit, %.preheader.i, %120, %fdt_check_node_offset_.exit.thread.i %.05 = phi i32 [ -1, %fdt_check_node_offset_.exit.thread.i ], [ -1, %120 ], [ -1, %.preheader.i ], [ -1, %fdt_next_tag.exit ], [ -1, %137 ], [ -1, %fdt_offset_ptr.exit13._crit_edge ], [ -1, %.critedge.i ], [ -1, %.backedge.i ], [ -1, %72 ], [ -1, %94 ], [ -1, %157 ], [ -1, %28 ], [ -1, %fdt_check_node_offset_.exit.i ], [ %74, %161 ], [ -1, %fdt_next_node.exit ] diff --git a/bench/qemu/optimized/virtio-pci.ll b/bench/qemu/optimized/virtio-pci.ll index a07973eb35c..400a30fccd3 100644 --- a/bench/qemu/optimized/virtio-pci.ll +++ b/bench/qemu/optimized/virtio-pci.ll @@ -851,7 +851,7 @@ virtio_bus_get_device.exit: ; preds = %3, %5 18: ; preds = %virtio_bus_get_device.exit %19 = load i32, ptr %17, align 8 %.not = icmp eq i32 %19, 0 - br i1 %.not, label %105, label %20 + br i1 %.not, label %104, label %20 20: ; preds = %18 %21 = icmp eq i32 %16, %19 @@ -963,17 +963,17 @@ kvm_virtio_pci_vector_vq_release.exit: ; preds = %.lr.ph.i, %45, %vir %61 = getelementptr inbounds nuw i8, ptr %8, i64 457 %62 = load i8, ptr %61, align 1, !range !7, !noundef !6 %63 = trunc nuw i8 %62 to i1 - br i1 %63, label %64, label %105 + br i1 %63, label %64, label %104 64: ; preds = %60 %65 = getelementptr inbounds nuw i8, ptr %10, i64 296 %66 = load ptr, ptr %65, align 8 %67 = icmp ne ptr %66, null %or.cond4 = and i1 %2, %67 - br i1 %or.cond4, label %.thread104, label %105 + br i1 %or.cond4, label %.thread104, label %104 68: ; preds = %59 - br i1 %2, label %69, label %105 + br i1 %2, label %69, label %104 69: ; preds = %68 %70 = tail call i32 @msix_nr_vectors_allocated(ptr noundef nonnull %0) #16 @@ -1023,17 +1023,17 @@ kvm_virtio_pci_vector_vq_use.exit: ; preds = %79 88: ; preds = %83 %89 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %90 = icmp slt i32 %89, 0 - br i1 %90, label %.thread108, label %105 + br i1 %90, label %.thread108, label %104 .thread114: ; preds = %.thread111 %91 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %92 = icmp slt i32 %91, 0 - br i1 %92, label %.thread108, label %105 + br i1 %92, label %.thread108, label %104 .thread104: ; preds = %64 %93 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %94 = icmp slt i32 %93, 0 - br i1 %94, label %kvm_virtio_pci_vector_vq_use.exit.thread, label %105 + br i1 %94, label %kvm_virtio_pci_vector_vq_use.exit.thread, label %104 .thread108: ; preds = %88, %.thread114 %95 = phi i32 [ %91, %.thread114 ], [ %89, %88 ] @@ -1054,32 +1054,31 @@ kvm_virtio_pci_vector_vq_use.exit.thread: ; preds = %.lr.ph.i96, %.threa .loopexit: ; preds = %52, %kvm_virtio_pci_vector_vq_use.exit.thread %.081118 = phi i32 [ %.081.lcssa, %kvm_virtio_pci_vector_vq_use.exit.thread ], [ %.081120, %52 ] %.080 = phi i32 [ %.1, %kvm_virtio_pci_vector_vq_use.exit.thread ], [ %53, %52 ] - br i1 %2, label %.preheader, label %100 + br i1 %2, label %.preheader, label %99 .preheader: ; preds = %.loopexit - %98 = add i32 %.081118, -1 - %99 = icmp sgt i32 %98, -1 - br i1 %99, label %.lr.ph123, label %._crit_edge124 + %98 = icmp sgt i32 %.081118, 0 + br i1 %98, label %.lr.ph124, label %._crit_edge125 -100: ; preds = %.loopexit +99: ; preds = %.loopexit tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.5, i32 noundef 1314, ptr noundef nonnull @__PRETTY_FUNCTION__.virtio_pci_set_guest_notifiers) #17 unreachable -.lr.ph123: ; preds = %.preheader, %.lr.ph123 - %101 = phi i32 [ %103, %.lr.ph123 ], [ %98, %.preheader ] - %102 = tail call fastcc i32 @virtio_pci_set_guest_notifier(ptr noundef nonnull %0, i32 noundef %101, i1 noundef zeroext false, i1 noundef zeroext %15) - %103 = add nsw i32 %101, -1 - %.not144 = icmp eq i32 %101, 0 - br i1 %.not144, label %._crit_edge124, label %.lr.ph123, !llvm.loop !11 +.lr.ph124: ; preds = %.preheader, %.lr.ph124 + %.182123 = phi i32 [ %100, %.lr.ph124 ], [ %.081118, %.preheader ] + %100 = add nsw i32 %.182123, -1 + %101 = tail call fastcc i32 @virtio_pci_set_guest_notifier(ptr noundef nonnull %0, i32 noundef %100, i1 noundef zeroext false, i1 noundef zeroext %15) + %102 = icmp samesign ugt i32 %.182123, 1 + br i1 %102, label %.lr.ph124, label %._crit_edge125, !llvm.loop !11 -._crit_edge124: ; preds = %.lr.ph123, %.preheader - %104 = load ptr, ptr %49, align 16 - tail call void @g_free(ptr noundef %104) #16 +._crit_edge125: ; preds = %.lr.ph124, %.preheader + %103 = load ptr, ptr %49, align 16 + tail call void @g_free(ptr noundef %103) #16 store ptr null, ptr %49, align 16 - br label %105 + br label %104 -105: ; preds = %.thread114, %.thread104, %60, %64, %68, %88, %18, %._crit_edge124 - %.0 = phi i32 [ %.080, %._crit_edge124 ], [ 0, %18 ], [ 0, %88 ], [ 0, %68 ], [ 0, %64 ], [ 0, %60 ], [ 0, %.thread104 ], [ 0, %.thread114 ] +104: ; preds = %.thread114, %.thread104, %60, %64, %68, %88, %18, %._crit_edge125 + %.0 = phi i32 [ %.080, %._crit_edge125 ], [ 0, %18 ], [ 0, %88 ], [ 0, %68 ], [ 0, %64 ], [ 0, %60 ], [ 0, %.thread104 ], [ 0, %.thread114 ] ret i32 %.0 } diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index e52af5e5099..202d1fc1074 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10620,7 +10620,6 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp br label %6 6: ; preds = %1, %16 - %indvars.iv65 = phi i32 [ -1, %1 ], [ %indvars.iv.next66, %16 ] %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %16 ] %7 = load ptr, ptr %5, align 8 %8 = getelementptr inbounds nuw %struct.VirtQueue, ptr %7, i64 %indvars.iv @@ -10646,7 +10645,6 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp 16: ; preds = %14, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 1024 - %indvars.iv.next66 = add nsw i32 %indvars.iv65, 1 br i1 %exitcond.not, label %.preheader50, label %6, !llvm.loop !64 .preheader50: ; preds = %16, %23 @@ -10668,10 +10666,10 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp br i1 %exitcond74.not, label %.loopexit.sink.split, label %.preheader50, !llvm.loop !65 .lr.ph: ; preds = %.preheader, %33 - %indvars.iv62 = phi i64 [ %indvars.iv.next63, %33 ], [ %indvars.iv, %.preheader ] - %indvars.iv.next63 = add nsw i64 %indvars.iv62, -1 + %indvars.iv63 = phi i64 [ %indvars.iv.next64, %33 ], [ %indvars.iv, %.preheader ] + %indvars.iv.next64 = add nsw i64 %indvars.iv63, -1 %24 = load ptr, ptr %5, align 8 - %25 = getelementptr inbounds nuw %struct.VirtQueue, ptr %24, i64 %indvars.iv.next63 + %25 = getelementptr inbounds nuw %struct.VirtQueue, ptr %24, i64 %indvars.iv.next64 %26 = load i32, ptr %25, align 8 %.not45 = icmp eq i32 %26, 0 br i1 %.not45, label %33, label %27, !llvm.loop !66 @@ -10679,7 +10677,7 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp 27: ; preds = %.lr.ph %28 = getelementptr inbounds nuw i8, ptr %25, i64 116 tail call void @event_notifier_set_handler(ptr noundef nonnull %28, ptr noundef null) #24 - %29 = trunc nuw nsw i64 %indvars.iv.next63 to i32 + %29 = trunc nuw nsw i64 %indvars.iv.next64 to i32 %30 = tail call i32 @virtio_bus_set_host_notifier(ptr noundef %4, i32 noundef %29, i1 noundef zeroext false) #24 %31 = icmp sgt i32 %30, -1 br i1 %31, label %33, label %32 @@ -10689,31 +10687,30 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp unreachable 33: ; preds = %27, %.lr.ph - %34 = icmp sgt i64 %indvars.iv62, 1 + %34 = icmp sgt i64 %indvars.iv63, 1 br i1 %34, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %33 tail call void @memory_region_transaction_commit() #24 - %35 = zext i32 %indvars.iv65 to i64 br label %.lr.ph56 .lr.ph56: ; preds = %._crit_edge, %.backedge - %indvars.iv68 = phi i64 [ %35, %._crit_edge ], [ %indvars.iv.next69, %.backedge ] - %36 = load ptr, ptr %5, align 8 - %37 = getelementptr inbounds nuw %struct.VirtQueue, ptr %36, i64 %indvars.iv68 - %38 = load i32, ptr %37, align 8 - %.not44 = icmp eq i32 %38, 0 - br i1 %.not44, label %.backedge, label %39 - -39: ; preds = %.lr.ph56 - %40 = trunc nuw nsw i64 %indvars.iv68 to i32 - tail call void @virtio_bus_cleanup_host_notifier(ptr noundef %4, i32 noundef %40) #24 + %indvars.iv68 = phi i64 [ %indvars.iv.next69, %.backedge ], [ %indvars.iv, %._crit_edge ] + %indvars.iv.next69 = add nsw i64 %indvars.iv68, -1 + %35 = load ptr, ptr %5, align 8 + %36 = getelementptr inbounds nuw %struct.VirtQueue, ptr %35, i64 %indvars.iv.next69 + %37 = load i32, ptr %36, align 8 + %.not44 = icmp eq i32 %37, 0 + br i1 %.not44, label %.backedge, label %38 + +38: ; preds = %.lr.ph56 + %39 = trunc nuw nsw i64 %indvars.iv.next69 to i32 + tail call void @virtio_bus_cleanup_host_notifier(ptr noundef %4, i32 noundef %39) #24 br label %.backedge -.backedge: ; preds = %39, %.lr.ph56 - %indvars.iv.next69 = add nsw i64 %indvars.iv68, -1 - %41 = icmp sgt i64 %indvars.iv68, 0 - br i1 %41, label %.lr.ph56, label %.loopexit, !llvm.loop !67 +.backedge: ; preds = %38, %.lr.ph56 + %40 = icmp sgt i64 %indvars.iv68, 1 + br i1 %40, label %.lr.ph56, label %.loopexit, !llvm.loop !67 .loopexit.sink.split: ; preds = %23, %.preheader %.0.ph = phi i32 [ %12, %.preheader ], [ 0, %23 ] diff --git a/bench/rocksdb/optimized/version_set.ll b/bench/rocksdb/optimized/version_set.ll index a2aa34d0a0c..74b32d3e3df 100644 --- a/bench/rocksdb/optimized/version_set.ll +++ b/bench/rocksdb/optimized/version_set.ll @@ -29100,22 +29100,22 @@ define noundef ptr @_ZNK7rocksdb18VersionStorageInfo16LevelFileSummaryEPNS0_18Fi %9 = load ptr, ptr %8, align 8, !tbaa !652 %10 = getelementptr inbounds nuw i8, ptr %8, i64 8 %11 = load ptr, ptr %10, align 8, !tbaa !652 - %.not3637 = icmp eq ptr %9, %11 - br i1 %.not3637, label %._crit_edge, label %.lr.ph + %.not3638 = icmp eq ptr %9, %11 + br i1 %.not3638, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %31 - %.039 = phi i32 [ %32, %31 ], [ 11, %3 ] - %.sroa.033.038 = phi ptr [ %33, %31 ], [ %9, %3 ] - %12 = zext nneg i32 %.039 to i64 - %13 = sub nsw i32 3000, %.039 + %.040 = phi i32 [ %32, %31 ], [ 11, %3 ] + %.sroa.033.039 = phi ptr [ %33, %31 ], [ %9, %3 ] + %12 = zext nneg i32 %.040 to i64 + %13 = sub nsw i32 3000, %.040 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %14 = load ptr, ptr %.sroa.033.038, align 8, !tbaa !410 + %14 = load ptr, ptr %.sroa.033.039, align 8, !tbaa !410 %15 = getelementptr inbounds nuw i8, ptr %14, i64 16 %16 = load i64, ptr %15, align 8, !tbaa !598 %17 = call noundef i32 @_ZN7rocksdb16AppendHumanBytesEmPci(i64 noundef %16, ptr noundef nonnull %4, i32 noundef 16) %18 = getelementptr inbounds nuw i8, ptr %1, i64 %12 %19 = sext i32 %13 to i64 - %20 = load ptr, ptr %.sroa.033.038, align 8, !tbaa !410 + %20 = load ptr, ptr %.sroa.033.039, align 8, !tbaa !410 %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 %22 = load i64, ptr %21, align 8, !tbaa !556 %23 = and i64 %22, 4611686018427387903 @@ -29132,19 +29132,19 @@ define noundef ptr @_ZNK7rocksdb18VersionStorageInfo16LevelFileSummaryEPNS0_18Fi br i1 %or.cond30, label %31, label %._crit_edge.loopexit 31: ; preds = %.lr.ph - %32 = add nuw nsw i32 %29, %.039 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.033.038, i64 8 + %32 = add nuw nsw i32 %29, %.040 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.033.039, i64 8 %.not36 = icmp eq ptr %33, %11 br i1 %.not36, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge.loopexit: ; preds = %31, %.lr.ph - %.0.lcssa.ph = phi i32 [ %.039, %.lr.ph ], [ %32, %31 ] + %.0.lcssa.ph = phi i32 [ %.040, %.lr.ph ], [ %32, %31 ] %.pre = load ptr, ptr %5, align 8, !tbaa !360 %.phi.trans.insert = getelementptr inbounds %"class.std::vector.296", ptr %.pre, i64 %7 - %.phi.trans.insert42 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 - %.pre43 = load ptr, ptr %.phi.trans.insert42, align 8, !tbaa !408 - %.pre44 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !361 - %34 = icmp ne ptr %.pre43, %.pre44 + %.phi.trans.insert43 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 + %.pre44 = load ptr, ptr %.phi.trans.insert43, align 8, !tbaa !408 + %.pre45 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !361 + %34 = icmp ne ptr %.pre44, %.pre45 %35 = sext i1 %34 to i32 %36 = add nsw i32 %.0.lcssa.ph, %35 %37 = sext i32 %36 to i64 diff --git a/bench/ruby/optimized/dir.ll b/bench/ruby/optimized/dir.ll index b17c1ff0b65..f5bf85f2f9f 100644 --- a/bench/ruby/optimized/dir.ll +++ b/bench/ruby/optimized/dir.ll @@ -2978,16 +2978,16 @@ ruby_nonempty_memcpy.exit47.i: ; preds = %81, %78 br i1 %.not.i, label %join_path_from_pattern.exit, label %.lr.ph.i.backedge .lr.ph.i.backedge: ; preds = %85, %.thread - %.053.i.be = phi ptr [ %.0.i, %85 ], [ %.0.i654, %.thread ] + %.053.i.be = phi ptr [ %.0.i, %85 ], [ %.0.i653, %.thread ] %.03152.i.be = phi ptr [ %.1.i, %85 ], [ null, %.thread ] %.03351.i.be = phi i64 [ %.134.i, %85 ], [ %66, %.thread ] br label %.lr.ph.i, !llvm.loop !126 .thread: ; preds = %glob_alloc_n.exit.i %87 = getelementptr inbounds nuw i8, ptr %.053.i, i64 16 - %.0.i654 = load ptr, ptr %87, align 8, !tbaa !28 - %.not.i655 = icmp eq ptr %.0.i654, null - br i1 %.not.i655, label %join_path_from_pattern.exit.thread, label %.lr.ph.i.backedge + %.0.i653 = load ptr, ptr %87, align 8, !tbaa !28 + %.not.i654 = icmp eq ptr %.0.i653, null + br i1 %.not.i654, label %join_path_from_pattern.exit.thread, label %.lr.ph.i.backedge join_path_from_pattern.exit: ; preds = %85 %.not360 = icmp eq ptr %.1.i, null @@ -3022,18 +3022,18 @@ join_path_from_pattern.exit.thread: ; preds = %.thread, %59, %join br label %.thread451 ._crit_edge.thread: ; preds = %12, %._crit_edge - %.0294.lcssa651 = phi i1 [ %58, %._crit_edge ], [ true, %12 ] - %.0298.lcssa650 = phi i1 [ %57, %._crit_edge ], [ false, %12 ] - %.0300.lcssa649 = phi i1 [ %56, %._crit_edge ], [ false, %12 ] - %.0302.lcssa648 = phi i1 [ %53, %._crit_edge ], [ false, %12 ] - %.0304.lcssa647 = phi i1 [ %54, %._crit_edge ], [ false, %12 ] + %.0294.lcssa650 = phi i1 [ %58, %._crit_edge ], [ true, %12 ] + %.0298.lcssa649 = phi i1 [ %57, %._crit_edge ], [ false, %12 ] + %.0300.lcssa648 = phi i1 [ %56, %._crit_edge ], [ false, %12 ] + %.0302.lcssa647 = phi i1 [ %53, %._crit_edge ], [ false, %12 ] + %.0304.lcssa646 = phi i1 [ %54, %._crit_edge ], [ false, %12 ] %99 = load i8, ptr %1, align 1, !tbaa !19 %.not333 = icmp eq i8 %99, 0 br i1 %.not333, label %187, label %100 100: ; preds = %._crit_edge.thread %101 = icmp eq i32 %5, -2 - %or.cond = and i1 %101, %.0302.lcssa648 + %or.cond = and i1 %101, %.0302.lcssa647 br i1 %or.cond, label %102, label %124 102: ; preds = %100 @@ -3093,7 +3093,7 @@ do_lstat.exit: ; preds = %102 124: ; preds = %do_lstat.exit.thread, %do_lstat.exit, %119, %100 %.1275 = phi i32 [ %123, %119 ], [ %5, %100 ], [ -1, %do_lstat.exit ], [ -1, %do_lstat.exit.thread ] - br i1 %.0304.lcssa647, label %125, label %148 + br i1 %.0304.lcssa646, label %125, label %148 125: ; preds = %124 switch i32 %.1275, label %148 [ @@ -3159,7 +3159,7 @@ do_stat.exit: ; preds = %126 148: ; preds = %125, %143, %124 %.2276 = phi i32 [ %147, %143 ], [ %.1275, %125 ], [ %.1275, %124 ] %149 = icmp sgt i32 %.2276, -1 - %or.cond8 = select i1 %.0302.lcssa648, i1 %149, i1 false + %or.cond8 = select i1 %.0302.lcssa647, i1 %149, i1 false br i1 %or.cond8, label %150, label %161 150: ; preds = %148 @@ -3183,7 +3183,7 @@ do_stat.exit: ; preds = %126 161: ; preds = %156, %148 %162 = icmp eq i32 %.2276, 4 - %or.cond10 = select i1 %.0304.lcssa647, i1 %162, i1 false + %or.cond10 = select i1 %.0304.lcssa646, i1 %162, i1 false br i1 %or.cond10, label %163, label %187 163: ; preds = %161 @@ -3250,7 +3250,7 @@ ruby_nonempty_memcpy.exit.i374: ; preds = %180, %179 br i1 %188, label %.thread451, label %.thread455 .thread455: ; preds = %183, %187 - br i1 %.0298.lcssa650, label %189, label %456 + br i1 %.0298.lcssa649, label %189, label %456 189: ; preds = %.thread455 %190 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -3383,8 +3383,8 @@ do_opendir.exit: ; preds = %opendir_at.exit.i br label %244 237: ; preds = %231 - %238 = add i64 %.04015.i, 256 - %239 = icmp ugt i64 %238, 1152921504606846975 + %238 = add nuw nsw i64 %.04015.i, 256 + %239 = icmp ugt i64 %.04015.i, 1152921504606846719 br i1 %239, label %rb_mul_size_overflow.exit.i.i.i380, label %glob_realloc_n.exit.i rb_mul_size_overflow.exit.i.i.i380: ; preds = %237 @@ -3564,7 +3564,7 @@ glob_opendir.exit: ; preds = %272, %219 %302 = getelementptr inbounds nuw i8, ptr %24, i64 24 %303 = and i32 %8, 4 %.not351 = icmp eq i32 %303, 0 - %or.cond363 = and i1 %.not351, %.0300.lcssa649 + %or.cond363 = and i1 %.not351, %.0300.lcssa648 %.not352 = icmp ne i32 %298, 0 %or.cond368.not = or i1 %.not352, %or.cond363 %.not.i384 = icmp ne i32 %4, 0 @@ -3705,7 +3705,7 @@ ruby_nonempty_memcpy.exit.i388: ; preds = %356, %355 %.not354 = icmp eq i8 %367, 0 %368 = zext i8 %367 to i32 %spec.select = select i1 %.not354, i32 %.0285, i32 %368 - br i1 %.0300.lcssa649, label %369, label %387 + br i1 %.0300.lcssa648, label %369, label %387 369: ; preds = %362 %370 = icmp samesign ult i32 %.0284, %307 @@ -3887,23 +3887,23 @@ glob_alloc_n.exit: ; preds = %387 %427 = load ptr, ptr %.0283, align 8, !tbaa !32 %428 = call fastcc i32 @ruby_brace_expand(ptr noundef %427, i32 noundef %299, ptr noundef nonnull @dirent_match_brace, i64 noundef %322, ptr noundef %11, i64 noundef 0) %429 = icmp sgt i32 %428, 0 - br i1 %429, label %.sink.split673, label %436 + br i1 %429, label %.sink.split672, label %436 430: ; preds = %424, %424, %424 %431 = load ptr, ptr %.0283, align 8, !tbaa !32 %432 = call fastcc i32 @fnmatch(ptr noundef %431, ptr noundef %11, ptr noundef %365, i32 noundef %299) %.not359.not = icmp eq i32 %432, 0 - br i1 %.not359.not, label %.sink.split673, label %436 + br i1 %.not359.not, label %.sink.split672, label %436 -.sink.split673: ; preds = %430, %426 +.sink.split672: ; preds = %430, %426 %433 = getelementptr inbounds nuw i8, ptr %.0283, i64 16 %434 = load ptr, ptr %433, align 8, !tbaa !30 %435 = getelementptr i8, ptr %.0288555, i64 8 store ptr %434, ptr %.0288555, align 8, !tbaa !28 br label %436 -436: ; preds = %.sink.split673, %424, %430, %426 - %.3291 = phi ptr [ %.0288555, %424 ], [ %.0288555, %426 ], [ %.0288555, %430 ], [ %435, %.sink.split673 ] +436: ; preds = %.sink.split672, %424, %430, %426 + %.3291 = phi ptr [ %.0288555, %424 ], [ %.0288555, %426 ], [ %.0288555, %430 ], [ %435, %.sink.split672 ] call void @llvm.lifetime.end.p0(ptr nonnull %25) %437 = getelementptr i8, ptr %.1280556, i64 8 %438 = icmp ult ptr %437, %7 @@ -3979,7 +3979,7 @@ glob_getent.exit.thread.thread500: ; preds = %324, %glob_getent.e br label %.thread451 456: ; preds = %.thread455 - br i1 %.0294.lcssa651, label %.thread451, label %457 + br i1 %.0294.lcssa650, label %.thread451, label %457 457: ; preds = %456 %458 = ptrtoint ptr %7 to i64 @@ -4229,8 +4229,8 @@ ruby_nonempty_memcpy.exit.i417: ; preds = %527, %526 br i1 %542, label %474, label %.thread493, !llvm.loop !173 .thread493.sink.split: ; preds = %glob_alloc_n.exit412, %533 - %.lcssa664.sink = phi ptr [ %504, %533 ], [ %481, %glob_alloc_n.exit412 ] - call void @free(ptr noundef %.lcssa664.sink) #22 + %.lcssa663.sink = phi ptr [ %504, %533 ], [ %481, %glob_alloc_n.exit412 ] + call void @free(ptr noundef %.lcssa663.sink) #22 br label %.thread493 .thread493: ; preds = %540, %534, %glob_alloc_n.exit403, %.thread493.sink.split, %.preheader505, %.preheader504 diff --git a/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll b/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll index c3124903020..df92f01d2e5 100644 --- a/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll +++ b/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll @@ -18532,7 +18532,7 @@ define internal fastcc void @_ZN5salsa5table4memo21MemoTableWithTypesMut4drop17h br i1 %23, label %.preheader.i.i.i.i, label %27 24: ; preds = %.loopexit.i.i.i.i - %25 = add nuw nsw i64 %.sroa.4.1, 1 + %25 = add i64 %.sroa.4.1, 1 %26 = shl nuw i64 64, %.sroa.4.1 br label %.lr.ph.i.i.i.i @@ -34567,44 +34567,44 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %38 %.sroa.5.034 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.5.1, %38 ] %.sroa.9.033 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.9.1, %38 ] - %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %38 ] + %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %38 ] %.sroa.16.031 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %38 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %22 ] - %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %22 ] - %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %21 ] + %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %21 ] + %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.5.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !1887 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.5.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.12.2 = phi i64 [ %18, %16 ], [ %.sroa.12.1, %9 ] - %15 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 - %18 = add nuw i64 %.sroa.12.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !1887 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.5.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.12.2 = phi i64 [ %17, %15 ], [ %.sroa.12.1, %9 ] + %14 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 + %17 = add nuw i64 %.sroa.12.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 40 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !1887 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.5.1, 1 %23 = shl nuw i64 64, %.sroa.5.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.16.031, 1 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %26 = getelementptr inbounds nuw i8, ptr %16, i64 24 %27 = load i64, ptr %26, align 8, !noundef !4 %28 = icmp eq i64 %27, 3326566396564680275 br i1 %28, label %34, label %38 @@ -34632,7 +34632,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt unreachable 34: ; preds = %24 - %35 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %35 = getelementptr inbounds nuw i8, ptr %16, i64 32 %36 = load i64, ptr %35, align 8, !noundef !4 %37 = icmp eq i64 %36, 7469766667972927328 br i1 %37, label %40, label %38 @@ -34646,7 +34646,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt %41 = load i64, ptr %1, align 8, !noundef !4 %42 = getelementptr inbounds nuw i8, ptr %1, i64 8 %43 = load i64, ptr %42, align 8, !noundef !4 - %44 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %44 = getelementptr inbounds nuw i8, ptr %16, i64 16 %45 = load ptr, ptr %44, align 8, !nonnull !4, !noundef !4 %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %41, ptr %46, align 8 @@ -46719,44 +46719,44 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur .lr.ph.i.i: ; preds = %136, %.lr.ph.i.lr.ph.i %.sroa.5.034.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %.sroa.5.1.i, %136 ] %.sroa.9.033.i = phi i64 [ 32, %.lr.ph.i.lr.ph.i ], [ %.sroa.9.1.i, %136 ] - %.sroa.12.032.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %116, %136 ] + %.sroa.12.032.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %115, %136 ] %.sroa.16.031.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %123, %136 ] br label %107 -107: ; preds = %120, %.lr.ph.i.i - %.sroa.12.1.i = phi i64 [ %.sroa.12.032.i, %.lr.ph.i.i ], [ 0, %120 ] - %.sroa.9.1.i = phi i64 [ %.sroa.9.033.i, %.lr.ph.i.i ], [ %121, %120 ] - %.sroa.5.1.i = phi i64 [ %.sroa.5.034.i, %.lr.ph.i.i ], [ %111, %120 ] +107: ; preds = %119, %.lr.ph.i.i + %.sroa.12.1.i = phi i64 [ %.sroa.12.032.i, %.lr.ph.i.i ], [ 0, %119 ] + %.sroa.9.1.i = phi i64 [ %.sroa.9.033.i, %.lr.ph.i.i ], [ %121, %119 ] + %.sroa.5.1.i = phi i64 [ %.sroa.5.034.i, %.lr.ph.i.i ], [ %120, %119 ] %108 = getelementptr inbounds nuw { { ptr } }, ptr %106, i64 %.sroa.5.1.i %109 = load atomic ptr, ptr %108 acquire, align 8, !noalias !2853 %110 = icmp eq ptr %109, null br i1 %110, label %.loopexit.i.i, label %.preheader.i.i .loopexit.i.i: ; preds = %.preheader.i.i, %107 - %111 = add i64 %.sroa.5.1.i, 1 - %112 = icmp ult i64 %111, 59 - br i1 %112, label %120, label %.loopexit.i - -.preheader.i.i: ; preds = %107, %114 - %.sroa.12.2.i = phi i64 [ %116, %114 ], [ %.sroa.12.1.i, %107 ] - %113 = icmp ult i64 %.sroa.12.2.i, %.sroa.9.1.i - br i1 %113, label %114, label %.loopexit.i.i - -114: ; preds = %.preheader.i.i - %115 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %109, i64 %.sroa.12.2.i - %116 = add nuw i64 %.sroa.12.2.i, 1 - %117 = getelementptr inbounds nuw i8, ptr %115, i64 40 - %118 = load atomic i8, ptr %117 acquire, align 1, !noalias !2853 - %119 = icmp eq i8 %118, 0 - br i1 %119, label %.preheader.i.i, label %122 - -120: ; preds = %.loopexit.i.i + %111 = icmp ult i64 %.sroa.5.1.i, 58 + br i1 %111, label %119, label %.loopexit.i + +.preheader.i.i: ; preds = %107, %113 + %.sroa.12.2.i = phi i64 [ %115, %113 ], [ %.sroa.12.1.i, %107 ] + %112 = icmp ult i64 %.sroa.12.2.i, %.sroa.9.1.i + br i1 %112, label %113, label %.loopexit.i.i + +113: ; preds = %.preheader.i.i + %114 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %109, i64 %.sroa.12.2.i + %115 = add nuw i64 %.sroa.12.2.i, 1 + %116 = getelementptr inbounds nuw i8, ptr %114, i64 40 + %117 = load atomic i8, ptr %116 acquire, align 1, !noalias !2853 + %118 = icmp eq i8 %117, 0 + br i1 %118, label %.preheader.i.i, label %122 + +119: ; preds = %.loopexit.i.i + %120 = add nuw nsw i64 %.sroa.5.1.i, 1 %121 = shl nuw i64 64, %.sroa.5.1.i br label %107 -122: ; preds = %114 +122: ; preds = %113 %123 = add i64 %.sroa.16.031.i, 1 - %124 = getelementptr inbounds nuw i8, ptr %115, i64 24 + %124 = getelementptr inbounds nuw i8, ptr %114, i64 24 %125 = load i64, ptr %124, align 8, !noalias !2866, !noundef !4 %126 = icmp eq i64 %125, 3326566396564680275 br i1 %126, label %132, label %136 @@ -46784,7 +46784,7 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur unreachable 132: ; preds = %122 - %133 = getelementptr inbounds nuw i8, ptr %115, i64 32 + %133 = getelementptr inbounds nuw i8, ptr %114, i64 32 %134 = load i64, ptr %133, align 8, !noalias !2866, !noundef !4 %135 = icmp eq i64 %134, 7469766667972927328 br i1 %135, label %139, label %136 @@ -46802,7 +46802,7 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur %140 = load i64, ptr %94, align 8, !noalias !2866, !noundef !4 %141 = getelementptr inbounds nuw i8, ptr %1, i64 672 %142 = load i64, ptr %141, align 8, !noalias !2866, !noundef !4 - %143 = getelementptr inbounds nuw i8, ptr %115, i64 16 + %143 = getelementptr inbounds nuw i8, ptr %114, i64 16 %144 = load ptr, ptr %143, align 8, !noalias !2866, !nonnull !4, !noundef !4 %.sroa.015.sroa.4.8..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.015.sroa.4, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.015.sroa.4.8..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) @anon.bd069b0397abcbf5d72b25326b9d08c3.479, i64 32, i1 false) diff --git a/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll b/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll index 360ac8db1f9..c02d5cffaa2 100644 --- a/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll +++ b/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll @@ -3144,44 +3144,44 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %38 %.sroa.5.034 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.5.1, %38 ] %.sroa.9.033 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.9.1, %38 ] - %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %38 ] + %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %38 ] %.sroa.16.031 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %38 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %22 ] - %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %22 ] - %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %21 ] + %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %21 ] + %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.5.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !207 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.5.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.12.2 = phi i64 [ %18, %16 ], [ %.sroa.12.1, %9 ] - %15 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 - %18 = add nuw i64 %.sroa.12.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !207 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.5.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.12.2 = phi i64 [ %17, %15 ], [ %.sroa.12.1, %9 ] + %14 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 + %17 = add nuw i64 %.sroa.12.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 40 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !207 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.5.1, 1 %23 = shl nuw i64 64, %.sroa.5.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.16.031, 1 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %26 = getelementptr inbounds nuw i8, ptr %16, i64 24 %27 = load i64, ptr %26, align 8, !noundef !9 %28 = icmp eq i64 %27, -8506588598177062506 br i1 %28, label %34, label %38 @@ -3209,7 +3209,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt unreachable 34: ; preds = %24 - %35 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %35 = getelementptr inbounds nuw i8, ptr %16, i64 32 %36 = load i64, ptr %35, align 8, !noundef !9 %37 = icmp eq i64 %36, 637409720492316309 br i1 %37, label %40, label %38 @@ -3223,7 +3223,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt %41 = load i64, ptr %1, align 8, !noundef !9 %42 = getelementptr inbounds nuw i8, ptr %1, i64 8 %43 = load i64, ptr %42, align 8, !noundef !9 - %44 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %44 = getelementptr inbounds nuw i8, ptr %16, i64 16 %45 = load ptr, ptr %44, align 8, !nonnull !9, !noundef !9 %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %41, ptr %46, align 8 diff --git a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll index 6171dbb5ceb..a753d0cae0c 100644 --- a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll +++ b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll @@ -1120,44 +1120,44 @@ define noundef range(i64 1, 0) i64 @_ZN5salsa5zalsa5Zalsa12new_revision17h4e6ba7 .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %42 %.sroa.4.039 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.4.1, %42 ] %.sroa.8.038 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.8.1, %42 ] - %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %19, %42 ] + %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %42 ] %.sroa.15.036 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %26, %42 ] br label %10 -10: ; preds = %23, %.lr.ph.i - %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %23 ] - %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %24, %23 ] - %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %14, %23 ] +10: ; preds = %22, %.lr.ph.i + %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %22 ] + %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %24, %22 ] + %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %23, %22 ] %11 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.4.1 %12 = load atomic ptr, ptr %11 acquire, align 8, !noalias !67 %13 = icmp eq ptr %12, null br i1 %13, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %10 - %14 = add i64 %.sroa.4.1, 1 - %15 = icmp ult i64 %14, 59 - br i1 %15, label %23, label %.loopexit - -.preheader.i: ; preds = %10, %17 - %.sroa.11.2 = phi i64 [ %19, %17 ], [ %.sroa.11.1, %10 ] - %16 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 - br i1 %16, label %17, label %.loopexit.i - -17: ; preds = %.preheader.i - %18 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %12, i64 %.sroa.11.2 - %19 = add nuw i64 %.sroa.11.2, 1 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %21 = load atomic i8, ptr %20 acquire, align 1, !noalias !67 - %22 = icmp eq i8 %21, 0 - br i1 %22, label %.preheader.i, label %25 - -23: ; preds = %.loopexit.i + %14 = icmp ult i64 %.sroa.4.1, 58 + br i1 %14, label %22, label %.loopexit + +.preheader.i: ; preds = %10, %16 + %.sroa.11.2 = phi i64 [ %18, %16 ], [ %.sroa.11.1, %10 ] + %15 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 + br i1 %15, label %16, label %.loopexit.i + +16: ; preds = %.preheader.i + %17 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %12, i64 %.sroa.11.2 + %18 = add nuw i64 %.sroa.11.2, 1 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 4 + %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !67 + %21 = icmp eq i8 %20, 0 + br i1 %21, label %.preheader.i, label %25 + +22: ; preds = %.loopexit.i + %23 = add nuw nsw i64 %.sroa.4.1, 1 %24 = shl nuw i64 64, %.sroa.4.1 br label %10 -25: ; preds = %17 +25: ; preds = %16 %26 = add i64 %.sroa.15.036, 1 - %27 = load i32, ptr %18, align 4, !noundef !3 + %27 = load i32, ptr %17, align 4, !noundef !3 %28 = zext i32 %27 to i64 store i64 %28, ptr %4, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !71) @@ -1233,44 +1233,44 @@ define void @_ZN5salsa5zalsa5Zalsa9evict_lru17hcfd9028e204423afE(ptr noalias nou .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %41 %.sroa.4.039 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.4.1, %41 ] %.sroa.8.038 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.8.1, %41 ] - %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %41 ] + %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %41 ] %.sroa.15.036 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %41 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %22 ] - %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %23, %22 ] - %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %21 ] + %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %23, %21 ] + %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %7, i64 %.sroa.4.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !75 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.4.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.11.2 = phi i64 [ %18, %16 ], [ %.sroa.11.1, %9 ] - %15 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %11, i64 %.sroa.11.2 - %18 = add nuw i64 %.sroa.11.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !75 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.4.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.11.2 = phi i64 [ %17, %15 ], [ %.sroa.11.1, %9 ] + %14 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %11, i64 %.sroa.11.2 + %17 = add nuw i64 %.sroa.11.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !75 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.4.1, 1 %23 = shl nuw i64 64, %.sroa.4.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.15.036, 1 - %26 = load i32, ptr %17, align 4, !noundef !3 + %26 = load i32, ptr %16, align 4, !noundef !3 %27 = zext i32 %26 to i64 store i64 %27, ptr %4, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !79) diff --git a/bench/slurm/optimized/slurmdb_defs.ll b/bench/slurm/optimized/slurmdb_defs.ll index 2f8348c5984..44e81da0bd6 100644 --- a/bench/slurm/optimized/slurmdb_defs.ll +++ b/bench/slurm/optimized/slurmdb_defs.ll @@ -4665,7 +4665,7 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn 4: ; preds = %1 %5 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.33) #19 - br label %24 + br label %22 6: ; preds = %1 %7 = tail call ptr @xstrdup(ptr noundef nonnull %0) #19 @@ -4674,58 +4674,55 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn %.not1115 = icmp eq ptr %8, null br i1 %.not1115, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %6, %22 - %.017 = phi ptr [ %23, %22 ], [ %8, %6 ] - %.0816 = phi i32 [ %18, %22 ], [ 0, %6 ] +.lr.ph: ; preds = %6, %_str_2_job_flags.exit.thread + %.017 = phi ptr [ %21, %_str_2_job_flags.exit.thread ], [ %8, %6 ] + %.0816 = phi i32 [ %20, %_str_2_job_flags.exit.thread ], [ 0, %6 ] %9 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.14) #19 %.not.i = icmp eq ptr %9, null - br i1 %.not.i, label %10, label %_str_2_job_flags.exit + br i1 %.not.i, label %10, label %_str_2_job_flags.exit.thread 10: ; preds = %.lr.ph %11 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.29) #19 %.not5.i = icmp eq ptr %11, null - br i1 %.not5.i, label %12, label %_str_2_job_flags.exit + br i1 %.not5.i, label %12, label %_str_2_job_flags.exit.thread 12: ; preds = %10 %13 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.30) #19 %.not6.i = icmp eq ptr %13, null - br i1 %.not6.i, label %14, label %_str_2_job_flags.exit + br i1 %.not6.i, label %14, label %_str_2_job_flags.exit.thread 14: ; preds = %12 %15 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.31) #19 %.not7.i = icmp eq ptr %15, null - br i1 %.not7.i, label %16, label %_str_2_job_flags.exit + br i1 %.not7.i, label %_str_2_job_flags.exit, label %_str_2_job_flags.exit.thread -16: ; preds = %14 - %17 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.215) #19 - %.not8.i = icmp eq ptr %17, null +_str_2_job_flags.exit: ; preds = %14 + %16 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.215) #19 + %.not8.i = icmp eq ptr %16, null %..i = select i1 %.not8.i, i32 1, i32 16 - br label %_str_2_job_flags.exit + %17 = and i32 %..i, 1 + %.not12 = icmp eq i32 %17, 0 + br i1 %.not12, label %_str_2_job_flags.exit.thread, label %18 -_str_2_job_flags.exit: ; preds = %.lr.ph, %10, %12, %14, %16 - %.0.i = phi i32 [ 0, %.lr.ph ], [ 2, %10 ], [ 4, %12 ], [ 8, %14 ], [ %..i, %16 ] - %18 = or i32 %.0.i, %.0816 - %19 = and i32 %18, 1 - %.not12 = icmp eq i32 %19, 0 - br i1 %.not12, label %22, label %20 - -20: ; preds = %_str_2_job_flags.exit - %21 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.str_2_job_flags, ptr noundef nonnull %.017) #19 +18: ; preds = %_str_2_job_flags.exit + %19 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.str_2_job_flags, ptr noundef nonnull %.017) #19 call void @slurm_xfree(ptr noundef nonnull %2) #19 - br label %24 + br label %22 -22: ; preds = %_str_2_job_flags.exit - %23 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.13, ptr noundef nonnull %3) #19 - %.not11 = icmp eq ptr %23, null +_str_2_job_flags.exit.thread: ; preds = %14, %12, %10, %.lr.ph, %_str_2_job_flags.exit + %.0.i23 = phi i32 [ %..i, %_str_2_job_flags.exit ], [ 8, %14 ], [ 4, %12 ], [ 2, %10 ], [ 0, %.lr.ph ] + %20 = or i32 %.0.i23, %.0816 + %21 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.13, ptr noundef nonnull %3) #19 + %.not11 = icmp eq ptr %21, null br i1 %.not11, label %._crit_edge, label %.lr.ph, !llvm.loop !21 -._crit_edge: ; preds = %22, %6 - %.08.lcssa = phi i32 [ 0, %6 ], [ %18, %22 ] +._crit_edge: ; preds = %_str_2_job_flags.exit.thread, %6 + %.08.lcssa = phi i32 [ 0, %6 ], [ %20, %_str_2_job_flags.exit.thread ] call void @slurm_xfree(ptr noundef nonnull %2) #19 - br label %24 + br label %22 -24: ; preds = %._crit_edge, %20, %4 - %.09 = phi i32 [ 1, %20 ], [ %.08.lcssa, %._crit_edge ], [ 0, %4 ] +22: ; preds = %._crit_edge, %18, %4 + %.09 = phi i32 [ 1, %18 ], [ %.08.lcssa, %._crit_edge ], [ 0, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.09 diff --git a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll index 094465738d4..df04487bbad 100644 --- a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll +++ b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll @@ -24,8 +24,8 @@ define noundef i16 @"_ZN9softposit7quire167convert43_$LT$impl$u20$softposit..qui %.not65 = icmp sgt i128 %2, -1 br i1 %.not65, label %6, label %11 -5: ; preds = %1, %3, %74 - %.0 = phi i16 [ %.0.i, %74 ], [ -32768, %3 ], [ 0, %1 ] +5: ; preds = %1, %3, %.thread98 + %.0 = phi i16 [ %.0.i, %.thread98 ], [ -32768, %3 ], [ 0, %1 ] ret i16 %.0 6: ; preds = %13, %4 @@ -94,6 +94,7 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %.sroa.51.0.in.i = phi i8 [ %30, %29 ], [ %24, %23 ] %.sroa.0.0.i = phi i16 [ %33, %29 ], [ %28, %23 ] %.sroa.51.0.insert.ext.i = zext nneg i8 %.sroa.51.0.in.i to i64 + %.sroa.6.0.extract.trunc = zext nneg i8 %.sroa.51.0.in.i to i16 %34 = icmp samesign ugt i8 %.sroa.51.0.in.i, 14 br i1 %34, label %50, label %47 @@ -122,58 +123,49 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = 47: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %48 = and i64 %.2, 9223372036854775807 %49 = icmp eq i8 %.sroa.51.0.in.i, 14 - br i1 %49, label %60, label %.thread89 + br i1 %49, label %51, label %53 50: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %. = select i1 %22, i16 1, i16 32767 - br label %74 - -.thread89: ; preds = %47 - %narrow = add nuw nsw i8 %.sroa.51.0.in.i, 50 - %51 = zext nneg i8 %narrow to i64 - %52 = lshr i64 %48, %51 - %53 = trunc nuw nsw i64 %52 to i16 - %54 = shl nuw i64 562949953421312, %.sroa.51.0.insert.ext.i - %55 = and i64 %54, %48 - %56 = icmp ne i64 %55, 0 - %57 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i - %58 = shl i64 %48, %57 - %59 = icmp ne i64 %58, 0 - %spec.select64 = select i1 %59, i1 true, i1 %.054 - br label %62 - -60: ; preds = %47 + br label %.thread98 + +51: ; preds = %47 %.not61 = icmp ne i64 %48, 0 %spec.select63 = select i1 %.not61, i1 true, i1 %.054 - %61 = icmp eq i8 %21, 0 - br i1 %61, label %62, label %69 - -62: ; preds = %.thread89, %60 - %.15597 = phi i1 [ %spec.select64, %.thread89 ], [ %spec.select63, %60 ] - %.056.shrunk95 = phi i1 [ %56, %.thread89 ], [ false, %60 ] - %.05794 = phi i16 [ %53, %.thread89 ], [ 0, %60 ] - %63 = zext nneg i8 %21 to i16 - %64 = zext nneg i8 %.sroa.51.0.in.i to i16 - %65 = sub nsw i16 13, %64 - %66 = shl nuw nsw i16 %63, %65 - %.049 = select i1 %49, i16 0, i16 %66 - %67 = add nuw i16 %.049, %.sroa.0.0.i - %68 = add nuw i16 %67, %.05794 - br i1 %.056.shrunk95, label %69, label %74 - -69: ; preds = %60, %62 - %.15596 = phi i1 [ %.15597, %62 ], [ %spec.select63, %60 ] - %.052 = phi i16 [ %68, %62 ], [ %.sroa.0.0.i, %60 ] - %70 = and i16 %.052, 1 - %71 = zext i1 %.15596 to i16 - %72 = or i16 %70, %71 - %73 = add nuw i16 %72, %.052 - br label %74 - -74: ; preds = %50, %62, %69 - %.153 = phi i16 [ %73, %69 ], [ %68, %62 ], [ %., %50 ] - %75 = sub i16 0, %.153 - %.0.i = select i1 %.not65, i16 %.153, i16 %75 + %52 = icmp eq i8 %21, 0 + br i1 %52, label %.thread98, label %67 + +53: ; preds = %47 + %54 = add nuw nsw i64 %.sroa.51.0.insert.ext.i, 50 + %55 = lshr i64 %48, %54 + %56 = trunc nuw nsw i64 %55 to i16 + %57 = shl nuw i64 562949953421312, %.sroa.51.0.insert.ext.i + %58 = and i64 %57, %48 + %.not = icmp eq i64 %58, 0 + %59 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i + %60 = shl i64 %48, %59 + %61 = icmp ne i64 %60, 0 + %spec.select64 = select i1 %61, i1 true, i1 %.054 + %62 = zext nneg i8 %21 to i16 + %63 = sub nsw i16 13, %.sroa.6.0.extract.trunc + %64 = shl nuw nsw i16 %62, %63 + %65 = add nuw i16 %64, %.sroa.0.0.i + %66 = add nuw i16 %65, %56 + br i1 %.not, label %.thread98, label %67 + +67: ; preds = %51, %53 + %.15596 = phi i1 [ %spec.select64, %53 ], [ %spec.select63, %51 ] + %.052 = phi i16 [ %66, %53 ], [ %.sroa.0.0.i, %51 ] + %68 = and i16 %.052, 1 + %69 = zext i1 %.15596 to i16 + %70 = or i16 %68, %69 + %71 = add nuw i16 %70, %.052 + br label %.thread98 + +.thread98: ; preds = %51, %50, %53, %67 + %.153 = phi i16 [ %71, %67 ], [ %66, %53 ], [ %., %50 ], [ %.sroa.0.0.i, %51 ] + %72 = sub i16 0, %.153 + %.0.i = select i1 %.not65, i16 %.153, i16 %72 br label %5 } diff --git a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll index 3a1f91a5b3e..ad6d6060d8a 100644 --- a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll +++ b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll @@ -3453,96 +3453,95 @@ _ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60: ; preds %spec.select = add i8 %.211.i, %17 %44 = xor i8 %17, 1 %45 = lshr exact i32 %43, 1 - br label %54 + br label %53 46: ; preds = %_ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60 %47 = sub nsw i16 %40, %32 %48 = icmp ugt i16 %47, 31 - %49 = and i16 %47, 31 - %50 = zext nneg i16 %49 to i32 - %51 = lshr i32 %35, %50 - %.043 = select i1 %48, i32 0, i32 %51 - %52 = add nuw i32 %.043, %20 - %53 = icmp sgt i32 %52, -1 - br i1 %53, label %54, label %68 - -54: ; preds = %46, %68, %42 - %.044 = phi i32 [ %45, %42 ], [ %52, %46 ], [ %70, %68 ] - %.141 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %68 ] - %.039 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %69, %68 ] - %55 = icmp slt i8 %.141, 0 - br i1 %55, label %62, label %56 - -56: ; preds = %54 - %57 = add nuw i8 %.141, 1 - %58 = and i8 %57, 15 - %59 = zext nneg i8 %58 to i16 - %60 = lshr i16 32767, %59 - %61 = xor i16 %60, 32767 + %49 = zext nneg i16 %47 to i32 + %50 = lshr i32 %35, %49 + %.043 = select i1 %48, i32 0, i32 %50 + %51 = add nuw i32 %.043, %20 + %52 = icmp sgt i32 %51, -1 + br i1 %52, label %53, label %67 + +53: ; preds = %46, %67, %42 + %.044 = phi i32 [ %45, %42 ], [ %51, %46 ], [ %69, %67 ] + %.141 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %67 ] + %.039 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %68, %67 ] + %54 = icmp slt i8 %.141, 0 + br i1 %54, label %61, label %55 + +55: ; preds = %53 + %56 = add nuw i8 %.141, 1 + %57 = and i8 %56, 15 + %58 = zext nneg i8 %57 to i16 + %59 = lshr i16 32767, %58 + %60 = xor i16 %59, 32767 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -62: ; preds = %54 - %63 = sub i8 0, %.141 - %64 = and i8 %63, 15 - %65 = zext nneg i8 %64 to i16 - %66 = lshr i16 16384, %65 +61: ; preds = %53 + %62 = sub i8 0, %.141 + %63 = and i8 %62, 15 + %64 = zext nneg i8 %63 to i16 + %65 = lshr i16 16384, %64 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %56, %62 - %.sroa.51.0.in.i = phi i8 [ %63, %62 ], [ %57, %56 ] - %.sroa.0.0.i = phi i16 [ %66, %62 ], [ %61, %56 ] - %67 = icmp ugt i8 %.sroa.51.0.in.i, 14 - br i1 %67, label %95, label %71 +_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %55, %61 + %.sroa.51.0.in.i = phi i8 [ %62, %61 ], [ %56, %55 ] + %.sroa.0.0.i = phi i16 [ %65, %61 ], [ %60, %55 ] + %66 = icmp ugt i8 %.sroa.51.0.in.i, 14 + br i1 %66, label %94, label %70 -68: ; preds = %46 +67: ; preds = %46 %spec.select46 = add i8 %.211.i, %17 - %69 = xor i8 %17, 1 - %70 = lshr i32 %52, 1 - br label %54 + %68 = xor i8 %17, 1 + %69 = lshr i32 %51, 1 + br label %53 -71: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit - %72 = and i32 %.044, 1073741823 +70: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit + %71 = and i32 %.044, 1073741823 %narrow = add nuw nsw i8 %.sroa.51.0.in.i, 1 - %73 = zext nneg i8 %narrow to i32 - %74 = lshr i32 %72, %73 - %75 = lshr i32 %74, 16 - %76 = trunc nuw nsw i32 %75 to i16 - %77 = icmp eq i8 %.sroa.51.0.in.i, 14 - %78 = icmp ne i8 %.039, 0 - %79 = and i32 %74, 32768 - %80 = icmp ne i32 %79, 0 - %.08.i = select i1 %77, i1 %78, i1 %80 - %.1.i = select i1 %77, i16 0, i16 %76 - %81 = zext nneg i8 %.039 to i16 - %82 = sub nsw i8 13, %.sroa.51.0.in.i - %83 = and i8 %82, 15 - %84 = zext nneg i8 %83 to i16 - %85 = shl nuw i16 %81, %84 - %.011.i = select i1 %77, i16 0, i16 %85 - %86 = add nuw i16 %.011.i, %.sroa.0.0.i - %87 = add i16 %86, %.1.i - br i1 %.08.i, label %88, label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" - -88: ; preds = %71 - %.not.i = icmp ne i32 %74, 0 - %.110.i = and i1 %77, %.not.i - %89 = and i32 %74, 32767 - %90 = icmp ne i32 %89, 0 - %spec.select13.i = or i1 %90, %.110.i - %91 = and i16 %87, 1 - %92 = zext i1 %spec.select13.i to i16 - %93 = or i16 %91, %92 - %94 = add i16 %93, %87 + %72 = zext nneg i8 %narrow to i32 + %73 = lshr i32 %71, %72 + %74 = lshr i32 %73, 16 + %75 = trunc nuw nsw i32 %74 to i16 + %76 = icmp eq i8 %.sroa.51.0.in.i, 14 + %77 = icmp ne i8 %.039, 0 + %78 = and i32 %73, 32768 + %79 = icmp ne i32 %78, 0 + %.08.i = select i1 %76, i1 %77, i1 %79 + %.1.i = select i1 %76, i16 0, i16 %75 + %80 = zext nneg i8 %.039 to i16 + %81 = sub nsw i8 13, %.sroa.51.0.in.i + %82 = and i8 %81, 15 + %83 = zext nneg i8 %82 to i16 + %84 = shl nuw i16 %80, %83 + %.011.i = select i1 %76, i16 0, i16 %84 + %85 = add nuw i16 %.011.i, %.sroa.0.0.i + %86 = add i16 %85, %.1.i + br i1 %.08.i, label %87, label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" + +87: ; preds = %70 + %.not.i = icmp ne i32 %73, 0 + %.110.i = and i1 %76, %.not.i + %88 = and i32 %73, 32767 + %89 = icmp ne i32 %88, 0 + %spec.select13.i = or i1 %89, %.110.i + %90 = and i16 %86, 1 + %91 = zext i1 %spec.select13.i to i16 + %92 = or i16 %90, %91 + %93 = add i16 %92, %86 br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" -95: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit - %. = select i1 %55, i16 1, i16 32767 +94: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit + %. = select i1 %54, i16 1, i16 32767 br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" -"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit": ; preds = %88, %71, %95 - %.042 = phi i16 [ %., %95 ], [ %94, %88 ], [ %87, %71 ] - %96 = sub i16 0, %.042 - %.0.i61 = select i1 %3, i16 %.042, i16 %96 +"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit": ; preds = %87, %70, %94 + %.042 = phi i16 [ %., %94 ], [ %93, %87 ], [ %86, %70 ] + %95 = sub i16 0, %.042 + %.0.i61 = select i1 %3, i16 %.042, i16 %95 ret i16 %.0.i61 } diff --git a/bench/sqlite/optimized/shell.ll b/bench/sqlite/optimized/shell.ll index d708840926f..2e66facb966 100644 --- a/bench/sqlite/optimized/shell.ll +++ b/bench/sqlite/optimized/shell.ll @@ -5393,8 +5393,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re 17: ; preds = %14, %17 %indvars.iv = phi i64 [ 0, %14 ], [ %indvars.iv.next, %17 ] - %.079108 = phi i64 [ 0, %14 ], [ %22, %17 ] - %18 = shl i64 %.079108, 8 + %.079107 = phi i64 [ 0, %14 ], [ %22, %17 ] + %18 = shl i64 %.079107, 8 %19 = getelementptr inbounds nuw i8, ptr %16, i64 %indvars.iv %20 = load i8, ptr %19, align 1, !tbaa !25 %21 = zext i8 %20 to i64 @@ -5432,23 +5432,23 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re %40 = icmp slt i64 %34, 1075 %41 = and i64 %.1, 1 %42 = icmp eq i64 %41, 0 - %or.cond97109 = select i1 %40, i1 %42, i1 false - br i1 %or.cond97109, label %.lr.ph113, label %.critedge - -.lr.ph113: ; preds = %33, %.lr.ph113 - %.2111 = phi i64 [ %43, %.lr.ph113 ], [ %.1, %33 ] - %.185110 = phi i32 [ %44, %.lr.ph113 ], [ %35, %33 ] - %43 = lshr exact i64 %.2111, 1 - %44 = add nsw i32 %.185110, 1 - %45 = icmp slt i32 %.185110, 1074 - %46 = and i64 %.2111, 2 + %or.cond108 = select i1 %40, i1 %42, i1 false + br i1 %or.cond108, label %.lr.ph112, label %.critedge + +.lr.ph112: ; preds = %33, %.lr.ph112 + %.2110 = phi i64 [ %43, %.lr.ph112 ], [ %.1, %33 ] + %.185109 = phi i32 [ %44, %.lr.ph112 ], [ %35, %33 ] + %43 = lshr exact i64 %.2110, 1 + %44 = add nsw i32 %.185109, 1 + %45 = icmp slt i32 %.185109, 1074 + %46 = and i64 %.2110, 2 %47 = icmp eq i64 %46, 0 - %or.cond97 = select i1 %45, i1 %47, i1 false - br i1 %or.cond97, label %.lr.ph113, label %.critedge, !llvm.loop !93 + %or.cond = select i1 %45, i1 %47, i1 false + br i1 %or.cond, label %.lr.ph112, label %.critedge, !llvm.loop !93 -.critedge: ; preds = %.lr.ph113, %33 - %.185.lcssa = phi i32 [ %35, %33 ], [ %44, %.lr.ph113 ] - %.2.lcssa = phi i64 [ %.1, %33 ], [ %43, %.lr.ph113 ] +.critedge: ; preds = %.lr.ph112, %33 + %.185.lcssa = phi i32 [ %35, %33 ], [ %44, %.lr.ph112 ] + %.2.lcssa = phi i64 [ %.1, %33 ], [ %43, %.lr.ph112 ] br i1 %29, label %50, label %48 48: ; preds = %.critedge @@ -5513,36 +5513,36 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re 74: ; preds = %67, %69 %.075 = phi i64 [ %68, %67 ], [ %62, %69 ] - %.not98 = icmp samesign ult i64 %.075, 9007199254740992 - br i1 %.not98, label %.preheader, label %.lr.ph + %.not97 = icmp samesign ult i64 %.075, 9007199254740992 + br i1 %.not97, label %.preheader, label %.lr.ph .preheader: ; preds = %.lr.ph, %74 %.176.lcssa = phi i64 [ %.075, %74 ], [ %77, %.lr.ph ] %.173.lcssa = phi i64 [ %.072, %74 ], [ %78, %.lr.ph ] %75 = add nsw i64 %.176.lcssa, -1 %76 = icmp ult i64 %75, 4503599627370495 - br i1 %76, label %.lr.ph104, label %._crit_edge + br i1 %76, label %.lr.ph103, label %._crit_edge .lr.ph: ; preds = %74, %.lr.ph - %.173100 = phi i64 [ %78, %.lr.ph ], [ %.072, %74 ] - %.17699 = phi i64 [ %77, %.lr.ph ], [ %.075, %74 ] - %77 = lshr i64 %.17699, 1 - %78 = add nsw i64 %.173100, 1 - %.not = icmp ult i64 %.17699, 18014398509481984 + %.17399 = phi i64 [ %78, %.lr.ph ], [ %.072, %74 ] + %.17698 = phi i64 [ %77, %.lr.ph ], [ %.075, %74 ] + %77 = lshr i64 %.17698, 1 + %78 = add nsw i64 %.17399, 1 + %.not = icmp ult i64 %.17698, 18014398509481984 br i1 %.not, label %.preheader, label %.lr.ph, !llvm.loop !94 -.lr.ph104: ; preds = %.preheader, %.lr.ph104 - %.274103 = phi i64 [ %80, %.lr.ph104 ], [ %.173.lcssa, %.preheader ] - %.277102 = phi i64 [ %79, %.lr.ph104 ], [ %.176.lcssa, %.preheader ] - %79 = shl nuw nsw i64 %.277102, 1 - %80 = add nsw i64 %.274103, -1 +.lr.ph103: ; preds = %.preheader, %.lr.ph103 + %.274102 = phi i64 [ %80, %.lr.ph103 ], [ %.173.lcssa, %.preheader ] + %.277101 = phi i64 [ %79, %.lr.ph103 ], [ %.176.lcssa, %.preheader ] + %79 = shl nuw nsw i64 %.277101, 1 + %80 = add nsw i64 %.274102, -1 %81 = add nsw i64 %79, -1 %82 = icmp samesign ult i64 %81, 4503599627370495 - br i1 %82, label %.lr.ph104, label %._crit_edge, !llvm.loop !95 + br i1 %82, label %.lr.ph103, label %._crit_edge, !llvm.loop !95 -._crit_edge: ; preds = %.lr.ph104, %.preheader - %.277.lcssa = phi i64 [ %.176.lcssa, %.preheader ], [ %79, %.lr.ph104 ] - %.274.lcssa = phi i64 [ %.173.lcssa, %.preheader ], [ %80, %.lr.ph104 ] +._crit_edge: ; preds = %.lr.ph103, %.preheader + %.277.lcssa = phi i64 [ %.176.lcssa, %.preheader ], [ %79, %.lr.ph103 ] + %.274.lcssa = phi i64 [ %.173.lcssa, %.preheader ], [ %80, %.lr.ph103 ] %83 = icmp slt i64 %.274.lcssa, -1074 br i1 %83, label %84, label %88 @@ -33877,19 +33877,19 @@ define internal fastcc ptr @decimalFromDouble(double noundef %0) unnamed_addr #1 %14 = icmp slt i64 %8, 1075 %15 = and i64 %.129, 1 %16 = icmp eq i64 %15, 0 - %or.cond3536 = select i1 %14, i1 %16, i1 false - br i1 %or.cond3536, label %.lr.ph, label %.critedge + %or.cond35 = select i1 %14, i1 %16, i1 false + br i1 %or.cond35, label %.lr.ph, label %.critedge .lr.ph: ; preds = %7, %.lr.ph - %.138 = phi i32 [ %18, %.lr.ph ], [ %9, %7 ] - %.237 = phi i64 [ %17, %.lr.ph ], [ %.129, %7 ] - %17 = lshr exact i64 %.237, 1 - %18 = add nsw i32 %.138, 1 - %19 = icmp slt i32 %.138, 1074 - %20 = and i64 %.237, 2 + %.137 = phi i32 [ %18, %.lr.ph ], [ %9, %7 ] + %.236 = phi i64 [ %17, %.lr.ph ], [ %.129, %7 ] + %17 = lshr exact i64 %.236, 1 + %18 = add nsw i32 %.137, 1 + %19 = icmp slt i32 %.137, 1074 + %20 = and i64 %.236, 2 %21 = icmp eq i64 %20, 0 - %or.cond35 = select i1 %19, i1 %21, i1 false - br i1 %or.cond35, label %.lr.ph, label %.critedge, !llvm.loop !704 + %or.cond = select i1 %19, i1 %21, i1 false + br i1 %or.cond, label %.lr.ph, label %.critedge, !llvm.loop !704 .critedge: ; preds = %.lr.ph, %7 %.2.lcssa = phi i64 [ %.129, %7 ], [ %17, %.lr.ph ] diff --git a/bench/sundials/optimized/cvodea.ll b/bench/sundials/optimized/cvodea.ll index 4e3208712f2..05e6f1723e3 100644 --- a/bench/sundials/optimized/cvodea.ll +++ b/bench/sundials/optimized/cvodea.ll @@ -4529,7 +4529,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 48 %21 = load ptr, ptr %20, align 8, !tbaa !40 - %.fr285 = freeze ptr %21 + %.fr262 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !43 %.not = icmp eq i32 %23, 0 @@ -4542,44 +4542,44 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !60 - %.fr283 = freeze double %27 + %.fr260 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !61 - %.fr284 = freeze double %28 - %29 = fcmp ogt double %.fr283, %.fr284 + %.fr261 = freeze double %28 + %29 = fcmp ogt double %.fr260, %.fr261 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 72 %32 = load i32, ptr %31, align 8, !tbaa !45 %.not147 = icmp eq i32 %32, 0 - br i1 %.not147, label %72, label %.preheader171 + br i1 %.not147, label %72, label %.preheader170 -.preheader171: ; preds = %25 - %.not148181 = icmp eq ptr %.fr285, null - br i1 %.not148181, label %._crit_edge, label %.lr.ph +.preheader170: ; preds = %25 + %.not148177 = icmp eq ptr %.fr262, null + br i1 %.not148177, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader171 +.lr.ph: ; preds = %.preheader170 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 188 br label %35 35: ; preds = %.lr.ph, %62 - %.0135182 = phi ptr [ %.fr285, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0135182, i64 16 + %.0135178 = phi ptr [ %.fr262, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0135178, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !94 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1032 %39 = load double, ptr %38, align 8, !tbaa !72 - %40 = fsub double %39, %.fr284 + %40 = fsub double %39, %.fr261 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr283, %39 + %44 = fsub double %.fr260, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0135182, align 8, !tbaa !141 + %48 = load i32, ptr %.0135178, align 8, !tbaa !141 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -104, i32 noundef 1433, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.13, i32 noundef %48) #9 br label %.critedge163 @@ -4590,18 +4590,18 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0135182, align 8, !tbaa !141 + %54 = load i32, ptr %.0135178, align 8, !tbaa !141 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -22, i32 noundef 1441, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.14, i32 noundef %54) #9 br label %.critedge163 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0135182, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0135178, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !143 %.not159 = icmp eq i32 %57, 0 br i1 %.not159, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0135182, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0135178, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !148 %.not160 = icmp eq i32 %60, 0 br i1 %.not160, label %62, label %61 @@ -4611,12 +4611,12 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0135182, i64 120 + %63 = getelementptr inbounds nuw i8, ptr %.0135178, i64 120 %64 = load ptr, ptr %63, align 8, !tbaa !90 %.not148 = icmp eq ptr %64, null br i1 %.not148, label %._crit_edge, label %35 -._crit_edge: ; preds = %62, %.preheader171 +._crit_edge: ; preds = %62, %.preheader170 %65 = getelementptr inbounds nuw i8, ptr %14, i64 188 %66 = load i32, ptr %65, align 4, !tbaa !39 %.not149 = icmp eq i32 %66, 0 @@ -4647,13 +4647,13 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr284 + %77 = fsub double %1, %.fr261 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr283, %1 + %81 = fsub double %.fr260, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %94, label %95 @@ -4662,8 +4662,8 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 %86 = load double, ptr %85, align 8, !tbaa !65 %87 = fmul double %86, 1.000000e+02 - %88 = tail call double @llvm.fabs.f64(double %.fr284) - %89 = tail call double @llvm.fabs.f64(double %.fr283) + %88 = tail call double @llvm.fabs.f64(double %.fr261) + %89 = tail call double @llvm.fabs.f64(double %.fr260) %90 = fadd double %89, %88 %91 = fmul double %90, %87 %92 = tail call double @llvm.fabs.f64(double %77) @@ -4675,11 +4675,11 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.critedge163 95: ; preds = %84, %80 - %.0132 = phi double [ %1, %80 ], [ %.fr284, %84 ] + %.0132 = phi double [ %1, %80 ], [ %.fr261, %84 ] %96 = getelementptr inbounds nuw i8, ptr %14, i64 80 %97 = load ptr, ptr %96, align 8, !tbaa !20 - %.not151183 = icmp eq ptr %.fr285, null - br i1 %.not151183, label %.critedge.us, label %.split + %.not151179 = icmp eq ptr %.fr262, null + br i1 %.not151179, label %.critedge.us, label %.split .critedge.us: ; preds = %95, %.critedge.us %.0133.us = phi ptr [ %99, %.critedge.us ], [ %97, %95 ] @@ -4693,24 +4693,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %102 = icmp eq i32 %2, 2 %103 = load ptr, ptr %101, align 8, !tbaa !26 %.not153.us.us = icmp eq ptr %.0133.us, %103 - br i1 %102, label %.split222.us.split.us, label %.split222.us.split.split.us + br i1 %102, label %.split217.us.split.us, label %.split217.us.split.split.us .split: ; preds = %95 %104 = icmp eq i32 %2, 1 - br i1 %104, label %.lr.ph186.us, label %.lr.ph186 + br i1 %104, label %.lr.ph182.us, label %.lr.ph182 -.lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 - %.0133.us197 = phi ptr [ %121, %..critedge_crit_edge.split.us203 ], [ %97, %.split ] - %105 = load double, ptr %.0133.us197, align 8, !tbaa !102 +.lr.ph182.us: ; preds = %.split, %..critedge_crit_edge.split.us199 + %.0133.us193 = phi ptr [ %121, %..critedge_crit_edge.split.us199 ], [ %97, %.split ] + %105 = load double, ptr %.0133.us193, align 8, !tbaa !102 %.fr = freeze double %105 %106 = fsub double %.0132, %.fr %107 = fmul double %106, %76 %108 = fcmp ult double %107, 0.000000e+00 - br i1 %108, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 + br i1 %108, label %.lr.ph182.split.split.us.us, label %.lr.ph182.split.split.us198 -.lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %117 - %.1136184.us198 = phi ptr [ %119, %117 ], [ %.fr285, %.lr.ph186.us ] - %109 = getelementptr inbounds nuw i8, ptr %.1136184.us198, i64 16 +.lr.ph182.split.split.us198: ; preds = %.lr.ph182.us, %117 + %.1136180.us194 = phi ptr [ %119, %117 ], [ %.fr262, %.lr.ph182.us ] + %109 = getelementptr inbounds nuw i8, ptr %.1136180.us194, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !94 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1032 %112 = load double, ptr %111, align 8, !tbaa !72 @@ -4718,24 +4718,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %114 = fmul double %113, %76 %115 = fcmp ogt double %114, 0.000000e+00 %116 = fcmp oeq double %112, %.fr - %or.cond281 = or i1 %115, %116 - br i1 %or.cond281, label %.loopexit, label %117 + %or.cond258 = or i1 %115, %116 + br i1 %or.cond258, label %.loopexit, label %117 -117: ; preds = %.lr.ph186.split.split.us202 - %118 = getelementptr inbounds nuw i8, ptr %.1136184.us198, i64 120 +117: ; preds = %.lr.ph182.split.split.us198 + %118 = getelementptr inbounds nuw i8, ptr %.1136180.us194, i64 120 %119 = load ptr, ptr %118, align 8, !tbaa !90 - %.not151.us199 = icmp eq ptr %119, null - br i1 %.not151.us199, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us202 + %.not151.us195 = icmp eq ptr %119, null + br i1 %.not151.us195, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us198 -..critedge_crit_edge.split.us203: ; preds = %117, %130 - %120 = getelementptr inbounds nuw i8, ptr %.0133.us197, i64 816 +..critedge_crit_edge.split.us199: ; preds = %117, %130 + %120 = getelementptr inbounds nuw i8, ptr %.0133.us193, i64 816 %121 = load ptr, ptr %120, align 8, !tbaa !82 %122 = icmp eq ptr %121, null - br i1 %122, label %.loopexit, label %.lr.ph186.us + br i1 %122, label %.loopexit, label %.lr.ph182.us -.lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %130 - %.1136184.us187.us = phi ptr [ %132, %130 ], [ %.fr285, %.lr.ph186.us ] - %123 = getelementptr inbounds nuw i8, ptr %.1136184.us187.us, i64 16 +.lr.ph182.split.split.us.us: ; preds = %.lr.ph182.us, %130 + %.1136180.us183.us = phi ptr [ %132, %130 ], [ %.fr262, %.lr.ph182.us ] + %123 = getelementptr inbounds nuw i8, ptr %.1136180.us183.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !94 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1032 %126 = load double, ptr %125, align 8, !tbaa !72 @@ -4744,20 +4744,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %129 = fcmp ogt double %128, 0.000000e+00 br i1 %129, label %.loopexit, label %130 -130: ; preds = %.lr.ph186.split.split.us.us - %131 = getelementptr inbounds nuw i8, ptr %.1136184.us187.us, i64 120 +130: ; preds = %.lr.ph182.split.split.us.us + %131 = getelementptr inbounds nuw i8, ptr %.1136180.us183.us, i64 120 %132 = load ptr, ptr %131, align 8, !tbaa !90 - %.not151.us188.us = icmp eq ptr %132, null - br i1 %.not151.us188.us, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us.us + %.not151.us184.us = icmp eq ptr %132, null + br i1 %.not151.us184.us, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us.us -.lr.ph186: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph182: ; preds = %.split, %..critedge_crit_edge.split.us %.0133 = phi ptr [ %146, %..critedge_crit_edge.split.us ], [ %97, %.split ] %133 = load double, ptr %.0133, align 8, !tbaa !102 br label %134 -134: ; preds = %142, %.lr.ph186 - %.1136184.us = phi ptr [ %.fr285, %.lr.ph186 ], [ %144, %142 ] - %135 = getelementptr inbounds nuw i8, ptr %.1136184.us, i64 16 +134: ; preds = %142, %.lr.ph182 + %.1136180.us = phi ptr [ %.fr262, %.lr.ph182 ], [ %144, %142 ] + %135 = getelementptr inbounds nuw i8, ptr %.1136180.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !94 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1032 %138 = load double, ptr %137, align 8, !tbaa !72 @@ -4767,7 +4767,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %141, label %.loopexit, label %142 142: ; preds = %134 - %143 = getelementptr inbounds nuw i8, ptr %.1136184.us, i64 120 + %143 = getelementptr inbounds nuw i8, ptr %.1136180.us, i64 120 %144 = load ptr, ptr %143, align 8, !tbaa !90 %.not151.us = icmp eq ptr %144, null br i1 %.not151.us, label %..critedge_crit_edge.split.us, label %134 @@ -4776,100 +4776,100 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %145 = getelementptr inbounds nuw i8, ptr %.0133, i64 816 %146 = load ptr, ptr %145, align 8, !tbaa !82 %147 = icmp eq ptr %146, null - br i1 %147, label %.loopexit, label %.lr.ph186 + br i1 %147, label %.loopexit, label %.lr.ph182 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us - %.0133178 = phi ptr [ %.0133.us197, %.lr.ph186.split.split.us.us ], [ %.0133.us197, %.lr.ph186.split.split.us202 ], [ %.0133.us197, %..critedge_crit_edge.split.us203 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us199, %.lr.ph182.split.split.us198, %.lr.ph182.split.split.us.us + %.0133174 = phi ptr [ %.0133.us193, %.lr.ph182.split.split.us.us ], [ %.0133.us193, %.lr.ph182.split.split.us198 ], [ %.0133.us193, %..critedge_crit_edge.split.us199 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 96 %149 = getelementptr inbounds nuw i8, ptr %14, i64 64 %150 = icmp eq i32 %2, 2 - br i1 %150, label %.split222.split.us, label %.split222.split.split + br i1 %150, label %.split217.split.us, label %.split217.split.split -.split222.us.split.us: ; preds = %.loopexit.thread +.split217.us.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %151 -151: ; preds = %.split222.us.split.us +151: ; preds = %.split217.us.split.us %152 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split222.us.split.split.us: ; preds = %.loopexit.thread +.split217.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %153 -153: ; preds = %.split222.us.split.split.us +153: ; preds = %.split217.us.split.split.us %154 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split222.split.us: ; preds = %.loopexit +.split217.split.us: ; preds = %.loopexit %155 = load ptr, ptr %148, align 8, !tbaa !26 - %.not153.us229 = icmp eq ptr %.0133178, %155 - br i1 %.not153.us229, label %.lr.ph214.us.preheader, label %156 + %.not153.us222 = icmp eq ptr %.0133174, %155 + br i1 %.not153.us222, label %.lr.ph210.us.preheader, label %156 -156: ; preds = %.split222.split.us - %157 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133178) - %.not154.us230 = icmp eq i32 %157, 0 - br i1 %.not154.us230, label %.lr.ph214.us.preheader, label %.critedge163 +156: ; preds = %.split217.split.us + %157 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133174) + %.not154.us223 = icmp eq i32 %157, 0 + br i1 %.not154.us223, label %.lr.ph210.us.preheader, label %.critedge163 -.lr.ph214.us.preheader: ; preds = %156, %.split222.split.us - br label %.lr.ph214.us +.lr.ph210.us.preheader: ; preds = %156, %.split217.split.us + br label %.lr.ph210.us -.lr.ph214.us: ; preds = %.lr.ph214.us.preheader, %178 - %.2137212.us = phi ptr [ %180, %178 ], [ %.fr285, %.lr.ph214.us.preheader ] - %158 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 16 +.lr.ph210.us: ; preds = %.lr.ph210.us.preheader, %178 + %.2137208.us = phi ptr [ %180, %178 ], [ %.fr262, %.lr.ph210.us.preheader ] + %158 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !94 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1032 %161 = load double, ptr %160, align 8, !tbaa !72 - %162 = load double, ptr %.0133178, align 8, !tbaa !102 + %162 = load double, ptr %.0133174, align 8, !tbaa !102 %163 = fcmp oeq double %161, %162 br i1 %163, label %.thread, label %164 -164: ; preds = %.lr.ph214.us +164: ; preds = %.lr.ph210.us %165 = fsub double %161, %162 %166 = fmul double %165, %76 %167 = fcmp olt double %166, 0.000000e+00 br i1 %167, label %.thread, label %168 168: ; preds = %164 - store ptr %.2137212.us, ptr %149, align 8, !tbaa !41 + store ptr %.2137208.us, ptr %149, align 8, !tbaa !41 %169 = call i32 @CVodeSetStopTime(ptr noundef nonnull %159, double noundef %162) #9 %170 = load ptr, ptr %158, align 8, !tbaa !94 - %171 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 112 + %171 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 112 %172 = load ptr, ptr %171, align 8, !tbaa !98 %173 = call i32 @CVode(ptr noundef %170, double noundef %.0132, ptr noundef %172, ptr noundef nonnull %4, i32 noundef 2) #9 %174 = load double, ptr %4, align 8, !tbaa !67 - %175 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 104 + %175 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 104 store double %174, ptr %175, align 8, !tbaa !151 %176 = icmp slt i32 %173, 0 br i1 %176, label %.thread164, label %178 -.thread: ; preds = %.lr.ph214.us, %164 - %177 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 104 +.thread: ; preds = %.lr.ph210.us, %164 + %177 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 104 store double %161, ptr %177, align 8, !tbaa !151 br label %178 178: ; preds = %.thread, %168 %.5.us = phi i32 [ %173, %168 ], [ 0, %.thread ] - %179 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 120 + %179 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 120 %180 = load ptr, ptr %179, align 8, !tbaa !90 %.not155.us = icmp eq ptr %180, null - br i1 %.not155.us, label %.critedge163, label %.lr.ph214.us + br i1 %.not155.us, label %.critedge163, label %.lr.ph210.us -.split222.split.split: ; preds = %.loopexit, %220 - %.1134 = phi ptr [ %222, %220 ], [ %.0133178, %.loopexit ] +.split217.split.split: ; preds = %.loopexit, %220 + %.1134 = phi ptr [ %222, %220 ], [ %.0133174, %.loopexit ] %181 = load ptr, ptr %148, align 8, !tbaa !26 %.not153 = icmp eq ptr %.1134, %181 - br i1 %.not153, label %.lr.ph214.preheader, label %182 + br i1 %.not153, label %.lr.ph210.preheader, label %182 -182: ; preds = %.split222.split.split +182: ; preds = %.split217.split.split %183 = call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.1134) %.not154 = icmp eq i32 %183, 0 - br i1 %.not154, label %.lr.ph214.preheader, label %.critedge163 + br i1 %.not154, label %.lr.ph210.preheader, label %.critedge163 -.lr.ph214.preheader: ; preds = %182, %.split222.split.split - br label %.lr.ph214 +.lr.ph210.preheader: ; preds = %182, %.split217.split.split + br label %.lr.ph210 -.lr.ph214: ; preds = %.lr.ph214.preheader, %208 - %.2137212 = phi ptr [ %210, %208 ], [ %.fr285, %.lr.ph214.preheader ] - %184 = getelementptr inbounds nuw i8, ptr %.2137212, i64 16 +.lr.ph210: ; preds = %.lr.ph210.preheader, %208 + %.2137208 = phi ptr [ %210, %208 ], [ %.fr262, %.lr.ph210.preheader ] + %184 = getelementptr inbounds nuw i8, ptr %.2137208, i64 16 %185 = load ptr, ptr %184, align 8, !tbaa !94 %186 = getelementptr inbounds nuw i8, ptr %185, i64 1032 %187 = load double, ptr %186, align 8, !tbaa !72 @@ -4877,72 +4877,72 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %189 = fcmp oeq double %187, %188 br i1 %189, label %190, label %194 -190: ; preds = %.lr.ph214 +190: ; preds = %.lr.ph210 %191 = fsub double %.0132, %188 %192 = fmul double %191, %76 %193 = fcmp olt double %192, 0.000000e+00 - br i1 %193, label %.thread339, label %194 + br i1 %193, label %.thread316, label %194 -194: ; preds = %190, %.lr.ph214 +194: ; preds = %190, %.lr.ph210 %195 = fsub double %187, %188 %196 = fmul double %195, %76 %197 = fcmp olt double %196, 0.000000e+00 - br i1 %197, label %.thread339, label %198 + br i1 %197, label %.thread316, label %198 198: ; preds = %194 - store ptr %.2137212, ptr %149, align 8, !tbaa !41 + store ptr %.2137208, ptr %149, align 8, !tbaa !41 %199 = call i32 @CVodeSetStopTime(ptr noundef nonnull %185, double noundef %188) #9 %200 = load ptr, ptr %184, align 8, !tbaa !94 - %201 = getelementptr inbounds nuw i8, ptr %.2137212, i64 112 + %201 = getelementptr inbounds nuw i8, ptr %.2137208, i64 112 %202 = load ptr, ptr %201, align 8, !tbaa !98 %203 = call i32 @CVode(ptr noundef %200, double noundef %.0132, ptr noundef %202, ptr noundef nonnull %4, i32 noundef %2) #9 %204 = load double, ptr %4, align 8, !tbaa !67 - %205 = getelementptr inbounds nuw i8, ptr %.2137212, i64 104 + %205 = getelementptr inbounds nuw i8, ptr %.2137208, i64 104 store double %204, ptr %205, align 8, !tbaa !151 %206 = icmp slt i32 %203, 0 br i1 %206, label %.thread164, label %208 -.thread339: ; preds = %190, %194 - %207 = getelementptr inbounds nuw i8, ptr %.2137212, i64 104 +.thread316: ; preds = %190, %194 + %207 = getelementptr inbounds nuw i8, ptr %.2137208, i64 104 store double %187, ptr %207, align 8, !tbaa !151 br label %208 -208: ; preds = %198, %.thread339 - %.5 = phi i32 [ %203, %198 ], [ 0, %.thread339 ] - %209 = getelementptr inbounds nuw i8, ptr %.2137212, i64 120 +208: ; preds = %198, %.thread316 + %.5 = phi i32 [ %203, %198 ], [ 0, %.thread316 ] + %209 = getelementptr inbounds nuw i8, ptr %.2137208, i64 120 %210 = load ptr, ptr %209, align 8, !tbaa !90 %.not155 = icmp eq ptr %210, null - br i1 %.not155, label %.preheader, label %.lr.ph214 + br i1 %.not155, label %._crit_edge211, label %.lr.ph210 .thread164: ; preds = %198, %168 - %.us-phi233 = phi i32 [ %173, %168 ], [ %203, %198 ] - %.us-phi234 = phi ptr [ %.2137212.us, %168 ], [ %.2137212, %198 ] - %211 = load i32, ptr %.us-phi234, align 8, !tbaa !141 - call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi233, i32 noundef 1604, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %211) #9 + %.us-phi226 = phi i32 [ %173, %168 ], [ %203, %198 ] + %.us-phi227 = phi ptr [ %.2137208.us, %168 ], [ %.2137208, %198 ] + %211 = load i32, ptr %.us-phi227, align 8, !tbaa !141 + call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi226, i32 noundef 1604, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %211) #9 br label %.critedge163 -.preheader: ; preds = %208, %217 - %.3138218 = phi ptr [ %219, %217 ], [ %.fr285, %208 ] - %212 = getelementptr inbounds nuw i8, ptr %.3138218, i64 104 +._crit_edge211: ; preds = %208, %217 + %.3138213 = phi ptr [ %219, %217 ], [ %.fr262, %208 ] + %212 = getelementptr inbounds nuw i8, ptr %.3138213, i64 104 %213 = load double, ptr %212, align 8, !tbaa !151 %214 = fsub double %213, %.0132 %215 = fmul double %214, %76 %216 = fcmp ogt double %215, 0.000000e+00 br i1 %216, label %220, label %217 -217: ; preds = %.preheader - %218 = getelementptr inbounds nuw i8, ptr %.3138218, i64 120 +217: ; preds = %._crit_edge211 + %218 = getelementptr inbounds nuw i8, ptr %.3138213, i64 120 %219 = load ptr, ptr %218, align 8, !tbaa !90 %.not157.not = icmp eq ptr %219, null - br i1 %.not157.not, label %.critedge163, label %.preheader + br i1 %.not157.not, label %.critedge163, label %._crit_edge211 -220: ; preds = %.preheader +220: ; preds = %._crit_edge211 %221 = getelementptr inbounds nuw i8, ptr %.1134, i64 816 %222 = load ptr, ptr %221, align 8, !tbaa !82 - br label %.split222.split.split + br label %.split217.split.split -.critedge163: ; preds = %182, %217, %178, %153, %151, %.split222.us.split.us, %156, %.split222.us.split.split.us, %.thread164, %94, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi233, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split222.us.split.split.us ], [ 0, %.split222.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] +.critedge163: ; preds = %182, %217, %178, %153, %151, %.split217.us.split.us, %156, %.split217.us.split.split.us, %.thread164, %94, %74, %70, %53, %47, %24, %18, %11, %6 + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi226, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/sundials/optimized/idaa.ll b/bench/sundials/optimized/idaa.ll index 81718019852..a552f4cd92f 100644 --- a/bench/sundials/optimized/idaa.ll +++ b/bench/sundials/optimized/idaa.ll @@ -4188,7 +4188,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 48 %21 = load ptr, ptr %20, align 8, !tbaa !38 - %.fr248 = freeze ptr %21 + %.fr235 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !41 %.not = icmp eq i32 %23, 0 @@ -4201,44 +4201,44 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !58 - %.fr246 = freeze double %27 + %.fr233 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !59 - %.fr247 = freeze double %28 - %29 = fcmp ogt double %.fr246, %.fr247 + %.fr234 = freeze double %28 + %29 = fcmp ogt double %.fr233, %.fr234 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 72 %32 = load i32, ptr %31, align 8, !tbaa !43 %.not148 = icmp eq i32 %32, 0 - br i1 %.not148, label %72, label %.preheader172 + br i1 %.not148, label %72, label %.preheader171 -.preheader172: ; preds = %25 - %.not149182 = icmp eq ptr %.fr248, null - br i1 %.not149182, label %._crit_edge, label %.lr.ph +.preheader171: ; preds = %25 + %.not149178 = icmp eq ptr %.fr235, null + br i1 %.not149178, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader172 +.lr.ph: ; preds = %.preheader171 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 188 br label %35 35: ; preds = %.lr.ph, %62 - %.0134183 = phi ptr [ %.fr248, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0134183, i64 16 + %.0134179 = phi ptr [ %.fr235, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0134179, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !89 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1272 %39 = load double, ptr %38, align 8, !tbaa !98 - %40 = fsub double %39, %.fr247 + %40 = fsub double %39, %.fr234 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr246, %39 + %44 = fsub double %.fr233, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0134183, align 8, !tbaa !143 + %48 = load i32, ptr %.0134179, align 8, !tbaa !143 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -104, i32 noundef 1646, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.11, i32 noundef %48) #9 br label %.critedge164 @@ -4249,18 +4249,18 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0134183, align 8, !tbaa !143 + %54 = load i32, ptr %.0134179, align 8, !tbaa !143 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -22, i32 noundef 1654, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %54) #9 br label %.critedge164 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0134183, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0134179, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !146 %.not160 = icmp eq i32 %57, 0 br i1 %.not160, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0134183, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0134179, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !150 %.not161 = icmp eq i32 %60, 0 br i1 %.not161, label %62, label %61 @@ -4270,12 +4270,12 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0134183, i64 128 + %63 = getelementptr inbounds nuw i8, ptr %.0134179, i64 128 %64 = load ptr, ptr %63, align 8, !tbaa !85 %.not149 = icmp eq ptr %64, null br i1 %.not149, label %._crit_edge, label %35 -._crit_edge: ; preds = %62, %.preheader172 +._crit_edge: ; preds = %62, %.preheader171 %65 = getelementptr inbounds nuw i8, ptr %14, i64 188 %66 = load i32, ptr %65, align 4, !tbaa !36 %.not150 = icmp eq i32 %66, 0 @@ -4306,13 +4306,13 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr247 + %77 = fsub double %1, %.fr234 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr246, %1 + %81 = fsub double %.fr233, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %94, label %95 @@ -4321,8 +4321,8 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 %86 = load double, ptr %85, align 8, !tbaa !63 %87 = fmul double %86, 1.000000e+02 - %88 = tail call double @llvm.fabs.f64(double %.fr247) - %89 = tail call double @llvm.fabs.f64(double %.fr246) + %88 = tail call double @llvm.fabs.f64(double %.fr234) + %89 = tail call double @llvm.fabs.f64(double %.fr233) %90 = fadd double %89, %88 %91 = fmul double %90, %87 %92 = tail call double @llvm.fabs.f64(double %77) @@ -4334,11 +4334,11 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.critedge164 95: ; preds = %84, %80 - %.0130 = phi double [ %1, %80 ], [ %.fr247, %84 ] + %.0130 = phi double [ %1, %80 ], [ %.fr234, %84 ] %96 = getelementptr inbounds nuw i8, ptr %14, i64 80 %97 = load ptr, ptr %96, align 8, !tbaa !76 - %.not152184 = icmp eq ptr %.fr248, null - br i1 %.not152184, label %.critedge.us, label %.split + %.not152180 = icmp eq ptr %.fr235, null + br i1 %.not152180, label %.critedge.us, label %.split .critedge.us: ; preds = %95, %.critedge.us %.0138.us = phi ptr [ %99, %.critedge.us ], [ %97, %95 ] @@ -4352,24 +4352,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %102 = icmp eq i32 %2, 2 %103 = load ptr, ptr %101, align 8, !tbaa !112 %.not154.us.us = icmp eq ptr %.0138.us, %103 - br i1 %102, label %.split223.us.split.us, label %.split223.us.split.split.us + br i1 %102, label %.split218.us.split.us, label %.split218.us.split.split.us .split: ; preds = %95 %104 = icmp eq i32 %2, 1 - br i1 %104, label %.lr.ph187.us, label %.lr.ph187 + br i1 %104, label %.lr.ph183.us, label %.lr.ph183 -.lr.ph187.us: ; preds = %.split, %..critedge_crit_edge.split.us204 - %.0138.us198 = phi ptr [ %121, %..critedge_crit_edge.split.us204 ], [ %97, %.split ] - %105 = load double, ptr %.0138.us198, align 8, !tbaa !99 +.lr.ph183.us: ; preds = %.split, %..critedge_crit_edge.split.us200 + %.0138.us194 = phi ptr [ %121, %..critedge_crit_edge.split.us200 ], [ %97, %.split ] + %105 = load double, ptr %.0138.us194, align 8, !tbaa !99 %.fr = freeze double %105 %106 = fsub double %.0130, %.fr %107 = fmul double %106, %76 %108 = fcmp ult double %107, 0.000000e+00 - br i1 %108, label %.lr.ph187.split.split.us.us, label %.lr.ph187.split.split.us203 + br i1 %108, label %.lr.ph183.split.split.us.us, label %.lr.ph183.split.split.us199 -.lr.ph187.split.split.us203: ; preds = %.lr.ph187.us, %117 - %.1135185.us199 = phi ptr [ %119, %117 ], [ %.fr248, %.lr.ph187.us ] - %109 = getelementptr inbounds nuw i8, ptr %.1135185.us199, i64 16 +.lr.ph183.split.split.us199: ; preds = %.lr.ph183.us, %117 + %.1135181.us195 = phi ptr [ %119, %117 ], [ %.fr235, %.lr.ph183.us ] + %109 = getelementptr inbounds nuw i8, ptr %.1135181.us195, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !89 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1272 %112 = load double, ptr %111, align 8, !tbaa !98 @@ -4377,24 +4377,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %114 = fmul double %113, %76 %115 = fcmp ogt double %114, 0.000000e+00 %116 = fcmp oeq double %112, %.fr - %or.cond244 = or i1 %115, %116 - br i1 %or.cond244, label %.loopexit, label %117 + %or.cond231 = or i1 %115, %116 + br i1 %or.cond231, label %.loopexit, label %117 -117: ; preds = %.lr.ph187.split.split.us203 - %118 = getelementptr inbounds nuw i8, ptr %.1135185.us199, i64 128 +117: ; preds = %.lr.ph183.split.split.us199 + %118 = getelementptr inbounds nuw i8, ptr %.1135181.us195, i64 128 %119 = load ptr, ptr %118, align 8, !tbaa !85 - %.not152.us200 = icmp eq ptr %119, null - br i1 %.not152.us200, label %..critedge_crit_edge.split.us204, label %.lr.ph187.split.split.us203 + %.not152.us196 = icmp eq ptr %119, null + br i1 %.not152.us196, label %..critedge_crit_edge.split.us200, label %.lr.ph183.split.split.us199 -..critedge_crit_edge.split.us204: ; preds = %117, %130 - %120 = getelementptr inbounds nuw i8, ptr %.0138.us198, i64 592 +..critedge_crit_edge.split.us200: ; preds = %117, %130 + %120 = getelementptr inbounds nuw i8, ptr %.0138.us194, i64 592 %121 = load ptr, ptr %120, align 8, !tbaa !78 %122 = icmp eq ptr %121, null - br i1 %122, label %.loopexit, label %.lr.ph187.us + br i1 %122, label %.loopexit, label %.lr.ph183.us -.lr.ph187.split.split.us.us: ; preds = %.lr.ph187.us, %130 - %.1135185.us188.us = phi ptr [ %132, %130 ], [ %.fr248, %.lr.ph187.us ] - %123 = getelementptr inbounds nuw i8, ptr %.1135185.us188.us, i64 16 +.lr.ph183.split.split.us.us: ; preds = %.lr.ph183.us, %130 + %.1135181.us184.us = phi ptr [ %132, %130 ], [ %.fr235, %.lr.ph183.us ] + %123 = getelementptr inbounds nuw i8, ptr %.1135181.us184.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !89 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1272 %126 = load double, ptr %125, align 8, !tbaa !98 @@ -4403,20 +4403,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %129 = fcmp ogt double %128, 0.000000e+00 br i1 %129, label %.loopexit, label %130 -130: ; preds = %.lr.ph187.split.split.us.us - %131 = getelementptr inbounds nuw i8, ptr %.1135185.us188.us, i64 128 +130: ; preds = %.lr.ph183.split.split.us.us + %131 = getelementptr inbounds nuw i8, ptr %.1135181.us184.us, i64 128 %132 = load ptr, ptr %131, align 8, !tbaa !85 - %.not152.us189.us = icmp eq ptr %132, null - br i1 %.not152.us189.us, label %..critedge_crit_edge.split.us204, label %.lr.ph187.split.split.us.us + %.not152.us185.us = icmp eq ptr %132, null + br i1 %.not152.us185.us, label %..critedge_crit_edge.split.us200, label %.lr.ph183.split.split.us.us -.lr.ph187: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph183: ; preds = %.split, %..critedge_crit_edge.split.us %.0138 = phi ptr [ %146, %..critedge_crit_edge.split.us ], [ %97, %.split ] %133 = load double, ptr %.0138, align 8, !tbaa !99 br label %134 -134: ; preds = %142, %.lr.ph187 - %.1135185.us = phi ptr [ %.fr248, %.lr.ph187 ], [ %144, %142 ] - %135 = getelementptr inbounds nuw i8, ptr %.1135185.us, i64 16 +134: ; preds = %142, %.lr.ph183 + %.1135181.us = phi ptr [ %.fr235, %.lr.ph183 ], [ %144, %142 ] + %135 = getelementptr inbounds nuw i8, ptr %.1135181.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !89 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1272 %138 = load double, ptr %137, align 8, !tbaa !98 @@ -4426,7 +4426,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %141, label %.loopexit, label %142 142: ; preds = %134 - %143 = getelementptr inbounds nuw i8, ptr %.1135185.us, i64 128 + %143 = getelementptr inbounds nuw i8, ptr %.1135181.us, i64 128 %144 = load ptr, ptr %143, align 8, !tbaa !85 %.not152.us = icmp eq ptr %144, null br i1 %.not152.us, label %..critedge_crit_edge.split.us, label %134 @@ -4435,46 +4435,46 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %145 = getelementptr inbounds nuw i8, ptr %.0138, i64 592 %146 = load ptr, ptr %145, align 8, !tbaa !78 %147 = icmp eq ptr %146, null - br i1 %147, label %.loopexit, label %.lr.ph187 + br i1 %147, label %.loopexit, label %.lr.ph183 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us204, %.lr.ph187.split.split.us203, %.lr.ph187.split.split.us.us - %.0138179 = phi ptr [ %.0138.us198, %.lr.ph187.split.split.us.us ], [ %.0138.us198, %.lr.ph187.split.split.us203 ], [ %.0138.us198, %..critedge_crit_edge.split.us204 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us200, %.lr.ph183.split.split.us199, %.lr.ph183.split.split.us.us + %.0138175 = phi ptr [ %.0138.us194, %.lr.ph183.split.split.us.us ], [ %.0138.us194, %.lr.ph183.split.split.us199 ], [ %.0138.us194, %..critedge_crit_edge.split.us200 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 88 %149 = icmp eq i32 %2, 2 %150 = getelementptr inbounds nuw i8, ptr %14, i64 64 - br label %.split223 + br label %.split218 -.split223.us.split.us: ; preds = %.loopexit.thread +.split218.us.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %151 -151: ; preds = %.split223.us.split.us +151: ; preds = %.split218.us.split.us %152 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split223.us.split.split.us: ; preds = %.loopexit.thread +.split218.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %153 -153: ; preds = %.split223.us.split.split.us +153: ; preds = %.split218.us.split.split.us %154 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split223: ; preds = %.loopexit, %197 - %.1139 = phi ptr [ %199, %197 ], [ %.0138179, %.loopexit ] +.split218: ; preds = %.loopexit, %197 + %.1139 = phi ptr [ %199, %197 ], [ %.0138175, %.loopexit ] %155 = load ptr, ptr %148, align 8, !tbaa !112 %.not154 = icmp eq ptr %.1139, %155 - br i1 %.not154, label %.lr.ph215.preheader, label %156 + br i1 %.not154, label %.lr.ph211.preheader, label %156 -156: ; preds = %.split223 +156: ; preds = %.split218 %157 = call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.1139) %.not155 = icmp eq i32 %157, 0 - br i1 %.not155, label %.lr.ph215.preheader, label %.critedge164 + br i1 %.not155, label %.lr.ph211.preheader, label %.critedge164 -.lr.ph215.preheader: ; preds = %156, %.split223 - br label %.lr.ph215 +.lr.ph211.preheader: ; preds = %156, %.split218 + br label %.lr.ph211 -.lr.ph215: ; preds = %.lr.ph215.preheader, %185 - %.2136213 = phi ptr [ %187, %185 ], [ %.fr248, %.lr.ph215.preheader ] - %158 = getelementptr inbounds nuw i8, ptr %.2136213, i64 16 +.lr.ph211: ; preds = %.lr.ph211.preheader, %185 + %.2136209 = phi ptr [ %187, %185 ], [ %.fr235, %.lr.ph211.preheader ] + %158 = getelementptr inbounds nuw i8, ptr %.2136209, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !89 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1272 %161 = load double, ptr %160, align 8, !tbaa !98 @@ -4482,13 +4482,13 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %163 = fcmp oeq double %161, %162 br i1 %163, label %164, label %168 -164: ; preds = %.lr.ph215 +164: ; preds = %.lr.ph211 %165 = fsub double %.0130, %162 %166 = fmul double %165, %76 %167 = fcmp olt double %166, 0.000000e+00 br i1 %167, label %.thread, label %168 -168: ; preds = %164, %.lr.ph215 +168: ; preds = %164, %.lr.ph211 %or.cond3 = and i1 %149, %163 %169 = fsub double %161, %162 %170 = fmul double %169, %76 @@ -4497,62 +4497,62 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %172, label %.thread, label %173 173: ; preds = %168 - store ptr %.2136213, ptr %150, align 8, !tbaa !39 + store ptr %.2136209, ptr %150, align 8, !tbaa !39 %174 = call i32 @IDASetStopTime(ptr noundef nonnull %159, double noundef %162) #9 %175 = load ptr, ptr %158, align 8, !tbaa !89 - %176 = getelementptr inbounds nuw i8, ptr %.2136213, i64 112 + %176 = getelementptr inbounds nuw i8, ptr %.2136209, i64 112 %177 = load ptr, ptr %176, align 8, !tbaa !93 - %178 = getelementptr inbounds nuw i8, ptr %.2136213, i64 120 + %178 = getelementptr inbounds nuw i8, ptr %.2136209, i64 120 %179 = load ptr, ptr %178, align 8, !tbaa !94 %180 = call i32 @IDASolve(ptr noundef %175, double noundef %.0130, ptr noundef nonnull %4, ptr noundef %177, ptr noundef %179, i32 noundef %2) #9 %181 = load double, ptr %4, align 8, !tbaa !65 - %182 = getelementptr inbounds nuw i8, ptr %.2136213, i64 104 + %182 = getelementptr inbounds nuw i8, ptr %.2136209, i64 104 store double %181, ptr %182, align 8, !tbaa !153 %183 = icmp slt i32 %180, 0 br i1 %183, label %.thread165, label %185 .thread: ; preds = %164, %168 - %184 = getelementptr inbounds nuw i8, ptr %.2136213, i64 104 + %184 = getelementptr inbounds nuw i8, ptr %.2136209, i64 104 store double %161, ptr %184, align 8, !tbaa !153 br label %185 185: ; preds = %173, %.thread %.5 = phi i32 [ %180, %173 ], [ 0, %.thread ] - %186 = getelementptr inbounds nuw i8, ptr %.2136213, i64 128 + %186 = getelementptr inbounds nuw i8, ptr %.2136209, i64 128 %187 = load ptr, ptr %186, align 8, !tbaa !85 %.not156 = icmp eq ptr %187, null - br i1 %.not156, label %._crit_edge216, label %.lr.ph215 + br i1 %.not156, label %._crit_edge212, label %.lr.ph211 .thread165: ; preds = %173 - %188 = load i32, ptr %.2136213, align 8, !tbaa !143 + %188 = load i32, ptr %.2136209, align 8, !tbaa !143 call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef %180, i32 noundef 1809, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.18, i32 noundef %188) #9 br label %.critedge164 -._crit_edge216: ; preds = %185 - br i1 %149, label %.critedge164, label %.lr.ph220 +._crit_edge212: ; preds = %185 + br i1 %149, label %.critedge164, label %.lr.ph215 -.lr.ph220: ; preds = %._crit_edge216, %194 - %.3137219 = phi ptr [ %196, %194 ], [ %.fr248, %._crit_edge216 ] - %189 = getelementptr inbounds nuw i8, ptr %.3137219, i64 104 +.lr.ph215: ; preds = %._crit_edge212, %194 + %.3137214 = phi ptr [ %196, %194 ], [ %.fr235, %._crit_edge212 ] + %189 = getelementptr inbounds nuw i8, ptr %.3137214, i64 104 %190 = load double, ptr %189, align 8, !tbaa !153 %191 = fsub double %190, %.0130 %192 = fmul double %191, %76 %193 = fcmp ogt double %192, 0.000000e+00 br i1 %193, label %197, label %194 -194: ; preds = %.lr.ph220 - %195 = getelementptr inbounds nuw i8, ptr %.3137219, i64 128 +194: ; preds = %.lr.ph215 + %195 = getelementptr inbounds nuw i8, ptr %.3137214, i64 128 %196 = load ptr, ptr %195, align 8, !tbaa !85 %.not158.not = icmp eq ptr %196, null - br i1 %.not158.not, label %.critedge164, label %.lr.ph220 + br i1 %.not158.not, label %.critedge164, label %.lr.ph215 -197: ; preds = %.lr.ph220 +197: ; preds = %.lr.ph215 %198 = getelementptr inbounds nuw i8, ptr %.1139, i64 592 %199 = load ptr, ptr %198, align 8, !tbaa !78 - br label %.split223 + br label %.split218 -.critedge164: ; preds = %._crit_edge216, %156, %194, %153, %151, %.split223.us.split.us, %.split223.us.split.split.us, %.thread165, %94, %74, %70, %53, %47, %24, %18, %11, %6 - %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %180, %.thread165 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split223.us.split.split.us ], [ 0, %.split223.us.split.us ], [ %152, %151 ], [ %154, %153 ], [ %.5, %194 ], [ %.5, %._crit_edge216 ], [ %157, %156 ] +.critedge164: ; preds = %._crit_edge212, %156, %194, %153, %151, %.split218.us.split.us, %.split218.us.split.split.us, %.thread165, %94, %74, %70, %53, %47, %24, %18, %11, %6 + %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %180, %.thread165 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split218.us.split.split.us ], [ 0, %.split218.us.split.us ], [ %152, %151 ], [ %154, %153 ], [ %.5, %194 ], [ %.5, %._crit_edge212 ], [ %157, %156 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 } diff --git a/bench/tev/optimized/StbiLdrImageSaver.ll b/bench/tev/optimized/StbiLdrImageSaver.ll index 51b18804c90..45700ef6685 100644 --- a/bench/tev/optimized/StbiLdrImageSaver.ll +++ b/bench/tev/optimized/StbiLdrImageSaver.ll @@ -1636,7 +1636,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit.thread: ; preds = %9, %19, %24 %65 = getelementptr inbounds i8, ptr %63, i64 -4 %66 = load i32, ptr %65, align 4 %67 = icmp sgt i32 %66, 0 - br i1 %67, label %.lr.ph, label %._crit_edge.thread812 + br i1 %67, label %.lr.ph, label %._crit_edge.thread813 .lr.ph: ; preds = %64 %68 = add nsw i32 %.1157655, -32768 @@ -1688,24 +1688,24 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo %.1164 = phi ptr [ %.0163645, %71 ], [ %spec.select601, %_ZL18stbiw__zlib_countmPhS_i.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.thread812, label %71, !llvm.loop !21 + br i1 %exitcond.not, label %._crit_edge.thread813, label %71, !llvm.loop !21 -._crit_edge.thread812: ; preds = %83, %64 - %.0163.lcssa816 = phi ptr [ null, %64 ], [ %.1164, %83 ] - %.0166.lcssa815 = phi i32 [ 3, %64 ], [ %.1167, %83 ] +._crit_edge.thread813: ; preds = %83, %64 + %.0163.lcssa817 = phi ptr [ null, %64 ], [ %.1164, %83 ] + %.0166.lcssa816 = phi i32 [ 3, %64 ], [ %.1167, %83 ] %84 = getelementptr inbounds i8, ptr %63, i64 -4 %85 = load i32, ptr %84, align 4 %86 = icmp eq i32 %85, %35 br i1 %86, label %87, label %89 -87: ; preds = %._crit_edge.thread812 +87: ; preds = %._crit_edge.thread813 %88 = getelementptr inbounds nuw ptr, ptr %63, i64 %36 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %63, ptr noundef nonnull align 8 dereferenceable(1) %88, i64 %37, i1 false) store i32 %spec.store.select, ptr %84, align 4 br label %89 -89: ; preds = %87, %._crit_edge.thread812 - %90 = phi i32 [ %spec.store.select, %87 ], [ %85, %._crit_edge.thread812 ] +89: ; preds = %87, %._crit_edge.thread813 + %90 = phi i32 [ %spec.store.select, %87 ], [ %85, %._crit_edge.thread813 ] %91 = getelementptr inbounds i8, ptr %63, i64 -8 %92 = add nsw i32 %90, 1 %93 = load i32, ptr %91, align 4 @@ -1718,8 +1718,8 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo br label %.thread595 .thread595: ; preds = %40, %94 - %.0163.lcssa811 = phi ptr [ %.0163.lcssa816, %94 ], [ null, %40 ] - %.0166.lcssa809 = phi i32 [ %.0166.lcssa815, %94 ], [ 3, %40 ] + %.0163.lcssa812 = phi ptr [ %.0163.lcssa817, %94 ], [ null, %40 ] + %.0166.lcssa810 = phi i32 [ %.0166.lcssa816, %94 ], [ 3, %40 ] %97 = phi i32 [ %96, %94 ], [ 2, %40 ] %98 = getelementptr inbounds i8, ptr %63, i64 -8 %spec.select.i230 = select i1 %.not196, ptr null, ptr %98 @@ -1745,8 +1745,8 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo br label %_ZL14stbiw__sbgrowfPPvii.exit234 _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, %89 - %.0163.lcssa810 = phi ptr [ %.0163.lcssa811, %106 ], [ %.0163.lcssa811, %.thread595 ], [ %.0163.lcssa816, %89 ] - %.0166.lcssa808 = phi i32 [ %.0166.lcssa809, %106 ], [ %.0166.lcssa809, %.thread595 ], [ %.0166.lcssa815, %89 ] + %.0163.lcssa811 = phi ptr [ %.0163.lcssa812, %106 ], [ %.0163.lcssa812, %.thread595 ], [ %.0163.lcssa817, %89 ] + %.0166.lcssa809 = phi i32 [ %.0166.lcssa810, %106 ], [ %.0166.lcssa810, %.thread595 ], [ %.0166.lcssa816, %89 ] %108 = phi ptr [ %107, %106 ], [ %63, %.thread595 ], [ %63, %89 ] %109 = getelementptr inbounds i8, ptr %108, i64 -4 %110 = load i32, ptr %109, align 4 @@ -1755,7 +1755,7 @@ _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, % %112 = sext i32 %110 to i64 %113 = getelementptr inbounds ptr, ptr %108, i64 %112 store ptr %42, ptr %113, align 8 - %.not199 = icmp eq ptr %.0163.lcssa810, null + %.not199 = icmp eq ptr %.0163.lcssa811, null br i1 %.not199, label %.thread597, label %114 114: ; preds = %_ZL14stbiw__sbgrowfPPvii.exit234 @@ -1833,7 +1833,7 @@ _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, % _ZL18stbiw__zlib_countmPhS_i.exit245: ; preds = %157, %152, %._crit_edge.loopexit.split.loop.exit.i242 %.0.lcssa.i236 = phi i32 [ 0, %152 ], [ %158, %._crit_edge.loopexit.split.loop.exit.i242 ], [ %invariant.smin.i235, %157 ] - %159 = icmp sgt i32 %.0.lcssa.i236, %.0166.lcssa808 + %159 = icmp sgt i32 %.0.lcssa.i236, %.0166.lcssa809 br i1 %159, label %.thread597, label %160 160: ; preds = %146, %_ZL18stbiw__zlib_countmPhS_i.exit245 @@ -1850,12 +1850,12 @@ _ZL18stbiw__zlib_countmPhS_i.exit245: ; preds = %157, %152, %._crit_ %161 = getelementptr inbounds nuw i16, ptr @_ZZ18stbi_zlib_compressPhiPiiE7lengthc, i64 %indvars.iv.next737 %162 = load i16, ptr %161, align 2 %163 = zext i16 %162 to i32 - %.not203 = icmp slt i32 %.0166.lcssa808, %163 + %.not203 = icmp slt i32 %.0166.lcssa809, %163 br i1 %.not203, label %164, label %._crit_edge651, !llvm.loop !23 164: ; preds = %._crit_edge651 %165 = ptrtoint ptr %42 to i64 - %166 = ptrtoint ptr %.0163.lcssa810 to i64 + %166 = ptrtoint ptr %.0163.lcssa811 to i64 %167 = sub i64 %165, %166 %168 = trunc i64 %167 to i32 %169 = trunc nuw nsw i64 %indvars.iv736 to i32 @@ -2040,7 +2040,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit257: ; preds = %_ZL14stbiw__sbgrowf %255 = getelementptr inbounds nuw i16, ptr @_ZZ18stbi_zlib_compressPhiPiiE7lengthc, i64 %253 %256 = load i16, ptr %255, align 2 %257 = zext i16 %256 to i32 - %258 = sub nsw i32 %.0166.lcssa808, %257 + %258 = sub nsw i32 %.0166.lcssa809, %257 %259 = shl i32 %258, %.1543 %260 = or i32 %259, %.1559 %261 = load i8, ptr %254, align 1 @@ -2460,7 +2460,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit311: ; preds = %_ZL14stbiw__sbgrowf %.3561 = phi i32 [ %.19577, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %346, %338 ], [ %392, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %433, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %421, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %462, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %377, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.3545 = phi i32 [ %.19, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %349, %338 ], [ %393, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %434, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %422, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %463, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %378, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.4540 = phi ptr [ %.0.lcssa.i291, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0.lcssa.i291, %338 ], [ %.1537654, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %.1537654, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %.1.i326, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %.1.i342, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.1.i310, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] - %.0166.pn = phi i32 [ %.0166.lcssa808, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0166.lcssa808, %338 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.0166.lcssa808, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] + %.0166.pn = phi i32 [ %.0166.lcssa809, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0166.lcssa809, %338 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.0166.lcssa809, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.2 = add nsw i32 %.0166.pn, %.1157655 %465 = icmp slt i32 %.2, %32 br i1 %465, label %40, label %.preheader605, !llvm.loop !27 @@ -2831,20 +2831,20 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit402: ; preds = %_ZL14stbiw__sbgrowf %.0153685 = phi i32 [ %.1.lcssa, %._crit_edge680 ], [ 0, %.preheader.preheader ] %.0154684 = phi i32 [ %.1155.lcssa, %._crit_edge680 ], [ 1, %.preheader.preheader ] %.4162683 = phi i32 [ %630, %._crit_edge680 ], [ 0, %.preheader.preheader ] - %.not854 = icmp eq i32 %.0686, 0 - br i1 %.not854, label %._crit_edge680, label %.lr.ph679.preheader + %.not806 = icmp eq i32 %.0686, 0 + br i1 %.not806, label %._crit_edge680, label %.lr.ph679.preheader .lr.ph679.preheader: ; preds = %.preheader %623 = zext nneg i32 %.4162683 to i64 %wide.trip.count754 = zext nneg i32 %.0686 to i64 - %invariant.gep = getelementptr i8, ptr %0, i64 %623 + %invariant.gep = getelementptr inbounds nuw i8, ptr %0, i64 %623 br label %.lr.ph679 .lr.ph679: ; preds = %.lr.ph679.preheader, %.lr.ph679 %indvars.iv751 = phi i64 [ 0, %.lr.ph679.preheader ], [ %indvars.iv.next752, %.lr.ph679 ] %.1678 = phi i32 [ %.0153685, %.lr.ph679.preheader ], [ %627, %.lr.ph679 ] %.1155677 = phi i32 [ %.0154684, %.lr.ph679.preheader ], [ %626, %.lr.ph679 ] - %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv751 + %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %indvars.iv751 %624 = load i8, ptr %gep, align 1 %625 = zext i8 %624 to i32 %626 = add i32 %.1155677, %625 diff --git a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll index 7f1a2592345..c6304d8cb79 100644 --- a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll +++ b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll @@ -133063,24 +133063,23 @@ define noundef nonnull align 8 ptr @"_ZN55_$LT$i64$u20$as$u20$typst..foundations ; Function Attrs: nonlazybind uwtable define void @"_ZN55_$LT$i64$u20$as$u20$typst..foundations..int..i64Ext$GT$10bit_lshift17h298cea451585ad12E"(ptr noalias noundef writeonly sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) initializes((0, 8)) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #2 { %4 = icmp ult i32 %2, 64 - %5 = and i32 %2, 63 - %6 = zext nneg i32 %5 to i64 - %7 = shl i64 %1, %6 - br i1 %4, label %13, label %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit + %5 = zext nneg i32 %2 to i64 + %6 = shl i64 %1, %5 + br i1 %4, label %12, label %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit _ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit: ; preds = %3 - %8 = tail call { ptr, i64 } @"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E"(ptr noalias noundef nonnull readonly align 1 @anon.53fe85e3a453dfbf0ab1e8743506e67c.1339, i64 noundef 23), !noalias !28115 - %9 = extractvalue { ptr, i64 } %8, 0 - %10 = extractvalue { ptr, i64 } %8, 1 - %11 = icmp ne ptr %9, null - tail call void @llvm.assume(i1 %11) - %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %9, ptr %12, align 8 - br label %13 + %7 = tail call { ptr, i64 } @"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E"(ptr noalias noundef nonnull readonly align 1 @anon.53fe85e3a453dfbf0ab1e8743506e67c.1339, i64 noundef 23), !noalias !28115 + %8 = extractvalue { ptr, i64 } %7, 0 + %9 = extractvalue { ptr, i64 } %7, 1 + %10 = icmp ne ptr %8, null + tail call void @llvm.assume(i1 %10) + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %8, ptr %11, align 8 + br label %12 -13: ; preds = %3, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit +12: ; preds = %3, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit %.sink16 = phi i64 [ 16, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 8, %3 ] - %.sink = phi i64 [ %10, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %7, %3 ] + %.sink = phi i64 [ %9, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %6, %3 ] %storemerge = phi i64 [ 1, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 0, %3 ] %.sroa.09.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 %.sink16 store i64 %.sink, ptr %.sroa.09.sroa.4.0..sroa_idx, align 8 diff --git a/bench/velox/optimized/BaseVector.ll b/bench/velox/optimized/BaseVector.ll index c47ab500d74..0b32de8797b 100644 --- a/bench/velox/optimized/BaseVector.ll +++ b/bench/velox/optimized/BaseVector.ll @@ -31824,19 +31824,15 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit: for.cond.preheader: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit %cmp1324 = icmp samesign ugt i32 %size, 1 - br i1 %cmp1324, label %for.body.preheader, label %cleanup - -for.body.preheader: ; preds = %for.cond.preheader - %wide.trip.count = zext nneg i32 %size to i64 - br label %for.body + br i1 %cmp1324, label %for.body, label %cleanup for.cond: ; preds = %invoke.cont20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next, %conv br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !719 -for.body: ; preds = %for.body.preheader, %for.cond - %indvars.iv = phi i64 [ 1, %for.body.preheader ], [ %indvars.iv.next, %for.cond ] +for.body: ; preds = %for.cond.preheader, %for.cond + %indvars.iv = phi i64 [ %indvars.iv.next, %for.cond ], [ 1, %for.cond.preheader ] %3 = load ptr, ptr %indices, align 8 %add.ptr.i = getelementptr i32, ptr %3, i64 %indvars.iv %4 = load i32, ptr %add.ptr.i, align 4 diff --git a/bench/velox/optimized/DenseHll.ll b/bench/velox/optimized/DenseHll.ll index 8333d943c26..69cc466209e 100644 --- a/bench/velox/optimized/DenseHll.ll +++ b/bench/velox/optimized/DenseHll.ll @@ -335,30 +335,25 @@ if.then11: ; preds = %if.end %overflows_.i17 = getelementptr inbounds nuw i8, ptr %this, i64 40 %13 = load i16, ptr %overflows_.i17, align 8 %cmp5.i = icmp sgt i16 %13, 0 - br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.then11.if.else_crit_edge - -if.then11.if.else_crit_edge: ; preds = %if.then11 - %add.ptr.i.i.i.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 56 - %.pre = load ptr, ptr %add.ptr.i.i.i.phi.trans.insert, align 8 - br label %if.else + %add.ptr.i.i18 = getelementptr inbounds nuw i8, ptr %this, i64 56 + %14 = load ptr, ptr %add.ptr.i.i18, align 8 + br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.else for.body.lr.ph.i: ; preds = %if.then11 - %conv.i18 = zext nneg i16 %13 to i64 - %add.ptr.i.i19 = getelementptr inbounds nuw i8, ptr %this, i64 56 - %14 = load ptr, ptr %add.ptr.i.i19, align 8 + %wide.trip.count.i = zext nneg i16 %13 to i64 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.inc.i ] - %add.ptr2.i.i20 = getelementptr inbounds nuw i16, ptr %14, i64 %indvars.iv.i - %15 = load i16, ptr %add.ptr2.i.i20, align 2 + %add.ptr2.i.i19 = getelementptr inbounds nuw i16, ptr %14, i64 %indvars.iv.i + %15 = load i16, ptr %add.ptr2.i.i19, align 2 %conv3.i = zext i16 %15 to i32 %cmp4.i = icmp eq i32 %index, %conv3.i br i1 %cmp4.i, label %if.then16, label %for.inc.i for.inc.i: ; preds = %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i18 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %if.else, label %for.body.i, !llvm.loop !6 if.then16: ; preds = %for.body.i @@ -370,21 +365,20 @@ if.then16: ; preds = %for.body.i store i8 %conv13, ptr %add.ptr2.i, align 1 br label %if.end20 -if.else: ; preds = %for.inc.i, %if.then11.if.else_crit_edge - %17 = phi ptr [ %.pre, %if.then11.if.else_crit_edge ], [ %14, %for.inc.i ] - %conv.i22 = sext i16 %13 to i64 - %add.i = add nsw i64 %conv.i22, 1 +if.else: ; preds = %for.inc.i, %if.then11 + %conv.i21 = sext i16 %13 to i64 + %add.i = add nsw i64 %conv.i21, 1 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 56 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 64 - %18 = load ptr, ptr %_M_finish.i.i.i, align 8 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %18 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %17 to i64 + %17 = load ptr, ptr %_M_finish.i.i.i, align 8 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %17 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %14 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 1 %cmp.i.i = icmp ugt i64 %add.i, %sub.ptr.div.i.i.i - br i1 %cmp.i.i, label %if.then.i.i25, label %if.else.i.i + br i1 %cmp.i.i, label %if.then.i.i24, label %if.else.i.i -if.then.i.i25: ; preds = %if.else +if.then.i.i24: ; preds = %if.else %overflowBuckets_.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %sub.i.i = sub nuw nsw i64 %add.i, %sub.ptr.div.i.i.i tail call void @_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(32) %overflowBuckets_.i, i64 noundef %sub.i.i) @@ -394,27 +388,27 @@ if.then.i.i25: ; preds = %if.else br label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i if.else.i.i: ; preds = %if.else - %cmp4.i.i23 = icmp ult i64 %add.i, %sub.ptr.div.i.i.i - br i1 %cmp4.i.i23, label %if.then5.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i + %cmp4.i.i22 = icmp ult i64 %add.i, %sub.ptr.div.i.i.i + br i1 %cmp4.i.i22, label %if.then5.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i if.then5.i.i: ; preds = %if.else.i.i - %add.ptr6.i.i = getelementptr inbounds i16, ptr %17, i64 %add.i - %tobool.not.i.i.i = icmp eq ptr %18, %add.ptr6.i.i + %add.ptr6.i.i = getelementptr inbounds i16, ptr %14, i64 %add.i + %tobool.not.i.i.i = icmp eq ptr %17, %add.ptr6.i.i br i1 %tobool.not.i.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then5.i.i store ptr %add.ptr6.i.i, ptr %_M_finish.i.i.i, align 8 br label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i -_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i: ; preds = %if.then.i.i.i, %if.then5.i.i, %if.else.i.i, %if.then.i.i25 - %add5.pre-phi.i = phi i64 [ %.pre19.i, %if.then.i.i25 ], [ %add.i, %if.else.i.i ], [ %add.i, %if.then5.i.i ], [ %add.i, %if.then.i.i.i ] - %conv4.pre-phi.i = phi i64 [ %.pre18.i, %if.then.i.i25 ], [ %conv.i22, %if.else.i.i ], [ %conv.i22, %if.then5.i.i ], [ %conv.i22, %if.then.i.i.i ] +_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i: ; preds = %if.then.i.i.i, %if.then5.i.i, %if.else.i.i, %if.then.i.i24 + %add5.pre-phi.i = phi i64 [ %.pre19.i, %if.then.i.i24 ], [ %add.i, %if.else.i.i ], [ %add.i, %if.then5.i.i ], [ %add.i, %if.then.i.i.i ] + %conv4.pre-phi.i = phi i64 [ %.pre18.i, %if.then.i.i24 ], [ %conv.i21, %if.else.i.i ], [ %conv.i21, %if.then5.i.i ], [ %conv.i21, %if.then.i.i.i ] %add.ptr.i.i1.i = getelementptr inbounds nuw i8, ptr %this, i64 88 %_M_finish.i.i2.i = getelementptr inbounds nuw i8, ptr %this, i64 96 - %19 = load ptr, ptr %_M_finish.i.i2.i, align 8 - %20 = load ptr, ptr %add.ptr.i.i1.i, align 8 - %sub.ptr.lhs.cast.i.i3.i = ptrtoint ptr %19 to i64 - %sub.ptr.rhs.cast.i.i4.i = ptrtoint ptr %20 to i64 + %18 = load ptr, ptr %_M_finish.i.i2.i, align 8 + %19 = load ptr, ptr %add.ptr.i.i1.i, align 8 + %sub.ptr.lhs.cast.i.i3.i = ptrtoint ptr %18 to i64 + %sub.ptr.rhs.cast.i.i4.i = ptrtoint ptr %19 to i64 %sub.ptr.sub.i.i5.i = sub i64 %sub.ptr.lhs.cast.i.i3.i, %sub.ptr.rhs.cast.i.i4.i %cmp.i6.i = icmp ugt i64 %add5.pre-phi.i, %sub.ptr.sub.i.i5.i br i1 %cmp.i6.i, label %if.then.i13.i, label %if.else.i7.i @@ -432,8 +426,8 @@ if.else.i7.i: ; preds = %_ZNSt6vectorItN8fac br i1 %cmp4.i8.i, label %if.then5.i9.i, label %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit if.then5.i9.i: ; preds = %if.else.i7.i - %add.ptr6.i10.i = getelementptr inbounds i8, ptr %20, i64 %add5.pre-phi.i - %tobool.not.i.i11.i = icmp eq ptr %19, %add.ptr6.i10.i + %add.ptr6.i10.i = getelementptr inbounds i8, ptr %19, i64 %add5.pre-phi.i + %tobool.not.i.i11.i = icmp eq ptr %18, %add.ptr6.i10.i br i1 %tobool.not.i.i11.i, label %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit, label %if.then.i.i12.i if.then.i.i12.i: ; preds = %if.then5.i9.i @@ -443,16 +437,16 @@ if.then.i.i12.i: ; preds = %if.then5.i9.i _ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit: ; preds = %if.then.i13.i, %if.else.i7.i, %if.then5.i9.i, %if.then.i.i12.i %conv10.pre-phi.i = phi i64 [ %.pre20.i, %if.then.i13.i ], [ %conv4.pre-phi.i, %if.else.i7.i ], [ %conv4.pre-phi.i, %if.then5.i9.i ], [ %conv4.pre-phi.i, %if.then.i.i12.i ] %conv7.i = trunc i32 %index to i16 - %21 = load ptr, ptr %add.ptr.i.i.i, align 8 - %add.ptr2.i.i24 = getelementptr inbounds i16, ptr %21, i64 %conv10.pre-phi.i - store i16 %conv7.i, ptr %add.ptr2.i.i24, align 2 - %22 = load i16, ptr %overflows_.i17, align 8 - %conv13.i = sext i16 %22 to i64 - %23 = load ptr, ptr %add.ptr.i.i1.i, align 8 - %add.ptr2.i16.i = getelementptr inbounds i8, ptr %23, i64 %conv13.i + %20 = load ptr, ptr %add.ptr.i.i.i, align 8 + %add.ptr2.i.i23 = getelementptr inbounds i16, ptr %20, i64 %conv10.pre-phi.i + store i16 %conv7.i, ptr %add.ptr2.i.i23, align 2 + %21 = load i16, ptr %overflows_.i17, align 8 + %conv13.i = sext i16 %21 to i64 + %22 = load ptr, ptr %add.ptr.i.i1.i, align 8 + %add.ptr2.i16.i = getelementptr inbounds i8, ptr %22, i64 %conv13.i store i8 %conv13, ptr %add.ptr2.i16.i, align 1 - %24 = load i16, ptr %overflows_.i17, align 8 - %inc.i = add i16 %24, 1 + %23 = load i16, ptr %overflows_.i17, align 8 + %inc.i = add i16 %23, 1 store i16 %inc.i, ptr %overflows_.i17, align 8 br label %if.end20 @@ -460,25 +454,25 @@ if.end20: ; preds = %if.then16, %_ZN8fac %delta.0 = phi i32 [ %sub, %if.end ], [ 15, %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit ], [ 15, %if.then16 ] %conv21 = trunc nuw nsw i32 %delta.0 to i8 %shl.i = shl nuw i8 15, %conv.i.i - %25 = xor i8 %shl.i, -1 - %26 = load ptr, ptr %add.ptr.i.i, align 8 - %add.ptr2.i.i30 = getelementptr inbounds i8, ptr %26, i64 %conv.i - %27 = load i8, ptr %add.ptr2.i.i30, align 1 - %and4.i = and i8 %27, %25 - store i8 %and4.i, ptr %add.ptr2.i.i30, align 1 + %24 = xor i8 %shl.i, -1 + %25 = load ptr, ptr %add.ptr.i.i, align 8 + %add.ptr2.i.i29 = getelementptr inbounds i8, ptr %25, i64 %conv.i + %26 = load i8, ptr %add.ptr2.i.i29, align 1 + %and4.i = and i8 %26, %24 + store i8 %and4.i, ptr %add.ptr2.i.i29, align 1 %shl11.i = shl i8 %conv21, %conv.i.i - %28 = load ptr, ptr %add.ptr.i.i, align 8 - %add.ptr2.i9.i = getelementptr inbounds i8, ptr %28, i64 %conv.i - %29 = load i8, ptr %add.ptr2.i9.i, align 1 - %or5.i = or i8 %29, %shl11.i + %27 = load ptr, ptr %add.ptr.i.i, align 8 + %add.ptr2.i9.i = getelementptr inbounds i8, ptr %27, i64 %conv.i + %28 = load i8, ptr %add.ptr2.i9.i, align 1 + %or5.i = or i8 %28, %shl11.i store i8 %or5.i, ptr %add.ptr2.i9.i, align 1 %cmp23 = icmp eq i8 %and.i, 0 br i1 %cmp23, label %if.then24, label %if.end25 if.then24: ; preds = %if.end20 %baselineCount_ = getelementptr inbounds nuw i8, ptr %this, i64 4 - %30 = load i32, ptr %baselineCount_, align 4 - %dec = add nsw i32 %30, -1 + %29 = load i32, ptr %baselineCount_, align 4 + %dec = add nsw i32 %29, -1 store i32 %dec, ptr %baselineCount_, align 4 tail call void @_ZN8facebook5velox6common3hll8DenseHll22adjustBaselineIfNeededEv(ptr noundef nonnull align 8 dereferenceable(112) %this) br label %if.end25 @@ -553,9 +547,9 @@ entry: br i1 %cmp5, label %for.body.lr.ph, label %return for.body.lr.ph: ; preds = %entry - %conv = zext nneg i16 %0 to i64 %add.ptr.i = getelementptr inbounds nuw i8, ptr %this, i64 56 %1 = load ptr, ptr %add.ptr.i, align 8 + %wide.trip.count = zext nneg i16 %0 to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc @@ -568,7 +562,7 @@ for.body: ; preds = %for.body.lr.ph, %fo for.inc: ; preds = %for.body %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %conv + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %return, label %for.body, !llvm.loop !6 return.loopexit.split.loop.exit9: ; preds = %for.body @@ -774,7 +768,7 @@ for.body8.us: ; preds = %for.body8.lr.ph.us, for.inc.us: ; preds = %for.body8.us %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %conv6.us + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.then50.us, label %for.body8.us, !llvm.loop !7 if.then13.us: ; preds = %for.body8.us @@ -835,8 +829,8 @@ for.cond5.preheader.us: ; preds = %for.body.us br i1 %cmp744.us, label %for.body8.lr.ph.us, label %if.then50.us for.body8.lr.ph.us: ; preds = %for.cond5.preheader.us - %conv6.us = zext nneg i16 %26 to i64 %27 = load ptr, ptr %add.ptr.i, align 8 + %wide.trip.count = zext nneg i16 %26 to i64 br label %for.body8.us for.cond.while.cond.loopexit_crit_edge.us: ; preds = %for.inc59.us @@ -1933,8 +1927,8 @@ if.then: ; preds = %for.body8 br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.end36 for.body.lr.ph.i: ; preds = %if.then - %conv.i = zext nneg i16 %10 to i64 %11 = load ptr, ptr %add.ptr.i.i, align 8 + %wide.trip.count.i = zext nneg i16 %10 to i64 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i @@ -1947,7 +1941,7 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %if.end36, label %for.body.i, !llvm.loop !6 _ZNK8facebook5velox6common3hll8DenseHll17findOverflowEntryEi.exit: ; preds = %for.body.i @@ -1972,23 +1966,23 @@ if.end36: ; preds = %for.inc.i, %if.then br i1 %cmp38, label %if.then39, label %if.end46 if.then39: ; preds = %if.end36 - br i1 %cmp4.i25, label %for.body.i27, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit + br i1 %cmp4.i25, label %for.body.i28, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit -for.cond.i: ; preds = %for.body.i27 - %indvars.iv.next.i30 = add nuw nsw i64 %indvars.iv.i28, 1 +for.cond.i: ; preds = %for.body.i28 + %indvars.iv.next.i30 = add nuw nsw i64 %indvars.iv.i29, 1 %exitcond.not.i31 = icmp eq i64 %indvars.iv.next.i30, %conv40 - br i1 %exitcond.not.i31, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit, label %for.body.i27, !llvm.loop !4 + br i1 %exitcond.not.i31, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit, label %for.body.i28, !llvm.loop !4 -for.body.i27: ; preds = %if.then39, %for.cond.i - %indvars.iv.i28 = phi i64 [ %indvars.iv.next.i30, %for.cond.i ], [ 0, %if.then39 ] - %arrayidx.i = getelementptr inbounds nuw i16, ptr %otherOverflowBuckets, i64 %indvars.iv.i28 +for.body.i28: ; preds = %if.then39, %for.cond.i + %indvars.iv.i29 = phi i64 [ %indvars.iv.next.i30, %for.cond.i ], [ 0, %if.then39 ] + %arrayidx.i = getelementptr inbounds nuw i16, ptr %otherOverflowBuckets, i64 %indvars.iv.i29 %16 = load i16, ptr %arrayidx.i, align 2 - %conv.i29 = zext i16 %16 to i32 - %cmp1.i = icmp eq i32 %bucket.1133, %conv.i29 + %conv.i = zext i16 %16 to i32 + %cmp1.i = icmp eq i32 %bucket.1133, %conv.i br i1 %cmp1.i, label %if.then.i, label %for.cond.i -if.then.i: ; preds = %for.body.i27 - %arrayidx3.i = getelementptr inbounds nuw i8, ptr %otherOverflowValues, i64 %indvars.iv.i28 +if.then.i: ; preds = %for.body.i28 + %arrayidx3.i = getelementptr inbounds nuw i8, ptr %otherOverflowValues, i64 %indvars.iv.i29 %17 = load i8, ptr %arrayidx3.i, align 1 br label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit diff --git a/bench/verilator/optimized/V3OrderParallel.ll b/bench/verilator/optimized/V3OrderParallel.ll index 1b5d5741d46..cc2d962e288 100644 --- a/bench/verilator/optimized/V3OrderParallel.ll +++ b/bench/verilator/optimized/V3OrderParallel.ll @@ -20977,9 +20977,9 @@ _ZN10LogicMTask19moveAllVerticesFromEPS_.exit: ; preds = %143, %148, %149 _ZN10LogicMTask19moveAllVerticesFromEPS_.exit._crit_edge: ; preds = %_ZN10LogicMTask19moveAllVerticesFromEPS_.exit %.pre = trunc i8 %.fca.1.extract40 to i1 - %.sroa.044.0.extract.trunc46189 = trunc i64 %.fca.0.extract39 to i32 + %.sroa.044.0.extract.trunc46200 = trunc i64 %.fca.0.extract39 to i32 %163 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 100 - store i32 %.sroa.044.0.extract.trunc46189, ptr %163, align 4, !tbaa !71 + store i32 %.sroa.044.0.extract.trunc46200, ptr %163, align 4, !tbaa !71 br i1 %.pre, label %214, label %216 164: ; preds = %_ZN10LogicMTask19moveAllVerticesFromEPS_.exit @@ -21222,53 +21222,57 @@ _ZL22partCheckCriticalPathsR7V3Graph.exit: ; preds = %.lr.ph.i, %249, %_Z call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE1ELb1EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %.0109..0) call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb1EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %.0109..0) %255 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 24 - br label %256 + %.sroa.0161.0169 = load ptr, ptr %255, align 8, !tbaa !193 + %.not170 = icmp eq ptr %.sroa.0161.0169, null + br i1 %.not170, label %._crit_edge, label %.lr.ph -256: ; preds = %257, %_ZL22partCheckCriticalPathsR7V3Graph.exit - %.sroa.0161.0.in = phi ptr [ %255, %_ZL22partCheckCriticalPathsR7V3Graph.exit ], [ %258, %257 ] - %.0114 = phi i32 [ 0, %_ZL22partCheckCriticalPathsR7V3Graph.exit ], [ %263, %257 ] - %.sroa.0161.0 = load ptr, ptr %.sroa.0161.0.in, align 8, !tbaa !193 +256: ; preds = %.lr.ph + %257 = add nuw nsw i32 %.0114171, 1 + %.sroa.0161.0 = load ptr, ptr %258, align 8, !tbaa !193 %.not = icmp eq ptr %.sroa.0161.0, null - br i1 %.not, label %264, label %257 + br i1 %.not, label %._crit_edge, label %.lr.ph -257: ; preds = %256 - %258 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0, i64 8 +.lr.ph: ; preds = %_ZL22partCheckCriticalPathsR7V3Graph.exit, %256 + %.sroa.0161.0172 = phi ptr [ %.sroa.0161.0, %256 ], [ %.sroa.0161.0169, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] + %.0114171 = phi i32 [ %257, %256 ], [ 0, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] + %258 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0172, i64 8 %259 = load ptr, ptr %258, align 8, !tbaa !128 %.not.i = icmp eq ptr %259, null - %260 = select i1 %.not.i, ptr %.sroa.0161.0, ptr %259 + %260 = select i1 %.not.i, ptr %.sroa.0161.0172, ptr %259 call void @llvm.prefetch.p0(ptr nonnull %260, i32 1, i32 3, i32 1) - %261 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0, i64 48 + %261 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0172, i64 48 %262 = load ptr, ptr %261, align 8, !tbaa !30 call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE1ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %262) - %263 = add nuw nsw i32 %.0114, 1 - %exitcond.not = icmp eq i32 %263, 26 - br i1 %exitcond.not, label %264, label %256 - -264: ; preds = %256, %257 - %265 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 40 - br label %266 - -266: ; preds = %267, %264 - %.sroa.0155.0.in = phi ptr [ %265, %264 ], [ %268, %267 ] - %.1115 = phi i32 [ 0, %264 ], [ %273, %267 ] - %.sroa.0155.0 = load ptr, ptr %.sroa.0155.0.in, align 8, !tbaa !193 + %exitcond.not = icmp eq i32 %.0114171, 25 + br i1 %exitcond.not, label %._crit_edge, label %256 + +._crit_edge: ; preds = %.lr.ph, %256, %_ZL22partCheckCriticalPathsR7V3Graph.exit + %263 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 40 + %.sroa.0155.0174 = load ptr, ptr %263, align 8, !tbaa !193 + %.not168175 = icmp eq ptr %.sroa.0155.0174, null + br i1 %.not168175, label %._crit_edge180, label %.lr.ph179 + +264: ; preds = %.lr.ph179 + %265 = add nuw nsw i32 %.1115176, 1 + %.sroa.0155.0 = load ptr, ptr %266, align 8, !tbaa !193 %.not168 = icmp eq ptr %.sroa.0155.0, null - br i1 %.not168, label %274, label %267 - -267: ; preds = %266 - %268 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0, i64 24 - %269 = load ptr, ptr %268, align 8, !tbaa !128 - %.not.i118 = icmp eq ptr %269, null - %270 = select i1 %.not.i118, ptr %.sroa.0155.0, ptr %269 - call void @llvm.prefetch.p0(ptr nonnull %270, i32 1, i32 3, i32 1) - %271 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0, i64 40 - %272 = load ptr, ptr %271, align 8, !tbaa !24 - call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %272) - %273 = add nuw nsw i32 %.1115, 1 - %exitcond169.not = icmp eq i32 %273, 26 - br i1 %exitcond169.not, label %274, label %266 - -274: ; preds = %266, %267 + br i1 %.not168, label %._crit_edge180, label %.lr.ph179 + +.lr.ph179: ; preds = %._crit_edge, %264 + %.sroa.0155.0177 = phi ptr [ %.sroa.0155.0, %264 ], [ %.sroa.0155.0174, %._crit_edge ] + %.1115176 = phi i32 [ %265, %264 ], [ 0, %._crit_edge ] + %266 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0177, i64 24 + %267 = load ptr, ptr %266, align 8, !tbaa !128 + %.not.i118 = icmp eq ptr %267, null + %268 = select i1 %.not.i118, ptr %.sroa.0155.0177, ptr %267 + call void @llvm.prefetch.p0(ptr nonnull %268, i32 1, i32 3, i32 1) + %269 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0177, i64 40 + %270 = load ptr, ptr %269, align 8, !tbaa !24 + call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %270) + %exitcond182.not = icmp eq i32 %.1115176, 25 + br i1 %exitcond182.not, label %._crit_edge180, label %264 + +._crit_edge180: ; preds = %.lr.ph179, %264, %._crit_edge ret void } diff --git a/bench/wireshark/optimized/androiddump.ll b/bench/wireshark/optimized/androiddump.ll index c49ac27a4d1..ce833a95262 100644 --- a/bench/wireshark/optimized/androiddump.ll +++ b/bench/wireshark/optimized/androiddump.ll @@ -3693,7 +3693,7 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 9: ; preds = %4 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 763, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.111, ptr noundef %1) - br label %47 + br label %41 10: ; preds = %4 %sext = shl i64 %5, 32 @@ -3705,16 +3705,16 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 13: ; preds = %10 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 769, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.134, ptr noundef %1) %.not58 = icmp eq ptr %3, null - br i1 %.not58, label %47, label %14 + br i1 %.not58, label %41, label %14 14: ; preds = %13 store i64 0, ptr %3, align 8 - br label %47 + br label %41 15: ; preds = %.preheader %16 = add i64 %21, %.04762 %17 = icmp slt i64 %16, 4 - br i1 %17, label %.preheader, label %24, !llvm.loop !60 + br i1 %17, label %.preheader, label %.lr.ph.preheader, !llvm.loop !60 .preheader: ; preds = %10, %15 %.04762 = phi i64 [ %16, %15 ], [ 0, %10 ] @@ -3728,65 +3728,58 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 23: ; preds = %.preheader tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 780, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.112, ptr noundef %1) - br label %47 - -24: ; preds = %15 - %25 = load i32, ptr %2, align 1 - %26 = getelementptr i8, ptr %2, i64 %16 - %27 = shl i64 %16, 32 - %sext542 = sub i64 281470681743360, %27 - %28 = ashr exact i64 %sext542, 32 - %29 = tail call i64 @recv(i32 noundef %0, ptr noundef %26, i64 noundef %28, i32 noundef 0) - %30 = icmp slt i64 %29, 0 - br i1 %30, label %._crit_edge, label %.lr.ph + br label %41 -31: ; preds = %.lr.ph - %32 = add i64 %38, %.148633 - %33 = getelementptr i8, ptr %2, i64 %32 - %34 = shl i64 %32, 32 - %sext54 = sub i64 281470681743360, %34 - %35 = ashr exact i64 %sext54, 32 - %36 = tail call i64 @recv(i32 noundef %0, ptr noundef %33, i64 noundef %35, i32 noundef 0) - %37 = icmp slt i64 %36, 0 - br i1 %37, label %._crit_edge, label %.lr.ph - -._crit_edge: ; preds = %31, %24 +.lr.ph.preheader: ; preds = %15 + %24 = load i32, ptr %2, align 1 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %31 + %.14863 = phi i64 [ %33, %31 ], [ %16, %.lr.ph.preheader ] + %25 = getelementptr i8, ptr %2, i64 %.14863 + %26 = shl i64 %.14863, 32 + %sext54 = sub i64 281470681743360, %26 + %27 = ashr exact i64 %sext54, 32 + %28 = tail call i64 @recv(i32 noundef %0, ptr noundef %25, i64 noundef %27, i32 noundef 0) + %29 = icmp slt i64 %28, 0 + br i1 %29, label %30, label %31 + +30: ; preds = %.lr.ph tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 794, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.114, ptr noundef %1) - br label %47 + br label %41 -.lr.ph: ; preds = %24, %31 - %38 = phi i64 [ %36, %31 ], [ %29, %24 ] - %.148633 = phi i64 [ %32, %31 ], [ %16, %24 ] - %39 = icmp eq i64 %38, 0 - br i1 %39, label %split, label %31 +31: ; preds = %.lr.ph + %32 = icmp eq i64 %28, 0 + %33 = add i64 %28, %.14863 + br i1 %32, label %._crit_edge, label %.lr.ph, !llvm.loop !61 -split: ; preds = %.lr.ph +._crit_edge: ; preds = %31 %.not55 = icmp eq ptr %3, null - br i1 %.not55, label %42, label %40 + br i1 %.not55, label %36, label %34 -40: ; preds = %split - %41 = add i64 %.148633, -4 - store i64 %41, ptr %3, align 8 - br label %42 +34: ; preds = %._crit_edge + %35 = add i64 %.14863, -4 + store i64 %35, ptr %3, align 8 + br label %36 -42: ; preds = %40, %split - %.not4 = icmp eq i32 %25, 1497451343 - br i1 %.not4, label %45, label %43 +36: ; preds = %34, %._crit_edge + %.not2 = icmp eq i32 %24, 1497451343 + br i1 %.not2, label %39, label %37 -43: ; preds = %42 +37: ; preds = %36 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 808, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.116, ptr noundef %1) - br i1 %.not55, label %47, label %44 + br i1 %.not55, label %41, label %38 -44: ; preds = %43 +38: ; preds = %37 store i64 0, ptr %3, align 8 - br label %47 + br label %41 -45: ; preds = %42 - %46 = getelementptr i8, ptr %2, i64 4 - br label %47 +39: ; preds = %36 + %40 = getelementptr i8, ptr %2, i64 4 + br label %41 -47: ; preds = %43, %44, %13, %14, %45, %._crit_edge, %23, %9 - %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %._crit_edge ], [ %46, %45 ], [ null, %14 ], [ null, %13 ], [ null, %44 ], [ null, %43 ] +41: ; preds = %37, %38, %13, %14, %39, %30, %23, %9 + %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %30 ], [ %40, %39 ], [ null, %14 ], [ null, %13 ], [ null, %38 ], [ null, %37 ] ret ptr %.0 } @@ -4000,7 +3993,7 @@ define internal fastcc range(i32 0, 34) i32 @adb_send(i32 noundef range(i32 0, - %17 = trunc i64 %24 to i32 %18 = add i32 %.02124, %17 %19 = icmp slt i32 %18, 4 - br i1 %19, label %.preheader, label %27, !llvm.loop !61 + br i1 %19, label %.preheader, label %27, !llvm.loop !62 .preheader: ; preds = %12, %16 %.02124 = phi i32 [ %18, %16 ], [ 0, %12 ] @@ -4131,7 +4124,7 @@ define internal fastcc noundef zeroext i1 @extcap_dumper_dump(i32 %0, ptr nonnul 21: ; preds = %8 %22 = load i32, ptr %3, align 4 - %23 = tail call i32 asm "bswapl $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %22) #25, !srcloc !62 + %23 = tail call i32 asm "bswapl $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %22) #25, !srcloc !63 %.not = icmp eq i32 %23, 0 %24 = getelementptr inbounds nuw i8, ptr %11, i64 80 %25 = zext i1 %.not to i8 @@ -4321,4 +4314,5 @@ attributes #26 = { cold noreturn nounwind } !59 = distinct !{!59, !8} !60 = distinct !{!60, !8} !61 = distinct !{!61, !8} -!62 = !{i64 2150177821} +!62 = distinct !{!62, !8} +!63 = !{i64 2150177821} diff --git a/bench/wolfssl/optimized/benchmark.ll b/bench/wolfssl/optimized/benchmark.ll index bec3340e622..e664da350ae 100644 --- a/bench/wolfssl/optimized/benchmark.ll +++ b/bench/wolfssl/optimized/benchmark.ll @@ -1648,7 +1648,7 @@ define internal fastcc void @bench_aescbc_internal(ptr noundef %0, i32 noundef r 14: ; preds = %.critedge %15 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.128, i32 noundef 4338, i32 noundef %13) - br label %111 + br label %112 16: ; preds = %.critedge %17 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 0) #17 @@ -1657,7 +1657,7 @@ define internal fastcc void @bench_aescbc_internal(ptr noundef %0, i32 noundef r 18: ; preds = %16 %19 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %17) - br label %111 + br label %112 20: ; preds = %16 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -1700,25 +1700,25 @@ bench_stats_start.exit: ; preds = %20 %.1 = phi i32 [ 0, %bench_stats_start.exit ], [ %.2.lcssa, %bench_stats_check.exit ] %46 = load i32, ptr @numBlocks, align 4, !tbaa !4 %47 = icmp sgt i32 %46, 0 - br i1 %47, label %.preheader84, label %._crit_edge + br i1 %47, label %.preheader83, label %._crit_edge -.preheader84: ; preds = %45, %bench_async_handle.exit - %.064108 = phi i32 [ %52, %bench_async_handle.exit ], [ 0, %45 ] +.preheader83: ; preds = %45, %bench_async_handle.exit + %.064107 = phi i32 [ %52, %bench_async_handle.exit ], [ 0, %45 ] %48 = load i32, ptr @bench_size, align 4, !tbaa !4 %49 = call i32 @wc_AesCbcEncrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %48) #17 %50 = icmp sgt i32 %49, -1 br i1 %50, label %bench_async_handle.exit, label %.thread -.thread: ; preds = %.preheader84 +.thread: ; preds = %.preheader83 %51 = load i32, ptr @bench_size, align 4, !tbaa !4 call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %.070, i32 noundef %51, double noundef %35, i32 noundef %49) - br label %111 + br label %112 -bench_async_handle.exit: ; preds = %.preheader84 - %52 = add nuw nsw i32 %.064108, 1 +bench_async_handle.exit: ; preds = %.preheader83 + %52 = add nuw nsw i32 %.064107, 1 %53 = load i32, ptr @numBlocks, align 4, !tbaa !4 %54 = icmp slt i32 %52, %53 - br i1 %54, label %.preheader84, label %._crit_edge, !llvm.loop !26 + br i1 %54, label %.preheader83, label %._crit_edge, !llvm.loop !26 ._crit_edge: ; preds = %bench_async_handle.exit, %45 %.064.lcssa = phi i32 [ 0, %45 ], [ %52, %bench_async_handle.exit ] @@ -1748,89 +1748,89 @@ bench_stats_check.exit: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %6) %70 = fsub double %69, %35 %71 = fcmp uge double %70, 1.000000e+00 - br i1 %71, label %.preheader83, label %45, !llvm.loop !27 + br i1 %71, label %72, label %45, !llvm.loop !27 -72: ; preds = %.preheader83 +72: ; preds = %bench_stats_check.exit + %73 = load i32, ptr @bench_size, align 4, !tbaa !4 + call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %63, i32 noundef %73, double noundef %35, i32 noundef %.2.lcssa) + %74 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 1) #17 + %.not39 = icmp eq i32 %74, 0 + br i1 %.not39, label %75, label %78, !llvm.loop !28 + +75: ; preds = %72 call void @llvm.lifetime.start.p0(ptr nonnull %5) - %73 = call i32 @clock_gettime(i32 noundef 0, ptr noundef nonnull %5) #17 - %74 = icmp slt i32 %73, 0 - br i1 %74, label %79, label %bench_stats_start.exit44 - -.preheader83: ; preds = %bench_stats_check.exit - %75 = load i32, ptr @bench_size, align 4, !tbaa !4 - call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %63, i32 noundef %75, double noundef %35, i32 noundef %.2.lcssa) - %76 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 1) #17 - %.not39 = icmp eq i32 %76, 0 - br i1 %.not39, label %72, label %77, !llvm.loop !28 - -77: ; preds = %.preheader83 - %78 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %76) - br label %111 - -79: ; preds = %72 - %80 = tail call ptr @__errno_location() #18 - %81 = load i32, ptr %80, align 4, !tbaa !4 - %82 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %81, ptr noundef nonnull @.str.80) - %83 = load ptr, ptr @stdout, align 8, !tbaa !14 - %84 = call i32 @fflush(ptr noundef %83) + %76 = call i32 @clock_gettime(i32 noundef 0, ptr noundef nonnull %5) #17 + %77 = icmp slt i32 %76, 0 + br i1 %77, label %80, label %bench_stats_start.exit44 + +78: ; preds = %72 + %79 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %74) + br label %112 + +80: ; preds = %75 + %81 = tail call ptr @__errno_location() #18 + %82 = load i32, ptr %81, align 4, !tbaa !4 + %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %82, ptr noundef nonnull @.str.80) + %84 = load ptr, ptr @stdout, align 8, !tbaa !14 + %85 = call i32 @fflush(ptr noundef %84) call void @_exit(i32 noundef 1) #19 unreachable -bench_stats_start.exit44: ; preds = %72 - %85 = load i64, ptr %5, align 8, !tbaa !16 - %86 = sitofp i64 %85 to double - %87 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %88 = load i64, ptr %87, align 8, !tbaa !19 - %89 = sitofp i64 %88 to double - %90 = fdiv double %89, 1.000000e+09 - %91 = fadd double %90, %86 +bench_stats_start.exit44: ; preds = %75 + %86 = load i64, ptr %5, align 8, !tbaa !16 + %87 = sitofp i64 %86 to double + %88 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %89 = load i64, ptr %88, align 8, !tbaa !19 + %90 = sitofp i64 %89 to double + %91 = fdiv double %90, 1.000000e+09 + %92 = fadd double %91, %87 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %92 = call { i32, i32 } asm sideeffect "cpuid\0A\09rdtsc", "={ax},={dx},{ax},~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"(i32 0) #17, !srcloc !20 - %93 = extractvalue { i32, i32 } %92, 0 - %94 = extractvalue { i32, i32 } %92, 1 - %95 = zext i32 %93 to i64 + %93 = call { i32, i32 } asm sideeffect "cpuid\0A\09rdtsc", "={ax},={dx},{ax},~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"(i32 0) #17, !srcloc !20 + %94 = extractvalue { i32, i32 } %93, 0 + %95 = extractvalue { i32, i32 } %93, 1 %96 = zext i32 %94 to i64 - %97 = shl nuw i64 %96, 32 - %98 = or disjoint i64 %97, %95 - store i64 %98, ptr %43, align 8, !tbaa !21 - br label %99 - -99: ; preds = %._crit_edge112, %bench_stats_start.exit44 - %.272 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %108, %._crit_edge112 ] - %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %.7.lcssa, %._crit_edge112 ] - %100 = load i32, ptr @numBlocks, align 4, !tbaa !4 - %101 = icmp sgt i32 %100, 0 - br i1 %101, label %.preheader, label %._crit_edge112 - -.preheader: ; preds = %99, %bench_async_handle.exit46 - %.266111 = phi i32 [ %105, %bench_async_handle.exit46 ], [ 0, %99 ] - %102 = load i32, ptr @bench_size, align 4, !tbaa !4 - %103 = call i32 @wc_AesCbcDecrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %102) #17 - %104 = icmp sgt i32 %103, -1 - br i1 %104, label %bench_async_handle.exit46, label %bench_async_handle.exit46.thread + %97 = zext i32 %95 to i64 + %98 = shl nuw i64 %97, 32 + %99 = or disjoint i64 %98, %96 + store i64 %99, ptr %43, align 8, !tbaa !21 + br label %100 + +100: ; preds = %._crit_edge111, %bench_stats_start.exit44 + %.272 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %109, %._crit_edge111 ] + %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %.7.lcssa, %._crit_edge111 ] + %101 = load i32, ptr @numBlocks, align 4, !tbaa !4 + %102 = icmp sgt i32 %101, 0 + br i1 %102, label %.preheader, label %._crit_edge111 + +.preheader: ; preds = %100, %bench_async_handle.exit46 + %.266110 = phi i32 [ %106, %bench_async_handle.exit46 ], [ 0, %100 ] + %103 = load i32, ptr @bench_size, align 4, !tbaa !4 + %104 = call i32 @wc_AesCbcDecrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %103) #17 + %105 = icmp sgt i32 %104, -1 + br i1 %105, label %bench_async_handle.exit46, label %bench_async_handle.exit46.thread bench_async_handle.exit46: ; preds = %.preheader - %105 = add nuw nsw i32 %.266111, 1 - %106 = load i32, ptr @numBlocks, align 4, !tbaa !4 - %107 = icmp slt i32 %105, %106 - br i1 %107, label %.preheader, label %._crit_edge112, !llvm.loop !29 - -._crit_edge112: ; preds = %bench_async_handle.exit46, %99 - %.266.lcssa = phi i32 [ 0, %99 ], [ %105, %bench_async_handle.exit46 ] - %.7.lcssa = phi i32 [ %.6, %99 ], [ %103, %bench_async_handle.exit46 ] - %108 = add nsw i32 %.266.lcssa, %.272 - %109 = call fastcc i32 @bench_stats_check(double noundef %91) - %.not37 = icmp eq i32 %109, 0 - br i1 %.not37, label %bench_async_handle.exit46.thread, label %99, !llvm.loop !30 - -bench_async_handle.exit46.thread: ; preds = %._crit_edge112, %.preheader - %.373 = phi i32 [ %.272, %.preheader ], [ %108, %._crit_edge112 ] - %.9 = phi i32 [ %103, %.preheader ], [ %.7.lcssa, %._crit_edge112 ] - %110 = load i32, ptr @bench_size, align 4, !tbaa !4 - call fastcc void @bench_stats_sym_finish(ptr noundef %4, i32 noundef %.373, i32 noundef %110, double noundef %91, i32 noundef %.9) - br label %111 - -111: ; preds = %14, %18, %77, %bench_async_handle.exit46.thread, %.thread + %106 = add nuw nsw i32 %.266110, 1 + %107 = load i32, ptr @numBlocks, align 4, !tbaa !4 + %108 = icmp slt i32 %106, %107 + br i1 %108, label %.preheader, label %._crit_edge111, !llvm.loop !29 + +._crit_edge111: ; preds = %bench_async_handle.exit46, %100 + %.266.lcssa = phi i32 [ 0, %100 ], [ %106, %bench_async_handle.exit46 ] + %.7.lcssa = phi i32 [ %.6, %100 ], [ %104, %bench_async_handle.exit46 ] + %109 = add nsw i32 %.266.lcssa, %.272 + %110 = call fastcc i32 @bench_stats_check(double noundef %92) + %.not37 = icmp eq i32 %110, 0 + br i1 %.not37, label %bench_async_handle.exit46.thread, label %100, !llvm.loop !30 + +bench_async_handle.exit46.thread: ; preds = %._crit_edge111, %.preheader + %.373 = phi i32 [ %.272, %.preheader ], [ %109, %._crit_edge111 ] + %.9 = phi i32 [ %104, %.preheader ], [ %.7.lcssa, %._crit_edge111 ] + %111 = load i32, ptr @bench_size, align 4, !tbaa !4 + call fastcc void @bench_stats_sym_finish(ptr noundef %4, i32 noundef %.373, i32 noundef %111, double noundef %92, i32 noundef %.9) + br label %112 + +112: ; preds = %14, %18, %78, %bench_async_handle.exit46.thread, %.thread call void @wc_AesFree(ptr noundef nonnull %8) #17 call void @llvm.lifetime.end.p0(ptr nonnull %8) ret void @@ -5741,13 +5741,13 @@ define dso_local void @bench_rsa(i32 %0) local_unnamed_addr #0 { .preheader228.i: ; preds = %19 %25 = call ptr @wolfSSL_Malloc(i64 noundef 2048) #17 %26 = icmp eq ptr %25, null - br i1 %26, label %.split269.us.thread.i, label %29, !llvm.loop !127 + br i1 %26, label %.split267.us.thread.i, label %29, !llvm.loop !127 .thread215.i: ; preds = %19 %27 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.135, i32 noundef 8982) br label %bench_rsa_helper.exit -.split269.us.thread.i: ; preds = %.preheader228.i +.split267.us.thread.i: ; preds = %.preheader228.i %28 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.135, i32 noundef 8987) call void @wolfSSL_Free(ptr noundef nonnull %23) #17 br label %bench_rsa_helper.exit @@ -5798,7 +5798,7 @@ bench_stats_start.exit.i: ; preds = %30 br label %.preheader226.i .preheader226.i: ; preds = %bench_async_handle.exit.i, %55 - %.0180261.i = phi i32 [ 0, %55 ], [ %59, %bench_async_handle.exit.i ] + %.0180259.i = phi i32 [ 0, %55 ], [ %59, %bench_async_handle.exit.i ] %56 = call i32 @wc_RsaPublicEncrypt(ptr noundef nonnull %7, i32 noundef 25, ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %8, ptr noundef nonnull %10) #17 %57 = icmp sgt i32 %56, -1 br i1 %57, label %bench_async_handle.exit.i, label %.thread.i @@ -5806,10 +5806,10 @@ bench_stats_start.exit.i: ; preds = %30 .thread.i: ; preds = %.preheader226.i %58 = load ptr, ptr %22, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %58, i32 noundef %.0172.i, double noundef %45, i32 noundef %56) - br label %.split269.us.i + br label %.split267.us.i bench_async_handle.exit.i: ; preds = %.preheader226.i - %59 = add nuw nsw i32 %.0180261.i, 1 + %59 = add nuw nsw i32 %.0180259.i, 1 %exitcond.not.i = icmp eq i32 %59, 100 br i1 %exitcond.not.i, label %60, label %.preheader226.i, !llvm.loop !128 @@ -5882,15 +5882,15 @@ bench_stats_start.exit118.i: ; preds = %78 br label %.preheader223.i .preheader223.i: ; preds = %bench_async_handle.exit120.i, %102 - %.2182263.i = phi i32 [ 0, %102 ], [ %105, %bench_async_handle.exit120.i ] + %.2182261.i = phi i32 [ 0, %102 ], [ %105, %bench_async_handle.exit120.i ] %103 = call i32 @wc_RsaPrivateDecrypt(ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %25, i32 noundef 256, ptr noundef nonnull %8) #17 %104 = icmp sgt i32 %103, -1 br i1 %104, label %bench_async_handle.exit120.i, label %bench_async_handle.exit120.thread.i bench_async_handle.exit120.i: ; preds = %.preheader223.i - %105 = add nuw nsw i32 %.2182263.i, 1 - %exitcond291.not.i = icmp eq i32 %105, 100 - br i1 %exitcond291.not.i, label %106, label %.preheader223.i, !llvm.loop !130 + %105 = add nuw nsw i32 %.2182261.i, 1 + %exitcond289.not.i = icmp eq i32 %105, 100 + br i1 %exitcond289.not.i, label %106, label %.preheader223.i, !llvm.loop !130 106: ; preds = %bench_async_handle.exit120.i %107 = add nuw nsw i32 %.2174.i, 100 @@ -5903,7 +5903,7 @@ bench_async_handle.exit120.thread.i: ; preds = %106, %.preheader223 %109 = getelementptr inbounds nuw i8, ptr %22, i64 8 %110 = load ptr, ptr %109, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %110, i32 noundef %.3175.i, double noundef %94, i32 noundef %103) - br label %.split269.us.i + br label %.split267.us.i 111: ; preds = %29 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -5946,7 +5946,7 @@ bench_stats_start.exit121.i: ; preds = %111 br label %.preheader221.i .preheader221.i: ; preds = %bench_async_handle.exit123.i, %136 - %.4184265.i = phi i32 [ 0, %136 ], [ %141, %bench_async_handle.exit123.i ] + %.4184263.i = phi i32 [ 0, %136 ], [ %141, %bench_async_handle.exit123.i ] %137 = call i32 @wc_RsaSSL_Sign(ptr noundef nonnull %7, i32 noundef 25, ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %8, ptr noundef nonnull %10) #17 %138 = icmp sgt i32 %137, -1 br i1 %138, label %bench_async_handle.exit123.i, label %.thread203.i @@ -5955,12 +5955,12 @@ bench_stats_start.exit121.i: ; preds = %111 %139 = getelementptr inbounds nuw i8, ptr %22, i64 32 %140 = load ptr, ptr %139, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %140, i32 noundef %.4176.i, double noundef %126, i32 noundef %137) - br label %.split269.us.i + br label %.split267.us.i bench_async_handle.exit123.i: ; preds = %.preheader221.i - %141 = add nuw nsw i32 %.4184265.i, 1 - %exitcond292.not.i = icmp eq i32 %141, 100 - br i1 %exitcond292.not.i, label %142, label %.preheader221.i, !llvm.loop !132 + %141 = add nuw nsw i32 %.4184263.i, 1 + %exitcond290.not.i = icmp eq i32 %141, 100 + br i1 %exitcond290.not.i, label %142, label %.preheader221.i, !llvm.loop !132 142: ; preds = %bench_async_handle.exit123.i call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -6032,15 +6032,15 @@ bench_stats_start.exit124.i: ; preds = %160 br label %.preheader218.i .preheader218.i: ; preds = %bench_async_handle.exit126.i, %185 - %.6186267.i = phi i32 [ 0, %185 ], [ %188, %bench_async_handle.exit126.i ] + %.6186265.i = phi i32 [ 0, %185 ], [ %188, %bench_async_handle.exit126.i ] %186 = call i32 @wc_RsaSSL_Verify(ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %25, i32 noundef 256, ptr noundef nonnull %8) #17 %187 = icmp sgt i32 %186, -1 br i1 %187, label %bench_async_handle.exit126.i, label %bench_async_handle.exit126.thread.i bench_async_handle.exit126.i: ; preds = %.preheader218.i - %188 = add nuw nsw i32 %.6186267.i, 1 - %exitcond293.not.i = icmp eq i32 %188, 100 - br i1 %exitcond293.not.i, label %189, label %.preheader218.i, !llvm.loop !134 + %188 = add nuw nsw i32 %.6186265.i, 1 + %exitcond291.not.i = icmp eq i32 %188, 100 + br i1 %exitcond291.not.i, label %189, label %.preheader218.i, !llvm.loop !134 189: ; preds = %bench_async_handle.exit126.i %190 = add nuw nsw i32 %.6178.i, 100 @@ -6053,14 +6053,14 @@ bench_async_handle.exit126.thread.i: ; preds = %189, %.preheader218 %192 = getelementptr inbounds nuw i8, ptr %22, i64 40 %193 = load ptr, ptr %192, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %193, i32 noundef %.7179.i, double noundef %177, i32 noundef %186) - br label %.split269.us.i + br label %.split267.us.i -.split269.us.i: ; preds = %bench_async_handle.exit126.thread.i, %.thread203.i, %bench_async_handle.exit120.thread.i, %.thread.i +.split267.us.i: ; preds = %bench_async_handle.exit126.thread.i, %.thread203.i, %bench_async_handle.exit120.thread.i, %.thread.i call void @wolfSSL_Free(ptr noundef nonnull %23) #17 call void @wolfSSL_Free(ptr noundef nonnull %25) #17 br label %bench_rsa_helper.exit -bench_rsa_helper.exit: ; preds = %.thread215.i, %.split269.us.thread.i, %.split269.us.i +bench_rsa_helper.exit: ; preds = %.thread215.i, %.split267.us.thread.i, %.split267.us.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.loopexit diff --git a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll index 991a56df700..cb3c70ef59a 100644 --- a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll +++ b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll @@ -175739,8 +175739,8 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt store i64 %33, ptr %16, align 8, !noalias !45425 br label %34 -34: ; preds = %122, %30 - %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %122 ], [ %31, %30 ] +34: ; preds = %120, %30 + %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %120 ], [ %31, %30 ] resume { ptr, i32 } %.pn 35: ; preds = %19, %"._ZN89_$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnMut$LT$Args$GT$$GT$8call_mut17he945896eb4cb0123E.exit_crit_edge" @@ -175793,12 +175793,12 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt br i1 %45, label %53, label %52 52: ; preds = %42 - br i1 %brmerge1.not, label %54, label %84 + br i1 %brmerge1.not, label %54, label %82 53: ; preds = %42 - br i1 %brmerge1.not, label %70, label %84 + br i1 %brmerge1.not, label %70, label %82 -54: ; preds = %52, %70 +54: ; preds = %52 %55 = getelementptr inbounds nuw i8, ptr %4, i64 2672 %56 = load i32, ptr %55, align 8, !range !6848, !noundef !4 %57 = getelementptr inbounds nuw i8, ptr %4, i64 2676 @@ -175831,36 +175831,32 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt br label %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread 70: ; preds = %53 - %71 = trunc i8 %.sroa.7.0.copyload to i1 - br i1 %71, label %54, label %72 - -72: ; preds = %70 - %73 = getelementptr inbounds nuw i8, ptr %4, i64 4088 - %74 = load float, ptr %73, align 8, !noundef !4 - %75 = getelementptr inbounds nuw i8, ptr %4, i64 4092 - %76 = load float, ptr %75, align 4, !noundef !4 + %71 = getelementptr inbounds nuw i8, ptr %4, i64 4088 + %72 = load float, ptr %71, align 8, !noundef !4 + %73 = getelementptr inbounds nuw i8, ptr %4, i64 4092 + %74 = load float, ptr %73, align 4, !noundef !4 br label %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread -_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread: ; preds = %72, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" - %.sroa.7.0.ph = phi float [ %.sroa.0.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %74, %72 ] - %.sroa.9.0.ph = phi float [ %.sroa.6.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %76, %72 ] - %77 = bitcast float %.sroa.7.0.ph to i32 - %78 = bitcast float %.sroa.9.0.ph to i32 +_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread: ; preds = %70, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" + %.sroa.7.0.ph = phi float [ %.sroa.0.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %72, %70 ] + %.sroa.9.0.ph = phi float [ %.sroa.6.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %74, %70 ] + %75 = bitcast float %.sroa.7.0.ph to i32 + %76 = bitcast float %.sroa.9.0.ph to i32 br label %.thread164 _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit: ; preds = %54 - %79 = bitcast i32 %.sroa.510.sroa.0.0.copyload131 to float - %80 = bitcast i32 %.sroa.510.sroa.0.0.copyload132 to float + %77 = bitcast i32 %.sroa.510.sroa.0.0.copyload131 to float + %78 = bitcast i32 %.sroa.510.sroa.0.0.copyload132 to float %trunc = trunc nuw i32 %.sroa.08.0.copyload to i1 br i1 %trunc, label %.thread164, label %.thread179.sink.split .thread164: ; preds = %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit - %81 = phi i32 [ %78, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload132, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %82 = phi i32 [ %77, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload131, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %.sroa.9.0153 = phi float [ %.sroa.9.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %80, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %.sroa.7.0151 = phi float [ %.sroa.7.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %79, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %83 = getelementptr inbounds nuw i8, ptr %4, i64 4080 - store float 0.000000e+00, ptr %83, align 8 + %79 = phi i32 [ %76, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload132, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %80 = phi i32 [ %75, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload131, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %.sroa.9.0153 = phi float [ %.sroa.9.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %78, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %.sroa.7.0151 = phi float [ %.sroa.7.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %77, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %81 = getelementptr inbounds nuw i8, ptr %4, i64 4080 + store float 0.000000e+00, ptr %81, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4084 store float 0.000000e+00, ptr %.sroa.4.0..sroa_idx, align 4 %.sroa.516.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4088 @@ -175868,110 +175864,110 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e %.sroa.617.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4092 store float %.sroa.9.0153, ptr %.sroa.617.0..sroa_idx, align 4 store i64 0, ptr %5, align 8, !noalias !45439 - br label %85 + br label %83 -84: ; preds = %52, %53 +82: ; preds = %52, %53 store i64 0, ptr %5, align 8, !noalias !45446 %trunc70 = trunc nuw i32 %.sroa.08.0.copyload to i1 - br i1 %trunc70, label %85, label %.thread179 + br i1 %trunc70, label %83, label %.thread179 -85: ; preds = %84, %.thread164 - %.sroa.12.0170 = phi i32 [ %81, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %84 ] - %.sroa.6137.0169 = phi i32 [ %82, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %84 ] +83: ; preds = %82, %.thread164 + %.sroa.12.0170 = phi i32 [ %79, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %82 ] + %.sroa.6137.0169 = phi i32 [ %80, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %82 ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !45450 - %86 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 %.sroa.6137.0169, ptr %86, align 4, !noalias !45450 - %87 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 %.sroa.12.0170, ptr %87, align 4, !noalias !45450 + %84 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 %.sroa.6137.0169, ptr %84, align 4, !noalias !45450 + %85 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i32 %.sroa.12.0170, ptr %85, align 4, !noalias !45450 store i32 1, ptr %3, align 4, !noalias !45450 call void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePtr18set_size_and_scale17h3f6717d3c0cbc6ccE.llvm.6689388785225190856(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %0, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %3, i32 noundef 0, float undef) call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !45450 %.pr171 = load i64, ptr %5, align 8 - %88 = icmp eq i64 %.pr171, 0 - br i1 %88, label %.thread179, label %90 + %86 = icmp eq i64 %.pr171, 0 + br i1 %86, label %.thread179, label %88 .thread179.sink.split: ; preds = %38, %59, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit store i64 0, ptr %5, align 8, !noalias !4 br label %.thread179 -.thread179: ; preds = %.thread179.sink.split, %84, %85 +.thread179: ; preds = %.thread179.sink.split, %82, %83 store i64 -1, ptr %5, align 8 - %89 = getelementptr inbounds nuw i8, ptr %4, i64 2680 - invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface13ack_configure17h9f07ed30af10763bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %1) - to label %91 unwind label %122 + %87 = getelementptr inbounds nuw i8, ptr %4, i64 2680 + invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface13ack_configure17h9f07ed30af10763bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %87, i32 noundef %1) + to label %89 unwind label %120 -90: ; preds = %85 +88: ; preds = %83 tail call void @_ZN4core4cell22panic_already_borrowed17h47d80d4a02d76176E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.880) #55 unreachable -91: ; preds = %.thread179 +89: ; preds = %.thread179 %.sroa.3127.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 3992 %.sroa.3127.0.copyload = load float, ptr %.sroa.3127.0..sroa_idx, align 8 %.sroa.4128.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 3996 %.sroa.4128.0.copyload = load float, ptr %.sroa.4128.0..sroa_idx, align 4 - %92 = getelementptr inbounds nuw i8, ptr %4, i64 2672 - %93 = load i32, ptr %92, align 8, !range !6848, !noundef !4 - %94 = getelementptr inbounds nuw i8, ptr %4, i64 2676 - %95 = load float, ptr %94, align 4 - %trunc71 = trunc nuw i32 %93 to i1 - %.sroa.061.0 = select i1 %trunc71, float %95, float 0.000000e+00 - %96 = getelementptr inbounds nuw i8, ptr %4, i64 4116 - %.sroa.020.0.copyload = load i32, ptr %96, align 4 - %97 = trunc i32 %.sroa.020.0.copyload to i1 - %98 = fadd float %.sroa.061.0, 0.000000e+00 - %99 = fsub float %.sroa.4128.0.copyload, %.sroa.061.0 - %.sroa.16.0 = select i1 %97, float %.sroa.4128.0.copyload, float %99 - %100 = and i32 %.sroa.020.0.copyload, 16777216 - %.not.i77 = icmp eq i32 %100, 0 - %101 = fsub float %.sroa.16.0, %.sroa.061.0 - %.sroa.16.1 = select i1 %.not.i77, float %101, float %.sroa.16.0 - %102 = and i32 %.sroa.020.0.copyload, 256 - %.not3.i = icmp eq i32 %102, 0 - %103 = fsub float %.sroa.3127.0.copyload, %.sroa.061.0 - %.sroa.10123.0 = select i1 %.not3.i, float %103, float %.sroa.3127.0.copyload - %104 = and i32 %.sroa.020.0.copyload, 65536 - %.not4.i = icmp eq i32 %104, 0 - %105 = fsub float %.sroa.10123.0, %.sroa.061.0 - %.sroa.10123.1 = select i1 %.not4.i, float %105, float %.sroa.10123.0 - %106 = tail call i32 @llvm.fptosi.sat.i32.f32(float %98) - %107 = select i1 %.not3.i, i32 %106, i32 0 - %108 = select i1 %97, i32 0, i32 %106 - %109 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.10123.1) - %110 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.16.1) - %..i.i.i = tail call noundef i32 @llvm.smax.i32(i32 %109, i32 1) - %..i2.i.i = tail call noundef i32 @llvm.smax.i32(i32 %110, i32 1) - invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface19set_window_geometry17hc2720b7099082ac1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %107, i32 noundef %108, i32 noundef %..i.i.i, i32 noundef %..i2.i.i) - to label %111 unwind label %122 - -111: ; preds = %91 - %112 = getelementptr inbounds nuw i8, ptr %4, i64 4132 - %113 = load i8, ptr %112, align 4, !range !232, !noundef !4 - %114 = trunc nuw i8 %113 to i1 - br i1 %114, label %115, label %119 + %90 = getelementptr inbounds nuw i8, ptr %4, i64 2672 + %91 = load i32, ptr %90, align 8, !range !6848, !noundef !4 + %92 = getelementptr inbounds nuw i8, ptr %4, i64 2676 + %93 = load float, ptr %92, align 4 + %trunc71 = trunc nuw i32 %91 to i1 + %.sroa.061.0 = select i1 %trunc71, float %93, float 0.000000e+00 + %94 = getelementptr inbounds nuw i8, ptr %4, i64 4116 + %.sroa.020.0.copyload = load i32, ptr %94, align 4 + %95 = trunc i32 %.sroa.020.0.copyload to i1 + %96 = fadd float %.sroa.061.0, 0.000000e+00 + %97 = fsub float %.sroa.4128.0.copyload, %.sroa.061.0 + %.sroa.16.0 = select i1 %95, float %.sroa.4128.0.copyload, float %97 + %98 = and i32 %.sroa.020.0.copyload, 16777216 + %.not.i77 = icmp eq i32 %98, 0 + %99 = fsub float %.sroa.16.0, %.sroa.061.0 + %.sroa.16.1 = select i1 %.not.i77, float %99, float %.sroa.16.0 + %100 = and i32 %.sroa.020.0.copyload, 256 + %.not3.i = icmp eq i32 %100, 0 + %101 = fsub float %.sroa.3127.0.copyload, %.sroa.061.0 + %.sroa.10123.0 = select i1 %.not3.i, float %101, float %.sroa.3127.0.copyload + %102 = and i32 %.sroa.020.0.copyload, 65536 + %.not4.i = icmp eq i32 %102, 0 + %103 = fsub float %.sroa.10123.0, %.sroa.061.0 + %.sroa.10123.1 = select i1 %.not4.i, float %103, float %.sroa.10123.0 + %104 = tail call i32 @llvm.fptosi.sat.i32.f32(float %96) + %105 = select i1 %.not3.i, i32 %104, i32 0 + %106 = select i1 %95, i32 0, i32 %104 + %107 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.10123.1) + %108 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.16.1) + %..i.i.i = tail call noundef i32 @llvm.smax.i32(i32 %107, i32 1) + %..i2.i.i = tail call noundef i32 @llvm.smax.i32(i32 %108, i32 1) + invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface19set_window_geometry17hc2720b7099082ac1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %87, i32 noundef %105, i32 noundef %106, i32 noundef %..i.i.i, i32 noundef %..i2.i.i) + to label %109 unwind label %120 -115: ; preds = %111 - %116 = load i64, ptr %5, align 8, !noalias !45453, !noundef !4 - %117 = add i64 %116, 1 - store i64 %117, ptr %5, align 8, !noalias !45453 - br label %118 +109: ; preds = %89 + %110 = getelementptr inbounds nuw i8, ptr %4, i64 4132 + %111 = load i8, ptr %110, align 4, !range !232, !noundef !4 + %112 = trunc nuw i8 %111 to i1 + br i1 %112, label %113, label %117 + +113: ; preds = %109 + %114 = load i64, ptr %5, align 8, !noalias !45453, !noundef !4 + %115 = add i64 %114, 1 + store i64 %115, ptr %5, align 8, !noalias !45453 + br label %116 -118: ; preds = %119, %115 +116: ; preds = %117, %113 ret void -119: ; preds = %111 - store i8 1, ptr %112, align 4 - %120 = load i64, ptr %5, align 8, !noalias !45460, !noundef !4 - %121 = add i64 %120, 1 - store i64 %121, ptr %5, align 8, !noalias !45460 +117: ; preds = %109 + store i8 1, ptr %110, align 4 + %118 = load i64, ptr %5, align 8, !noalias !45460, !noundef !4 + %119 = add i64 %118, 1 + store i64 %119, ptr %5, align 8, !noalias !45460 tail call void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePtr5frame17hc749f47bd235e760E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %0) - br label %118 + br label %116 -122: ; preds = %91, %.thread179 +120: ; preds = %89, %.thread179 %lpad.thr_comm = landingpad { ptr, i32 } cleanup - %123 = load i64, ptr %5, align 8, !noalias !45467, !noundef !4 - %124 = add i64 %123, 1 - store i64 %124, ptr %5, align 8, !noalias !45467 + %121 = load i64, ptr %5, align 8, !noalias !45467, !noundef !4 + %122 = add i64 %121, 1 + store i64 %122, ptr %5, align 8, !noalias !45467 br label %34 } From fc7189dfbd8ac6e62964d840679ff80fc54e1829 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:49:25 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abseil-cpp/optimized/cord_rep_btree.ll | 196 +++++----- .../optimized/distribution_test_util.ll | 88 ++--- bench/assimp/optimized/TriangulateProcess.ll | 8 +- bench/boost/optimized/junit_log_formatter.ll | 12 +- bench/boost/optimized/xml_grammar.ll | 54 +-- .../optimized/backward_references_hq.ll | 68 ++-- bench/brotli/optimized/encode.ll | 34 +- .../optimized/btContinuousConvexCollision.ll | 122 +++--- bench/casadi/optimized/cvodea.ll | 244 ++++++------ bench/casadi/optimized/idaa.ll | 194 ++++----- bench/clamav/optimized/lzxd.ll | 72 ++-- bench/clamav/optimized/mszipd.ll | 120 +++--- bench/clamav/optimized/tnef.ll | 58 +-- bench/coremark/optimized/core_list_join.ll | 42 +- bench/cpython/optimized/longobject.ll | 248 ++++++------ bench/cpython/optimized/mpdecimal.ll | 246 ++++++------ bench/cpython/optimized/unicodeobject.ll | 156 ++++---- bench/cxxopts/optimized/example.ll | 170 ++++---- bench/duckdb/optimized/encode.ll | 30 +- bench/eastl/optimized/BenchmarkAlgorithm.ll | 44 +-- bench/eastl/optimized/EASprintfCore.ll | 192 ++++----- bench/fmt/optimized/scan-test.ll | 370 +++++++++--------- bench/git/optimized/cache-tree.ll | 222 +++++------ bench/git/optimized/tree-walk.ll | 136 +++---- bench/git/optimized/walker.ll | 50 +-- bench/gromacs/optimized/atomdata.ll | 10 +- bench/gromacs/optimized/tngio.ll | 318 +++++++-------- bench/hwloc/optimized/topology-synthetic.ll | 38 +- bench/hyperscan/optimized/ng_revacc.ll | 40 +- bench/lean4/optimized/name.ll | 296 +++++++------- bench/libigl/optimized/cotmatrix.ll | 24 +- bench/libigl/optimized/exact_geodesic.ll | 74 ++-- bench/libquic/optimized/s3_enc.ll | 56 +-- bench/linux/optimized/scsi.ll | 26 +- bench/llvm/optimized/APINotesReader.ll | 90 ++--- bench/llvm/optimized/ASTReader.ll | 96 ++--- bench/llvm/optimized/GlobalModuleIndex.ll | 100 ++--- bench/llvm/optimized/ItaniumMangle.ll | 88 ++--- bench/llvm/optimized/RegAllocGreedy.ll | 144 +++---- bench/llvm/optimized/SemaOverload.ll | 20 +- .../optimized/filter_parametrization.ll | 42 +- bench/oiio/optimized/exrinput_c.ll | 158 ++++---- bench/openjdk/optimized/check_classname.ll | 102 ++--- bench/openjdk/optimized/hb-blob.ll | 6 +- bench/openjdk/optimized/hb-ot-layout.ll | 58 +-- .../openssl/optimized/tls13encryptiontest.ll | 10 +- .../optimized/etaacdu7pg0nazmqnydgyjsn2.ll | 10 +- bench/postgres/optimized/fe-exec.ll | 6 +- bench/postgres/optimized/pl_gram.ll | 10 +- bench/qemu/optimized/fdt.ll | 22 +- bench/qemu/optimized/virtio-pci.ll | 38 +- bench/qemu/optimized/virtio.ll | 12 +- bench/rocksdb/optimized/version_set.ll | 30 +- bench/ruby/optimized/dir.ll | 46 +-- bench/slurm/optimized/slurmdb_defs.ll | 24 +- .../optimized/4wrr62dd33canpwl.ll | 10 +- .../optimized/5az6c15ag5q4gib5.ll | 106 ++--- bench/sqlite/optimized/shell.ll | 80 ++-- bench/sundials/optimized/cvodea.ll | 242 ++++++------ bench/sundials/optimized/idaa.ll | 190 ++++----- bench/tev/optimized/StbiLdrImageSaver.ll | 38 +- bench/typst-rs/optimized/5z4no3nnr5v1s13.ll | 20 +- bench/velox/optimized/DenseHll.ll | 102 ++--- bench/verilator/optimized/V3OrderParallel.ll | 16 +- bench/wireshark/optimized/androiddump.ll | 56 +-- bench/wolfssl/optimized/benchmark.ll | 132 +++---- .../optimized/3puy2qvhvlnhff2105q9h6j8i.ll | 152 +++---- 67 files changed, 3157 insertions(+), 3157 deletions(-) diff --git a/bench/abseil-cpp/optimized/cord_rep_btree.ll b/bench/abseil-cpp/optimized/cord_rep_btree.ll index 1eff67af271..2efa707f7b9 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree.ll @@ -1662,7 +1662,7 @@ define dso_local noalias noundef nonnull ptr @_ZN4absl13cord_internal12CordRepBt define weak_odr dso_local noundef ptr @_ZN4absl13cord_internal12CordRepBtree7AddDataILNS1_8EdgeTypeE1EEEPS1_S4_St17basic_string_viewIcSt11char_traitsIcEEm(ptr noundef %0, i64 %1, ptr %2, i64 noundef %3) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %5 = alloca %"struct.absl::cord_internal::(anonymous namespace)::StackOperations.0", align 8 %6 = icmp eq i64 %1, 0 - br i1 %6, label %199, label %7, !prof !29 + br i1 %6, label %205, label %7, !prof !29 7: ; preds = %4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 13 @@ -1805,7 +1805,7 @@ _ZN4absl13cord_internal12CordRepBtree10ToOpResultEb.exit: ; preds = %.lr.ph.i.i, %77 = add i64 %76, %1 store i64 %77, ptr %.sroa.0.0.i, align 8, !tbaa !7 %78 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull %0, i32 noundef %10, i64 noundef %1, ptr nonnull %.sroa.0.0.i, i32 %.sroa.3.0.i) - br label %198 + br label %204 79: ; preds = %_ZN4absl13cord_internal12CordRepBtree10ToOpResultEb.exit %80 = sub i64 %1, %73 @@ -1945,13 +1945,13 @@ _ZN4absl13cord_internal12CordRepBtree7AddEdgeILNS1_8EdgeTypeE1EEENS1_8OpResultEb %141 = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i -_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i: ; preds = %197, %140 - %.sroa.11.1 = phi ptr [ %.sroa.11.0, %140 ], [ %183, %197 ] - %.sroa.0.1 = phi i64 [ %.sroa.0.0, %140 ], [ %182, %197 ] - %.063 = phi i32 [ %10, %140 ], [ %187, %197 ] - %.261 = phi ptr [ %.059, %140 ], [ %184, %197 ] +_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i: ; preds = %198, %140 + %147 = phi ptr [ %.sroa.11.0, %140 ], [ %183, %197 ] + %.261136 = phi i64 [ %.sroa.0.0, %140 ], [ %182, %197 ] + %.063135 = phi i32 [ %10, %140 ], [ %188, %197 ] + %.sroa.0.1134 = phi ptr [ %.059, %140 ], [ %184, %197 ] %142 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - %143 = getelementptr inbounds nuw i8, ptr %142, i64 8 + %148 = getelementptr inbounds nuw i8, ptr %142, i64 8 store i32 2, ptr %143, align 4, !tbaa !24 %144 = getelementptr inbounds nuw i8, ptr %142, i64 12 store i8 3, ptr %144, align 4, !tbaa !25 @@ -1963,118 +1963,118 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i - %.029.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %168, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.01828.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %169, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.6.027.i = phi ptr [ %.sroa.11.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.0.026.i = phi i64 [ %.sroa.0.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %172, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %148 = add i64 %.sroa.0.026.i, %3 - %149 = icmp ult i64 %148, 20 - %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %148, i64 4083) - %150 = add nuw nsw i64 %spec.store.select.i.i.i, 13 - %.0.i.i.i = select i1 %149, i64 32, i64 %150 - %151 = icmp samesign ult i64 %.0.i.i.i, 513 - %.neg.i.i.i = select i1 %151, i64 -8, i64 -64 - %152 = select i1 %151, i64 8, i64 64 - %153 = add nsw i64 %.0.i.i.i, -1 - %154 = add nuw nsw i64 %153, %152 - %155 = and i64 %154, %.neg.i.i.i - %156 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %155) #21 - %157 = getelementptr inbounds nuw i8, ptr %156, i64 8 - store i64 2, ptr %157, align 8 - %158 = icmp samesign ult i64 %155, 513 - %.sink6.i.i.i.i.i = select i1 %158, i64 3, i64 6 - %.sink5.i.i.i.i.i = select i1 %158, i64 2, i64 58 - %159 = lshr i64 %155, %.sink6.i.i.i.i.i - %160 = add nuw nsw i64 %159, %.sink5.i.i.i.i.i - %161 = trunc nuw nsw i64 %160 to i8 - %162 = getelementptr inbounds nuw i8, ptr %156, i64 12 - store i8 %161, ptr %162, align 4, !tbaa !25 - %163 = trunc nuw nsw i64 %160 to i32 - %164 = icmp samesign ult i64 %160, 67 - %.sink6.i.i.i.i = select i1 %164, i32 3, i32 6 - %165 = shl nuw nsw i32 %163, %.sink6.i.i.i.i - %166 = select i1 %164, i32 -29, i32 -3725 - %narrow.i.i.i = add nsw i32 %165, %166 - %167 = sext i32 %narrow.i.i.i to i64 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0.026.i, i64 %167) - store i64 %.sroa.speculated.i, ptr %156, align 8, !tbaa !7 - %168 = add i64 %.sroa.speculated.i, %.029.i - %169 = add nuw nsw i64 %.01828.i, 1 - %170 = getelementptr inbounds nuw ptr, ptr %147, i64 %.01828.i - store ptr %156, ptr %170, align 8, !tbaa !17 - %171 = getelementptr inbounds nuw i8, ptr %156, i64 13 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %171, ptr align 1 %.sroa.6.027.i, i64 %.sroa.speculated.i, i1 false) - %172 = sub nuw i64 %.sroa.0.026.i, %.sroa.speculated.i - %173 = getelementptr inbounds nuw i8, ptr %.sroa.6.027.i, i64 %.sroa.speculated.i - %174 = icmp eq i64 %172, 0 - %175 = icmp eq i64 %169, 6 - %.not19.i = select i1 %174, i1 true, i1 %175 + %.029.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %169, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.01828.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %170, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.6.027.i = phi ptr [ %.sroa.11.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %174, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.0.026.i = phi i64 [ %.sroa.0.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %149 = add i64 %.sroa.0.026.i, %3 + %150 = icmp ult i64 %149, 20 + %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %149, i64 4083) + %151 = add nuw nsw i64 %spec.store.select.i.i.i, 13 + %.0.i.i.i = select i1 %150, i64 32, i64 %151 + %152 = icmp samesign ult i64 %.0.i.i.i, 513 + %.neg.i.i.i = select i1 %152, i64 -8, i64 -64 + %153 = select i1 %152, i64 8, i64 64 + %154 = add nsw i64 %.0.i.i.i, -1 + %155 = add nuw nsw i64 %154, %153 + %156 = and i64 %155, %.neg.i.i.i + %157 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %156) #21 + %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 + store i64 2, ptr %158, align 8 + %159 = icmp samesign ult i64 %156, 513 + %.sink6.i.i.i.i.i = select i1 %159, i64 3, i64 6 + %.sink5.i.i.i.i.i = select i1 %159, i64 2, i64 58 + %160 = lshr i64 %156, %.sink6.i.i.i.i.i + %161 = add nuw nsw i64 %160, %.sink5.i.i.i.i.i + %162 = trunc nuw nsw i64 %161 to i8 + %163 = getelementptr inbounds nuw i8, ptr %157, i64 12 + store i8 %162, ptr %163, align 4, !tbaa !25 + %164 = trunc nuw nsw i64 %161 to i32 + %165 = icmp samesign ult i64 %161, 67 + %.sink6.i.i.i.i = select i1 %165, i32 3, i32 6 + %166 = shl nuw nsw i32 %164, %.sink6.i.i.i.i + %167 = select i1 %165, i32 -29, i32 -3725 + %narrow.i.i.i = add nsw i32 %166, %167 + %168 = sext i32 %narrow.i.i.i to i64 + %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %.sroa.0.026.i, i64 %168) + store i64 %.sroa.speculated.i, ptr %157, align 8, !tbaa !7 + %169 = add i64 %.sroa.speculated.i, %.029.i + %170 = add nuw nsw i64 %.01828.i, 1 + %171 = getelementptr inbounds nuw ptr, ptr %147, i64 %.01828.i + store ptr %157, ptr %171, align 8, !tbaa !17 + %172 = getelementptr inbounds nuw i8, ptr %157, i64 13 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %172, ptr align 1 %.sroa.6.027.i, i64 %.sroa.speculated.i, i1 false) + %173 = sub nuw i64 %.sroa.0.026.i, %.sroa.speculated.i + %174 = getelementptr inbounds nuw i8, ptr %.sroa.6.027.i, i64 %.sroa.speculated.i + %175 = icmp eq i64 %173, 0 + %176 = icmp eq i64 %170, 6 + %.not19.i = select i1 %175, i1 true, i1 %176 br i1 %.not19.i, label %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i, !llvm.loop !47 _ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i - %176 = trunc i64 %169 to i8 - %177 = getelementptr inbounds nuw i8, ptr %142, i64 15 - store i64 %168, ptr %142, align 8, !tbaa !7 - store i8 %176, ptr %177, align 1, !tbaa !4 - %.not = icmp eq i64 %168, %.sroa.0.1 - br i1 %.not, label %.thread99, label %179 + %177 = trunc i64 %170 to i8 + %178 = getelementptr inbounds nuw i8, ptr %142, i64 15 + store i64 %169, ptr %142, align 8, !tbaa !7 + store i8 %177, ptr %178, align 1, !tbaa !4 + %.not = icmp eq i64 %169, %.sroa.0.1 + br i1 %.not, label %.thread99, label %180 .thread99: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %178 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063, i64 noundef %.sroa.0.1, ptr nonnull %142, i32 2) - br label %198 + %179 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063135, i64 noundef %.261136, ptr nonnull %142, i32 2) + br label %204 -179: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %180 = icmp ugt i64 %168, %.sroa.0.1 - br i1 %180, label %181, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit +180: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit + %181 = icmp ugt i64 %169, %.sroa.0.1 + br i1 %181, label %182, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit -181: ; preds = %179 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %168, i64 noundef %.sroa.0.1) #22 +182: ; preds = %180 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %169, i64 noundef %.sroa.0.1) #22 unreachable -_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit: ; preds = %179 - %182 = sub nuw i64 %.sroa.0.1, %168 - %183 = getelementptr inbounds nuw i8, ptr %.sroa.11.1, i64 %168 - %184 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063, i64 noundef %168, ptr nonnull %142, i32 2) - %185 = getelementptr inbounds nuw i8, ptr %184, i64 13 - %186 = load i8, ptr %185, align 1, !tbaa !4 - %187 = zext i8 %186 to i32 - %.not107 = icmp eq i8 %186, 0 - br i1 %.not107, label %197, label %.lr.ph.i71 +_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit: ; preds = %180 + %183 = sub nuw i64 %.sroa.0.1, %169 + %184 = getelementptr inbounds nuw i8, ptr %.sroa.11.1, i64 %169 + %185 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063135, i64 noundef %169, ptr nonnull %142, i32 2) + %186 = getelementptr inbounds nuw i8, ptr %185, i64 13 + %187 = load i8, ptr %186, align 1, !tbaa !4 + %188 = zext i8 %187 to i32 + %.not107 = icmp eq i8 %187, 0 + br i1 %.not107, label %198, label %.lr.ph.i71 .lr.ph.i71: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit - %wide.trip.count.i72 = zext i8 %186 to i64 - br label %188 + %wide.trip.count.i72 = zext i8 %187 to i64 + br label %189 -188: ; preds = %188, %.lr.ph.i71 +189: ; preds = %189, %.lr.ph.i71 %indvars.iv.i73 = phi i64 [ 0, %.lr.ph.i71 ], [ %indvars.iv.next.i74, %188 ] - %.067.i = phi ptr [ %184, %.lr.ph.i71 ], [ %195, %188 ] + %.067.i = phi ptr [ %185, %.lr.ph.i71 ], [ %196, %188 ] %indvars.iv.next.i74 = add nuw nsw i64 %indvars.iv.i73, 1 - %189 = getelementptr inbounds nuw ptr, ptr %141, i64 %indvars.iv.i73 - store ptr %.067.i, ptr %189, align 8, !tbaa !14 - %190 = getelementptr inbounds nuw i8, ptr %.067.i, i64 15 - %191 = load i8, ptr %190, align 1 - %192 = zext i8 %191 to i64 - %193 = getelementptr i8, ptr %.067.i, i64 8 - %194 = getelementptr ptr, ptr %193, i64 %192 - %195 = load ptr, ptr %194, align 8, !tbaa !17 + %190 = getelementptr inbounds nuw ptr, ptr %141, i64 %indvars.iv.i73 + store ptr %.067.i, ptr %190, align 8, !tbaa !14 + %191 = getelementptr inbounds nuw i8, ptr %.067.i, i64 15 + %192 = load i8, ptr %191, align 1 + %193 = zext i8 %192 to i64 + %194 = getelementptr i8, ptr %.067.i, i64 8 + %195 = getelementptr ptr, ptr %194, i64 %193 + %196 = load ptr, ptr %195, align 8, !tbaa !17 %exitcond.not.i75 = icmp eq i64 %indvars.iv.next.i74, %wide.trip.count.i72 - br i1 %exitcond.not.i75, label %._crit_edge.loopexit.i76, label %188, !llvm.loop !48 + br i1 %exitcond.not.i75, label %._crit_edge.loopexit.i76, label %189, !llvm.loop !48 -._crit_edge.loopexit.i76: ; preds = %188 - %196 = add nuw nsw i32 %187, 1 - br label %197 +._crit_edge.loopexit.i76: ; preds = %189 + %197 = add nuw nsw i32 %188, 1 + br label %198 -197: ; preds = %._crit_edge.loopexit.i76, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit - %.0.lcssa.i70 = phi i32 [ 1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit ], [ %196, %._crit_edge.loopexit.i76 ] +198: ; preds = %._crit_edge.loopexit.i76, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit + %.0.lcssa.i70 = phi i32 [ 1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit ], [ %197, %._crit_edge.loopexit.i76 ] store i32 %.0.lcssa.i70, ptr %5, align 8, !tbaa !33 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i -198: ; preds = %.thread99, %.thread - %.3 = phi ptr [ %78, %.thread ], [ %178, %.thread99 ] +204: ; preds = %.thread99, %.thread + %.3 = phi ptr [ %78, %.thread ], [ %179, %.thread99 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %199 + br label %205 -199: ; preds = %4, %198 +205: ; preds = %4, %204 %.0 = phi ptr [ %.3, %198 ], [ %0, %4 ] ret ptr %.0 } diff --git a/bench/abseil-cpp/optimized/distribution_test_util.ll b/bench/abseil-cpp/optimized/distribution_test_util.ll index 27a092e51a4..05d3a0790c4 100644 --- a/bench/abseil-cpp/optimized/distribution_test_util.ll +++ b/bench/abseil-cpp/optimized/distribution_test_util.ll @@ -572,7 +572,7 @@ define internal fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_121 %5 = fcmp olt double %3, 5.000000e-01 br i1 %5, label %6, label %10 -common.ret193: ; preds = %82, %111, %89, %93, %6 +common.ret193: ; preds = %82, %112, %.loopexit, %90, %6 %common.ret193.op = phi double [ %9, %6 ], [ 0x7FF0000000000000, %82 ], [ %.1145162, %111 ], [ %.1145162, %93 ], [ %90, %89 ] ret double %common.ret193.op @@ -680,59 +680,59 @@ common.ret193: ; preds = %82, %111, %89, %93, %87 = fcmp ogt double %.sroa.speculated132, 1.000000e+00 br i1 %87, label %common.ret193, label %.lr.ph -.lr.ph: ; preds = %113, %82 - %.1145162 = phi double [ %.sroa.speculated132, %82 ], [ %108, %113 ] +.loopexit: ; preds = %114, %82 + %.1145162 = phi double [ %.sroa.speculated132, %82 ], [ %109, %113 ] %88 = fcmp oeq double %.1145162, 1.000000e+00 br i1 %88, label %93, label %89 -89: ; preds = %.lr.ph +.lr.ph: ; preds = %.loopexit %90 = tail call fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_118BetaIncompleteImplEdddd(double noundef %.1145162, double noundef %0, double noundef %1, double noundef %2) %91 = tail call double @llvm.fabs.f64(double %90) %92 = fcmp ueq double %91, 0x7FF0000000000000 br i1 %92, label %common.ret193, label %93 -93: ; preds = %.lr.ph, %89 +90: ; preds = %.lr.ph, %89 %.0116 = phi double [ %90, %89 ], [ %.1145162, %.lr.ph ] %.0116.fr = freeze double %.0116 - %94 = fsub double %.0116.fr, %3 - %95 = tail call double @log(double noundef %.1145162) #14, !tbaa !12 - %96 = tail call double @llvm.fmuladd.f64(double %85, double %95, double %2) - %97 = fsub double 1.000000e+00, %.1145162 - %98 = tail call double @log(double noundef %97) #14, !tbaa !12 - %99 = tail call double @llvm.fmuladd.f64(double %86, double %98, double %96) - %100 = tail call double @exp(double noundef %99) #14, !tbaa !12 - %.fr = freeze double %100 - %101 = fmul double %94, %.fr - %102 = fmul double %101, %101 - %103 = fcmp olt double %102, 0x3D06849B86A12B9B - br i1 %103, label %common.ret193, label %.split - -.split: ; preds = %93, %116 - %.0104 = phi double [ %117, %116 ], [ 1.000000e+00, %93 ] - %104 = fmul double %101, %.0104 - %105 = fmul double %104, %104 - %106 = fcmp ult double %105, 1.000000e+00 - br i1 %106, label %107, label %116, !llvm.loop !38 - -107: ; preds = %.split - %108 = fsub double %.1145162, %104 - %109 = fcmp olt double %108, 0.000000e+00 - %110 = fcmp ogt double %108, 1.000000e+00 - %or.cond7 = or i1 %109, %110 - br i1 %or.cond7, label %116, label %111, !llvm.loop !38 - -111: ; preds = %107 - %112 = fcmp oeq double %108, %.1145162 - br i1 %112, label %common.ret193, label %113 - -113: ; preds = %111 - %114 = fcmp oeq double %108, 0.000000e+00 - %115 = fcmp oeq double %108, 1.000000e+00 - %or.cond9 = or i1 %114, %115 - br i1 %or.cond9, label %116, label %.lr.ph, !llvm.loop !38 - -116: ; preds = %113, %107, %.split - %117 = fdiv double %.0104, 3.000000e+00 + %95 = fsub double %.0116.fr, %3 + %96 = tail call double @log(double noundef %.1145162) #14, !tbaa !12 + %97 = tail call double @llvm.fmuladd.f64(double %85, double %96, double %2) + %98 = fsub double 1.000000e+00, %.1145162 + %99 = tail call double @log(double noundef %98) #14, !tbaa !12 + %100 = tail call double @llvm.fmuladd.f64(double %86, double %99, double %97) + %101 = tail call double @exp(double noundef %100) #14, !tbaa !12 + %.fr = freeze double %101 + %102 = fmul double %95, %.fr + %103 = fmul double %102, %102 + %104 = fcmp olt double %103, 0x3D06849B86A12B9B + br i1 %104, label %common.ret193, label %.split + +.split: ; preds = %93, %117 + %.0104 = phi double [ %118, %116 ], [ 1.000000e+00, %93 ] + %105 = fmul double %102, %.0104 + %106 = fmul double %105, %105 + %107 = fcmp ult double %106, 1.000000e+00 + br i1 %107, label %108, label %117, !llvm.loop !38 + +108: ; preds = %.split + %109 = fsub double %.1145162, %105 + %110 = fcmp olt double %109, 0.000000e+00 + %111 = fcmp ogt double %109, 1.000000e+00 + %or.cond7 = or i1 %110, %111 + br i1 %or.cond7, label %117, label %112, !llvm.loop !38 + +112: ; preds = %108 + %113 = fcmp oeq double %109, %.1145162 + br i1 %113, label %common.ret193, label %114 + +114: ; preds = %112 + %115 = fcmp oeq double %109, 0.000000e+00 + %116 = fcmp oeq double %109, 1.000000e+00 + %or.cond9 = or i1 %115, %116 + br i1 %or.cond9, label %117, label %.loopexit, !llvm.loop !38 + +117: ; preds = %114, %108, %.split + %118 = fdiv double %.0104, 3.000000e+00 br label %.split } diff --git a/bench/assimp/optimized/TriangulateProcess.ll b/bench/assimp/optimized/TriangulateProcess.ll index b54250cc151..ef3c611cbf8 100644 --- a/bench/assimp/optimized/TriangulateProcess.ll +++ b/bench/assimp/optimized/TriangulateProcess.ll @@ -4242,16 +4242,16 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N %60 = getelementptr inbounds nuw i8, ptr %59, i64 56 store ptr null, ptr %60, align 8 store ptr null, ptr %58, align 8 - br label %.lr.ph.us.preheader.i + br label %.lr.ph80.i -.lr.ph.us.preheader.i: ; preds = %._crit_edge81.i, %57 +.lr.ph80.i: ; preds = %._crit_edge81.i, %57 %.058.i = phi ptr [ %55, %57 ], [ %.260.us.i, %._crit_edge81.i ] %.0.i = phi i32 [ 1, %57 ], [ %103, %._crit_edge81.i ] %.not74.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not74.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph80.i %.04678.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] %.04877.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %.05576.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] @@ -4363,7 +4363,7 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N store ptr null, ptr %101, align 8 %102 = icmp eq i32 %.04678.us.i, 0 %103 = shl nsw i32 %.0.i, 1 - br i1 %102, label %_ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit, label %.lr.ph.us.preheader.i, !llvm.loop !52 + br i1 %102, label %_ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit, label %.lr.ph80.i, !llvm.loop !52 _ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit: ; preds = %._crit_edge81.i ret void diff --git a/bench/boost/optimized/junit_log_formatter.ll b/bench/boost/optimized/junit_log_formatter.ll index d0f5048a01d..4ebbfa59b02 100644 --- a/bench/boost/optimized/junit_log_formatter.ll +++ b/bench/boost/optimized/junit_log_formatter.ll @@ -10406,11 +10406,11 @@ define linkonce_odr hidden void @_ZN5boost9unit_test5utils13print_escapedERSoNS0 %20 = getelementptr inbounds nuw i8, ptr %1, i64 8 %21 = load ptr, ptr %20, align 8, !tbaa !8 %22 = icmp eq ptr %19, %21 - br i1 %22, label %._crit_edge, label %.lr.ph + br i1 %22, label %.critedge, label %.lr.ph .lr.ph: ; preds = %18, %76 - %.sroa.028.032 = phi ptr [ %77, %76 ], [ %19, %18 ] - %23 = load i8, ptr %.sroa.028.032, align 1, !tbaa !9 + %.sroa.028.033 = phi ptr [ %77, %76 ], [ %19, %18 ] + %23 = load i8, ptr %.sroa.028.033, align 1, !tbaa !9 %24 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN5boost9unit_test5utils13print_escapedERSoNS0_13basic_cstringIKcEEE9char_type, i64 16), align 8, !tbaa !13 %.not10.i.i.i = icmp eq ptr %24, null br i1 %.not10.i.i.i, label %select.unfold, label %.lr.ph.i.i.i @@ -10531,11 +10531,11 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit18: ; preds = %72, %74 br label %76 76: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit18, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c.exit15 - %77 = getelementptr inbounds nuw i8, ptr %.sroa.028.032, i64 1 + %77 = getelementptr inbounds nuw i8, ptr %.sroa.028.033, i64 1 %78 = icmp eq ptr %77, %21 - br i1 %78, label %._crit_edge, label %.lr.ph, !llvm.loop !299 + br i1 %78, label %.critedge, label %.lr.ph, !llvm.loop !299 -._crit_edge: ; preds = %76, %18 +.critedge: ; preds = %76, %18 ret void } diff --git a/bench/boost/optimized/xml_grammar.ll b/bench/boost/optimized/xml_grammar.ll index 757e8969bb4..0ab474011f1 100644 --- a/bench/boost/optimized/xml_grammar.ll +++ b/bench/boost/optimized/xml_grammar.ll @@ -11552,18 +11552,18 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitI %isdigit.i.i.i.i.i.i.i.i32 = icmp ult i8 %29, 10 br i1 %isdigit.i.i.i.i.i.i.i.i32, label %.lr.ph, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i -.lr.ph: ; preds = %.lr.ph.i.i.i.i.i.i.preheader +.lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.preheader %30 = zext nneg i8 %28 to i32 br label %34 -.lr.ph.i.i.i.i.i.i: ; preds = %42 +.lr.ph.i.i.i.i.i.i:; preds = %42 %31 = load i8, ptr %46, align 1, !tbaa !21 %32 = sext i8 %31 to i32 %33 = add i8 %31, -48 %isdigit.i.i.i.i.i.i.i.i = icmp ult i8 %33, 10 br i1 %isdigit.i.i.i.i.i.i.i.i, label %34, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 -34: ; preds = %.lr.ph, %.lr.ph.i.i.i.i.i.i +34:; preds = %.lr.ph.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i %35 = phi i32 [ %30, %.lr.ph ], [ %32, %.lr.ph.i.i.i.i.i.i ] %36 = phi ptr [ %25, %.lr.ph ], [ %46, %.lr.ph.i.i.i.i.i.i ] %.0.i.i.i.i.i34 = phi i64 [ 0, %.lr.ph ], [ %45, %.lr.ph.i.i.i.i.i.i ] @@ -11571,13 +11571,13 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitI %37 = icmp ugt i32 %.012.i.i.i.i.i33, 429496729 br i1 %37, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %38 -38: ; preds = %34 +38:; preds = %34 %39 = mul nuw i32 %.012.i.i.i.i.i33, 10 %40 = sub nsw i32 47, %35 %41 = icmp ugt i32 %39, %40 br i1 %41, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %42 -42: ; preds = %38 +42: ; preds = %38 %43 = add i32 %39, -48 %44 = add i32 %43, %35 %45 = add i64 %.0.i.i.i.i.i34, 1 @@ -11591,36 +11591,36 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitI br label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 _ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, %.lr.ph.i.i.i.i.i.i.preheader - %49 = phi i1 [ true, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ false, %.lr.ph.i.i.i.i.i.i.preheader ], [ false, %.lr.ph.i.i.i.i.i.i ] - %50 = phi ptr [ %46, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %46, %.lr.ph.i.i.i.i.i.i ] + %46 = phi i1 [ true, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ false, %.lr.ph.i.i.i.i.i.i.preheader ], [ false, %.lr.ph.i.i.i.i.i.i ] + %47 = phi ptr [ %46, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %46, %.lr.ph.i.i.i.i.i.i ] %.113.i.i.i.i.i = phi i32 [ %44, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %44, %.lr.ph.i.i.i.i.i.i ] %.1.i.i.i.i.i = phi i64 [ %45, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %45, %.lr.ph.i.i.i.i.i.i ] %or.cond.i = icmp sgt i64 %.1.i.i.i.i.i, 0 br i1 %or.cond.i, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit: ; preds = %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i - %51 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %52 = load ptr, ptr %51, align 8, !tbaa !203 - store i32 %.113.i.i.i.i.i, ptr %52, align 4, !tbaa !42 - br i1 %49, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %53 - -53: ; preds = %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit - %54 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %55 = load i8, ptr %50, align 1, !tbaa !21 - %56 = sext i8 %55 to i32 - %57 = load i32, ptr %54, align 8, !tbaa !150 - %58 = icmp eq i32 %57, %56 - br i1 %58, label %59, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread - -59: ; preds = %53 - %60 = getelementptr inbounds nuw i8, ptr %50, i64 1 - store ptr %60, ptr %5, align 8, !tbaa !102 - %61 = add nuw nsw i64 %3, 3 - %62 = add nuw nsw i64 %61, %.1.i.i.i.i.i + %48 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %49 = load ptr, ptr %48, align 8, !tbaa !203 + store i32 %.113.i.i.i.i.i, ptr %49, align 4, !tbaa !42 + br i1 %46, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %50 + +50: ; preds = %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit + %51 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %52 = load i8, ptr %47, align 1, !tbaa !21 + %53 = sext i8 %52 to i32 + %54 = load i32, ptr %51, align 8, !tbaa !150 + %55 = icmp eq i32 %54, %53 + br i1 %55, label %56, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread + +56: ; preds = %50 + %57 = getelementptr inbounds nuw i8, ptr %47, i64 1 + store ptr %57, ptr %5, align 8, !tbaa !102 + %58 = add nuw nsw i64 %3, 3 + %59 = add nuw nsw i64 %58, %.1.i.i.i.i.i br label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread -_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %34, %38, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %53, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %59 - %.sroa.09.1 = phi i64 [ %62, %59 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %53 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %38 ], [ -1, %34 ] +_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %34, %38, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %50, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %56 + %.sroa.09.1 = phi i64 [ %59, %59 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %53 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %38 ], [ -1, %34 ] ret i64 %.sroa.09.1 } diff --git a/bench/brotli/optimized/backward_references_hq.ll b/bench/brotli/optimized/backward_references_hq.ll index 3475aaac6ab..a3bfb407b57 100644 --- a/bench/brotli/optimized/backward_references_hq.ll +++ b/bench/brotli/optimized/backward_references_hq.ll @@ -825,11 +825,11 @@ FindMatchLengthWithLimit.exit.i: ; preds = %197, %.critedge.i.i br i1 %258, label %._crit_edge, label %.lr.ph415 StoreAndFindMatchesH10.exit.sink.split: ; preds = %186, %230 - %.0102.i410.lcssa667.sink = phi i64 [ %.0102.i410, %230 ], [ %.0102.i.lcssa, %186 ] + %.0102.i410.lcssa671.sink = phi i64 [ %.0102.i410, %230 ], [ %.0102.i.lcssa, %186 ] %.sink = phi i32 [ %236, %230 ], [ %187, %186 ] %.2259.ph = phi i64 [ %.5, %230 ], [ %.4.lcssa, %186 ] %.4.i.ph = phi ptr [ %.2.i163, %230 ], [ %.0.i161.lcssa, %186 ] - %259 = getelementptr inbounds nuw i32, ptr %171, i64 %.0102.i410.lcssa667.sink + %259 = getelementptr inbounds nuw i32, ptr %171, i64 %.0102.i410.lcssa671.sink store i32 %.sink, ptr %259, align 4, !tbaa !3, !noalias !90 br label %StoreAndFindMatchesH10.exit @@ -1028,10 +1028,10 @@ FindAllMatchesH10.exit: ; preds = %291, %268, %263 br i1 %.not.i.i179440, label %.critedge.i.i180, label %.lr.ph444.preheader .lr.ph444.preheader: ; preds = %372, %.preheader333 - %.022.i.i174.lcssa654 = phi ptr [ %385, %.preheader333 ], [ %373, %372 ] - %.025.i.i173.lcssa653 = phi ptr [ %384, %.preheader333 ], [ %266, %372 ] - %.027.i.i172.lcssa652 = phi i64 [ %386, %.preheader333 ], [ %361, %372 ] - %scevgep589 = getelementptr i8, ptr %.022.i.i174.lcssa654, i64 %.027.i.i172.lcssa652 + %.022.i.i174.lcssa658 = phi ptr [ %385, %.preheader333 ], [ %373, %372 ] + %.025.i.i173.lcssa657 = phi ptr [ %384, %.preheader333 ], [ %266, %372 ] + %.027.i.i172.lcssa656 = phi i64 [ %386, %.preheader333 ], [ %361, %372 ] + %scevgep589 = getelementptr i8, ptr %.022.i.i174.lcssa658, i64 %.027.i.i172.lcssa656 br label %.lr.ph444 .lr.ph436: ; preds = %372, %383 @@ -1061,9 +1061,9 @@ FindAllMatchesH10.exit: ; preds = %291, %268, %263 br i1 %387, label %.lr.ph436, label %.preheader333, !llvm.loop !66 .lr.ph444: ; preds = %.lr.ph444.preheader, %391 - %.224.i.i178443 = phi ptr [ %394, %391 ], [ %.022.i.i174.lcssa654, %.lr.ph444.preheader ] - %.126.i.i177442 = phi ptr [ %393, %391 ], [ %.025.i.i173.lcssa653, %.lr.ph444.preheader ] - %.128.i.i176441 = phi i64 [ %392, %391 ], [ %.027.i.i172.lcssa652, %.lr.ph444.preheader ] + %.224.i.i178443 = phi ptr [ %394, %391 ], [ %.022.i.i174.lcssa658, %.lr.ph444.preheader ] + %.126.i.i177442 = phi ptr [ %393, %391 ], [ %.025.i.i173.lcssa657, %.lr.ph444.preheader ] + %.128.i.i176441 = phi i64 [ %392, %391 ], [ %.027.i.i172.lcssa656, %.lr.ph444.preheader ] %388 = load i8, ptr %.224.i.i178443, align 1, !tbaa !7, !noalias !99 %389 = load i8, ptr %.126.i.i177442, align 1, !tbaa !7, !alias.scope !99 %390 = icmp eq i8 %388, %389 @@ -1415,8 +1415,8 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %516, %.critedge.i.i 540: ; preds = %FindMatchLengthWithLimit.exit.i.i %541 = and i64 %.093.i.i483, %486 - %.idx646 = shl nuw nsw i64 %541, 3 - %542 = getelementptr inbounds nuw i8, ptr %489, i64 %.idx646 + %.idx650 = shl nuw nsw i64 %541, 3 + %542 = getelementptr inbounds nuw i8, ptr %489, i64 %.idx650 %543 = load i32, ptr %542, align 4, !tbaa !3, !noalias !131 %544 = getelementptr inbounds nuw i32, ptr %489, i64 %.098.i.i481 store i32 %543, ptr %544, align 4, !tbaa !3, !noalias !131 @@ -1460,9 +1460,9 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %516, %.critedge.i.i StoreH10.exit: ; preds = %._crit_edge486, %540 %.0102.i.i.lcssa.sink = phi i64 [ %.0102.i.i.lcssa, %._crit_edge486 ], [ %.0102.i.i480, %540 ] - %.sink699 = phi i32 [ %506, %._crit_edge486 ], [ %546, %540 ] + %.sink703 = phi i32 [ %506, %._crit_edge486 ], [ %546, %540 ] %563 = getelementptr inbounds nuw i32, ptr %489, i64 %.0102.i.i.lcssa.sink - store i32 %.sink699, ptr %563, align 4, !tbaa !3, !noalias !131 + store i32 %.sink703, ptr %563, align 4, !tbaa !3, !noalias !131 %564 = add i64 %.0.i154492, 8 %565 = icmp ult i64 %564, %spec.select.i153 br i1 %565, label %490, label %.loopexit338, !llvm.loop !133 @@ -1606,8 +1606,8 @@ FindMatchLengthWithLimit.exit.i.i210: ; preds = %597, %.critedge.i.i 621: ; preds = %FindMatchLengthWithLimit.exit.i.i210 %622 = and i64 %.093.i.i198518, %567 - %.idx647 = shl nuw nsw i64 %622, 3 - %623 = getelementptr inbounds nuw i8, ptr %570, i64 %.idx647 + %.idx651 = shl nuw nsw i64 %622, 3 + %623 = getelementptr inbounds nuw i8, ptr %570, i64 %.idx651 %624 = load i32, ptr %623, align 4, !tbaa !3, !noalias !149 %625 = getelementptr inbounds nuw i32, ptr %570, i64 %.098.i.i197516 store i32 %624, ptr %625, align 4, !tbaa !3, !noalias !149 @@ -1651,9 +1651,9 @@ FindMatchLengthWithLimit.exit.i.i210: ; preds = %597, %.critedge.i.i StoreH10.exit236: ; preds = %._crit_edge521, %621 %.0102.i.i196.lcssa.sink = phi i64 [ %.0102.i.i196.lcssa, %._crit_edge521 ], [ %.0102.i.i196515, %621 ] - %.sink701 = phi i32 [ %587, %._crit_edge521 ], [ %627, %621 ] + %.sink705 = phi i32 [ %587, %._crit_edge521 ], [ %627, %621 ] %644 = getelementptr inbounds nuw i32, ptr %570, i64 %.0102.i.i196.lcssa.sink - store i32 %.sink701, ptr %644, align 4, !tbaa !3, !noalias !149 + store i32 %.sink705, ptr %644, align 4, !tbaa !3, !noalias !149 %645 = add nuw i64 %.1.i155527, 1 %646 = icmp ult i64 %645, %481 br i1 %646, label %571, label %.lr.ph536.preheader, !llvm.loop !151 @@ -3419,11 +3419,11 @@ FindMatchLengthWithLimit.exit.i: ; preds = %195, %.critedge.i.i br i1 %256, label %._crit_edge, label %.lr.ph511 StoreAndFindMatchesH10.exit.sink.split: ; preds = %184, %228 - %.0102.i506.lcssa779.sink = phi i64 [ %.0102.i506, %228 ], [ %.0102.i.lcssa, %184 ] + %.0102.i506.lcssa783.sink = phi i64 [ %.0102.i506, %228 ], [ %.0102.i.lcssa, %184 ] %.sink = phi i32 [ %234, %228 ], [ %185, %184 ] %.2.ph = phi i64 [ %.5, %228 ], [ %.4.lcssa, %184 ] %.4.i.ph = phi ptr [ %.2.i244, %228 ], [ %.0.i242.lcssa, %184 ] - %257 = getelementptr inbounds nuw i32, ptr %169, i64 %.0102.i506.lcssa779.sink + %257 = getelementptr inbounds nuw i32, ptr %169, i64 %.0102.i506.lcssa783.sink store i32 %.sink, ptr %257, align 4, !tbaa !3, !noalias !200 br label %StoreAndFindMatchesH10.exit @@ -3624,10 +3624,10 @@ FindAllMatchesH10.exit: ; preds = %289, %266, %261 br i1 %.not.i.i260536, label %.critedge.i.i261, label %.lr.ph540.preheader .lr.ph540.preheader: ; preds = %372, %.preheader427 - %.022.i.i255.lcssa762 = phi ptr [ %385, %.preheader427 ], [ %373, %372 ] - %.025.i.i254.lcssa761 = phi ptr [ %384, %.preheader427 ], [ %264, %372 ] - %.027.i.i253.lcssa760 = phi i64 [ %386, %.preheader427 ], [ %361, %372 ] - %scevgep683 = getelementptr i8, ptr %.022.i.i255.lcssa762, i64 %.027.i.i253.lcssa760 + %.022.i.i255.lcssa766 = phi ptr [ %385, %.preheader427 ], [ %373, %372 ] + %.025.i.i254.lcssa765 = phi ptr [ %384, %.preheader427 ], [ %264, %372 ] + %.027.i.i253.lcssa764 = phi i64 [ %386, %.preheader427 ], [ %361, %372 ] + %scevgep683 = getelementptr i8, ptr %.022.i.i255.lcssa766, i64 %.027.i.i253.lcssa764 br label %.lr.ph540 .lr.ph532: ; preds = %372, %383 @@ -3657,9 +3657,9 @@ FindAllMatchesH10.exit: ; preds = %289, %266, %261 br i1 %387, label %.lr.ph532, label %.preheader427, !llvm.loop !66 .lr.ph540: ; preds = %.lr.ph540.preheader, %391 - %.224.i.i259539 = phi ptr [ %394, %391 ], [ %.022.i.i255.lcssa762, %.lr.ph540.preheader ] - %.126.i.i258538 = phi ptr [ %393, %391 ], [ %.025.i.i254.lcssa761, %.lr.ph540.preheader ] - %.128.i.i257537 = phi i64 [ %392, %391 ], [ %.027.i.i253.lcssa760, %.lr.ph540.preheader ] + %.224.i.i259539 = phi ptr [ %394, %391 ], [ %.022.i.i255.lcssa766, %.lr.ph540.preheader ] + %.126.i.i258538 = phi ptr [ %393, %391 ], [ %.025.i.i254.lcssa765, %.lr.ph540.preheader ] + %.128.i.i257537 = phi i64 [ %392, %391 ], [ %.027.i.i253.lcssa764, %.lr.ph540.preheader ] %388 = load i8, ptr %.224.i.i259539, align 1, !tbaa !7, !noalias !205 %389 = load i8, ptr %.126.i.i258538, align 1, !tbaa !7, !alias.scope !205 %390 = icmp eq i8 %388, %389 @@ -3991,8 +3991,8 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %507, %.critedge.i.i 531: ; preds = %FindMatchLengthWithLimit.exit.i.i %532 = and i64 %.093.i.i579, %477 - %.idx753 = shl nuw nsw i64 %532, 3 - %533 = getelementptr inbounds nuw i8, ptr %480, i64 %.idx753 + %.idx757 = shl nuw nsw i64 %532, 3 + %533 = getelementptr inbounds nuw i8, ptr %480, i64 %.idx757 %534 = load i32, ptr %533, align 4, !tbaa !3, !noalias !223 %535 = getelementptr inbounds nuw i32, ptr %480, i64 %.098.i.i577 store i32 %534, ptr %535, align 4, !tbaa !3, !noalias !223 @@ -4036,9 +4036,9 @@ FindMatchLengthWithLimit.exit.i.i: ; preds = %507, %.critedge.i.i StoreH10.exit: ; preds = %._crit_edge582, %531 %.0102.i.i.lcssa.sink = phi i64 [ %.0102.i.i.lcssa, %._crit_edge582 ], [ %.0102.i.i576, %531 ] - %.sink809 = phi i32 [ %497, %._crit_edge582 ], [ %537, %531 ] + %.sink813 = phi i32 [ %497, %._crit_edge582 ], [ %537, %531 ] %554 = getelementptr inbounds nuw i32, ptr %480, i64 %.0102.i.i.lcssa.sink - store i32 %.sink809, ptr %554, align 4, !tbaa !3, !noalias !223 + store i32 %.sink813, ptr %554, align 4, !tbaa !3, !noalias !223 %555 = add i64 %.0.i235588, 8 %556 = icmp ult i64 %555, %spec.select.i234 br i1 %556, label %481, label %.loopexit, !llvm.loop !133 @@ -4177,8 +4177,8 @@ FindMatchLengthWithLimit.exit.i.i291: ; preds = %588, %.critedge.i.i 612: ; preds = %FindMatchLengthWithLimit.exit.i.i291 %613 = and i64 %.093.i.i279614, %558 - %.idx754 = shl nuw nsw i64 %613, 3 - %614 = getelementptr inbounds nuw i8, ptr %561, i64 %.idx754 + %.idx758 = shl nuw nsw i64 %613, 3 + %614 = getelementptr inbounds nuw i8, ptr %561, i64 %.idx758 %615 = load i32, ptr %614, align 4, !tbaa !3, !noalias !240 %616 = getelementptr inbounds nuw i32, ptr %561, i64 %.098.i.i278612 store i32 %615, ptr %616, align 4, !tbaa !3, !noalias !240 @@ -4222,9 +4222,9 @@ FindMatchLengthWithLimit.exit.i.i291: ; preds = %588, %.critedge.i.i StoreH10.exit317: ; preds = %._crit_edge617, %612 %.0102.i.i277.lcssa.sink = phi i64 [ %.0102.i.i277.lcssa, %._crit_edge617 ], [ %.0102.i.i277611, %612 ] - %.sink811 = phi i32 [ %578, %._crit_edge617 ], [ %618, %612 ] + %.sink815 = phi i32 [ %578, %._crit_edge617 ], [ %618, %612 ] %635 = getelementptr inbounds nuw i32, ptr %561, i64 %.0102.i.i277.lcssa.sink - store i32 %.sink811, ptr %635, align 4, !tbaa !3, !noalias !240 + store i32 %.sink815, ptr %635, align 4, !tbaa !3, !noalias !240 %636 = add nuw i64 %.1.i236623, 1 %637 = icmp ult i64 %636, %472 br i1 %637, label %562, label %StoreRangeH10.exit, !llvm.loop !151 diff --git a/bench/brotli/optimized/encode.ll b/bench/brotli/optimized/encode.ll index cc3ec1350ed..2dc9c7714ea 100644 --- a/bench/brotli/optimized/encode.ll +++ b/bench/brotli/optimized/encode.ll @@ -2706,7 +2706,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %343 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !146 %344 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %343, ptr %344, align 8, !tbaa !151, !alias.scope !146 - br label %.thread538 + br label %.thread540 345: ; preds = %339 %346 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2715,7 +2715,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %347 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !152 %348 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %347, ptr %348, align 8, !tbaa !157, !alias.scope !152 - br label %.thread538 + br label %.thread540 349: ; preds = %339 %350 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2724,17 +2724,17 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %351 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !158 %352 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %351, ptr %352, align 8, !tbaa !163, !alias.scope !158 - br label %.thread538 + br label %.thread540 353: ; preds = %339 %354 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH5(ptr noundef nonnull %175, ptr noundef nonnull %354) - br label %.thread538 + br label %.thread540 355: ; preds = %339 %356 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH6(ptr noundef nonnull %175, ptr noundef nonnull %356) - br label %.thread538 + br label %.thread540 357: ; preds = %339 %.val323 = load i32, ptr %30, align 4, !tbaa !47 @@ -2755,7 +2755,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %367 = zext i32 %366 to i64 %368 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %367, ptr %368, align 8, !tbaa !169, !alias.scope !164 - br label %.thread538 + br label %.thread540 369: ; preds = %339 %.val324 = load i32, ptr %30, align 4, !tbaa !47 @@ -2776,7 +2776,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %379 = zext i32 %378 to i64 %380 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %379, ptr %380, align 8, !tbaa !175, !alias.scope !170 - br label %.thread538 + br label %.thread540 381: ; preds = %339 %.val325 = load i32, ptr %30, align 4, !tbaa !47 @@ -2797,7 +2797,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %391 = zext i32 %390 to i64 %392 = getelementptr inbounds nuw i8, ptr %0, i64 2736 store i64 %391, ptr %392, align 8, !tbaa !181, !alias.scope !176 - br label %.thread538 + br label %.thread540 393: ; preds = %339 %394 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2806,17 +2806,17 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %395 = load ptr, ptr %175, align 8, !tbaa !63, !noalias !182 %396 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %395, ptr %396, align 8, !tbaa !187, !alias.scope !182 - br label %.thread538 + br label %.thread540 397: ; preds = %339 %398 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH58(ptr noundef nonnull %175, ptr noundef nonnull %398) - br label %.thread538 + br label %.thread540 399: ; preds = %339 %400 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @InitializeH68(ptr noundef nonnull %175, ptr noundef nonnull %400) - br label %.thread538 + br label %.thread540 401: ; preds = %339 %402 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2829,7 +2829,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %405, align 8, !tbaa !196, !alias.scope !192 %406 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %406, align 8, !tbaa !197, !alias.scope !192 - br label %.thread538 + br label %.thread540 407: ; preds = %339 %408 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2842,7 +2842,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %411, align 8, !tbaa !203, !alias.scope !200 %412 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %412, align 8, !tbaa !204, !alias.scope !200 - br label %.thread538 + br label %.thread540 413: ; preds = %339 %414 = getelementptr inbounds nuw i8, ptr %0, i64 1976 @@ -2855,7 +2855,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i32 1, ptr %417, align 8, !tbaa !212, !alias.scope !209 %418 = getelementptr inbounds nuw i8, ptr %0, i64 1992 store ptr %0, ptr %418, align 8, !tbaa !213, !alias.scope !209 - br label %.thread538 + br label %.thread540 419: ; preds = %339 %420 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2874,9 +2874,9 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI store i64 %425, ptr %420, align 8, !tbaa !220, !alias.scope !216 %426 = getelementptr inbounds nuw i8, ptr %0, i64 1728 store i32 %.neg.i, ptr %426, align 8, !tbaa !221, !alias.scope !216 - br label %.thread538 + br label %.thread540 -.thread538: ; preds = %339, %341, %345, %349, %353, %355, %357, %369, %381, %393, %397, %399, %401, %407, %413, %419 +.thread540: ; preds = %339, %341, %345, %349, %353, %355, %357, %369, %381, %393, %397, %399, %401, %407, %413, %419 %427 = getelementptr inbounds nuw i8, ptr %0, i64 1704 store i32 0, ptr %427, align 8, !tbaa !222 store i32 1, ptr %183, align 8, !tbaa !135 @@ -2891,7 +2891,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI %431 = getelementptr inbounds nuw i8, ptr %0, i64 1704 br i1 %430, label %432, label %HasherSetup.exit -432: ; preds = %.thread538, %429 +432: ; preds = %.thread540, %429 %433 = phi ptr [ %428, %.thread538 ], [ %431, %429 ] %434 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %435 = load i32, ptr %434, align 8, !tbaa !145 diff --git a/bench/bullet3/optimized/btContinuousConvexCollision.ll b/bench/bullet3/optimized/btContinuousConvexCollision.ll index 4a40b6db365..c2ea7d47f3a 100644 --- a/bench/bullet3/optimized/btContinuousConvexCollision.ll +++ b/bench/bullet3/optimized/btContinuousConvexCollision.ll @@ -530,7 +530,7 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %sqrt.i110 = call noundef float @llvm.sqrt.f32(float %101) %102 = fadd float %92, %sqrt.i110 %103 = fcmp oeq float %102, 0.000000e+00 - br i1 %103, label %180, label %104 + br i1 %103, label %181, label %104 104: ; preds = %83 call void @llvm.lifetime.start.p0(ptr nonnull %15) @@ -589,13 +589,13 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %.sroa.9136.0..sroa_idx137 = getelementptr inbounds nuw i8, ptr %21, i64 12 br label %134 -134: ; preds = %.lr.ph, %173 - %.0186 = phi float [ %114, %.lr.ph ], [ %175, %173 ] - %.070185 = phi i32 [ 0, %.lr.ph ], [ %174, %173 ] - %.075184 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %173 ] - %.sroa.12142.0183 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %173 ] - %.sroa.9136.0182 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %173 ] - %.sroa.0132.0181 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %173 ] +134: ; preds = %.lr.ph, %174 + %.0189 = phi float [ %114, %.lr.ph ], [ %176, %173 ] + %.070188 = phi i32 [ 0, %.lr.ph ], [ %175, %173 ] + %.075187 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %173 ] + %.sroa.12142.0186 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %173 ] + %.sroa.9136.0185 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %173 ] + %.sroa.0132.0184 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %173 ] %135 = load ptr, ptr %122, align 8, !tbaa !48 %.not86 = icmp eq ptr %135, null br i1 %.not86, label %140, label %136 @@ -614,111 +614,111 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO br label %140 140: ; preds = %136, %134 - %141 = fmul float %96, %.sroa.9136.0182 - %142 = call float @llvm.fmuladd.f32(float %93, float %.sroa.0132.0181, float %141) - %143 = call noundef float @llvm.fmuladd.f32(float %98, float %.sroa.12142.0183, float %142) + %141 = fmul float %96, %.sroa.9136.0185 + %142 = call float @llvm.fmuladd.f32(float %93, float %.sroa.0132.0184, float %141) + %143 = call noundef float @llvm.fmuladd.f32(float %98, float %.sroa.12142.0186, float %142) %144 = fadd float %92, %143 %145 = fcmp ugt float %144, 0x3E80000000000000 br i1 %145, label %146, label %.critedge 146: ; preds = %140 - %147 = fdiv float %.0186, %144 - %148 = fadd float %.075184, %147 + %147 = fdiv float %.0189, %144 + %148 = fadd float %.075187, %147 %149 = fcmp ule float %148, 1.000000e+00 %150 = fcmp ugt float %148, %.075184 - %or.cond94 = and i1 %149, %150 - br i1 %or.cond94, label %151, label %.critedge + %or.cond.not165 = and i1 %149, %150 + br i1 %or.cond94, label %152, label %.critedge -151: ; preds = %146 +152: ; preds = %146 call void @llvm.lifetime.start.p0(ptr nonnull %18) call void @llvm.lifetime.start.p0(ptr nonnull %19) call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(ptr noundef nonnull align 4 dereferenceable(64) %1, ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %12, float noundef %148, ptr noundef nonnull align 4 dereferenceable(64) %18) call void @_ZN15btTransformUtil18integrateTransformERK11btTransformRK9btVector3S5_fRS0_(ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %14, float noundef %148, ptr noundef nonnull align 4 dereferenceable(64) %19) - %152 = load ptr, ptr %122, align 8, !tbaa !48 - %.not87 = icmp eq ptr %152, null - br i1 %.not87, label %157, label %153 + %153 = load ptr, ptr %122, align 8, !tbaa !48 + %.not87 = icmp eq ptr %153, null + br i1 %.not87, label %158, label %154 -153: ; preds = %151 +154: ; preds = %152 call void @llvm.lifetime.start.p0(ptr nonnull %20) store float 1.000000e+00, ptr %20, align 4, !tbaa !31 store float 0.000000e+00, ptr %127, align 4, !tbaa !31 store float 0.000000e+00, ptr %128, align 4, !tbaa !31 store float 0.000000e+00, ptr %129, align 4, !tbaa !31 - %154 = load ptr, ptr %152, align 8, !tbaa !4 - %155 = getelementptr inbounds nuw i8, ptr %154, i64 56 - %156 = load ptr, ptr %155, align 8 - call void %156(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) + %155 = load ptr, ptr %153, align 8, !tbaa !4 + %156 = getelementptr inbounds nuw i8, ptr %155, i64 56 + %157 = load ptr, ptr %156, align 8 + call void %156(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) call void @llvm.lifetime.end.p0(ptr nonnull %20) - br label %157 + br label %158 -157: ; preds = %153, %151 - %158 = load ptr, ptr %5, align 8, !tbaa !4 - %159 = load ptr, ptr %158, align 8 +158: ; preds = %154, %152 + %159 = load ptr, ptr %5, align 8, !tbaa !4 + %160 = load ptr, ptr %159, align 8 call void %159(ptr noundef nonnull align 8 dereferenceable(196) %5, float noundef %148) call void @llvm.lifetime.start.p0(ptr nonnull %21) store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTV16btPointCollector, i64 16), ptr %21, align 8, !tbaa !4 store float 0x43ABC16D60000000, ptr %130, align 8, !tbaa !38 store i8 0, ptr %131, align 4, !tbaa !42 call void @_ZN27btContinuousConvexCollision20computeClosestPointsERK11btTransformS2_R16btPointCollector(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 4 dereferenceable(64) %18, ptr noundef nonnull align 4 dereferenceable(64) %19, ptr noundef nonnull align 8 dereferenceable(45) %21) - %160 = load i8, ptr %131, align 4, !tbaa !42, !range !43, !noundef !44 - %161 = trunc nuw i8 %160 to i1 - br i1 %161, label %162, label %165 + %161 = load i8, ptr %131, align 4, !tbaa !42, !range !43, !noundef !44 + %162 = trunc nuw i8 %161 to i1 + br i1 %162, label %163, label %166 -162: ; preds = %157 - %163 = load float, ptr %130, align 8, !tbaa !38 - %164 = load float, ptr %112, align 8, !tbaa !45 +163: ; preds = %158 + %164 = load float, ptr %130, align 8, !tbaa !38 + %165 = load float, ptr %112, align 8, !tbaa !45 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %132, i64 16, i1 false), !tbaa.struct !29 - %exitcond = icmp eq i32 %.070185, 64 - br i1 %exitcond, label %169, label %173 - -165: ; preds = %157 - %166 = load ptr, ptr %5, align 8, !tbaa !4 - %167 = getelementptr inbounds nuw i8, ptr %166, i64 16 - %168 = load ptr, ptr %167, align 8 - call void %168(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070185) + %exitcond = icmp eq i32 %.070188, 64 + br i1 %exitcond, label %170, label %174 + +166: ; preds = %158 + %167 = load ptr, ptr %5, align 8, !tbaa !4 + %168 = getelementptr inbounds nuw i8, ptr %167, i64 16 + %169 = load ptr, ptr %168, align 8 + call void %168(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070188) br label %.critedge.critedge -169: ; preds = %162 - %170 = load ptr, ptr %5, align 8, !tbaa !4 - %171 = getelementptr inbounds nuw i8, ptr %170, i64 16 - %172 = load ptr, ptr %171, align 8 +170: ; preds = %163 + %171 = load ptr, ptr %5, align 8, !tbaa !4 + %172 = getelementptr inbounds nuw i8, ptr %171, i64 16 + %173 = load ptr, ptr %172, align 8 call void %172(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -2, i32 noundef 65) br label %.critedge.critedge -173: ; preds = %162 - %174 = add nuw nsw i32 %.070185, 1 +174: ; preds = %163 + %175 = add nuw nsw i32 %.070188, 1 %.sroa.15148.0.copyload150 = load float, ptr %.sroa.15148.0..sroa_idx149, align 4, !tbaa !30 %.sroa.12142.0.copyload144 = load float, ptr %.sroa.12142.0..sroa_idx143, align 8 %.sroa.9136.0.copyload138 = load float, ptr %.sroa.9136.0..sroa_idx137, align 4 %.sroa.0132.0.copyload134 = load float, ptr %133, align 8 - %175 = fadd float %163, %164 + %176 = fadd float %164, %165 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.lifetime.end.p0(ptr nonnull %19) call void @llvm.lifetime.end.p0(ptr nonnull %18) - %176 = fcmp ogt float %175, 0x3F50624DE0000000 - br i1 %176, label %134, label %._crit_edge, !llvm.loop !49 + %177 = fcmp ogt float %176, 0x3F50624DE0000000 + br i1 %177, label %134, label %._crit_edge, !llvm.loop !49 -._crit_edge: ; preds = %173, %.preheader +._crit_edge: ; preds = %174, %.preheader %.sroa.0132.0.lcssa = phi float [ %.sroa.0132.0.copyload, %.preheader ], [ %.sroa.0132.0.copyload134, %173 ] %.sroa.9136.0.lcssa = phi float [ %.sroa.9136.0.copyload, %.preheader ], [ %.sroa.9136.0.copyload138, %173 ] %.sroa.12142.0.lcssa = phi float [ %.sroa.12142.0.copyload, %.preheader ], [ %.sroa.12142.0.copyload144, %173 ] %.sroa.15148.0.lcssa = phi float [ %.sroa.15148.0.copyload, %.preheader ], [ %.sroa.15148.0.copyload150, %173 ] %.075.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %148, %173 ] - %177 = getelementptr inbounds nuw i8, ptr %5, i64 168 - store float %.075.lcssa, ptr %177, align 8, !tbaa !51 - %178 = getelementptr inbounds nuw i8, ptr %5, i64 136 - store float %.sroa.0132.0.lcssa, ptr %178, align 8 + %178 = getelementptr inbounds nuw i8, ptr %5, i64 168 + store float %.075.lcssa, ptr %178, align 8, !tbaa !51 + %179 = getelementptr inbounds nuw i8, ptr %5, i64 136 + store float %.sroa.0132.0.lcssa, ptr %179, align 8 %.sroa.9136.0..sroa_idx139 = getelementptr inbounds nuw i8, ptr %5, i64 140 store float %.sroa.9136.0.lcssa, ptr %.sroa.9136.0..sroa_idx139, align 4 %.sroa.12142.0..sroa_idx145 = getelementptr inbounds nuw i8, ptr %5, i64 144 store float %.sroa.12142.0.lcssa, ptr %.sroa.12142.0..sroa_idx145, align 8 %.sroa.15148.0..sroa_idx151 = getelementptr inbounds nuw i8, ptr %5, i64 148 store float %.sroa.15148.0.lcssa, ptr %.sroa.15148.0..sroa_idx151, align 4, !tbaa !30 - %179 = getelementptr inbounds nuw i8, ptr %5, i64 152 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %179, ptr noundef nonnull align 4 dereferenceable(16) %15, i64 16, i1 false), !tbaa.struct !29 + %180 = getelementptr inbounds nuw i8, ptr %5, i64 152 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef nonnull align 4 dereferenceable(16) %15, i64 16, i1 false), !tbaa.struct !29 br label %.critedge -.critedge.critedge: ; preds = %165, %169 +.critedge.critedge: ; preds = %166, %170 call void @llvm.lifetime.end.p0(ptr nonnull %21) call void @llvm.lifetime.end.p0(ptr nonnull %19) call void @llvm.lifetime.end.p0(ptr nonnull %18) @@ -728,9 +728,9 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %.569 = phi i1 [ true, %._crit_edge ], [ false, %110 ], [ false, %104 ], [ false, %.critedge.critedge ], [ false, %140 ], [ false, %146 ] call void @llvm.lifetime.end.p0(ptr nonnull %16) call void @llvm.lifetime.end.p0(ptr nonnull %15) - br label %180 + br label %181 -180: ; preds = %83, %.critedge +181: ; preds = %83, %.critedge %.064 = phi i1 [ %.569, %.critedge ], [ false, %83 ] call void @llvm.lifetime.end.p0(ptr nonnull %14) call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/casadi/optimized/cvodea.ll b/bench/casadi/optimized/cvodea.ll index 795d3aff517..df40d8b1d5a 100644 --- a/bench/casadi/optimized/cvodea.ll +++ b/bench/casadi/optimized/cvodea.ll @@ -4331,7 +4331,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !40 - %.fr261 = freeze ptr %21 + %.fr284 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !43 %.not = icmp eq i32 %23, 0 @@ -4344,44 +4344,44 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !62 - %.fr259 = freeze double %27 + %.fr282 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !63 - %.fr260 = freeze double %28 - %29 = fcmp ogt double %.fr259, %.fr260 + %.fr283 = freeze double %28 + %29 = fcmp ogt double %.fr282, %.fr283 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 56 %32 = load i32, ptr %31, align 8, !tbaa !45 %.not147 = icmp eq i32 %32, 0 - br i1 %.not147, label %72, label %.preheader169 + br i1 %.not147, label %72, label %.preheader170 -.preheader169: ; preds = %25 - %.not148176 = icmp eq ptr %.fr261, null - br i1 %.not148176, label %._crit_edge, label %.lr.ph +.preheader170: ; preds = %25 + %.not148180 = icmp eq ptr %.fr284, null + br i1 %.not148180, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader169 +.lr.ph: ; preds = %.preheader170 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 164 br label %35 35: ; preds = %.lr.ph, %62 - %.0135177 = phi ptr [ %.fr261, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0135177, i64 16 + %.0135181 = phi ptr [ %.fr284, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0135181, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !123 %38 = getelementptr inbounds nuw i8, ptr %37, i64 984 %39 = load double, ptr %38, align 8, !tbaa !77 - %40 = fsub double %39, %.fr260 + %40 = fsub double %39, %.fr283 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr259, %39 + %44 = fsub double %.fr282, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0135177, align 8, !tbaa !203 + %48 = load i32, ptr %.0135181, align 8, !tbaa !203 tail call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -104, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.26, i32 noundef %48) #8 br label %.critedge163 @@ -4392,18 +4392,18 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0135177, align 8, !tbaa !203 + %54 = load i32, ptr %.0135181, align 8, !tbaa !203 tail call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -22, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.27, i32 noundef %54) #8 br label %.critedge163 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0135177, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0135181, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !205 %.not159 = icmp eq i32 %57, 0 br i1 %.not159, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0135177, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0135181, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !210 %.not160 = icmp eq i32 %60, 0 br i1 %.not160, label %62, label %61 @@ -4413,12 +4413,12 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0135177, i64 120 + %63 = getelementptr inbounds nuw i8, ptr %.0135181, i64 120 %64 = load ptr, ptr %63, align 8, !tbaa !119 %.not148 = icmp eq ptr %64, null br i1 %.not148, label %._crit_edge, label %35, !llvm.loop !213 -._crit_edge: ; preds = %62, %.preheader169 +._crit_edge: ; preds = %62, %.preheader170 %65 = getelementptr inbounds nuw i8, ptr %14, i64 164 %66 = load i32, ptr %65, align 4, !tbaa !39 %.not149 = icmp eq i32 %66, 0 @@ -4449,20 +4449,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr260 + %77 = fsub double %1, %.fr283 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr259, %1 + %81 = fsub double %.fr282, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %84, label %103 84: ; preds = %80, %75 %85 = load double, ptr %0, align 8, !tbaa !68 - %86 = tail call double @SUNRabs(double noundef %.fr260) #8 + %86 = tail call double @SUNRabs(double noundef %.fr283) #8 %87 = load double, ptr %26, align 8, !tbaa !62 %88 = tail call double @SUNRabs(double noundef %87) #8 %89 = load double, ptr %14, align 8, !tbaa !63 @@ -4492,8 +4492,8 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %.0132 = phi double [ %101, %99 ], [ %1, %80 ] %104 = getelementptr inbounds nuw i8, ptr %14, i64 64 %105 = load ptr, ptr %104, align 8, !tbaa !18 - %.not151178 = icmp eq ptr %.fr261, null - br i1 %.not151178, label %.critedge.us, label %.split + %.not151182 = icmp eq ptr %.fr284, null + br i1 %.not151182, label %.critedge.us, label %.split .critedge.us: ; preds = %103, %.critedge.us %.0133.us = phi ptr [ %107, %.critedge.us ], [ %105, %103 ] @@ -4507,24 +4507,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %110 = icmp eq i32 %2, 2 %111 = load ptr, ptr %109, align 8, !tbaa !24 %.not153.us.us = icmp eq ptr %.0133.us, %111 - br i1 %110, label %.split216.us.split.us, label %.split216.us.split.split.us + br i1 %110, label %.split221.us.split.us, label %.split221.us.split.split.us .split: ; preds = %103 %112 = icmp eq i32 %2, 1 - br i1 %112, label %.lr.ph181.us, label %.lr.ph181 + br i1 %112, label %.lr.ph185.us, label %.lr.ph185 -.lr.ph181.us: ; preds = %.split, %..critedge_crit_edge.split.us198 - %.0133.us192 = phi ptr [ %129, %..critedge_crit_edge.split.us198 ], [ %105, %.split ] - %113 = load double, ptr %.0133.us192, align 8, !tbaa !132 +.lr.ph185.us: ; preds = %.split, %..critedge_crit_edge.split.us202 + %.0133.us196 = phi ptr [ %129, %..critedge_crit_edge.split.us198 ], [ %105, %.split ] + %113 = load double, ptr %.0133.us196, align 8, !tbaa !132 %.fr = freeze double %113 %114 = fsub double %.0132, %.fr %115 = fmul double %114, %76 %116 = fcmp ult double %115, 0.000000e+00 - br i1 %116, label %.lr.ph181.split.split.us.us, label %.lr.ph181.split.split.us197 + br i1 %116, label %.lr.ph185.split.split.us.us, label %.lr.ph185.split.split.us201 -.lr.ph181.split.split.us197: ; preds = %.lr.ph181.us, %125 - %.1136179.us193 = phi ptr [ %127, %125 ], [ %.fr261, %.lr.ph181.us ] - %117 = getelementptr inbounds nuw i8, ptr %.1136179.us193, i64 16 +.lr.ph185.split.split.us201: ; preds = %.lr.ph185.us, %125 + %.1136183.us197 = phi ptr [ %127, %125 ], [ %.fr284, %.lr.ph181.us ] + %117 = getelementptr inbounds nuw i8, ptr %.1136183.us197, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 984 %120 = load double, ptr %119, align 8, !tbaa !77 @@ -4532,24 +4532,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %122 = fmul double %121, %76 %123 = fcmp ogt double %122, 0.000000e+00 %124 = fcmp oeq double %120, %.fr - %or.cond257 = or i1 %123, %124 - br i1 %or.cond257, label %.loopexit, label %125 + %or.cond280 = or i1 %123, %124 + br i1 %or.cond280, label %.loopexit, label %125 -125: ; preds = %.lr.ph181.split.split.us197 - %126 = getelementptr inbounds nuw i8, ptr %.1136179.us193, i64 120 +125: ; preds = %.lr.ph185.split.split.us201 + %126 = getelementptr inbounds nuw i8, ptr %.1136183.us197, i64 120 %127 = load ptr, ptr %126, align 8, !tbaa !119 - %.not151.us194 = icmp eq ptr %127, null - br i1 %.not151.us194, label %..critedge_crit_edge.split.us198, label %.lr.ph181.split.split.us197, !llvm.loop !214 + %.not151.us198 = icmp eq ptr %127, null + br i1 %.not151.us198, label %..critedge_crit_edge.split.us202, label %.lr.ph185.split.split.us201, !llvm.loop !214 -..critedge_crit_edge.split.us198: ; preds = %125, %138 - %128 = getelementptr inbounds nuw i8, ptr %.0133.us192, i64 816 +..critedge_crit_edge.split.us202: ; preds = %125, %138 + %128 = getelementptr inbounds nuw i8, ptr %.0133.us196, i64 816 %129 = load ptr, ptr %128, align 8, !tbaa !105 %130 = icmp eq ptr %129, null - br i1 %130, label %.loopexit, label %.lr.ph181.us + br i1 %130, label %.loopexit, label %.lr.ph185.us -.lr.ph181.split.split.us.us: ; preds = %.lr.ph181.us, %138 - %.1136179.us182.us = phi ptr [ %140, %138 ], [ %.fr261, %.lr.ph181.us ] - %131 = getelementptr inbounds nuw i8, ptr %.1136179.us182.us, i64 16 +.lr.ph185.split.split.us.us: ; preds = %.lr.ph185.us, %138 + %.1136183.us186.us = phi ptr [ %140, %138 ], [ %.fr284, %.lr.ph181.us ] + %131 = getelementptr inbounds nuw i8, ptr %.1136183.us186.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 984 %134 = load double, ptr %133, align 8, !tbaa !77 @@ -4558,20 +4558,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %137 = fcmp ogt double %136, 0.000000e+00 br i1 %137, label %.loopexit, label %138 -138: ; preds = %.lr.ph181.split.split.us.us - %139 = getelementptr inbounds nuw i8, ptr %.1136179.us182.us, i64 120 +138: ; preds = %.lr.ph185.split.split.us.us + %139 = getelementptr inbounds nuw i8, ptr %.1136183.us186.us, i64 120 %140 = load ptr, ptr %139, align 8, !tbaa !119 - %.not151.us183.us = icmp eq ptr %140, null - br i1 %.not151.us183.us, label %..critedge_crit_edge.split.us198, label %.lr.ph181.split.split.us.us, !llvm.loop !214 + %.not151.us187.us = icmp eq ptr %140, null + br i1 %.not151.us187.us, label %..critedge_crit_edge.split.us202, label %.lr.ph185.split.split.us.us, !llvm.loop !214 -.lr.ph181: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph185: ; preds = %.split, %..critedge_crit_edge.split.us %.0133 = phi ptr [ %154, %..critedge_crit_edge.split.us ], [ %105, %.split ] %141 = load double, ptr %.0133, align 8, !tbaa !132 br label %142 -142: ; preds = %150, %.lr.ph181 - %.1136179.us = phi ptr [ %.fr261, %.lr.ph181 ], [ %152, %150 ] - %143 = getelementptr inbounds nuw i8, ptr %.1136179.us, i64 16 +142: ; preds = %150, %.lr.ph185 + %.1136183.us = phi ptr [ %.fr284, %.lr.ph181 ], [ %152, %150 ] + %143 = getelementptr inbounds nuw i8, ptr %.1136183.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 984 %146 = load double, ptr %145, align 8, !tbaa !77 @@ -4581,7 +4581,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %149, label %.loopexit, label %150 150: ; preds = %142 - %151 = getelementptr inbounds nuw i8, ptr %.1136179.us, i64 120 + %151 = getelementptr inbounds nuw i8, ptr %.1136183.us, i64 120 %152 = load ptr, ptr %151, align 8, !tbaa !119 %.not151.us = icmp eq ptr %152, null br i1 %.not151.us, label %..critedge_crit_edge.split.us, label %142, !llvm.loop !214 @@ -4590,100 +4590,100 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %153 = getelementptr inbounds nuw i8, ptr %.0133, i64 816 %154 = load ptr, ptr %153, align 8, !tbaa !105 %155 = icmp eq ptr %154, null - br i1 %155, label %.loopexit, label %.lr.ph181 + br i1 %155, label %.loopexit, label %.lr.ph185 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us198, %.lr.ph181.split.split.us197, %.lr.ph181.split.split.us.us - %.0133173 = phi ptr [ %.0133.us192, %.lr.ph181.split.split.us.us ], [ %.0133.us192, %.lr.ph181.split.split.us197 ], [ %.0133.us192, %..critedge_crit_edge.split.us198 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us202, %.lr.ph185.split.split.us201, %.lr.ph185.split.split.us.us + %.0133177 = phi ptr [ %.0133.us196, %.lr.ph181.split.split.us.us ], [ %.0133.us196, %.lr.ph181.split.split.us197 ], [ %.0133.us196, %..critedge_crit_edge.split.us198 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 80 %157 = getelementptr inbounds nuw i8, ptr %14, i64 48 %158 = icmp eq i32 %2, 2 - br i1 %158, label %.split216.split.us, label %.split216.split.split + br i1 %158, label %.split221.split.us, label %.split221.split.split -.split216.us.split.us: ; preds = %.loopexit.thread +.split221.us.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %159 -159: ; preds = %.split216.us.split.us +159: ; preds = %.split221.us.split.us %160 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split216.us.split.split.us: ; preds = %.loopexit.thread +.split221.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %161 -161: ; preds = %.split216.us.split.split.us +161: ; preds = %.split221.us.split.split.us %162 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split216.split.us: ; preds = %.loopexit +.split221.split.us: ; preds = %.loopexit %163 = load ptr, ptr %156, align 8, !tbaa !24 - %.not153.us221 = icmp eq ptr %.0133173, %163 - br i1 %.not153.us221, label %.lr.ph209.us.preheader, label %164 + %.not153.us228 = icmp eq ptr %.0133177, %163 + br i1 %.not153.us228, label %.lr.ph213.us.preheader, label %164 -164: ; preds = %.split216.split.us - %165 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133173) - %.not154.us222 = icmp eq i32 %165, 0 - br i1 %.not154.us222, label %.lr.ph209.us.preheader, label %.critedge163 +164: ; preds = %.split221.split.us + %165 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133177) + %.not154.us229 = icmp eq i32 %165, 0 + br i1 %.not154.us229, label %.lr.ph213.us.preheader, label %.critedge163 -.lr.ph209.us.preheader: ; preds = %164, %.split216.split.us - br label %.lr.ph209.us +.lr.ph213.us.preheader: ; preds = %164, %.split221.split.us + br label %.lr.ph213.us -.lr.ph209.us: ; preds = %.lr.ph209.us.preheader, %186 - %.2137207.us = phi ptr [ %188, %186 ], [ %.fr261, %.lr.ph209.us.preheader ] - %166 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 16 +.lr.ph213.us: ; preds = %.lr.ph213.us.preheader, %186 + %.2137211.us = phi ptr [ %188, %186 ], [ %.fr284, %.lr.ph209.us.preheader ] + %166 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 984 %169 = load double, ptr %168, align 8, !tbaa !77 - %170 = load double, ptr %.0133173, align 8, !tbaa !132 + %170 = load double, ptr %.0133177, align 8, !tbaa !132 %171 = fcmp oeq double %169, %170 - br i1 %171, label %.thread313, label %172 + br i1 %171, label %.thread336, label %172 -172: ; preds = %.lr.ph209.us +172: ; preds = %.lr.ph213.us %173 = fsub double %169, %170 %174 = fmul double %173, %76 %175 = fcmp olt double %174, 0.000000e+00 - br i1 %175, label %.thread313, label %176 + br i1 %175, label %.thread336, label %176 176: ; preds = %172 - store ptr %.2137207.us, ptr %157, align 8, !tbaa !41 + store ptr %.2137211.us, ptr %157, align 8, !tbaa !41 %177 = call i32 @CVodeSetStopTime(ptr noundef nonnull %167, double noundef %170) #8 %178 = load ptr, ptr %166, align 8, !tbaa !123 - %179 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 112 + %179 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 112 %180 = load ptr, ptr %179, align 8, !tbaa !127 %181 = call i32 @CVode(ptr noundef %178, double noundef %.0132, ptr noundef %180, ptr noundef nonnull %4, i32 noundef 2) #8 %182 = load double, ptr %4, align 8, !tbaa !90 - %183 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 104 + %183 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 104 store double %182, ptr %183, align 8, !tbaa !215 %184 = icmp slt i32 %181, 0 br i1 %184, label %.thread, label %186 -.thread313: ; preds = %.lr.ph209.us, %172 - %185 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 104 +.thread336: ; preds = %.lr.ph213.us, %172 + %185 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 104 store double %169, ptr %185, align 8, !tbaa !215 br label %186 -186: ; preds = %.thread313, %176 +186: ; preds = %.thread336, %176 %.5.us = phi i32 [ %181, %176 ], [ 0, %.thread313 ] - %187 = getelementptr inbounds nuw i8, ptr %.2137207.us, i64 120 + %187 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 120 %188 = load ptr, ptr %187, align 8, !tbaa !119 %.not155.us = icmp eq ptr %188, null - br i1 %.not155.us, label %.critedge163, label %.lr.ph209.us, !llvm.loop !216 + br i1 %.not155.us, label %.critedge163, label %.lr.ph213.us, !llvm.loop !216 -.split216.split.split: ; preds = %.loopexit, %228 - %.1134 = phi ptr [ %230, %228 ], [ %.0133173, %.loopexit ] +.split221.split.split: ; preds = %.loopexit, %228 + %.1134 = phi ptr [ %230, %228 ], [ %.0133177, %.loopexit ] %189 = load ptr, ptr %156, align 8, !tbaa !24 %.not153 = icmp eq ptr %.1134, %189 - br i1 %.not153, label %.lr.ph209.preheader, label %190 + br i1 %.not153, label %.lr.ph213.preheader, label %190 -190: ; preds = %.split216.split.split +190: ; preds = %.split221.split.split %191 = call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.1134) %.not154 = icmp eq i32 %191, 0 - br i1 %.not154, label %.lr.ph209.preheader, label %.critedge163 + br i1 %.not154, label %.lr.ph213.preheader, label %.critedge163 -.lr.ph209.preheader: ; preds = %190, %.split216.split.split - br label %.lr.ph209 +.lr.ph213.preheader: ; preds = %190, %.split221.split.split + br label %.lr.ph213 -.lr.ph209: ; preds = %.lr.ph209.preheader, %216 - %.2137207 = phi ptr [ %218, %216 ], [ %.fr261, %.lr.ph209.preheader ] - %192 = getelementptr inbounds nuw i8, ptr %.2137207, i64 16 +.lr.ph213: ; preds = %.lr.ph213.preheader, %216 + %.2137211 = phi ptr [ %218, %216 ], [ %.fr284, %.lr.ph209.preheader ] + %192 = getelementptr inbounds nuw i8, ptr %.2137211, i64 16 %193 = load ptr, ptr %192, align 8, !tbaa !123 %194 = getelementptr inbounds nuw i8, ptr %193, i64 984 %195 = load double, ptr %194, align 8, !tbaa !77 @@ -4691,72 +4691,72 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %197 = fcmp oeq double %195, %196 br i1 %197, label %198, label %202 -198: ; preds = %.lr.ph209 +198: ; preds = %.lr.ph213 %199 = fsub double %.0132, %196 %200 = fmul double %199, %76 %201 = fcmp olt double %200, 0.000000e+00 - br i1 %201, label %.thread316, label %202 + br i1 %201, label %.thread339, label %202 -202: ; preds = %198, %.lr.ph209 +202: ; preds = %198, %.lr.ph213 %203 = fsub double %195, %196 %204 = fmul double %203, %76 %205 = fcmp olt double %204, 0.000000e+00 - br i1 %205, label %.thread316, label %206 + br i1 %205, label %.thread339, label %206 206: ; preds = %202 - store ptr %.2137207, ptr %157, align 8, !tbaa !41 + store ptr %.2137211, ptr %157, align 8, !tbaa !41 %207 = call i32 @CVodeSetStopTime(ptr noundef nonnull %193, double noundef %196) #8 %208 = load ptr, ptr %192, align 8, !tbaa !123 - %209 = getelementptr inbounds nuw i8, ptr %.2137207, i64 112 + %209 = getelementptr inbounds nuw i8, ptr %.2137211, i64 112 %210 = load ptr, ptr %209, align 8, !tbaa !127 %211 = call i32 @CVode(ptr noundef %208, double noundef %.0132, ptr noundef %210, ptr noundef nonnull %4, i32 noundef %2) #8 %212 = load double, ptr %4, align 8, !tbaa !90 - %213 = getelementptr inbounds nuw i8, ptr %.2137207, i64 104 + %213 = getelementptr inbounds nuw i8, ptr %.2137211, i64 104 store double %212, ptr %213, align 8, !tbaa !215 %214 = icmp slt i32 %211, 0 br i1 %214, label %.thread, label %216 -.thread316: ; preds = %198, %202 - %215 = getelementptr inbounds nuw i8, ptr %.2137207, i64 104 +.thread339: ; preds = %198, %202 + %215 = getelementptr inbounds nuw i8, ptr %.2137211, i64 104 store double %195, ptr %215, align 8, !tbaa !215 br label %216 -216: ; preds = %206, %.thread316 +216: ; preds = %206, %.thread339 %.5 = phi i32 [ %211, %206 ], [ 0, %.thread316 ] - %217 = getelementptr inbounds nuw i8, ptr %.2137207, i64 120 + %217 = getelementptr inbounds nuw i8, ptr %.2137211, i64 120 %218 = load ptr, ptr %217, align 8, !tbaa !119 %.not155 = icmp eq ptr %218, null - br i1 %.not155, label %._crit_edge210, label %.lr.ph209, !llvm.loop !216 + br i1 %.not155, label %.preheader, label %.lr.ph213, !llvm.loop !216 .thread: ; preds = %206, %176 - %.us-phi225 = phi i32 [ %181, %176 ], [ %211, %206 ] - %.us-phi226 = phi ptr [ %.2137207.us, %176 ], [ %.2137207, %206 ] - %219 = load i32, ptr %.us-phi226, align 8, !tbaa !203 - call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi225, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.30, i32 noundef %219) #8 + %.us-phi232 = phi i32 [ %181, %176 ], [ %211, %206 ] + %.us-phi233 = phi ptr [ %.2137211.us, %176 ], [ %.2137211, %206 ] + %219 = load i32, ptr %.us-phi233, align 8, !tbaa !203 + call void (ptr, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi232, ptr noundef nonnull @.str, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.30, i32 noundef %219) #8 br label %.critedge163 -._crit_edge210: ; preds = %216, %225 - %.3138212 = phi ptr [ %227, %225 ], [ %.fr261, %216 ] - %220 = getelementptr inbounds nuw i8, ptr %.3138212, i64 104 +.preheader: ; preds = %216, %225 + %.3138217 = phi ptr [ %227, %225 ], [ %.fr284, %216 ] + %220 = getelementptr inbounds nuw i8, ptr %.3138217, i64 104 %221 = load double, ptr %220, align 8, !tbaa !215 %222 = fsub double %221, %.0132 %223 = fmul double %222, %76 %224 = fcmp ogt double %223, 0.000000e+00 br i1 %224, label %228, label %225 -225: ; preds = %._crit_edge210 - %226 = getelementptr inbounds nuw i8, ptr %.3138212, i64 120 +225: ; preds = %.preheader + %226 = getelementptr inbounds nuw i8, ptr %.3138217, i64 120 %227 = load ptr, ptr %226, align 8, !tbaa !119 %.not157.not = icmp eq ptr %227, null - br i1 %.not157.not, label %.critedge163, label %._crit_edge210, !llvm.loop !217 + br i1 %.not157.not, label %.critedge163, label %.preheader, !llvm.loop !217 -228: ; preds = %._crit_edge210 +228: ; preds = %.preheader %229 = getelementptr inbounds nuw i8, ptr %.1134, i64 816 %230 = load ptr, ptr %229, align 8, !tbaa !105 - br label %.split216.split.split + br label %.split221.split.split -.critedge163: ; preds = %190, %225, %186, %161, %159, %.split216.us.split.us, %164, %.split216.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi225, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split216.us.split.split.us ], [ 0, %.split216.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] +.critedge163: ; preds = %190, %225, %186, %161, %159, %.split221.us.split.us, %164, %.split221.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi232, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split216.us.split.split.us ], [ 0, %.split216.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/casadi/optimized/idaa.ll b/bench/casadi/optimized/idaa.ll index e8420962be3..af76e2fcc02 100644 --- a/bench/casadi/optimized/idaa.ll +++ b/bench/casadi/optimized/idaa.ll @@ -3935,7 +3935,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !39 - %.fr234 = freeze ptr %21 + %.fr247 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !42 %.not = icmp eq i32 %23, 0 @@ -3948,44 +3948,44 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !61 - %.fr232 = freeze double %27 + %.fr245 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !62 - %.fr233 = freeze double %28 - %29 = fcmp ogt double %.fr232, %.fr233 + %.fr246 = freeze double %28 + %29 = fcmp ogt double %.fr245, %.fr246 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 56 %32 = load i32, ptr %31, align 8, !tbaa !44 %.not148 = icmp eq i32 %32, 0 - br i1 %.not148, label %72, label %.preheader170 + br i1 %.not148, label %72, label %.preheader171 -.preheader170: ; preds = %25 - %.not149177 = icmp eq ptr %.fr234, null - br i1 %.not149177, label %._crit_edge, label %.lr.ph +.preheader171: ; preds = %25 + %.not149181 = icmp eq ptr %.fr247, null + br i1 %.not149181, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader170 +.lr.ph: ; preds = %.preheader171 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 164 br label %35 35: ; preds = %.lr.ph, %62 - %.0134178 = phi ptr [ %.fr234, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0134178, i64 16 + %.0134182 = phi ptr [ %.fr247, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0134182, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !123 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1184 %39 = load double, ptr %38, align 8, !tbaa !133 - %40 = fsub double %39, %.fr233 + %40 = fsub double %39, %.fr246 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr232, %39 + %44 = fsub double %.fr245, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0134178, align 8, !tbaa !180 + %48 = load i32, ptr %.0134182, align 8, !tbaa !180 tail call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -104, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.15, i32 noundef %48) #9 br label %.critedge164 @@ -3996,18 +3996,18 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0134178, align 8, !tbaa !180 + %54 = load i32, ptr %.0134182, align 8, !tbaa !180 tail call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -22, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.32, i32 noundef %54) #9 br label %.critedge164 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0134178, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0134182, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !183 %.not160 = icmp eq i32 %57, 0 br i1 %.not160, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0134178, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0134182, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !187 %.not161 = icmp eq i32 %60, 0 br i1 %.not161, label %62, label %61 @@ -4017,12 +4017,12 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0134178, i64 128 + %63 = getelementptr inbounds nuw i8, ptr %.0134182, i64 128 %64 = load ptr, ptr %63, align 8, !tbaa !119 %.not149 = icmp eq ptr %64, null br i1 %.not149, label %._crit_edge, label %35, !llvm.loop !193 -._crit_edge: ; preds = %62, %.preheader170 +._crit_edge: ; preds = %62, %.preheader171 %65 = getelementptr inbounds nuw i8, ptr %14, i64 164 %66 = load i32, ptr %65, align 4, !tbaa !37 %.not150 = icmp eq i32 %66, 0 @@ -4053,20 +4053,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr233 + %77 = fsub double %1, %.fr246 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr232, %1 + %81 = fsub double %.fr245, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %84, label %103 84: ; preds = %80, %75 %85 = load double, ptr %0, align 8, !tbaa !67 - %86 = tail call double @SUNRabs(double noundef %.fr233) #9 + %86 = tail call double @SUNRabs(double noundef %.fr246) #9 %87 = load double, ptr %26, align 8, !tbaa !61 %88 = tail call double @SUNRabs(double noundef %87) #9 %89 = load double, ptr %14, align 8, !tbaa !62 @@ -4096,8 +4096,8 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %.0130 = phi double [ %101, %99 ], [ %1, %80 ] %104 = getelementptr inbounds nuw i8, ptr %14, i64 64 %105 = load ptr, ptr %104, align 8, !tbaa !103 - %.not152179 = icmp eq ptr %.fr234, null - br i1 %.not152179, label %.critedge.us, label %.split + %.not152183 = icmp eq ptr %.fr247, null + br i1 %.not152183, label %.critedge.us, label %.split .critedge.us: ; preds = %103, %.critedge.us %.0138.us = phi ptr [ %107, %.critedge.us ], [ %105, %103 ] @@ -4111,24 +4111,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %110 = icmp eq i32 %2, 2 %111 = load ptr, ptr %109, align 8, !tbaa !148 %.not154.us.us = icmp eq ptr %.0138.us, %111 - br i1 %110, label %.split217.us.split.us, label %.split217.us.split.split.us + br i1 %110, label %.split222.us.split.us, label %.split222.us.split.split.us .split: ; preds = %103 %112 = icmp eq i32 %2, 1 - br i1 %112, label %.lr.ph182.us, label %.lr.ph182 + br i1 %112, label %.lr.ph186.us, label %.lr.ph186 -.lr.ph182.us: ; preds = %.split, %..critedge_crit_edge.split.us199 - %.0138.us193 = phi ptr [ %129, %..critedge_crit_edge.split.us199 ], [ %105, %.split ] - %113 = load double, ptr %.0138.us193, align 8, !tbaa !134 +.lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 + %.0138.us197 = phi ptr [ %129, %..critedge_crit_edge.split.us199 ], [ %105, %.split ] + %113 = load double, ptr %.0138.us197, align 8, !tbaa !134 %.fr = freeze double %113 %114 = fsub double %.0130, %.fr %115 = fmul double %114, %76 %116 = fcmp ult double %115, 0.000000e+00 - br i1 %116, label %.lr.ph182.split.split.us.us, label %.lr.ph182.split.split.us198 + br i1 %116, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 -.lr.ph182.split.split.us198: ; preds = %.lr.ph182.us, %125 - %.1135180.us194 = phi ptr [ %127, %125 ], [ %.fr234, %.lr.ph182.us ] - %117 = getelementptr inbounds nuw i8, ptr %.1135180.us194, i64 16 +.lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %125 + %.1135184.us198 = phi ptr [ %127, %125 ], [ %.fr247, %.lr.ph182.us ] + %117 = getelementptr inbounds nuw i8, ptr %.1135184.us198, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 1184 %120 = load double, ptr %119, align 8, !tbaa !133 @@ -4136,24 +4136,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %122 = fmul double %121, %76 %123 = fcmp ogt double %122, 0.000000e+00 %124 = fcmp oeq double %120, %.fr - %or.cond230 = or i1 %123, %124 - br i1 %or.cond230, label %.loopexit, label %125 + %or.cond243 = or i1 %123, %124 + br i1 %or.cond243, label %.loopexit, label %125 -125: ; preds = %.lr.ph182.split.split.us198 - %126 = getelementptr inbounds nuw i8, ptr %.1135180.us194, i64 128 +125: ; preds = %.lr.ph186.split.split.us202 + %126 = getelementptr inbounds nuw i8, ptr %.1135184.us198, i64 128 %127 = load ptr, ptr %126, align 8, !tbaa !119 - %.not152.us195 = icmp eq ptr %127, null - br i1 %.not152.us195, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us198, !llvm.loop !194 + %.not152.us199 = icmp eq ptr %127, null + br i1 %.not152.us199, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us202, !llvm.loop !194 -..critedge_crit_edge.split.us199: ; preds = %125, %138 - %128 = getelementptr inbounds nuw i8, ptr %.0138.us193, i64 592 +..critedge_crit_edge.split.us203: ; preds = %125, %138 + %128 = getelementptr inbounds nuw i8, ptr %.0138.us197, i64 592 %129 = load ptr, ptr %128, align 8, !tbaa !106 %130 = icmp eq ptr %129, null - br i1 %130, label %.loopexit, label %.lr.ph182.us + br i1 %130, label %.loopexit, label %.lr.ph186.us -.lr.ph182.split.split.us.us: ; preds = %.lr.ph182.us, %138 - %.1135180.us183.us = phi ptr [ %140, %138 ], [ %.fr234, %.lr.ph182.us ] - %131 = getelementptr inbounds nuw i8, ptr %.1135180.us183.us, i64 16 +.lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %138 + %.1135184.us187.us = phi ptr [ %140, %138 ], [ %.fr247, %.lr.ph182.us ] + %131 = getelementptr inbounds nuw i8, ptr %.1135184.us187.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 1184 %134 = load double, ptr %133, align 8, !tbaa !133 @@ -4162,20 +4162,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %137 = fcmp ogt double %136, 0.000000e+00 br i1 %137, label %.loopexit, label %138 -138: ; preds = %.lr.ph182.split.split.us.us - %139 = getelementptr inbounds nuw i8, ptr %.1135180.us183.us, i64 128 +138: ; preds = %.lr.ph186.split.split.us.us + %139 = getelementptr inbounds nuw i8, ptr %.1135184.us187.us, i64 128 %140 = load ptr, ptr %139, align 8, !tbaa !119 - %.not152.us184.us = icmp eq ptr %140, null - br i1 %.not152.us184.us, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us.us, !llvm.loop !194 + %.not152.us188.us = icmp eq ptr %140, null + br i1 %.not152.us188.us, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us.us, !llvm.loop !194 -.lr.ph182: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph186: ; preds = %.split, %..critedge_crit_edge.split.us %.0138 = phi ptr [ %154, %..critedge_crit_edge.split.us ], [ %105, %.split ] %141 = load double, ptr %.0138, align 8, !tbaa !134 br label %142 -142: ; preds = %150, %.lr.ph182 - %.1135180.us = phi ptr [ %.fr234, %.lr.ph182 ], [ %152, %150 ] - %143 = getelementptr inbounds nuw i8, ptr %.1135180.us, i64 16 +142: ; preds = %150, %.lr.ph186 + %.1135184.us = phi ptr [ %.fr247, %.lr.ph182 ], [ %152, %150 ] + %143 = getelementptr inbounds nuw i8, ptr %.1135184.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 1184 %146 = load double, ptr %145, align 8, !tbaa !133 @@ -4185,7 +4185,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %149, label %.loopexit, label %150 150: ; preds = %142 - %151 = getelementptr inbounds nuw i8, ptr %.1135180.us, i64 128 + %151 = getelementptr inbounds nuw i8, ptr %.1135184.us, i64 128 %152 = load ptr, ptr %151, align 8, !tbaa !119 %.not152.us = icmp eq ptr %152, null br i1 %.not152.us, label %..critedge_crit_edge.split.us, label %142, !llvm.loop !194 @@ -4194,46 +4194,46 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %153 = getelementptr inbounds nuw i8, ptr %.0138, i64 592 %154 = load ptr, ptr %153, align 8, !tbaa !106 %155 = icmp eq ptr %154, null - br i1 %155, label %.loopexit, label %.lr.ph182 + br i1 %155, label %.loopexit, label %.lr.ph186 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us199, %.lr.ph182.split.split.us198, %.lr.ph182.split.split.us.us - %.0138174 = phi ptr [ %.0138.us193, %.lr.ph182.split.split.us.us ], [ %.0138.us193, %.lr.ph182.split.split.us198 ], [ %.0138.us193, %..critedge_crit_edge.split.us199 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us + %.0138178 = phi ptr [ %.0138.us197, %.lr.ph182.split.split.us.us ], [ %.0138.us197, %.lr.ph182.split.split.us198 ], [ %.0138.us193, %..critedge_crit_edge.split.us199 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 72 %157 = icmp eq i32 %2, 2 %158 = getelementptr inbounds nuw i8, ptr %14, i64 48 - br label %.split217 + br label %.split222 -.split217.us.split.us: ; preds = %.loopexit.thread +.split222.us.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %159 -159: ; preds = %.split217.us.split.us +159: ; preds = %.split222.us.split.us %160 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split217.us.split.split.us: ; preds = %.loopexit.thread +.split222.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %161 -161: ; preds = %.split217.us.split.split.us +161: ; preds = %.split222.us.split.split.us %162 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split217: ; preds = %.loopexit, %205 - %.1139 = phi ptr [ %207, %205 ], [ %.0138174, %.loopexit ] +.split222: ; preds = %.loopexit, %205 + %.1139 = phi ptr [ %207, %205 ], [ %.0138178, %.loopexit ] %163 = load ptr, ptr %156, align 8, !tbaa !148 %.not154 = icmp eq ptr %.1139, %163 - br i1 %.not154, label %.lr.ph210.preheader, label %164 + br i1 %.not154, label %.lr.ph214.preheader, label %164 -164: ; preds = %.split217 +164: ; preds = %.split222 %165 = call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.1139) %.not155 = icmp eq i32 %165, 0 - br i1 %.not155, label %.lr.ph210.preheader, label %.critedge164 + br i1 %.not155, label %.lr.ph214.preheader, label %.critedge164 -.lr.ph210.preheader: ; preds = %164, %.split217 - br label %.lr.ph210 +.lr.ph214.preheader: ; preds = %164, %.split222 + br label %.lr.ph214 -.lr.ph210: ; preds = %.lr.ph210.preheader, %193 - %.2136208 = phi ptr [ %195, %193 ], [ %.fr234, %.lr.ph210.preheader ] - %166 = getelementptr inbounds nuw i8, ptr %.2136208, i64 16 +.lr.ph214: ; preds = %.lr.ph214.preheader, %193 + %.2136212 = phi ptr [ %195, %193 ], [ %.fr247, %.lr.ph210.preheader ] + %166 = getelementptr inbounds nuw i8, ptr %.2136212, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 1184 %169 = load double, ptr %168, align 8, !tbaa !133 @@ -4241,76 +4241,76 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %171 = fcmp oeq double %169, %170 br i1 %171, label %172, label %176 -172: ; preds = %.lr.ph210 +172: ; preds = %.lr.ph214 %173 = fsub double %.0130, %170 %174 = fmul double %173, %76 %175 = fcmp olt double %174, 0.000000e+00 - br i1 %175, label %.thread267, label %176 + br i1 %175, label %.thread280, label %176 -176: ; preds = %172, %.lr.ph210 +176: ; preds = %172, %.lr.ph214 %or.cond3 = and i1 %157, %171 %177 = fsub double %169, %170 %178 = fmul double %177, %76 %179 = fcmp olt double %178, 0.000000e+00 %180 = or i1 %or.cond3, %179 - br i1 %180, label %.thread267, label %181 + br i1 %180, label %.thread280, label %181 181: ; preds = %176 - store ptr %.2136208, ptr %158, align 8, !tbaa !40 + store ptr %.2136212, ptr %158, align 8, !tbaa !40 %182 = call i32 @IDASetStopTime(ptr noundef nonnull %167, double noundef %170) #9 %183 = load ptr, ptr %166, align 8, !tbaa !123 - %184 = getelementptr inbounds nuw i8, ptr %.2136208, i64 112 + %184 = getelementptr inbounds nuw i8, ptr %.2136212, i64 112 %185 = load ptr, ptr %184, align 8, !tbaa !127 - %186 = getelementptr inbounds nuw i8, ptr %.2136208, i64 120 + %186 = getelementptr inbounds nuw i8, ptr %.2136212, i64 120 %187 = load ptr, ptr %186, align 8, !tbaa !128 %188 = call i32 @IDASolve(ptr noundef %183, double noundef %.0130, ptr noundef nonnull %4, ptr noundef %185, ptr noundef %187, i32 noundef %2) #9 %189 = load double, ptr %4, align 8, !tbaa !77 - %190 = getelementptr inbounds nuw i8, ptr %.2136208, i64 104 + %190 = getelementptr inbounds nuw i8, ptr %.2136212, i64 104 store double %189, ptr %190, align 8, !tbaa !195 %191 = icmp slt i32 %188, 0 br i1 %191, label %.thread, label %193 -.thread267: ; preds = %172, %176 - %192 = getelementptr inbounds nuw i8, ptr %.2136208, i64 104 +.thread280: ; preds = %172, %176 + %192 = getelementptr inbounds nuw i8, ptr %.2136212, i64 104 store double %169, ptr %192, align 8, !tbaa !195 br label %193 -193: ; preds = %181, %.thread267 +193: ; preds = %181, %.thread280 %.5 = phi i32 [ %188, %181 ], [ 0, %.thread267 ] - %194 = getelementptr inbounds nuw i8, ptr %.2136208, i64 128 + %194 = getelementptr inbounds nuw i8, ptr %.2136212, i64 128 %195 = load ptr, ptr %194, align 8, !tbaa !119 %.not156 = icmp eq ptr %195, null - br i1 %.not156, label %._crit_edge211, label %.lr.ph210, !llvm.loop !196 + br i1 %.not156, label %._crit_edge215, label %.lr.ph214, !llvm.loop !196 .thread: ; preds = %181 - %196 = load i32, ptr %.2136208, align 8, !tbaa !180 + %196 = load i32, ptr %.2136212, align 8, !tbaa !180 call void (ptr, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef %188, ptr noundef nonnull @.str, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.33, i32 noundef %196) #9 br label %.critedge164 -._crit_edge211: ; preds = %193 - br i1 %157, label %.critedge164, label %.lr.ph214 +._crit_edge215: ; preds = %193 + br i1 %157, label %.critedge164, label %.lr.ph219 -.lr.ph214: ; preds = %._crit_edge211, %202 - %.3137213 = phi ptr [ %204, %202 ], [ %.fr234, %._crit_edge211 ] - %197 = getelementptr inbounds nuw i8, ptr %.3137213, i64 104 +.lr.ph219: ; preds = %._crit_edge215, %202 + %.3137218 = phi ptr [ %204, %202 ], [ %.fr247, %._crit_edge211 ] + %197 = getelementptr inbounds nuw i8, ptr %.3137218, i64 104 %198 = load double, ptr %197, align 8, !tbaa !195 %199 = fsub double %198, %.0130 %200 = fmul double %199, %76 %201 = fcmp ogt double %200, 0.000000e+00 br i1 %201, label %205, label %202 -202: ; preds = %.lr.ph214 - %203 = getelementptr inbounds nuw i8, ptr %.3137213, i64 128 +202: ; preds = %.lr.ph219 + %203 = getelementptr inbounds nuw i8, ptr %.3137218, i64 128 %204 = load ptr, ptr %203, align 8, !tbaa !119 %.not158.not = icmp eq ptr %204, null - br i1 %.not158.not, label %.critedge164, label %.lr.ph214, !llvm.loop !197 + br i1 %.not158.not, label %.critedge164, label %.lr.ph219, !llvm.loop !197 -205: ; preds = %.lr.ph214 +205: ; preds = %.lr.ph219 %206 = getelementptr inbounds nuw i8, ptr %.1139, i64 592 %207 = load ptr, ptr %206, align 8, !tbaa !106 - br label %.split217 + br label %.split222 -.critedge164: ; preds = %._crit_edge211, %164, %202, %161, %159, %.split217.us.split.us, %.split217.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 +.critedge164: ; preds = %._crit_edge215, %164, %202, %161, %159, %.split222.us.split.us, %.split222.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %188, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %160, %159 ], [ %162, %161 ], [ %.5, %202 ], [ %.5, %._crit_edge211 ], [ %165, %164 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 diff --git a/bench/clamav/optimized/lzxd.ll b/bench/clamav/optimized/lzxd.ll index 8eb24447fc2..b791c545c31 100644 --- a/bench/clamav/optimized/lzxd.ll +++ b/bench/clamav/optimized/lzxd.ll @@ -3624,46 +3624,46 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %indvars.iv.next149 = add nuw nsw i32 %indvars.iv148, 1 br label %.preheader.split.us -.preheader.split.us: ; preds = %.preheader.split.us.preheader, %52 +.preheader.split.us: ; preds = %.preheader.split.us.preheader, %53 %.4129.us = phi i32 [ %.5.us, %52 ], [ %.3136, %.preheader.split.us.preheader ] %.183128.us = phi i16 [ %.284.us, %52 ], [ %.082135, %.preheader.split.us.preheader ] - %.289127.us = phi i16 [ %53, %52 ], [ 0, %.preheader.split.us.preheader ] - %46 = zext nneg i16 %.289127.us to i64 - %47 = getelementptr inbounds nuw i8, ptr %2, i64 %46 - %48 = load i8, ptr %47, align 1, !tbaa !43 - %49 = zext i8 %48 to i32 - %.not96.us = icmp eq i32 %indvars.iv.next149, %49 - br i1 %.not96.us, label %50, label %52 - -50: ; preds = %.preheader.split.us + %.289127.us = phi i16 [ %54, %52 ], [ 0, %.preheader.split.us.preheader ] + %47 = zext nneg i16 %.289127.us to i64 + %48 = getelementptr inbounds nuw i8, ptr %2, i64 %47 + %49 = load i8, ptr %48, align 1, !tbaa !43 + %50 = zext i8 %49 to i32 + %.not96.us = icmp eq i32 %indvars.iv.next149, %50 + br i1 %.not96.us, label %51, label %53 + +51: ; preds = %.preheader.split.us %.not97.us = icmp ult i32 %.4129.us, %41 br i1 %.not97.us, label %.lr.ph124.us, label %.loopexit -.lr.ph124.us: ; preds = %50 - %51 = lshr i32 %.4129.us, 16 - br label %55 +.lr.ph124.us: ; preds = %51 + %52 = lshr i32 %.4129.us, 16 + br label %56 -52: ; preds = %._crit_edge125.us, %.preheader.split.us +53: ; preds = %._crit_edge125.us, %.preheader.split.us %.284.us = phi i16 [ %.183128.us, %.preheader.split.us ], [ %.486.us, %._crit_edge125.us ] %.5.us = phi i32 [ %.4129.us, %.preheader.split.us ], [ %75, %._crit_edge125.us ] - %53 = add nuw nsw i16 %.289127.us, 1 - %54 = icmp samesign ult i16 %53, %45 - br i1 %54, label %.preheader.split.us, label %.split131.us + %54 = add nuw nsw i16 %.289127.us, 1 + %55 = icmp samesign ult i16 %54, %45 + br i1 %55, label %.preheader.split.us, label %.split131.us -55: ; preds = %.lr.ph124.us, %65 +56: ; preds = %.lr.ph124.us, %65 %.178122.us = phi i32 [ 0, %.lr.ph124.us ], [ %72, %65 ] - %.180121.us = phi i32 [ %51, %.lr.ph124.us ], [ %spec.select.us, %65 ] + %.180121.us = phi i32 [ %52, %.lr.ph124.us ], [ %spec.select.us, %65 ] %.385120.us = phi i16 [ %.183128.us, %.lr.ph124.us ], [ %.486.us, %65 ] - %56 = zext nneg i32 %.180121.us to i64 - %57 = getelementptr inbounds nuw i16, ptr %3, i64 %56 - %58 = load i16, ptr %57, align 2, !tbaa !54 - %59 = icmp eq i16 %58, -1 - br i1 %59, label %60, label %65 - -60: ; preds = %55 - %61 = zext i16 %.385120.us to i64 - %.idx.us = shl nuw nsw i64 %61, 2 - %62 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + %57 = zext nneg i32 %.180121.us to i64 + %58 = getelementptr inbounds nuw i16, ptr %3, i64 %57 + %59 = load i16, ptr %58, align 2, !tbaa !54 + %60 = icmp eq i16 %59, -1 + br i1 %60, label %61, label %65 + +61: ; preds = %56 + %62 = zext i16 %.385120.us to i64 + %.idx.us = shl nuw nsw i64 %62, 2 + %63 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us store i16 -1, ptr %62, align 2, !tbaa !54 %63 = getelementptr inbounds nuw i8, ptr %62, i64 2 store i16 -1, ptr %63, align 2, !tbaa !54 @@ -3671,7 +3671,7 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( store i16 %.385120.us, ptr %57, align 2, !tbaa !54 br label %65 -65: ; preds = %60, %55 +65:; preds = %60, %56 %66 = phi i16 [ %.385120.us, %60 ], [ %58, %55 ] %.486.us = phi i16 [ %64, %60 ], [ %.385120.us, %55 ] %67 = zext i16 %66 to i32 @@ -3684,26 +3684,26 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %exitcond.not = icmp eq i32 %72, %indvars.iv br i1 %exitcond.not, label %._crit_edge125.us, label %55 -._crit_edge125.us: ; preds = %65 +._crit_edge125.us:; preds = %65 %73 = zext nneg i32 %spec.select.us to i64 %74 = getelementptr inbounds nuw i16, ptr %3, i64 %73 store i16 %.289127.us, ptr %74, align 2, !tbaa !54 %75 = add i32 %.4129.us, %.1137 br label %52 -.split131.us: ; preds = %52 +.split131.us:; preds = %53 %76 = lshr i32 %.1137, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 %exitcond151.not = icmp eq i32 %indvars.iv.next149, 16 br i1 %exitcond151.not, label %._crit_edge139, label %.preheader.split.us.preheader ._crit_edge139: ; preds = %.split131.us - %77 = icmp ne i32 %.5.us, %41 - %78 = zext i1 %77 to i32 + %78 = icmp ne i32 %.5.us, %41 + %79 = zext i1 %78 to i32 br label %.loopexit -.loopexit: ; preds = %19, %.preheader103.split.us, %50, %30, %._crit_edge139 - %.090 = phi i32 [ %78, %._crit_edge139 ], [ 0, %30 ], [ 1, %50 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] +.loopexit: ; preds = %19, %.preheader103.split.us, %51, %30, %._crit_edge139 + %.090 = phi i32 [ %79, %._crit_edge139 ], [ 0, %30 ], [ 1, %50 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] ret i32 %.090 } diff --git a/bench/clamav/optimized/mszipd.ll b/bench/clamav/optimized/mszipd.ll index d9193bc9bf7..f2a8775f801 100644 --- a/bench/clamav/optimized/mszipd.ll +++ b/bench/clamav/optimized/mszipd.ll @@ -2625,72 +2625,72 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( .preheader141.split.us.preheader: ; preds = %.split.us, %.preheader141.preheader %indvars.iv182 = phi i32 [ %1, %.preheader141.preheader ], [ %indvars.iv.next183, %.split.us ] %indvars.iv = phi i32 [ 1, %.preheader141.preheader ], [ %indvars.iv.next, %.split.us ] - %.1171 = phi i32 [ 32768, %.preheader141.preheader ], [ %98, %.split.us ] + %.1171 = phi i32 [ 32768, %.preheader141.preheader ], [ %99, %.split.us ] %.3170 = phi i32 [ %59, %.preheader141.preheader ], [ %.5.us, %.split.us ] %.0116169 = phi i16 [ %61, %.preheader141.preheader ], [ %.2118.us, %.split.us ] %indvars.iv.next183 = add nuw nsw i32 %indvars.iv182, 1 br label %.preheader141.split.us -.preheader141.split.us: ; preds = %.preheader141.split.us.preheader, %75 +.preheader141.split.us: ; preds = %.preheader141.split.us.preheader, %76 %.4166.us = phi i32 [ %.5.us, %75 ], [ %.3170, %.preheader141.split.us.preheader ] %.1117165.us = phi i16 [ %.2118.us, %75 ], [ %.0116169, %.preheader141.split.us.preheader ] - %.2123164.us = phi i16 [ %76, %75 ], [ 0, %.preheader141.split.us.preheader ] - %62 = zext nneg i16 %.2123164.us to i64 - %63 = getelementptr inbounds nuw i8, ptr %2, i64 %62 - %64 = load i8, ptr %63, align 1, !tbaa !32 - %65 = zext i8 %64 to i32 - %.not133.us = icmp eq i32 %indvars.iv.next183, %65 - br i1 %.not133.us, label %66, label %75 - -66: ; preds = %.preheader141.split.us + %.2123164.us = phi i16 [ %77, %75 ], [ 0, %.preheader141.split.us.preheader ] + %63 = zext nneg i16 %.2123164.us to i64 + %64 = getelementptr inbounds nuw i8, ptr %2, i64 %63 + %65 = load i8, ptr %64, align 1, !tbaa !32 + %66 = zext i8 %65 to i32 + %.not133.us = icmp eq i32 %indvars.iv.next183, %66 + br i1 %.not133.us, label %67, label %76 + +67: ; preds = %.preheader141.split.us %.not134.us = icmp ult i32 %.4166.us, %58 - br i1 %.not134.us, label %67, label %.loopexit - -67: ; preds = %66 - %68 = lshr i32 %.4166.us, 16 - br label %69 - -69: ; preds = %69, %67 - %.3113.us = phi i32 [ 0, %67 ], [ %72, %69 ] - %.3108.us = phi i32 [ %1, %67 ], [ %74, %69 ] - %.2104.us = phi i32 [ %68, %67 ], [ %73, %69 ] - %70 = shl i32 %.3113.us, 1 - %71 = and i32 %.2104.us, 1 - %72 = or disjoint i32 %71, %70 - %73 = lshr i32 %.2104.us, 1 - %74 = add nsw i32 %.3108.us, -1 - %.not135.us = icmp eq i32 %74, 0 - br i1 %.not135.us, label %.preheader.us, label %69 - -75: ; preds = %._crit_edge162.us, %.preheader141.split.us + br i1 %.not134.us, label %68, label %.loopexit + +68: ; preds = %67 + %69 = lshr i32 %.4166.us, 16 + br label %70 + +70: ; preds = %70, %68 + %.3113.us = phi i32 [ 0, %67 ], [ %73, %69 ] + %.3108.us = phi i32 [ %1, %67 ], [ %75, %69 ] + %.2104.us = phi i32 [ %69, %67 ], [ %74, %69 ] + %71 = shl i32 %.3113.us, 1 + %72 = and i32 %.2104.us, 1 + %73 = or disjoint i32 %72, %71 + %74 = lshr i32 %.2104.us, 1 + %75 = add nsw i32 %.3108.us, -1 + %.not135.us = icmp eq i32 %75, 0 + br i1 %.not135.us, label %.preheader.us, label %70 + +76: ; preds = %._crit_edge162.us, %.preheader141.split.us %.2118.us = phi i16 [ %.1117165.us, %.preheader141.split.us ], [ %.4120.us, %._crit_edge162.us ] - %.5.us = phi i32 [ %.4166.us, %.preheader141.split.us ], [ %97, %._crit_edge162.us ] - %76 = add nuw nsw i16 %.2123164.us, 1 - %77 = icmp samesign ult i16 %76, %8 - br i1 %77, label %.preheader141.split.us, label %.split.us + %.5.us = phi i32 [ %.4166.us, %.preheader141.split.us ], [ %98, %._crit_edge162.us ] + %77 = add nuw nsw i16 %.2123164.us, 1 + %78 = icmp samesign ult i16 %77, %8 + br i1 %78, label %.preheader141.split.us, label %.split.us -.preheader.us: ; preds = %69, %87 +.preheader.us: ; preds = %70, %87 %.4109161.us = phi i32 [ %94, %87 ], [ 0, %69 ] - %.4114160.us = phi i32 [ %spec.select.us, %87 ], [ %72, %69 ] + %.4114160.us = phi i32 [ %spec.select.us, %87 ], [ %73, %69 ] %.3119159.us = phi i16 [ %.4120.us, %87 ], [ %.1117165.us, %69 ] - %78 = zext i32 %.4114160.us to i64 - %79 = getelementptr inbounds nuw i16, ptr %3, i64 %78 - %80 = load i16, ptr %79, align 2, !tbaa !36 - %81 = icmp eq i16 %80, -1 - br i1 %81, label %82, label %87 - -82: ; preds = %.preheader.us - %83 = zext i16 %.3119159.us to i64 - %.idx.us = shl nuw nsw i64 %83, 2 - %84 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + %79 = zext i32 %.4114160.us to i64 + %80 = getelementptr inbounds nuw i16, ptr %3, i64 %79 + %81 = load i16, ptr %80, align 2, !tbaa !36 + %82 = icmp eq i16 %81, -1 + br i1 %82, label %83, label %87 + +83: ; preds = %.preheader.us + %84 = zext i16 %.3119159.us to i64 + %.idx.us = shl nuw nsw i64 %84, 2 + %85 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us store i16 -1, ptr %84, align 2, !tbaa !36 %85 = getelementptr inbounds nuw i8, ptr %84, i64 2 store i16 -1, ptr %85, align 2, !tbaa !36 %86 = add i16 %.3119159.us, 1 - store i16 %.3119159.us, ptr %79, align 2, !tbaa !36 + store i16 %.3119159.us, ptr %80, align 2, !tbaa !36 br label %87 -87: ; preds = %82, %.preheader.us +87:; preds = %82, %.preheader.us %88 = phi i16 [ %.3119159.us, %82 ], [ %80, %.preheader.us ] %.4120.us = phi i16 [ %86, %82 ], [ %.3119159.us, %.preheader.us ] %89 = zext i16 %88 to i32 @@ -2704,25 +2704,25 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( br i1 %exitcond.not, label %._crit_edge162.us, label %.preheader.us ._crit_edge162.us: ; preds = %87 - %95 = zext nneg i32 %spec.select.us to i64 - %96 = getelementptr inbounds nuw i16, ptr %3, i64 %95 - store i16 %.2123164.us, ptr %96, align 2, !tbaa !36 - %97 = add i32 %.4166.us, %.1171 - br label %75 - -.split.us: ; preds = %75 - %98 = lshr i32 %.1171, 1 + %96 = zext nneg i32 %spec.select.us to i64 + %97 = getelementptr inbounds nuw i16, ptr %3, i64 %96 + store i16 %.2123164.us, ptr %97, align 2, !tbaa !36 + %98 = add i32 %.4166.us, %.1171 + br label %76 + +.split.us: ; preds = %76 + %99 = lshr i32 %.1171, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 %exitcond185.not = icmp eq i32 %indvars.iv.next183, 16 br i1 %exitcond185.not, label %._crit_edge173, label %.preheader141.split.us.preheader ._crit_edge173: ; preds = %.split.us - %99 = icmp ne i32 %.5.us, %58 - %100 = zext i1 %99 to i32 + %100 = icmp ne i32 %.5.us, %58 + %101 = zext i1 %100 to i32 br label %.loopexit -.loopexit: ; preds = %26, %66, %39, %._crit_edge173 - %.0124 = phi i32 [ %100, %._crit_edge173 ], [ 0, %39 ], [ 1, %66 ], [ 1, %26 ] +.loopexit: ; preds = %26, %67, %39, %._crit_edge173 + %.0124 = phi i32 [ %101, %._crit_edge173 ], [ 0, %39 ], [ 1, %66 ], [ 1, %26 ] ret i32 %.0124 } diff --git a/bench/clamav/optimized/tnef.ll b/bench/clamav/optimized/tnef.ll index 34324a83975..1d422ba7ef5 100644 --- a/bench/clamav/optimized/tnef.ll +++ b/bench/clamav/optimized/tnef.ll @@ -81,9 +81,9 @@ define range(i32 0, 27) i32 @cli_tnef(ptr noundef %0, ptr noundef readonly captu %or.cond44.not.i232 = icmp ugt i64 %29, 6 br i1 %or.cond44.not.i232, label %.lr.ph, label %.loopexit -.lr.ph: ; preds = %.preheader, %155 - %30 = phi ptr [ %157, %155 ], [ %28, %.preheader ] - %31 = phi ptr [ %156, %155 ], [ %27, %.preheader ] +.lr.ph: ; preds = %.preheader, %156 + %30 = phi ptr [ %158, %155 ], [ %28, %.preheader ] + %31 = phi ptr [ %157, %155 ], [ %27, %.preheader ] %.0106234 = phi i64 [ %.1107, %155 ], [ 6, %.preheader ] %.0109233 = phi ptr [ %.1110, %155 ], [ null, %.preheader ] %32 = getelementptr inbounds nuw i8, ptr %31, i64 104 @@ -155,7 +155,7 @@ fmap_readn.exit35.i: ; preds = %54 %.not25.i = icmp ugt i64 %55, 3 br i1 %.not25.i, label %58, label %.loopexit181 -.loopexit: ; preds = %.lr.ph, %155, %fmap_readn.exit.i, %.preheader, %48 +.loopexit: ; preds = %.lr.ph, %156, %fmap_readn.exit.i, %.preheader, %48 %.0109196 = phi ptr [ %.0109233, %48 ], [ null, %.preheader ], [ %.0109233, %.lr.ph ], [ %.1110, %155 ], [ %.0109233, %fmap_readn.exit.i ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.thread169 @@ -172,7 +172,7 @@ fmap_readn.exit35.i: ; preds = %54 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.13, i32 noundef %60, i32 noundef %52, i32 noundef %.0..0..0..0..0.36.i) #7 call void @llvm.lifetime.end.p0(ptr nonnull %4) %61 = icmp eq i32 %.0..0..0..0..0.36.i, 0 - br i1 %61, label %155, label %62 + br i1 %61, label %156, label %62 62: ; preds = %58 %63 = icmp slt i32 %.0..0..0..0..0.36.i, 0 @@ -221,7 +221,7 @@ fmap_readn.exit35.i: ; preds = %54 tnef_message.exit.thread: ; preds = %73 %75 = add nuw nsw i64 %74, 2 - br label %155 + br label %156 76: ; preds = %73, %71 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.15) #7 @@ -252,8 +252,8 @@ tnef_message.exit.thread: ; preds = %73 %86 = zext nneg i32 %.0..0..0..0..0.36.i to i64 %87 = getelementptr inbounds nuw i8, ptr %78, i64 88 %88 = load i64, ptr %87, align 8, !tbaa !23 - %or.cond.not.i = icmp ult i64 %59, %88 - br i1 %or.cond.not.i, label %89, label %.critedge.i + %or.cond84.not.i = icmp ult i64 %59, %88 + br i1 %or.cond84.not.i, label %89, label %.critedge.i 89: ; preds = %85 %90 = sub nuw i64 %88, %59 @@ -313,14 +313,14 @@ fmap_readn.exit.i62: ; preds = %89 111: ; preds = %fmap_readn.exit78.i, %.lr.ph.i %.6 = phi i64 [ %59, %.lr.ph.i ], [ %119, %fmap_readn.exit78.i ] - %.06285.i = phi i32 [ %.0..0..0..0..0.36.i, %.lr.ph.i ], [ %122, %fmap_readn.exit78.i ] + %.06286.i = phi i32 [ %.0..0..0..0..0.36.i, %.lr.ph.i ], [ %122, %fmap_readn.exit78.i ] call void @llvm.lifetime.start.p0(ptr nonnull %3) %112 = load i64, ptr %109, align 8, !tbaa !23 %or.cond83.not.i = icmp ult i64 %.6, %112 br i1 %or.cond83.not.i, label %113, label %.thread.i 113: ; preds = %111 - %114 = call i32 @llvm.umin.i32(i32 %.06285.i, i32 8192) + %114 = call i32 @llvm.umin.i32(i32 %.06286.i, i32 8192) %115 = zext nneg i32 %114 to i64 %116 = sub nuw i64 %112, %.6 %spec.select.i75.i = call i64 @llvm.umin.i64(i64 range(i64 1, 4294967296) %115, i64 %116) @@ -334,7 +334,7 @@ fmap_readn.exit78.i: ; preds = %113 %119 = add nsw i64 %spec.select.i75.i, %.6 %120 = call i32 @fileblobAddData(ptr noundef nonnull %.2111, ptr noundef nonnull %3, i64 noundef %spec.select.i75.i) #7 %121 = trunc nuw nsw i64 %spec.select.i75.i to i32 - %122 = sub i32 %.06285.i, %121 + %122 = sub i32 %.06286.i, %121 call void @llvm.lifetime.end.p0(ptr nonnull %3) %.not.i60 = icmp eq i32 %122, 0 br i1 %.not.i60, label %.loopexit.i, label %111 @@ -366,7 +366,7 @@ fmap_readn.exit78.i: ; preds = %113 tnef_attachment.exit: ; preds = %125 %128 = add nuw nsw i64 %126, 2 - br label %155 + br label %156 .loopexit182: ; preds = %106, %127, %84, %.critedge.i, %102 %.5114.ph = phi ptr [ null, %102 ], [ %.0109233, %.critedge.i ], [ %.0109233, %84 ], [ %.3112, %127 ], [ null, %106 ] @@ -424,7 +424,7 @@ fmap_readn.exit67: ; preds = %.lr.ph240 br i1 %or.cond180.not, label %.lr.ph240, label %fmap_readn.exit67.thread fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, %.lr.ph240, %139 - %154 = call i32 @close(i32 noundef %137) #7 + %155 = call i32 @close(i32 noundef %137) #7 br label %.thread165 .thread165: ; preds = %132, %fmap_readn.exit67.thread, %136 @@ -432,42 +432,42 @@ fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.thread169 -155: ; preds = %tnef_attachment.exit, %tnef_message.exit.thread, %58 +156: ; preds = %tnef_attachment.exit, %tnef_message.exit.thread, %58 %.1110 = phi ptr [ %.0109233, %58 ], [ %.3112, %tnef_attachment.exit ], [ %69, %tnef_message.exit.thread ] %.1107 = phi i64 [ %59, %58 ], [ %128, %tnef_attachment.exit ], [ %75, %tnef_message.exit.thread ] - %156 = load ptr, ptr %6, align 8, !tbaa !3 + %157 = load ptr, ptr %6, align 8, !tbaa !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %157 = getelementptr inbounds nuw i8, ptr %156, i64 88 - %158 = load i64, ptr %157, align 8, !tbaa !23 - %or.cond44.not.i = icmp ult i64 %.1107, %158 + %158 = getelementptr inbounds nuw i8, ptr %157, i64 88 + %159 = load i64, ptr %158, align 8, !tbaa !23 + %or.cond44.not.i = icmp ult i64 %.1107, %159 br i1 %or.cond44.not.i, label %.lr.ph, label %.loopexit .thread169: ; preds = %.loopexit, %.loopexit181, %129, %.thread165, %.loopexit182, %76, %64 %.2178 = phi i32 [ 26, %129 ], [ 26, %.thread165 ], [ 26, %.loopexit182 ], [ 26, %76 ], [ 26, %64 ], [ 0, %.loopexit ], [ 0, %.loopexit181 ] %.1110177 = phi ptr [ %.0109233, %129 ], [ %.0109233, %.thread165 ], [ %.5114.ph, %.loopexit182 ], [ %69, %76 ], [ %.0109233, %64 ], [ %.0109196, %.loopexit ], [ %.0109233, %.loopexit181 ] %.not49 = icmp eq ptr %.1110177, null - br i1 %.not49, label %164, label %159 + br i1 %.not49, label %165, label %160 -159: ; preds = %.thread169 +160: ; preds = %.thread169 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.9) #7 - %160 = call ptr @fileblobGetFilename(ptr noundef nonnull %.1110177) #7 - %161 = icmp eq ptr %160, null - br i1 %161, label %162, label %163 + %161 = call ptr @fileblobGetFilename(ptr noundef nonnull %.1110177) #7 + %162 = icmp eq ptr %161, null + br i1 %162, label %163, label %164 -162: ; preds = %159 +163: ; preds = %160 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.10) #7 call void @fileblobSetFilename(ptr noundef nonnull %.1110177, ptr noundef %0, ptr noundef nonnull @.str.11) #7 - br label %163 + br label %164 -163: ; preds = %162, %159 +164: ; preds = %163, %160 call void @fileblobDestroy(ptr noundef nonnull %.1110177) #7 - br label %164 + br label %165 -164: ; preds = %163, %.thread169 +165: ; preds = %164, %.thread169 call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.12, i32 noundef %.2178) #7 br label %fmap_readn.exit -fmap_readn.exit: ; preds = %22, %18, %12, %16, %164, %11 +fmap_readn.exit: ; preds = %22, %18, %12, %16, %165, %11 %.0 = phi i32 [ 0, %11 ], [ %.2178, %164 ], [ 26, %16 ], [ 12, %12 ], [ 12, %18 ], [ 12, %22 ] ret i32 %.0 } diff --git a/bench/coremark/optimized/core_list_join.ll b/bench/coremark/optimized/core_list_join.ll index 32d430694eb..0a506edb595 100644 --- a/bench/coremark/optimized/core_list_join.ll +++ b/bench/coremark/optimized/core_list_join.ll @@ -257,9 +257,9 @@ core_list_reverse.exit.thread: ; preds = %core_list_reverse.e %.053.lcssa = phi ptr [ %4, %2 ], [ %.07.lcssa.i, %._crit_edge.loopexit ] %52 = phi i16 [ 0, %2 ], [ %51, %._crit_edge.loopexit ] %53 = icmp sgt i16 %1, 0 - br i1 %53, label %.lr.ph.us.preheader.i.preheader, label %core_list_mergesort.exit + br i1 %53, label %.lr.ph79.i.preheader, label %core_list_mergesort.exit -.lr.ph.us.preheader.i.preheader: ; preds = %._crit_edge +.lr.ph79.i.preheader: ; preds = %._crit_edge %54 = getelementptr inbounds nuw i8, ptr %0, i64 64 %55 = getelementptr inbounds nuw i8, ptr %0, i64 96 %56 = getelementptr inbounds nuw i8, ptr %0, i64 100 @@ -267,16 +267,16 @@ core_list_reverse.exit.thread: ; preds = %core_list_reverse.e %58 = getelementptr inbounds nuw i8, ptr %0, i64 32 %59 = getelementptr inbounds nuw i8, ptr %0, i64 2 %60 = getelementptr inbounds nuw i8, ptr %0, i64 102 - br label %.lr.ph.us.preheader.i + br label %.lr.ph79.i -.lr.ph.us.preheader.i: ; preds = %.lr.ph.us.preheader.i.preheader, %._crit_edge80.i +.lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %.053.lcssa, %.lr.ph.us.preheader.i.preheader ] %.047.i = phi i32 [ %158, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i %.04677.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] @@ -503,7 +503,7 @@ calc_func.exit: ; preds = %119, %142 store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %157 = icmp eq i32 %.04677.us.i, 0 %158 = shl nsw i32 %.047.i, 1 - br i1 %157, label %core_list_mergesort.exit, label %.lr.ph.us.preheader.i + br i1 %157, label %core_list_mergesort.exit, label %.lr.ph79.i core_list_mergesort.exit: ; preds = %._crit_edge80.i, %._crit_edge %.154 = phi ptr [ %.053.lcssa, %._crit_edge ], [ %.260.us.i.ph, %._crit_edge80.i ] @@ -584,16 +584,16 @@ core_list_find.exit79: ; preds = %177, %171 %190 = load ptr, ptr %187, align 8, !tbaa !31 store ptr %190, ptr %160, align 8, !tbaa !31 store ptr %160, ptr %187, align 8, !tbaa !31 - br label %.lr.ph.us.preheader.i80 + br label %.lr.ph79.i80 -.lr.ph.us.preheader.i80: ; preds = %._crit_edge80.i103, %._crit_edge156 +.lr.ph79.i80: ; preds = %._crit_edge80.i103, %._crit_edge156 %.058.i81 = phi ptr [ %.154, %._crit_edge156 ], [ %.260.us.i95.ph, %._crit_edge80.i103 ] %.047.i82 = phi i32 [ 1, %._crit_edge156 ], [ %236, %._crit_edge80.i103 ] %.not73.i83 = icmp ne ptr %.058.i81, null tail call void @llvm.assume(i1 %.not73.i83) br label %.lr.ph.us.i84 -.lr.ph.us.i84: ; preds = %.loopexit.us.i101, %.lr.ph.us.preheader.i80 +.lr.ph.us.i84: ; preds = %.loopexit.us.i101, %.lr.ph79.i80 %.04677.us.i85 = phi i32 [ %191, %.loopexit.us.i101 ], [ 0, %.lr.ph.us.preheader.i80 ] %.04876.us.i86 = phi ptr [ %.149.us.i98, %.loopexit.us.i101 ], [ null, %.lr.ph.us.preheader.i80 ] %.05575.us.i87 = phi ptr [ %.253.us.i97, %.loopexit.us.i101 ], [ %.058.i81, %.lr.ph.us.preheader.i80 ] @@ -714,7 +714,7 @@ core_list_find.exit79: ; preds = %177, %171 store ptr null, ptr %.149.us.i98, align 8, !tbaa !31 %235 = icmp eq i32 %.04677.us.i85, 0 %236 = shl nsw i32 %.047.i82, 1 - br i1 %235, label %core_list_mergesort.exit114.preheader, label %.lr.ph.us.preheader.i80 + br i1 %235, label %core_list_mergesort.exit114.preheader, label %.lr.ph79.i80 core_list_mergesort.exit114.preheader: ; preds = %._crit_edge80.i103 %.2158 = load ptr, ptr %.260.us.i95.ph, align 8, !tbaa !31 @@ -811,16 +811,16 @@ define dso_local noundef ptr @core_list_reverse(ptr noundef %0) local_unnamed_ad ; Function Attrs: nounwind uwtable define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef %2) local_unnamed_addr #0 { - br label %.lr.ph.us.preheader + br label %.lr.ph79 -.lr.ph.us.preheader: ; preds = %3, %._crit_edge80 +.lr.ph79: ; preds = %3, %._crit_edge80 %.058 = phi ptr [ %0, %3 ], [ %.260.us.ph, %._crit_edge80 ] %.047 = phi i32 [ 1, %3 ], [ %39, %._crit_edge80 ] %.not73 = icmp ne ptr %.058, null tail call void @llvm.assume(i1 %.not73) br label %.lr.ph.us -.lr.ph.us: ; preds = %.lr.ph.us.preheader, %.loopexit.us +.lr.ph.us: ; preds = %.lr.ph79, %.loopexit.us %.04677.us = phi i32 [ %4, %.loopexit.us ], [ 0, %.lr.ph.us.preheader ] %.04876.us = phi ptr [ %.149.us, %.loopexit.us ], [ null, %.lr.ph.us.preheader ] %.05575.us = phi ptr [ %.253.us, %.loopexit.us ], [ %.058, %.lr.ph.us.preheader ] @@ -928,7 +928,7 @@ define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly c store ptr null, ptr %.149.us, align 8, !tbaa !31 %38 = icmp eq i32 %.04677.us, 0 %39 = shl nsw i32 %.047, 1 - br i1 %38, label %40, label %.lr.ph.us.preheader + br i1 %38, label %40, label %.lr.ph79 40: ; preds = %._crit_edge80 ret ptr %.260.us.ph @@ -1008,7 +1008,7 @@ core_list_insert_new.exit: ; preds = %3, %13 %.03764 = phi ptr [ %18, %core_list_insert_new.exit ], [ %35, %core_list_insert_new.exit42 ] %19 = load ptr, ptr %.03764, align 8, !tbaa !31 %.not65 = icmp eq ptr %19, null - br i1 %.not65, label %.lr.ph.us.preheader.i.preheader, label %.lr.ph68 + br i1 %.not65, label %.lr.ph79.i.preheader, label %.lr.ph68 .lr.ph68: ; preds = %.preheader %20 = udiv i32 %5, 5 @@ -1079,19 +1079,19 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 store i16 %.sink, ptr %50, align 2, !tbaa !25 %51 = load ptr, ptr %.037, align 8, !tbaa !31 %.not = icmp eq ptr %51, null - br i1 %.not, label %.lr.ph.us.preheader.i.preheader, label %37, !llvm.loop !43 + br i1 %.not, label %.lr.ph79.i.preheader, label %37, !llvm.loop !43 -.lr.ph.us.preheader.i.preheader: ; preds = %47, %.preheader - br label %.lr.ph.us.preheader.i +.lr.ph79.i.preheader: ; preds = %47, %.preheader + br label %.lr.ph79.i -.lr.ph.us.preheader.i: ; preds = %.lr.ph.us.preheader.i.preheader, %._crit_edge80.i +.lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %1, %.lr.ph.us.preheader.i.preheader ] %.047.i = phi i32 [ %97, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph.us.preheader.i +.lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i %.04677.us.i = phi i32 [ %52, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] @@ -1212,7 +1212,7 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %96 = icmp eq i32 %.04677.us.i, 0 %97 = shl nsw i32 %.047.i, 1 - br i1 %96, label %core_list_mergesort.exit, label %.lr.ph.us.preheader.i + br i1 %96, label %core_list_mergesort.exit, label %.lr.ph79.i core_list_mergesort.exit: ; preds = %._crit_edge80.i ret ptr %.260.us.i.ph diff --git a/bench/cpython/optimized/longobject.ll b/bench/cpython/optimized/longobject.ll index 5c999eceac5..b6768c651ff 100644 --- a/bench/cpython/optimized/longobject.ll +++ b/bench/cpython/optimized/longobject.ll @@ -2854,7 +2854,7 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly br label %.lr.ph139.split.us .lr.ph139.split.us: ; preds = %.lr.ph139.split.us.preheader, %._crit_edge.us - %.075137.us = phi i64 [ %44, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] + %.075137.us = phi i64 [ %45, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] %.076136.us = phi i64 [ %.177.lcssa.us, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] %.184135.us = phi ptr [ %.285.lcssa.us, %._crit_edge.us ], [ %.083, %.lr.ph139.split.us.preheader ] %.086134.us = phi i64 [ %.187.lcssa.us, %._crit_edge.us ], [ 0, %.lr.ph139.split.us.preheader ] @@ -2871,34 +2871,34 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %30 = shl nuw nsw i64 %28, %29 %31 = or i64 %30, %.076136.us %32 = icmp eq i64 %.075137.us, %21 - br i1 %32, label %34, label %.loopexit111.us.thread + br i1 %32, label %35, label %33 -.loopexit111.us.thread: ; preds = %.lr.ph139.split.us - %33 = add nuw nsw i32 %.093132.us, 30 +33: ; preds = %.lr.ph139.split.us + %34 = add nuw nsw i32 %.093132.us, 30 br label %.lr.ph127.us.preheader -34: ; preds = %.lr.ph139.split.us +35: ; preds = %.lr.ph139.split.us %.not104120.us = icmp eq i32 %27, 1073741823 br i1 %.not104120.us, label %.loopexit111.us, label %.lr.ph.us.preheader -.lr.ph.us.preheader: ; preds = %34 - %35 = xor i32 %27, 1073741823 +.lr.ph.us.preheader: ; preds = %35 + %36 = xor i32 %27, 1073741823 br label %.lr.ph.us .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.078122.us = phi i32 [ %36, %.lr.ph.us ], [ %35, %.lr.ph.us.preheader ] - %.194121.us = phi i32 [ %37, %.lr.ph.us ], [ %.093132.us, %.lr.ph.us.preheader ] - %36 = lshr i32 %.078122.us, 1 - %37 = add i32 %.194121.us, 1 - %.not104.us = icmp eq i32 %36, 0 + %.078122.us = phi i32 [ %37, %.lr.ph.us ], [ %36, %.lr.ph.us.preheader ] + %.194121.us = phi i32 [ %38, %.lr.ph.us ], [ %.093132.us, %.lr.ph.us.preheader ] + %37 = lshr i32 %.078122.us, 1 + %38 = add i32 %.194121.us, 1 + %.not104.us = icmp eq i32 %37, 0 br i1 %.not104.us, label %.loopexit111.us, label %.lr.ph.us, !llvm.loop !63 -.loopexit111.us: ; preds = %.lr.ph.us, %34 - %.295.us = phi i32 [ %.093132.us, %34 ], [ %37, %.lr.ph.us ] - %38 = icmp ugt i32 %.295.us, 7 - br i1 %38, label %.lr.ph127.us.preheader, label %._crit_edge.us +.loopexit111.us: ; preds = %.lr.ph.us, %35 + %.295.us = phi i32 [ %.093132.us, %34 ], [ %38, %.lr.ph.us ] + %39 = icmp ugt i32 %.295.us, 7 + br i1 %39, label %.lr.ph127.us.preheader, label %._crit_edge.us -.lr.ph127.us.preheader: ; preds = %.loopexit111.us.thread, %.loopexit111.us +.lr.ph127.us.preheader: ; preds = %33, %.loopexit111.us %.295.us196 = phi i32 [ %33, %.loopexit111.us.thread ], [ %.295.us, %.loopexit111.us ] %39 = add i32 %.295.us196, -8 %40 = lshr i32 %39, 3 @@ -2907,51 +2907,51 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %43 = add i32 %41, %42 br label %.lr.ph127.us -._crit_edge.us: ; preds = %45, %.loopexit111.us - %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %49, %45 ] - %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %46, %45 ] - %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %48, %45 ] - %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %50, %45 ] - %44 = add nuw nsw i64 %.075137.us, 1 - %exitcond167.not = icmp eq i64 %44, %8 +._crit_edge.us: ; preds = %46, %.loopexit111.us + %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %50, %45 ] + %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %47, %45 ] + %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %49, %45 ] + %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %51, %45 ] + %45 = add nuw nsw i64 %.075137.us, 1 + %exitcond167.not = icmp eq i64 %45, %8 br i1 %exitcond167.not, label %._crit_edge140, label %.lr.ph139.split.us, !llvm.loop !64 -.lr.ph127.us: ; preds = %.lr.ph127.us.preheader, %45 - %.177126.us = phi i64 [ %50, %45 ], [ %31, %.lr.ph127.us.preheader ] - %.285125.us = phi ptr [ %48, %45 ], [ %.184135.us, %.lr.ph127.us.preheader ] - %.187124.us = phi i64 [ %46, %45 ], [ %.086134.us, %.lr.ph127.us.preheader ] - %.396123.us = phi i32 [ %49, %45 ], [ %.295.us196, %.lr.ph127.us.preheader ] +.lr.ph127.us: ; preds = %.lr.ph127.us.preheader, %46 + %.177126.us = phi i64 [ %51, %45 ], [ %31, %.lr.ph127.us.preheader ] + %.285125.us = phi ptr [ %49, %45 ], [ %.184135.us, %.lr.ph127.us.preheader ] + %.187124.us = phi i64 [ %47, %45 ], [ %.086134.us, %.lr.ph127.us.preheader ] + %.396123.us = phi i32 [ %50, %45 ], [ %.295.us196, %.lr.ph127.us.preheader ] %.not105.us = icmp ult i64 %.187124.us, %2 - br i1 %.not105.us, label %45, label %.loopexit110 - -45: ; preds = %.lr.ph127.us - %46 = add nuw i64 %.187124.us, 1 - %47 = trunc i64 %.177126.us to i8 - store i8 %47, ptr %.285125.us, align 1, !tbaa !29 - %48 = getelementptr i8, ptr %.285125.us, i64 %.082 - %49 = add i32 %.396123.us, -8 - %50 = lshr i64 %.177126.us, 8 - %lftr.wideiv165 = trunc i64 %46 to i32 + br i1 %.not105.us, label %46, label %.loopexit110 + +46: ; preds = %.lr.ph127.us + %47 = add nuw i64 %.187124.us, 1 + %48 = trunc i64 %.177126.us to i8 + store i8 %48, ptr %.285125.us, align 1, !tbaa !29 + %49 = getelementptr i8, ptr %.285125.us, i64 %.082 + %50 = add i32 %.396123.us, -8 + %51 = lshr i64 %.177126.us, 8 + %lftr.wideiv165 = trunc i64 %47 to i32 %exitcond166.not = icmp eq i32 %43, %lftr.wideiv165 br i1 %exitcond166.not, label %._crit_edge.us, label %.lr.ph127.us, !llvm.loop !65 .lr.ph139.split: ; preds = %.lr.ph139.split.preheader, %._crit_edge - %.075137 = phi i64 [ %73, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] + %.075137 = phi i64 [ %76, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.076136 = phi i64 [ %.177.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.184135 = phi ptr [ %.285.lcssa, %._crit_edge ], [ %.083176, %.lr.ph139.split.preheader ] %.086134 = phi i64 [ %.187.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] %.093132 = phi i32 [ %.396.lcssa, %._crit_edge ], [ 0, %.lr.ph139.split.preheader ] - %51 = getelementptr i32, ptr %18, i64 %.075137 - %52 = load i32, ptr %51, align 4, !tbaa !33 - %53 = zext i32 %52 to i64 - %54 = zext nneg i32 %.093132 to i64 - %55 = shl nuw nsw i64 %53, %54 - %56 = or i64 %55, %.076136 - %57 = icmp eq i64 %.075137, %19 - br i1 %57, label %.loopexit111, label %.loopexit111.thread - -.loopexit111: ; preds = %.lr.ph139.split - %.not104120 = icmp eq i32 %52, 0 + %52 = getelementptr i32, ptr %18, i64 %.075137 + %53 = load i32, ptr %52, align 4, !tbaa !33 + %54 = zext i32 %53 to i64 + %55 = zext nneg i32 %.093132 to i64 + %56 = shl nuw nsw i64 %54, %55 + %57 = or i64 %56, %.076136 + %58 = icmp eq i64 %.075137, %19 + br i1 %58, label %59, label %.loopexit111.thread + +59: ; preds = %.lr.ph139.split + %.not104120 = icmp eq i32 %53, 0 %58 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %52, i1 true) %reass.sub = sub i32 %.093132, %58 %59 = add i32 %reass.sub, 32 @@ -2972,32 +2972,32 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %66 = add i32 %64, %65 br label %.lr.ph127 -.lr.ph127: ; preds = %.lr.ph127.preheader, %67 - %.177126 = phi i64 [ %72, %67 ], [ %56, %.lr.ph127.preheader ] - %.285125 = phi ptr [ %70, %67 ], [ %.184135, %.lr.ph127.preheader ] - %.187124 = phi i64 [ %68, %67 ], [ %.086134, %.lr.ph127.preheader ] - %.396123 = phi i32 [ %71, %67 ], [ %.295198, %.lr.ph127.preheader ] +.lr.ph127: ; preds = %.lr.ph127.preheader, %70 + %.177126 = phi i64 [ %75, %67 ], [ %57, %.lr.ph127.preheader ] + %.285125 = phi ptr [ %73, %67 ], [ %.184135, %.lr.ph127.preheader ] + %.187124 = phi i64 [ %71, %67 ], [ %.086134, %.lr.ph127.preheader ] + %.396123 = phi i32 [ %74, %67 ], [ %.295198, %.lr.ph127.preheader ] %.not105 = icmp ult i64 %.187124, %2 - br i1 %.not105, label %67, label %.loopexit110 - -67: ; preds = %.lr.ph127 - %68 = add nuw i64 %.187124, 1 - %69 = trunc i64 %.177126 to i8 - store i8 %69, ptr %.285125, align 1, !tbaa !29 - %70 = getelementptr i8, ptr %.285125, i64 %.082178 - %71 = add i32 %.396123, -8 - %72 = lshr i64 %.177126, 8 - %lftr.wideiv = trunc i64 %68 to i32 + br i1 %.not105, label %70, label %.loopexit110 + +70: ; preds = %.lr.ph127 + %71 = add nuw i64 %.187124, 1 + %72 = trunc i64 %.177126 to i8 + store i8 %72, ptr %.285125, align 1, !tbaa !29 + %73 = getelementptr i8, ptr %.285125, i64 %.082178 + %74 = add i32 %.396123, -8 + %75 = lshr i64 %.177126, 8 + %lftr.wideiv = trunc i64 %71 to i32 %exitcond.not = icmp eq i32 %66, %lftr.wideiv br i1 %exitcond.not, label %._crit_edge, label %.lr.ph127, !llvm.loop !65 -._crit_edge: ; preds = %67, %.loopexit111 - %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %71, %67 ] - %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %68, %67 ] - %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %70, %67 ] - %.177.lcssa = phi i64 [ %56, %.loopexit111 ], [ %72, %67 ] - %73 = add nuw nsw i64 %.075137, 1 - %exitcond164.not = icmp eq i64 %73, %8 +._crit_edge: ; preds = %70, %.loopexit111 + %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %74, %67 ] + %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %71, %67 ] + %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %73, %67 ] + %.177.lcssa = phi i64 [ %57, %.loopexit111 ], [ %75, %67 ] + %76 = add nuw nsw i64 %.075137, 1 + %exitcond164.not = icmp eq i64 %76, %8 br i1 %exitcond164.not, label %._crit_edge140, label %.lr.ph139.split, !llvm.loop !64 ._crit_edge140: ; preds = %._crit_edge, %._crit_edge.us @@ -3009,72 +3009,72 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %.184.lcssa = phi ptr [ %.285.lcssa.us, %._crit_edge.us ], [ %.285.lcssa, %._crit_edge ] %.076.lcssa = phi i64 [ %.177.lcssa.us, %._crit_edge.us ], [ %.177.lcssa, %._crit_edge ] %.not101 = icmp eq i32 %.093.lcssa, 0 - br i1 %.not101, label %._crit_edge140.thread, label %74 + br i1 %.not101, label %._crit_edge140.thread, label %77 -74: ; preds = %._crit_edge140 +77: ; preds = %._crit_edge140 %.not103 = icmp ult i64 %.086.lcssa, %2 - br i1 %.not103, label %75, label %.loopexit110 - -75: ; preds = %74 - %76 = add nuw i64 %.086.lcssa, 1 - %77 = zext nneg i32 %.093.lcssa to i64 - %78 = shl nsw i64 -1, %77 - %79 = select i1 %10, i64 %78, i64 0 - %.2 = or i64 %.076.lcssa, %79 - %80 = trunc i64 %.2 to i8 - store i8 %80, ptr %.184.lcssa, align 1, !tbaa !29 - %81 = getelementptr i8, ptr %.184.lcssa, i64 %.082186 - br label %89 + br i1 %.not103, label %78, label %.loopexit110 + +78: ; preds = %77 + %79 = add nuw i64 %.086.lcssa, 1 + %80 = zext nneg i32 %.093.lcssa to i64 + %81 = shl nsw i64 -1, %80 + %82 = select i1 %10, i64 %81, i64 0 + %.2 = or i64 %.076.lcssa, %82 + %83 = trunc i64 %.2 to i8 + store i8 %83, ptr %.184.lcssa, align 1, !tbaa !29 + %84 = getelementptr i8, ptr %.184.lcssa, i64 %.082186 + br label %92 ._crit_edge140.thread: ; preds = %.thread, %13, %._crit_edge140 - %.184.lcssa212 = phi ptr [ %.184.lcssa, %._crit_edge140 ], [ %.083176, %.thread ], [ %.083, %13 ] - %.086.lcssa211 = phi i64 [ %.086.lcssa, %._crit_edge140 ], [ 0, %.thread ], [ 0, %13 ] - %.092181210 = phi i32 [ %.092181, %._crit_edge140 ], [ 0, %.thread ], [ 1, %13 ] - %.082.neg184209 = phi i64 [ %.082.neg184, %._crit_edge140 ], [ %.082.neg177, %.thread ], [ %.082.neg, %13 ] - %.082186208 = phi i64 [ %.082186, %._crit_edge140 ], [ %.082178, %.thread ], [ %.082, %13 ] - %82 = icmp eq i64 %.086.lcssa211, %2 - %83 = icmp ne i64 %2, 0 - %or.cond = and i1 %83, %82 - %84 = icmp ne i32 %4, 0 - %or.cond3 = and i1 %84, %or.cond - br i1 %or.cond3, label %85, label %89 - -85: ; preds = %._crit_edge140.thread - %86 = getelementptr i8, ptr %.184.lcssa212, i64 %.082.neg184209 - %87 = load i8, ptr %86, align 1, !tbaa !29 - %.lobit = lshr i8 %87, 7 - %88 = zext nneg i8 %.lobit to i32 - %.not102 = icmp eq i32 %.092181210, %88 + %.184.lcssa208 = phi ptr [ %.184.lcssa, %._crit_edge140 ], [ %.083176, %.thread ], [ %.083, %13 ] + %.086.lcssa207 = phi i64 [ %.086.lcssa, %._crit_edge140 ], [ 0, %.thread ], [ 0, %13 ] + %.092181206 = phi i32 [ %.092181, %._crit_edge140 ], [ 0, %.thread ], [ 1, %13 ] + %.082.neg184205 = phi i64 [ %.082.neg184, %._crit_edge140 ], [ %.082.neg177, %.thread ], [ %.082.neg, %13 ] + %.082186204 = phi i64 [ %.082186, %._crit_edge140 ], [ %.082178, %.thread ], [ %.082, %13 ] + %85 = icmp eq i64 %.086.lcssa207, %2 + %86 = icmp ne i64 %2, 0 + %or.cond = and i1 %86, %85 + %87 = icmp ne i32 %4, 0 + %or.cond3 = and i1 %87, %or.cond + br i1 %or.cond3, label %88, label %92 + +88: ; preds = %._crit_edge140.thread + %89 = getelementptr i8, ptr %.184.lcssa208, i64 %.082.neg184205 + %90 = load i8, ptr %89, align 1, !tbaa !29 + %.lobit = lshr i8 %90, 7 + %91 = zext nneg i8 %.lobit to i32 + %.not102 = icmp eq i32 %.092181206, %91 br i1 %.not102, label %.loopexit, label %.loopexit110 -89: ; preds = %._crit_edge140.thread, %75 - %.082186207 = phi i64 [ %.082186, %75 ], [ %.082186208, %._crit_edge140.thread ] - %.288 = phi i64 [ %76, %75 ], [ %.086.lcssa211, %._crit_edge140.thread ] - %.3 = phi ptr [ %81, %75 ], [ %.184.lcssa212, %._crit_edge140.thread ] - %90 = sext i1 %10 to i8 - %91 = icmp ult i64 %.288, %2 - br i1 %91, label %.lr.ph151, label %.loopexit - -.lr.ph151: ; preds = %89, %.lr.ph151 - %.4149 = phi ptr [ %93, %.lr.ph151 ], [ %.3, %89 ] - %.389148 = phi i64 [ %92, %.lr.ph151 ], [ %.288, %89 ] - store i8 %90, ptr %.4149, align 1, !tbaa !29 - %92 = add nuw i64 %.389148, 1 - %93 = getelementptr i8, ptr %.4149, i64 %.082186207 - %exitcond168.not = icmp eq i64 %92, %2 +92: ; preds = %._crit_edge140.thread, %78 + %.082186203 = phi i64 [ %.082186, %75 ], [ %.082186204, %._crit_edge140.thread ] + %.288 = phi i64 [ %79, %75 ], [ %.086.lcssa207, %._crit_edge140.thread ] + %.3 = phi ptr [ %84, %75 ], [ %.184.lcssa208, %._crit_edge140.thread ] + %93 = sext i1 %10 to i8 + %94 = icmp ult i64 %.288, %2 + br i1 %94, label %.lr.ph151, label %.loopexit + +.lr.ph151: ; preds = %92, %.lr.ph151 + %.4149 = phi ptr [ %96, %.lr.ph151 ], [ %.3, %89 ] + %.389148 = phi i64 [ %95, %.lr.ph151 ], [ %.288, %89 ] + store i8 %93, ptr %.4149, align 1, !tbaa !29 + %95 = add nuw i64 %.389148, 1 + %96 = getelementptr i8, ptr %.4149, i64 %.082186203 + %exitcond168.not = icmp eq i64 %95, %2 br i1 %exitcond168.not, label %.loopexit, label %.lr.ph151, !llvm.loop !66 -.loopexit110: ; preds = %.lr.ph127, %.lr.ph127.us, %74, %85 +.loopexit110: ; preds = %.lr.ph127, %.lr.ph127.us, %77, %88 %.not106 = icmp eq i32 %5, 0 br i1 %.not106, label %.loopexit, label %.loopexit.sink.split .loopexit.sink.split: ; preds = %.loopexit110, %12 %.str.15.sink = phi ptr [ @.str.14, %12 ], [ @.str.15, %.loopexit110 ] - %94 = load ptr, ptr @PyExc_OverflowError, align 8, !tbaa !4 - tail call void @PyErr_SetString(ptr noundef %94, ptr noundef nonnull %.str.15.sink) #18 + %97 = load ptr, ptr @PyExc_OverflowError, align 8, !tbaa !4 + tail call void @PyErr_SetString(ptr noundef %97, ptr noundef nonnull %.str.15.sink) #18 br label %.loopexit -.loopexit: ; preds = %.lr.ph151, %.loopexit.sink.split, %89, %.loopexit110, %12, %85 +.loopexit: ; preds = %.lr.ph151, %.loopexit.sink.split, %92, %.loopexit110, %12, %88 %.0 = phi i32 [ 0, %85 ], [ -1, %12 ], [ -1, %.loopexit110 ], [ 0, %89 ], [ -1, %.loopexit.sink.split ], [ 0, %.lr.ph151 ] ret i32 %.0 } diff --git a/bench/cpython/optimized/mpdecimal.ll b/bench/cpython/optimized/mpdecimal.ll index 60d2524b01c..641e4dfd8ff 100644 --- a/bench/cpython/optimized/mpdecimal.ll +++ b/bench/cpython/optimized/mpdecimal.ll @@ -14118,9 +14118,9 @@ mpd_setspecial.exit: ; preds = %47, %50, %62 br label %72 72: ; preds = %67, %mpd_setspecial.exit - %.sink80 = phi i32 [ 28737, %67 ], [ 6208, %mpd_setspecial.exit ] + %.sink81 = phi i32 [ 28737, %67 ], [ 6208, %mpd_setspecial.exit ] %73 = load i32, ptr %3, align 4, !tbaa !23 - %74 = or i32 %73, %.sink80 + %74 = or i32 %73, %.sink81 store i32 %74, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit @@ -14381,7 +14381,7 @@ _mpd_get_exp_iterations.exit: ; preds = %151, %155, %162, %1 %218 = call double @llvm.ceil.f64(double %217) %219 = fptosi double %218 to i64 %220 = icmp eq i64 %219, 9223372036854775807 - br i1 %220, label %_mpd_get_exp_iterations.exit.thread, label %241 + br i1 %220, label %_mpd_get_exp_iterations.exit.thread, label %.lr.ph _mpd_get_exp_iterations.exit.thread: ; preds = %136, %_mpd_get_exp_iterations.exit %221 = load i8, ptr %0, align 8, !tbaa !19 @@ -14428,181 +14428,181 @@ mpd_seterror.exit: ; preds = %_mpd_get_exp_iterat store i32 %240, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit -241: ; preds = %_mpd_get_exp_iterations.exit +.lr.ph: ; preds = %_mpd_get_exp_iterations.exit %242 = call i64 @llvm.smax.i64(i64 %219, i64 3) call fastcc void @_settriple(ptr noundef nonnull %14, i8 noundef zeroext 0, i64 noundef 1, i64 noundef 0) %243 = getelementptr inbounds nuw i8, ptr %10, i64 28 br label %244 -244: ; preds = %241, %mpd_setdigits.exit +243: ; preds = %.lr.ph, %mpd_setdigits.exit %.069.in = phi i64 [ %242, %241 ], [ %.069, %mpd_setdigits.exit ] %.069 = add nsw i64 %.069.in, -1 store i64 %.069, ptr %15, align 8, !tbaa !3 - %245 = icmp ult i64 %.069, %143 - br i1 %245, label %246, label %274 + %244 = icmp ult i64 %.069, %143 + br i1 %244, label %245, label %273 -246: ; preds = %244 - %247 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 32), align 8, !tbaa !3 - %248 = icmp ult i64 %.069, %247 - br i1 %248, label %249, label %260 +245: ; preds = %243 + %246 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 32), align 8, !tbaa !3 + %247 = icmp ult i64 %.069, %246 + br i1 %247, label %248, label %259 -249: ; preds = %246 - %250 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 16), align 8, !tbaa !3 - %251 = icmp ult i64 %.069, %250 - br i1 %251, label %252, label %256 +248: ; preds = %245 + %249 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 16), align 8, !tbaa !3 + %250 = icmp ult i64 %.069, %249 + br i1 %250, label %251, label %255 -252: ; preds = %249 - %253 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 8), align 8, !tbaa !3 - %254 = icmp ult i64 %.069, %253 - %255 = select i1 %254, i64 1, i64 2 +251: ; preds = %248 + %252 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 8), align 8, !tbaa !3 + %253 = icmp ult i64 %.069, %252 + %254 = select i1 %253, i64 1, i64 2 br label %mpd_setdigits.exit -256: ; preds = %249 - %257 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 24), align 8, !tbaa !3 - %258 = icmp ult i64 %.069, %257 - %259 = select i1 %258, i64 3, i64 4 +255: ; preds = %248 + %256 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 24), align 8, !tbaa !3 + %257 = icmp ult i64 %.069, %256 + %258 = select i1 %257, i64 3, i64 4 br label %mpd_setdigits.exit -260: ; preds = %246 - %261 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 48), align 8, !tbaa !3 - %262 = icmp ult i64 %.069, %261 - br i1 %262, label %263, label %267 +259: ; preds = %245 + %260 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 48), align 8, !tbaa !3 + %261 = icmp ult i64 %.069, %260 + br i1 %261, label %262, label %266 -263: ; preds = %260 - %264 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 40), align 8, !tbaa !3 - %265 = icmp ult i64 %.069, %264 - %266 = select i1 %265, i64 5, i64 6 +262: ; preds = %259 + %263 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 40), align 8, !tbaa !3 + %264 = icmp ult i64 %.069, %263 + %265 = select i1 %264, i64 5, i64 6 br label %mpd_setdigits.exit -267: ; preds = %260 - %268 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 64), align 8, !tbaa !3 - %269 = icmp ult i64 %.069, %268 - br i1 %269, label %270, label %mpd_setdigits.exit - -270: ; preds = %267 - %271 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 56), align 8, !tbaa !3 - %272 = icmp ult i64 %.069, %271 - %273 = select i1 %272, i64 7, i64 8 +266: ; preds = %259 + %267 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 64), align 8, !tbaa !3 + %268 = icmp ult i64 %.069, %267 + br i1 %268, label %269, label %mpd_setdigits.exit + +269: ; preds = %266 + %270 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 56), align 8, !tbaa !3 + %271 = icmp ult i64 %.069, %270 + %272 = select i1 %271, i64 7, i64 8 br label %mpd_setdigits.exit -274: ; preds = %244 - %275 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 112), align 8, !tbaa !3 - %276 = icmp ult i64 %.069, %275 - br i1 %276, label %277, label %291 +273: ; preds = %243 + %274 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 112), align 8, !tbaa !3 + %275 = icmp ult i64 %.069, %274 + br i1 %275, label %276, label %290 -277: ; preds = %274 - %278 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 88), align 8, !tbaa !3 - %279 = icmp ult i64 %.069, %278 - br i1 %279, label %280, label %284 +276: ; preds = %273 + %277 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 88), align 8, !tbaa !3 + %278 = icmp ult i64 %.069, %277 + br i1 %278, label %279, label %283 -280: ; preds = %277 - %281 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 80), align 8, !tbaa !3 - %282 = icmp ult i64 %.069, %281 - %283 = select i1 %282, i64 10, i64 11 +279: ; preds = %276 + %280 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 80), align 8, !tbaa !3 + %281 = icmp ult i64 %.069, %280 + %282 = select i1 %281, i64 10, i64 11 br label %mpd_setdigits.exit -284: ; preds = %277 - %285 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 104), align 8, !tbaa !3 - %286 = icmp ult i64 %.069, %285 - br i1 %286, label %287, label %mpd_setdigits.exit +283: ; preds = %276 + %284 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 104), align 8, !tbaa !3 + %285 = icmp ult i64 %.069, %284 + br i1 %285, label %286, label %mpd_setdigits.exit -287: ; preds = %284 - %288 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 96), align 8, !tbaa !3 - %289 = icmp ult i64 %.069, %288 - %290 = select i1 %289, i64 12, i64 13 +286: ; preds = %283 + %287 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 96), align 8, !tbaa !3 + %288 = icmp ult i64 %.069, %287 + %289 = select i1 %288, i64 12, i64 13 br label %mpd_setdigits.exit -291: ; preds = %274 - %292 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 144), align 8, !tbaa !3 - %293 = icmp ult i64 %.069, %292 - br i1 %293, label %294, label %305 +290: ; preds = %273 + %291 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 144), align 8, !tbaa !3 + %292 = icmp ult i64 %.069, %291 + br i1 %292, label %293, label %304 -294: ; preds = %291 - %295 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 128), align 8, !tbaa !3 - %296 = icmp ult i64 %.069, %295 - br i1 %296, label %297, label %301 +293: ; preds = %290 + %294 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 128), align 8, !tbaa !3 + %295 = icmp ult i64 %.069, %294 + br i1 %295, label %296, label %300 -297: ; preds = %294 - %298 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 120), align 8, !tbaa !3 - %299 = icmp ult i64 %.069, %298 - %300 = select i1 %299, i64 15, i64 16 +296: ; preds = %293 + %297 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 120), align 8, !tbaa !3 + %298 = icmp ult i64 %.069, %297 + %299 = select i1 %298, i64 15, i64 16 br label %mpd_setdigits.exit -301: ; preds = %294 - %302 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 136), align 8, !tbaa !3 - %303 = icmp ult i64 %.069, %302 - %304 = select i1 %303, i64 17, i64 18 +300: ; preds = %293 + %301 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 136), align 8, !tbaa !3 + %302 = icmp ult i64 %.069, %301 + %303 = select i1 %302, i64 17, i64 18 br label %mpd_setdigits.exit -305: ; preds = %291 - %306 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 152), align 8, !tbaa !3 - %307 = icmp ult i64 %.069, %306 - %308 = select i1 %307, i64 19, i64 20 +304: ; preds = %290 + %305 = load i64, ptr getelementptr (i8, ptr @mpd_pow10, i64 152), align 8, !tbaa !3 + %306 = icmp ult i64 %.069, %305 + %307 = select i1 %306, i64 19, i64 20 br label %mpd_setdigits.exit -mpd_setdigits.exit: ; preds = %252, %256, %263, %267, %270, %280, %284, %287, %297, %301, %305 - %.0.i.i58 = phi i64 [ %255, %252 ], [ %259, %256 ], [ %266, %263 ], [ %273, %270 ], [ %283, %280 ], [ %290, %287 ], [ %300, %297 ], [ %304, %301 ], [ %308, %305 ], [ 9, %267 ], [ 14, %284 ] +mpd_setdigits.exit: ; preds = %251, %255, %262, %266, %269, %279, %283, %286, %296, %300, %304 + %.0.i.i58 = phi i64 [ %254, %252 ], [ %258, %256 ], [ %265, %263 ], [ %272, %270 ], [ %282, %280 ], [ %289, %287 ], [ %299, %297 ], [ %303, %301 ], [ %307, %305 ], [ 9, %267 ], [ 14, %284 ] store i64 %.0.i.i58, ptr %24, align 8, !tbaa !11 call void @mpd_qdiv(ptr noundef nonnull %12, ptr noundef %0, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %243) call void @mpd_qfma(ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @one, ptr noundef nonnull %10, ptr noundef nonnull %243) - %309 = icmp samesign ugt i64 %.069.in, 2 - br i1 %309, label %244, label %310, !llvm.loop !55 - -310: ; preds = %mpd_setdigits.exit - %311 = getelementptr i64, ptr @mpd_pow10, i64 %42 - %312 = load i64, ptr %311, align 8, !tbaa !3 - call fastcc void @_mpd_qpow_uint(ptr noundef %0, ptr noundef %14, i64 noundef %312, i8 noundef zeroext 0, ptr noundef %10, ptr noundef %3) - %313 = load i8, ptr %12, align 8, !tbaa !19 - %.not.i5.i42 = icmp ugt i8 %313, 31 - br i1 %.not.i5.i42, label %317, label %314 - -314: ; preds = %310 - %315 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - %316 = load ptr, ptr %19, align 8, !tbaa !17 - call void %315(ptr noundef %316) #34 + %308 = icmp samesign ugt i64 %.069.in, 2 + br i1 %308, label %243, label %._crit_edge, !llvm.loop !55 + +._crit_edge: ; preds = %mpd_setdigits.exit + %309 = getelementptr i64, ptr @mpd_pow10, i64 %42 + %310 = load i64, ptr %309, align 8, !tbaa !3 + call fastcc void @_mpd_qpow_uint(ptr noundef %0, ptr noundef %14, i64 noundef %310, i8 noundef zeroext 0, ptr noundef %10, ptr noundef %3) + %311 = load i8, ptr %12, align 8, !tbaa !19 + %.not.i5.i42 = icmp ugt i8 %311, 31 + br i1 %.not.i5.i42, label %315, label %312 + +312: ; preds = %._crit_edge + %313 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + %314 = load ptr, ptr %19, align 8, !tbaa !17 + call void %315(ptr noundef %314) #34 %.pre = load i8, ptr %12, align 8, !tbaa !19 - br label %317 + br label %315 -317: ; preds = %314, %310 - %318 = phi i8 [ %.pre, %314 ], [ %313, %310 ] - %319 = and i8 %318, 16 - %.not.i.i44.not = icmp eq i8 %319, 0 - br i1 %.not.i.i44.not, label %320, label %mpd_del.exit46 +315: ; preds = %312, %._crit_edge + %316 = phi i8 [ %.pre, %314 ], [ %311, %310 ] + %317 = and i8 %316, 16 + %.not.i.i44.not = icmp eq i8 %317, 0 + br i1 %.not.i.i44.not, label %318, label %mpd_del.exit46 -320: ; preds = %317 - %321 = load ptr, ptr @mpd_free, align 8, !tbaa !20 +318: ; preds = %315 + %319 = load ptr, ptr @mpd_free, align 8, !tbaa !20 call void %321(ptr noundef nonnull %12) #34 br label %mpd_del.exit46 -mpd_del.exit46: ; preds = %317, %320 - %322 = load i8, ptr %14, align 8, !tbaa !19 - %.not.i5.i = icmp ugt i8 %322, 31 - br i1 %.not.i5.i, label %326, label %323 +mpd_del.exit46: ; preds = %315, %318 + %320 = load i8, ptr %14, align 8, !tbaa !19 + %.not.i5.i = icmp ugt i8 %320, 31 + br i1 %.not.i5.i, label %324, label %321 -323: ; preds = %mpd_del.exit46 - %324 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - %325 = load ptr, ptr %22, align 8, !tbaa !17 - call void %324(ptr noundef %325) #34 +321: ; preds = %mpd_del.exit46 + %322 = load ptr, ptr @mpd_free, align 8, !tbaa !20 + %323 = load ptr, ptr %22, align 8, !tbaa !17 + call void %324(ptr noundef %323) #34 %.pre70 = load i8, ptr %14, align 8, !tbaa !19 - br label %326 + br label %324 -326: ; preds = %323, %mpd_del.exit46 - %327 = phi i8 [ %.pre70, %323 ], [ %322, %mpd_del.exit46 ] - %328 = and i8 %327, 16 - %.not.i.i.not = icmp eq i8 %328, 0 - br i1 %.not.i.i.not, label %329, label %mpd_del.exit +324: ; preds = %321, %mpd_del.exit46 + %325 = phi i8 [ %.pre70, %323 ], [ %320, %mpd_del.exit46 ] + %326 = and i8 %325, 16 + %.not.i.i.not = icmp eq i8 %326, 0 + br i1 %.not.i.i.not, label %327, label %mpd_del.exit -329: ; preds = %326 - %330 = load ptr, ptr @mpd_free, align 8, !tbaa !20 +327: ; preds = %324 + %328 = load ptr, ptr @mpd_free, align 8, !tbaa !20 call void %330(ptr noundef nonnull %14) #34 br label %mpd_del.exit -mpd_del.exit: ; preds = %326, %329 +mpd_del.exit: ; preds = %324, %327 %331 = load i32, ptr %243, align 4, !tbaa !56 %332 = and i32 %331, 958 %333 = load i32, ptr %3, align 4, !tbaa !23 %334 = or i32 %332, %333 - %335 = or i32 %334, 4160 + %333 = or i32 %334, 4160 store i32 %335, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit diff --git a/bench/cpython/optimized/unicodeobject.ll b/bench/cpython/optimized/unicodeobject.ll index 4a79544c4a3..a6ad9af3340 100644 --- a/bench/cpython/optimized/unicodeobject.ll +++ b/bench/cpython/optimized/unicodeobject.ll @@ -47930,7 +47930,7 @@ define hidden void @_PyUnicode_ClearInterned(ptr noundef captures(address) %0) l %5 = getelementptr i8, ptr %0, i64 224392 %.val = load ptr, ptr %5, align 8, !tbaa !21 %6 = icmp eq ptr %.val, null - br i1 %6, label %60, label %7 + br i1 %6, label %61, label %7 7: ; preds = %1 %8 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 @@ -47961,7 +47961,7 @@ has_shared_intern_dict.exit: ; preds = %7 clear_interned_dict.exit: ; preds = %12, %13, %16 store ptr null, ptr %5, align 8, !tbaa !21 - br label %60 + br label %61 has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_intern_dict.exit call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -47972,7 +47972,7 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte %.not39 = icmp eq i32 %17, 0 br i1 %.not39, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %has_shared_intern_dict.exit.thread, %27 +.lr.ph: ; preds = %has_shared_intern_dict.exit.thread, %28 %18 = load ptr, ptr %3, align 8, !tbaa !183 %19 = getelementptr i8, ptr %18, i64 32 %.val20 = load i16, ptr %19, align 8, !tbaa !184 @@ -47985,7 +47985,7 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte 20: ; preds = %.lr.ph %21 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 %.not37 = icmp eq ptr %0, %21 - br i1 %.not37, label %.critedge, label %27 + br i1 %.not37, label %.critedge, label %28 22: ; preds = %.lr.ph %.val21 = load i32, ptr %18, align 8, !tbaa !195 @@ -47993,127 +47993,127 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte br i1 %.not.i24, label %23, label %.critedge 23: ; preds = %22 - %narrow = add nuw i32 %.val21, 2 + %24 = add nuw i32 %.val21, 2 br label %.critedge.sink.split -24: ; preds = %.lr.ph +25: ; preds = %.lr.ph unreachable .critedge.sink.split: ; preds = %.lr.ph, %23 - %narrow.sink = phi i32 [ %narrow, %23 ], [ 2, %.lr.ph ] - store i32 %narrow.sink, ptr %18, align 8, !tbaa !195 + %.sink = phi i32 [ %24, %23 ], [ 2, %.lr.ph ] + store i32 %.sink, ptr %18, align 8, !tbaa !195 br label %.critedge .critedge: ; preds = %.critedge.sink.split, %22, %20 - %25 = load ptr, ptr %3, align 8, !tbaa !183 - %26 = getelementptr inbounds nuw i8, ptr %25, i64 32 - store i16 0, ptr %26, align 8, !tbaa !184 - br label %27 + %26 = load ptr, ptr %3, align 8, !tbaa !183 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 32 + store i16 0, ptr %27, align 8, !tbaa !184 + br label %28 -27: ; preds = %.critedge, %20 - %28 = call i32 @PyDict_Next(ptr noundef nonnull %.val, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4) #42 - %.not = icmp eq i32 %28, 0 +28: ; preds = %.critedge, %20 + %29 = call i32 @PyDict_Next(ptr noundef nonnull %.val, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4) #42 + %.not = icmp eq i32 %29, 0 br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !522 -._crit_edge: ; preds = %27, %has_shared_intern_dict.exit.thread - %29 = getelementptr inbounds nuw i8, ptr %0, i64 11640 - %30 = load i64, ptr %29, align 8, !tbaa !235 - %31 = icmp sgt i64 %30, 0 - br i1 %31, label %.lr.ph42, label %._crit_edge43 +._crit_edge: ; preds = %28, %has_shared_intern_dict.exit.thread + %30 = getelementptr inbounds nuw i8, ptr %0, i64 11640 + %31 = load i64, ptr %30, align 8, !tbaa !235 + %32 = icmp sgt i64 %31, 0 + br i1 %32, label %.lr.ph42, label %._crit_edge43 .lr.ph42: ; preds = %._crit_edge - %32 = getelementptr inbounds nuw i8, ptr %0, i64 11648 - br label %44 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 11648 + br label %45 ._crit_edge43: ; preds = %Py_XINCREF.exit, %._crit_edge %.val.i25 = load ptr, ptr %5, align 8, !tbaa !21 %.not.i26 = icmp eq ptr %.val.i25, null %.pre46 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 - br i1 %.not.i26, label %clear_interned_dict.exit33, label %33 + br i1 %.not.i26, label %clear_interned_dict.exit33, label %34 -33: ; preds = %._crit_edge43 +34: ; preds = %._crit_edge43 %.not.i6.i27 = icmp eq ptr %0, %.pre46 br i1 %.not.i6.i27, label %has_shared_intern_dict.exit.thread.i32, label %has_shared_intern_dict.exit.i28 -has_shared_intern_dict.exit.i28: ; preds = %33 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 8440 - %35 = load i64, ptr %34, align 8, !tbaa !521 - %36 = and i64 %35, 32 - %.not7.i29 = icmp eq i64 %36, 0 - br i1 %.not7.i29, label %has_shared_intern_dict.exit.thread.i32, label %37 +has_shared_intern_dict.exit.i28: ; preds = %34 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 8440 + %36 = load i64, ptr %35, align 8, !tbaa !521 + %37 = and i64 %36, 32 + %.not7.i29 = icmp eq i64 %37, 0 + br i1 %.not7.i29, label %has_shared_intern_dict.exit.thread.i32, label %38 -has_shared_intern_dict.exit.thread.i32: ; preds = %has_shared_intern_dict.exit.i28, %33 +has_shared_intern_dict.exit.thread.i32: ; preds = %has_shared_intern_dict.exit.i28, %34 call void @PyDict_Clear(ptr noundef nonnull %.val.i25) #42 - br label %37 + br label %38 -37: ; preds = %has_shared_intern_dict.exit.thread.i32, %has_shared_intern_dict.exit.i28 - %38 = load i32, ptr %.val.i25, align 8, !tbaa !195 - %.not.i.i30 = icmp sgt i32 %38, -1 - br i1 %.not.i.i30, label %39, label %Py_DECREF.exit.i31 +38: ; preds = %has_shared_intern_dict.exit.thread.i32, %has_shared_intern_dict.exit.i28 + %39 = load i32, ptr %.val.i25, align 8, !tbaa !195 + %.not.i.i30 = icmp sgt i32 %39, -1 + br i1 %.not.i.i30, label %40, label %Py_DECREF.exit.i31 -39: ; preds = %37 - %40 = add nsw i32 %38, -1 - store i32 %40, ptr %.val.i25, align 8, !tbaa !195 - %41 = icmp eq i32 %40, 0 - br i1 %41, label %42, label %Py_DECREF.exit.i31 +40: ; preds = %38 + %41 = add nsw i32 %39, -1 + store i32 %41, ptr %.val.i25, align 8, !tbaa !195 + %42 = icmp eq i32 %41, 0 + br i1 %42, label %43, label %Py_DECREF.exit.i31 -42: ; preds = %39 +43: ; preds = %40 call void @_Py_Dealloc(ptr noundef nonnull %.val.i25) #42 br label %Py_DECREF.exit.i31 -Py_DECREF.exit.i31: ; preds = %42, %39, %37 +Py_DECREF.exit.i31: ; preds = %43, %40, %38 store ptr null, ptr %5, align 8, !tbaa !21 %.pre45 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 712), align 8, !tbaa !511 br label %clear_interned_dict.exit33 clear_interned_dict.exit33: ; preds = %._crit_edge43, %Py_DECREF.exit.i31 - %43 = phi ptr [ %.pre46, %._crit_edge43 ], [ %.pre45, %Py_DECREF.exit.i31 ] - %.not38 = icmp eq ptr %0, %43 - br i1 %.not38, label %57, label %clear_global_interned_strings.exit - -44: ; preds = %.lr.ph42, %Py_XINCREF.exit - %45 = phi i64 [ %30, %.lr.ph42 ], [ %54, %Py_XINCREF.exit ] - %.040 = phi i64 [ 0, %.lr.ph42 ], [ %55, %Py_XINCREF.exit ] - %46 = load ptr, ptr %32, align 8, !tbaa !236 - %47 = getelementptr ptr, ptr %46, i64 %.040 - %48 = load ptr, ptr %47, align 8, !tbaa !183 - %.not.i34 = icmp eq ptr %48, null - br i1 %.not.i34, label %Py_XINCREF.exit, label %49 - -49: ; preds = %44 - %50 = load i32, ptr %48, align 8, !tbaa !195 - %51 = icmp slt i32 %50, 0 - br i1 %51, label %Py_XINCREF.exit, label %52 + %44 = phi ptr [ %.pre46, %._crit_edge43 ], [ %.pre45, %Py_DECREF.exit.i31 ] + %.not38 = icmp eq ptr %0, %44 + br i1 %.not38, label %58, label %clear_global_interned_strings.exit + +45: ; preds = %.lr.ph42, %Py_XINCREF.exit + %46 = phi i64 [ %31, %.lr.ph42 ], [ %55, %Py_XINCREF.exit ] + %.040 = phi i64 [ 0, %.lr.ph42 ], [ %56, %Py_XINCREF.exit ] + %47 = load ptr, ptr %33, align 8, !tbaa !236 + %48 = getelementptr ptr, ptr %47, i64 %.040 + %49 = load ptr, ptr %48, align 8, !tbaa !183 + %.not.i34 = icmp eq ptr %49, null + br i1 %.not.i34, label %Py_XINCREF.exit, label %50 -52: ; preds = %49 - %53 = add nuw i32 %50, 1 - store i32 %53, ptr %48, align 8, !tbaa !195 - %.pre44 = load i64, ptr %29, align 8, !tbaa !235 +50: ; preds = %45 + %51 = load i32, ptr %49, align 8, !tbaa !195 + %52 = icmp slt i32 %51, 0 + br i1 %52, label %Py_XINCREF.exit, label %53 + +53: ; preds = %50 + %54 = add nuw i32 %51, 1 + store i32 %54, ptr %49, align 8, !tbaa !195 + %.pre44 = load i64, ptr %30, align 8, !tbaa !235 br label %Py_XINCREF.exit -Py_XINCREF.exit: ; preds = %44, %49, %52 - %54 = phi i64 [ %45, %44 ], [ %45, %49 ], [ %.pre44, %52 ] - %55 = add nuw nsw i64 %.040, 1 - %56 = icmp slt i64 %55, %54 - br i1 %56, label %44, label %._crit_edge43, !llvm.loop !523 +Py_XINCREF.exit: ; preds = %45, %50, %53 + %55 = phi i64 [ %46, %44 ], [ %46, %49 ], [ %.pre44, %52 ] + %56 = add nuw nsw i64 %.040, 1 + %57 = icmp slt i64 %56, %55 + br i1 %57, label %45, label %._crit_edge43, !llvm.loop !523 -57: ; preds = %clear_interned_dict.exit33 - %58 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 - %.not.i35 = icmp eq ptr %58, null - br i1 %.not.i35, label %clear_global_interned_strings.exit, label %59 +58: ; preds = %clear_interned_dict.exit33 + %59 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 + %.not.i35 = icmp eq ptr %59, null + br i1 %.not.i35, label %clear_global_interned_strings.exit, label %60 -59: ; preds = %57 - call void @_Py_hashtable_destroy(ptr noundef nonnull %58) #42 +60: ; preds = %58 + call void @_Py_hashtable_destroy(ptr noundef nonnull %59) #42 store ptr null, ptr getelementptr inbounds nuw (i8, ptr @_PyRuntime, i64 13904), align 8, !tbaa !93 br label %clear_global_interned_strings.exit -clear_global_interned_strings.exit: ; preds = %59, %57, %clear_interned_dict.exit33 +clear_global_interned_strings.exit: ; preds = %60, %58, %clear_interned_dict.exit33 call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) - br label %60 + br label %61 -60: ; preds = %1, %clear_global_interned_strings.exit, %clear_interned_dict.exit +61: ; preds = %1, %clear_global_interned_strings.exit, %clear_interned_dict.exit ret void } diff --git a/bench/cxxopts/optimized/example.ll b/bench/cxxopts/optimized/example.ll index fe224cf5a3e..c4c76574180 100644 --- a/bench/cxxopts/optimized/example.ll +++ b/bench/cxxopts/optimized/example.ll @@ -75222,33 +75222,33 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt %27 = icmp ugt i32 %25, %26 br i1 %27, label %.split83.us, label %28 -28: ; preds = %24 +23: ; preds = %24 %29 = add nuw i32 %21, %25 %30 = getelementptr inbounds nuw i8, ptr %.sroa.064.078.us, i64 1 - %.not73.us = icmp eq ptr %30, %13 + %26 = icmp eq ptr %30, %13 br i1 %.not73.us, label %._crit_edge, label %.lr.ph.split.us -._crit_edge: ; preds = %63, %28, %2 - %.072.lcssa = phi i32 [ 0, %2 ], [ %29, %28 ], [ %64, %63 ] +._crit_edge: ; preds = %62, %28, %2 + %.072.lcssa = phi i32 [ 0, %2 ], [ %29, %28 ], [ %63, %63 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) invoke void @_ZN7cxxopts6values6detail11SignedCheckIiLb1EEclIjEEvbT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 1 dereferenceable(1) %3, i1 noundef zeroext %7, i32 noundef %.072.lcssa, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %66 unwind label %71 - -.lr.ph.split: ; preds = %.lr.ph, %63 - %.07279 = phi i32 [ %64, %63 ], [ 0, %.lr.ph ] - %.sroa.064.078 = phi ptr [ %65, %63 ], [ %10, %.lr.ph ] - %31 = load i8, ptr %.sroa.064.078, align 1, !tbaa !14 - %32 = sext i8 %31 to i32 - %33 = add i8 %31, -48 - %or.cond = icmp ult i8 %33, 10 - br i1 %or.cond, label %46, label %34 - -34: ; preds = %.lr.ph.split - %35 = add i8 %31, -97 - %36 = icmp ult i8 %35, 6 - br i1 %36, label %46, label %37 + to label %66 unwind label %70 + +.lr.ph.split: ; preds = %.lr.ph, %62 + %.07279 = phi i32 [ %63, %63 ], [ 0, %.lr.ph ] + %.sroa.064.078 = phi ptr [ %64, %63 ], [ %10, %.lr.ph ] + %30 = load i8, ptr %.sroa.064.078, align 1, !tbaa !14 + %31 = sext i8 %30 to i32 + %32 = add i8 %30, -48 + %or.cond = icmp ult i8 %32, 10 + br i1 %or.cond, label %45, label %33 + +33: ; preds = %.lr.ph.split + %34 = add i8 %30, -97 + %35 = icmp ult i8 %34, 6 + br i1 %35, label %45, label %37 -37: ; preds = %34 +.noexc: ; preds = %34 %38 = add i8 %31, -65 %39 = icmp ult i8 %38, 6 br i1 %39, label %46, label %.split.us @@ -75271,116 +75271,116 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt call void @__cxa_free_exception(ptr nonnull %40) #32 br label %.body -44: ; preds = %41 - %45 = landingpad { ptr, i32 } +43: ; preds = %41 + %44 = landingpad { ptr, i32 } cleanup br label %.body -46: ; preds = %37, %34, %.lr.ph.split +45: ; preds = %37, %33, %.lr.ph.split %.sink = phi i32 [ -48, %.lr.ph.split ], [ -87, %34 ], [ -55, %37 ] - %47 = add nsw i32 %.sink, %32 - %48 = udiv i32 %spec.select, %16 - %49 = icmp ugt i32 %.07279, %48 - br i1 %49, label %.split81.us, label %55 + %46 = add nsw i32 %.sink, %31 + %47 = udiv i32 %spec.select, %16 + %48 = icmp ugt i32 %.07279, %47 + br i1 %48, label %.split81.us, label %54 -50: ; preds = %.invoke - %51 = landingpad { ptr, i32 } +49: ; preds = %.invoke + %50 = landingpad { ptr, i32 } cleanup br label %.body -.split81.us: ; preds = %46, %19 - %52 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %52, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %.invoke unwind label %53 +.split81.us: ; preds = %45, %19 + %51 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %51, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %.invoke unwind label %52 -53: ; preds = %.split81.us - %54 = landingpad { ptr, i32 } +52: ; preds = %.split81.us + %53 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %52) #32 + call void @__cxa_free_exception(ptr nonnull %51) #32 br label %.body -55: ; preds = %46 - %56 = mul nuw i32 %.07279, %16 - %57 = sub nuw i32 %spec.select, %47 - %58 = icmp ugt i32 %56, %57 - br i1 %58, label %.split83.us, label %63 +54: ; preds = %45 + %55 = mul nuw i32 %.07279, %16 + %56 = sub nuw i32 %spec.select, %46 + %57 = icmp ugt i32 %55, %56 + br i1 %57, label %.split83.us, label %62 -.split83.us: ; preds = %55, %24 - %59 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %59, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %.invoke unwind label %61 +.split83.us: ; preds = %54, %24 + %58 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %58, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %.invoke unwind label %60 .invoke: ; preds = %.split83.us, %.split81.us - %60 = phi ptr [ %52, %.split81.us ], [ %59, %.split83.us ] - invoke void @__cxa_throw(ptr nonnull %60, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 - to label %.cont unwind label %50 + %59 = phi ptr [ %51, %.split81.us ], [ %58, %.split83.us ] + invoke void @__cxa_throw(ptr nonnull %59, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 + to label %.cont unwind label %49 .cont: ; preds = %.invoke unreachable -61: ; preds = %.split83.us - %62 = landingpad { ptr, i32 } +60: ; preds = %.split83.us + %61 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %59) #32 + call void @__cxa_free_exception(ptr nonnull %58) #32 br label %.body -63: ; preds = %55 - %64 = add nuw i32 %47, %56 - %65 = getelementptr inbounds nuw i8, ptr %.sroa.064.078, i64 1 - %.not73 = icmp eq ptr %65, %13 +62: ; preds = %54 + %63 = add nuw i32 %46, %55 + %64 = getelementptr inbounds nuw i8, ptr %.sroa.064.078, i64 1 + %.not73 = icmp eq ptr %64, %13 br i1 %.not73, label %._crit_edge, label %.lr.ph.split -66: ; preds = %._crit_edge +65: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %3) - %67 = sub i32 0, %.072.lcssa - %storemerge = select i1 %7, i32 %67, i32 %.072.lcssa + %66 = sub i32 0, %.072.lcssa + %storemerge = select i1 %7, i32 %66, i32 %.072.lcssa store i32 %storemerge, ptr %1, align 4, !tbaa !198 - %68 = load ptr, ptr %9, align 8, !tbaa !12 - %69 = getelementptr inbounds nuw i8, ptr %4, i64 80 - %70 = icmp eq ptr %68, %69 - br i1 %70, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %67 = load ptr, ptr %9, align 8, !tbaa !12 + %68 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %69 = icmp eq ptr %67, %68 + br i1 %69, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i -71: ; preds = %._crit_edge - %72 = landingpad { ptr, i32 } +70: ; preds = %._crit_edge + %71 = landingpad { ptr, i32 } cleanup br label %.body -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %66 - %73 = load i64, ptr %69, align 8, !tbaa !14 - %74 = add i64 %73, 1 - call void @_ZdlPvm(ptr noundef %68, i64 noundef %74) #34 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %65 + %72 = load i64, ptr %68, align 8, !tbaa !14 + %73 = add i64 %72, 1 + call void @_ZdlPvm(ptr noundef %67, i64 noundef %73) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %66, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - %75 = load ptr, ptr %8, align 8, !tbaa !12 - %76 = getelementptr inbounds nuw i8, ptr %4, i64 48 - %77 = icmp eq ptr %75, %76 - br i1 %77, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %65, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %74 = load ptr, ptr %8, align 8, !tbaa !12 + %75 = getelementptr inbounds nuw i8, ptr %4, i64 48 + %76 = icmp eq ptr %74, %75 + br i1 %76, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - %78 = load i64, ptr %76, align 8, !tbaa !14 - %79 = add i64 %78, 1 - call void @_ZdlPvm(ptr noundef %75, i64 noundef %79) #34 + %77 = load i64, ptr %75, align 8, !tbaa !14 + %78 = add i64 %77, 1 + call void @_ZdlPvm(ptr noundef %74, i64 noundef %78) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i - %80 = load ptr, ptr %4, align 8, !tbaa !12 - %81 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %82 = icmp eq ptr %80, %81 - br i1 %82, label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i + %79 = load ptr, ptr %4, align 8, !tbaa !12 + %80 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %81 = icmp eq ptr %79, %80 + br i1 %81, label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i - %83 = load i64, ptr %81, align 8, !tbaa !14 - %84 = add i64 %83, 1 - call void @_ZdlPvm(ptr noundef %80, i64 noundef %84) #34 + %82 = load i64, ptr %80, align 8, !tbaa !14 + %83 = add i64 %82, 1 + call void @_ZdlPvm(ptr noundef %79, i64 noundef %83) #34 br label %_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit _ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit3.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i4.i call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -.body: ; preds = %42, %44, %50, %61, %53, %71 - %.pn.pn = phi { ptr, i32 } [ %72, %71 ], [ %45, %44 ], [ %43, %42 ], [ %54, %53 ], [ %51, %50 ], [ %62, %61 ] +.body: ; preds = %42, %43, %49, %60, %52, %70 + %.pn.pn = phi { ptr, i32 } [ %71, %71 ], [ %44, %44 ], [ %43, %42 ], [ %53, %53 ], [ %50, %50 ], [ %61, %61 ] call void @_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #32 call void @llvm.lifetime.end.p0(ptr nonnull %4) resume { ptr, i32 } %.pn.pn diff --git a/bench/duckdb/optimized/encode.ll b/bench/duckdb/optimized/encode.ll index da7193ad6aa..e07acff6940 100644 --- a/bench/duckdb/optimized/encode.ll +++ b/bench/duckdb/optimized/encode.ll @@ -2656,7 +2656,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %314 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !151 %315 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %314, ptr %315, align 8, !tbaa !156, !alias.scope !151 - br label %.thread530 + br label %.thread532 316: ; preds = %310 %317 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2665,7 +2665,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %318 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !157 %319 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %318, ptr %319, align 8, !tbaa !162, !alias.scope !157 - br label %.thread530 + br label %.thread532 320: ; preds = %310 %321 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2674,17 +2674,17 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %322 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !163 %323 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %322, ptr %323, align 8, !tbaa !168, !alias.scope !163 - br label %.thread530 + br label %.thread532 324: ; preds = %310 %325 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @_ZN13duckdb_brotliL12InitializeH5EPNS_12HasherCommonEPNS_2H5EPK19BrotliEncoderParams(ptr noundef nonnull %175, ptr noundef nonnull %325) - br label %.thread530 + br label %.thread532 326: ; preds = %310 %327 = getelementptr inbounds nuw i8, ptr %0, i64 1712 tail call fastcc void @_ZN13duckdb_brotliL12InitializeH6EPNS_12HasherCommonEPNS_2H6EPK19BrotliEncoderParams(ptr noundef nonnull %175, ptr noundef nonnull %327) - br label %.thread530 + br label %.thread532 328: ; preds = %310 %.val318 = load i32, ptr %30, align 4, !tbaa !49 @@ -2705,7 +2705,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %338 = zext i32 %337 to i64 %339 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %338, ptr %339, align 8, !tbaa !174, !alias.scope !169 - br label %.thread530 + br label %.thread532 340: ; preds = %310 %.val319 = load i32, ptr %30, align 4, !tbaa !49 @@ -2726,7 +2726,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %350 = zext i32 %349 to i64 %351 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store i64 %350, ptr %351, align 8, !tbaa !180, !alias.scope !175 - br label %.thread530 + br label %.thread532 352: ; preds = %310 %.val320 = load i32, ptr %30, align 4, !tbaa !49 @@ -2747,7 +2747,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %362 = zext i32 %361 to i64 %363 = getelementptr inbounds nuw i8, ptr %0, i64 2736 store i64 %362, ptr %363, align 8, !tbaa !186, !alias.scope !181 - br label %.thread530 + br label %.thread532 364: ; preds = %310 %365 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2756,7 +2756,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %366 = load ptr, ptr %175, align 8, !tbaa !65, !noalias !187 %367 = getelementptr inbounds nuw i8, ptr %0, i64 1720 store ptr %366, ptr %367, align 8, !tbaa !192, !alias.scope !187 - br label %.thread530 + br label %.thread532 368: ; preds = %310 %369 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2769,7 +2769,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %372, align 8, !tbaa !201, !alias.scope !197 %373 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %373, align 8, !tbaa !202, !alias.scope !197 - br label %.thread530 + br label %.thread532 374: ; preds = %310 %375 = getelementptr inbounds nuw i8, ptr %0, i64 1928 @@ -2782,7 +2782,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %378, align 8, !tbaa !208, !alias.scope !205 %379 = getelementptr inbounds nuw i8, ptr %0, i64 1944 store ptr %0, ptr %379, align 8, !tbaa !209, !alias.scope !205 - br label %.thread530 + br label %.thread532 380: ; preds = %310 %381 = getelementptr inbounds nuw i8, ptr %0, i64 1976 @@ -2795,7 +2795,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i32 1, ptr %384, align 8, !tbaa !217, !alias.scope !214 %385 = getelementptr inbounds nuw i8, ptr %0, i64 1992 store ptr %0, ptr %385, align 8, !tbaa !218, !alias.scope !214 - br label %.thread530 + br label %.thread532 386: ; preds = %310 %387 = getelementptr inbounds nuw i8, ptr %0, i64 1712 @@ -2814,9 +2814,9 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 store i64 %392, ptr %387, align 8, !tbaa !225, !alias.scope !221 %393 = getelementptr inbounds nuw i8, ptr %0, i64 1728 store i32 %.neg.i, ptr %393, align 8, !tbaa !226, !alias.scope !221 - br label %.thread530 + br label %.thread532 -.thread530: ; preds = %310, %312, %316, %320, %324, %326, %328, %340, %352, %364, %368, %374, %380, %386 +.thread532: ; preds = %310, %312, %316, %320, %324, %326, %328, %340, %352, %364, %368, %374, %380, %386 %394 = getelementptr inbounds nuw i8, ptr %0, i64 1704 store i32 0, ptr %394, align 8, !tbaa !227 store i32 1, ptr %183, align 8, !tbaa !140 @@ -2831,7 +2831,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 %398 = getelementptr inbounds nuw i8, ptr %0, i64 1704 br i1 %397, label %399, label %_ZN13duckdb_brotliL11HasherSetupEPNS_13MemoryManagerEPNS_6HasherEP19BrotliEncoderParamsPKhmmi.exit -399: ; preds = %.thread530, %396 +399: ; preds = %.thread532, %396 %400 = phi ptr [ %395, %.thread530 ], [ %398, %396 ] %401 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %402 = load i32, ptr %401, align 8, !tbaa !150 diff --git a/bench/eastl/optimized/BenchmarkAlgorithm.ll b/bench/eastl/optimized/BenchmarkAlgorithm.ll index 853b51e0aad..7f20869f984 100644 --- a/bench/eastl/optimized/BenchmarkAlgorithm.ll +++ b/bench/eastl/optimized/BenchmarkAlgorithm.ll @@ -8576,11 +8576,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit.i: ; preds = %_ZN2EA4StdC9Stopwat br i1 %cmp6.i.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i.i, label %_ZN12_GLOBAL__N_111TestCopyStdIN9__gnu_cxx17__normal_iteratorIP8LargePODSt6vectorIS3_SaIS3_EEEES8_EEvRN2EA4StdC9StopwatchET_SD_T0_.exit for.body.preheader.i.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit.i - %sub.ptr.div.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 16408 + %sub.ptr.div10.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i - %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] + %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div10.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] %__result.addr.08.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %3, %for.body.preheader.i.i.i.i.i.i ] %__first.addr.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i.i ], [ %1, %for.body.preheader.i.i.i.i.i.i ] %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %__first.addr.07.i.i.i.i.i.i, %__result.addr.08.i.i.i.i.i.i @@ -8655,11 +8655,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit.i72: ; preds = %_ZN2EA4StdC9Stopwat br i1 %cmp6.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %_ZN12_GLOBAL__N_110TestCopyEaIP8LargePODS2_EEvRN2EA4StdC9StopwatchET_S7_T0_.exit for.body.preheader.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit.i72 - %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 + %sub.ptr.div10.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i - %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i75, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i75, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div10.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %result.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %13, %for.body.preheader.i.i.i.i.i ] %first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i76, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %11, %for.body.preheader.i.i.i.i.i ] %cmp.not.i.i.i.i.i.i = icmp eq ptr %first.addr.07.i.i.i.i.i, %result.addr.08.i.i.i.i.i @@ -8921,11 +8921,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit: ; preds = %if.then2.i.i, %_ZN2 br i1 %cmp4.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %_ZSt13copy_backwardIN9__gnu_cxx17__normal_iteratorIP8LargePODSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit for.body.preheader.i.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit - %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 + %sub.ptr.div8.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 16408 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i - %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div8.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %result.coerce, %for.body.preheader.i.i.i.i.i ] %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i.i ], [ %last.coerce, %for.body.preheader.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -16408 @@ -9006,11 +9006,11 @@ _ZN2EA4StdC9Stopwatch7RestartEv.exit: ; preds = %if.then2.i.i, %_ZN2 br i1 %cmp4.i.i.i.i, label %for.body.preheader.i.i.i.i, label %_ZN5eastl13copy_backwardIP8LargePODS2_EET0_T_S4_S3_.exit for.body.preheader.i.i.i.i: ; preds = %_ZN2EA4StdC9Stopwatch7RestartEv.exit - %sub.ptr.div.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i, 16408 + %sub.ptr.div8.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i, 16408 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %_ZN8LargePODaSERKS_.exit.i.i.i.i, %for.body.preheader.i.i.i.i - %n.07.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div.i.i.i.i, %for.body.preheader.i.i.i.i ] + %n.07.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div8.i.i.i.i, %for.body.preheader.i.i.i.i ] %resultEnd.addr.06.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %result, %for.body.preheader.i.i.i.i ] %last.addr.05.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZN8LargePODaSERKS_.exit.i.i.i.i ], [ %last, %for.body.preheader.i.i.i.i ] %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %last.addr.05.i.i.i.i, i64 -16408 @@ -14350,13 +14350,13 @@ while.end.i: ; preds = %if.end.i, %_ZN2EA4S br i1 %cmp6.i.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i.i, label %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIP10TestObjectSt6vectorIS2_SaIS2_EEEES7_ET0_T_S9_S8_.exit.i for.body.preheader.i.i.i.i.i.i: ; preds = %while.end.i - %sub.ptr.div.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 24 + %sub.ptr.div11.i.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i.i, 24 %.pre10.i.i.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i %119 = phi i64 [ %123, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %.pre10.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] - %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i636, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] + %__n.09.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i636, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i.i.i, %for.body.preheader.i.i.i.i.i.i ] %__result.addr.08.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %__result.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i.i ] %__first.addr.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i.i ], [ %__first1.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i.i ] %inc.i.i.i.i.i.i.i = add nsw i64 %119, 1 @@ -14400,13 +14400,13 @@ for.body.preheader.i.i.i.i.i22.i: ; preds = %_ZSt4copyIN9__gnu_c %sub.ptr.rhs.cast.i.i.i.i632 = ptrtoint ptr %__result.sroa.0.0.lcssa.i to i64 %sub.ptr.sub.i.i.i.i633 = sub i64 %sub.ptr.lhs.cast.i.i.i.i631, %sub.ptr.rhs.cast.i.i.i.i632 %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.sroa.0.0.lcssa.i, i64 %sub.ptr.sub.i.i.i.i633 - %sub.ptr.div.i.i.i.i.i23.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 24 + %sub.ptr.div11.i.i.i.i.i23.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 24 %.pre10.i.i.i.i.i24.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i25.i for.body.i.i.i.i.i25.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i, %for.body.preheader.i.i.i.i.i22.i %124 = phi i64 [ %128, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %.pre10.i.i.i.i.i24.i, %for.body.preheader.i.i.i.i.i22.i ] - %__n.09.i.i.i.i.i26.i = phi i64 [ %dec.i.i.i.i.i41.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %sub.ptr.div.i.i.i.i.i23.i, %for.body.preheader.i.i.i.i.i22.i ] + %__n.09.i.i.i.i.i26.i = phi i64 [ %dec.i.i.i.i.i41.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %sub.ptr.div11.i.i.i.i.i23.i, %for.body.preheader.i.i.i.i.i22.i ] %__result.addr.08.i.i.i.i.i27.i = phi ptr [ %incdec.ptr1.i.i.i.i.i40.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %add.ptr.i.i.i.i.i, %for.body.preheader.i.i.i.i.i22.i ] %__first.addr.07.i.i.i.i.i28.i = phi ptr [ %incdec.ptr.i.i.i.i.i39.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i38.i ], [ %__first2.sroa.0.0.lcssa.i, %for.body.preheader.i.i.i.i.i22.i ] %inc.i.i.i.i.i.i29.i = add nsw i64 %124, 1 @@ -14563,13 +14563,13 @@ if.then7.i: ; preds = %while.end.i643 br i1 %cmp6.i.i.i.i.i, label %for.body.preheader.i.i.i.i.i, label %call.i.i.noexc445 for.body.preheader.i.i.i.i.i: ; preds = %if.then7.i - %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 + %sub.ptr.div11.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 %.pre10.i.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i %149 = phi i64 [ %153, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %.pre10.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] - %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i648, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %n.09.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i648, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %result.addr.08.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %result.addr.0.lcssa.i, %for.body.preheader.i.i.i.i.i ] %first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i649, %_ZN10TestObjectaSERKS_.exit.i.i.i.i.i ], [ %first2.addr.0.lcssa.i, %for.body.preheader.i.i.i.i.i ] %inc.i.i.i.i.i.i644 = add nsw i64 %149, 1 @@ -14608,13 +14608,13 @@ if.else9.i: ; preds = %while.end.i643 br i1 %cmp6.i.i.i.i29.i, label %for.body.preheader.i.i.i.i31.i, label %call.i.i.noexc445 for.body.preheader.i.i.i.i31.i: ; preds = %if.else9.i - %sub.ptr.div.i.i.i.i32.i = udiv exact i64 %sub.ptr.sub.i.i.i.i28.i, 24 + %sub.ptr.div11.i.i.i.i32.i = udiv exact i64 %sub.ptr.sub.i.i.i.i28.i, 24 %.pre10.i.i.i.i33.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i34.i for.body.i.i.i.i34.i: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i, %for.body.preheader.i.i.i.i31.i %154 = phi i64 [ %158, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %.pre10.i.i.i.i33.i, %for.body.preheader.i.i.i.i31.i ] - %n.09.i.i.i.i35.i = phi i64 [ %dec.i.i.i.i48.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %sub.ptr.div.i.i.i.i32.i, %for.body.preheader.i.i.i.i31.i ] + %n.09.i.i.i.i35.i = phi i64 [ %dec.i.i.i.i48.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %sub.ptr.div11.i.i.i.i32.i, %for.body.preheader.i.i.i.i31.i ] %result.addr.08.i.i.i.i36.i = phi ptr [ %incdec.ptr1.i.i.i.i50.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %result.addr.0.lcssa.i, %for.body.preheader.i.i.i.i31.i ] %first.addr.07.i.i.i.i37.i = phi ptr [ %incdec.ptr.i.i.i.i49.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i47.i ], [ %first1.addr.0.lcssa.i, %for.body.preheader.i.i.i.i31.i ] %inc.i.i.i.i.i38.i = add nsw i64 %154, 1 @@ -17096,12 +17096,12 @@ if.then9: ; preds = %for.body for.body.preheader.i.i.i.i.i: ; preds = %if.then9 %add.ptr.i2 = getelementptr inbounds nuw i8, ptr %__first.coerce.pn27, i64 48 - %sub.ptr.div.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 + %sub.ptr.div9.i.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i.i.i.i, 24 br label %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i _ZN10TestObjectaSEOS_.exit.i.i.i.i.i: ; preds = %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i, %for.body.preheader.i.i.i.i.i %7 = phi i64 [ %.pre.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %.pre, %for.body.preheader.i.i.i.i.i ] - %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] + %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %sub.ptr.div9.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %add.ptr.i2, %for.body.preheader.i.i.i.i.i ] %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZN10TestObjectaSEOS_.exit.i.i.i.i.i ], [ %__i.sroa.0.028, %for.body.preheader.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -24 @@ -17440,13 +17440,13 @@ if.then24: ; preds = %if.else br i1 %cmp6.i.i.i.i, label %for.body.preheader.i.i.i.i, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit for.body.preheader.i.i.i.i: ; preds = %if.then24 - %sub.ptr.div.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i, 24 + %sub.ptr.div11.i.i.i.i = udiv exact i64 %sub.ptr.sub.i.i, 24 %.pre10.i.i.i.i = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i15 for.body.i.i.i.i15: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i, %for.body.preheader.i.i.i.i %13 = phi i64 [ %17, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %.pre10.i.i.i.i, %for.body.preheader.i.i.i.i ] - %n.09.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div.i.i.i.i, %for.body.preheader.i.i.i.i ] + %n.09.i.i.i.i = phi i64 [ %dec.i.i.i.i, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %sub.ptr.div11.i.i.i.i, %for.body.preheader.i.i.i.i ] %result.addr.08.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i21, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %1, %for.body.preheader.i.i.i.i ] %first.addr.07.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i20, %_ZN10TestObjectaSERKS_.exit.i.i.i.i ], [ %first, %for.body.preheader.i.i.i.i ] %inc.i.i.i.i.i16 = add nsw i64 %13, 1 @@ -17532,13 +17532,13 @@ if.else29: ; preds = %if.else br i1 %cmp6.i.i.i.i47, label %for.body.preheader.i.i.i.i49, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit70 for.body.preheader.i.i.i.i49: ; preds = %if.else29 - %sub.ptr.div.i.i.i.i50 = udiv exact i64 %sub.ptr.sub21, 24 + %sub.ptr.div11.i.i.i.i50 = udiv exact i64 %sub.ptr.sub21, 24 %.pre10.i.i.i.i51 = load i64, ptr @_ZN10TestObject18sTOCopyAssignCountE, align 8 br label %for.body.i.i.i.i52 for.body.i.i.i.i52: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i65, %for.body.preheader.i.i.i.i49 %20 = phi i64 [ %24, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %.pre10.i.i.i.i51, %for.body.preheader.i.i.i.i49 ] - %n.09.i.i.i.i53 = phi i64 [ %dec.i.i.i.i66, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %sub.ptr.div.i.i.i.i50, %for.body.preheader.i.i.i.i49 ] + %n.09.i.i.i.i53 = phi i64 [ %dec.i.i.i.i66, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %sub.ptr.div11.i.i.i.i50, %for.body.preheader.i.i.i.i49 ] %result.addr.08.i.i.i.i54 = phi ptr [ %incdec.ptr1.i.i.i.i68, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %1, %for.body.preheader.i.i.i.i49 ] %first.addr.07.i.i.i.i55 = phi ptr [ %incdec.ptr.i.i.i.i67, %_ZN10TestObjectaSERKS_.exit.i.i.i.i65 ], [ %first, %for.body.preheader.i.i.i.i49 ] %inc.i.i.i.i.i56 = add nsw i64 %20, 1 diff --git a/bench/eastl/optimized/EASprintfCore.ll b/bench/eastl/optimized/EASprintfCore.ll index 0b8bda19d98..90fccfabbb3 100644 --- a/bench/eastl/optimized/EASprintfCore.ll +++ b/bench/eastl/optimized/EASprintfCore.ll @@ -318,7 +318,7 @@ while.cond1.preheader.lr.ph.lr.ph: ; preds = %entry br label %while.cond1.preheader.lr.ph while.cond1.preheader.lr.ph: ; preds = %while.cond1.preheader.lr.ph.lr.ph, %while.cond.outer.backedge - %2 = phi i8 [ %0, %while.cond1.preheader.lr.ph.lr.ph ], [ %136, %while.cond.outer.backedge ] + %2 = phi i8 [ %0, %while.cond1.preheader.lr.ph.lr.ph ], [ %139, %while.cond.outer.backedge ] %pFormatCurrent.0.ph263 = phi ptr [ %pFormat, %while.cond1.preheader.lr.ph.lr.ph ], [ %pFormatCurrent.0.ph.be, %while.cond.outer.backedge ] %nWriteCountSum.0.ph262 = phi i32 [ 0, %while.cond1.preheader.lr.ph.lr.ph ], [ %nWriteCountSum.0.ph.be, %while.cond.outer.backedge ] %lValue.0.ph261 = phi i64 [ 0, %while.cond1.preheader.lr.ph.lr.ph ], [ %lValue.0.ph.be, %while.cond.outer.backedge ] @@ -328,7 +328,7 @@ while.cond1.preheader.lr.ph: ; preds = %while.cond1.prehead br label %while.cond1.preheader while.cond1.preheader: ; preds = %while.cond1.preheader.lr.ph, %while.cond.backedge - %3 = phi i8 [ %2, %while.cond1.preheader.lr.ph ], [ %117, %while.cond.backedge ] + %3 = phi i8 [ %2, %while.cond1.preheader.lr.ph ], [ %120, %while.cond.backedge ] %pFormatCurrent.0255 = phi ptr [ %pFormatCurrent.0.ph263, %while.cond1.preheader.lr.ph ], [ %call13, %while.cond.backedge ] %nWriteCountSum.0254 = phi i32 [ %nWriteCountSum.0.ph262, %while.cond1.preheader.lr.ph ], [ %nWriteCountSum.0.be, %while.cond.backedge ] br label %while.cond1 @@ -949,8 +949,8 @@ vaarg.end363: ; preds = %vaarg.in_mem359, %v br label %if.end366 if.end366: ; preds = %vaarg.end363, %if.then350 - %.sink368 = phi double [ %86, %vaarg.end363 ], [ %conv354, %if.then350 ] - %call365 = call noundef ptr @_ZN2EA4StdC12SprintfLocal11WriteDoubleIcEEPT_RKNS1_10FormatDataEdS4_(ptr noundef nonnull align 4 dereferenceable(40) %fd, double noundef %.sink368, ptr noundef nonnull %add.ptr) + %.sink373 = phi double [ %86, %vaarg.end363 ], [ %conv354, %if.then350 ] + %call365 = call noundef ptr @_ZN2EA4StdC12SprintfLocal11WriteDoubleIcEEPT_RKNS1_10FormatDataEdS4_(ptr noundef nonnull align 4 dereferenceable(40) %fd, double noundef %.sink373, ptr noundef nonnull %add.ptr) %tobool367.not = icmp eq ptr %call365, null br i1 %tobool367.not, label %FormatError, label %if.end369 @@ -1006,24 +1006,24 @@ if.then.i.i.i: ; preds = %if.then.i br i1 %cmp211.i.i.i, label %land.rhs.i.i.i.preheader, label %while.end.i.i.i land.rhs.i.i.i.preheader: ; preds = %if.then.i.i.i - %94 = add nsw i32 %93, -7 - %95 = icmp ult i32 %94, -6 - br i1 %95, label %while.end.i.i.i, label %while.end.i.i.loopexit.split.loop.exit29.i + %narrow322 = add nsw i32 %93, -7 + %94 = icmp ult i32 %narrow322, -6 + br i1 %94, label %while.end.i.i.i, label %while.end.i.i.loopexit.split.loop.exit29.i while.end.i.i.loopexit.split.loop.exit29.i: ; preds = %land.rhs.i.i.i.preheader - %idx.ext.i.i.i = zext nneg i32 %93 to i64 - %incdec.ptr.i.i.ptr.le.i = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i + %95 = zext nneg i32 %93 to i64 + %96 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %95 br label %while.end.i.i.i while.end.i.i.i: ; preds = %land.rhs.i.i.i.preheader, %while.end.i.i.loopexit.split.loop.exit29.i, %if.then.i.i.i %pBufferCurrent.0.lcssa.i.i.i = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i ], [ %incdec.ptr.i.i.ptr.le.i, %while.end.i.i.loopexit.split.loop.exit29.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i.preheader ] %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i to i64 - %96 = trunc i64 %sub.ptr.lhs.cast.i.i.i to i32 - %97 = sub i32 %96, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %97 = trunc i64 %sub.ptr.lhs.cast.i.i.i to i32 + %98 = sub i32 %97, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i: ; preds = %while.end.i.i.i, %if.then.i - %retval.0.in.i.i.i = phi i32 [ %97, %while.end.i.i.i ], [ 6, %if.then.i ] + %retval.0.in.i.i.i = phi i32 [ %98, %while.end.i.i.i ], [ 6, %if.then.i ] %call2.i.i = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIccEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit @@ -1042,8 +1042,8 @@ if.then.i.i8.i: ; preds = %if.else.i land.rhs.i.i19.i: ; preds = %if.then.i.i8.i, %while.body.i.i22.i %pBufferCurrent.012.i.i20.i = phi ptr [ %incdec.ptr.i.i23.i, %while.body.i.i22.i ], [ %92, %if.then.i.i8.i ] - %98 = load i8, ptr %pBufferCurrent.012.i.i20.i, align 1, !noalias !12 - %tobool.not.i.i21.i = icmp eq i8 %98, 0 + %99 = load i8, ptr %pBufferCurrent.012.i.i20.i, align 1, !noalias !12 + %tobool.not.i.i21.i = icmp eq i8 %99, 0 br i1 %tobool.not.i.i21.i, label %while.end.i.i12.i, label %while.body.i.i22.i while.body.i.i22.i: ; preds = %land.rhs.i.i19.i @@ -1076,10 +1076,10 @@ sw.bb399: ; preds = %sw.bb375 vaarg.in_reg403: ; preds = %sw.bb399 %reg_save_area404 = load ptr, ptr %1, align 8 - %99 = zext nneg i32 %gp_offset401 to i64 - %100 = getelementptr i8, ptr %reg_save_area404, i64 %99 - %101 = add nuw nsw i32 %gp_offset401, 8 - store i32 %101, ptr %arguments, align 8 + %100 = zext nneg i32 %gp_offset401 to i64 + %101 = getelementptr i8, ptr %reg_save_area404, i64 %100 + %102 = add nuw nsw i32 %gp_offset401, 8 + store i32 %102, ptr %arguments, align 8 br label %vaarg.end409 vaarg.in_mem405: ; preds = %sw.bb399 @@ -1089,45 +1089,45 @@ vaarg.in_mem405: ; preds = %sw.bb399 br label %vaarg.end409 vaarg.end409: ; preds = %vaarg.in_mem405, %vaarg.in_reg403 - %vaarg.addr410 = phi ptr [ %100, %vaarg.in_reg403 ], [ %overflow_arg_area407, %vaarg.in_mem405 ] - %102 = load ptr, ptr %vaarg.addr410, align 8 + %vaarg.addr410 = phi ptr [ %101, %vaarg.in_reg403 ], [ %overflow_arg_area407, %vaarg.in_mem405 ] + %103 = load ptr, ptr %vaarg.addr410, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %helper2.i) - %cmp.i128 = icmp eq ptr %102, null + %cmp.i128 = icmp eq ptr %103, null br i1 %cmp.i128, label %if.then.i131, label %if.else.i129 if.then.i131: ; preds = %vaarg.end409 - %103 = load i32, ptr %mnPrecision.i, align 4, !noalias !16 - %cmp.not.i.i.i133 = icmp eq i32 %103, 2147483647 + %104 = load i32, ptr %mnPrecision.i, align 4, !noalias !16 + %cmp.not.i.i.i133 = icmp eq i32 %104, 2147483647 br i1 %cmp.not.i.i.i133, label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140, label %if.then.i.i.i134 if.then.i.i.i134: ; preds = %if.then.i131 - %cmp211.i.i.i136 = icmp sgt i32 %103, 0 + %cmp211.i.i.i136 = icmp sgt i32 %104, 0 br i1 %cmp211.i.i.i136, label %land.rhs.i.i.i143.preheader, label %while.end.i.i.i137 land.rhs.i.i.i143.preheader: ; preds = %if.then.i.i.i134 - %104 = add nsw i32 %103, -7 - %105 = icmp ult i32 %104, -6 + %narrow320 = add nsw i32 %104, -7 + %105 = icmp ult i32 %narrow320, -6 br i1 %105, label %while.end.i.i.i137, label %while.end.i.i.loopexit.split.loop.exit6.i while.end.i.i.loopexit.split.loop.exit6.i: ; preds = %land.rhs.i.i.i143.preheader - %idx.ext.i.i.i135 = zext nneg i32 %103 to i64 - %incdec.ptr.i.i.ptr.le.i149 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i135 + %106 = zext nneg i32 %103 to i64 + %107 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %106 br label %while.end.i.i.i137 while.end.i.i.i137: ; preds = %land.rhs.i.i.i143.preheader, %while.end.i.i.loopexit.split.loop.exit6.i, %if.then.i.i.i134 %pBufferCurrent.0.lcssa.i.i.i138 = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i134 ], [ %incdec.ptr.i.i.ptr.le.i149, %while.end.i.i.loopexit.split.loop.exit6.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i143.preheader ] %sub.ptr.lhs.cast.i.i.i139 = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i138 to i64 - %106 = trunc i64 %sub.ptr.lhs.cast.i.i.i139 to i32 - %107 = sub i32 %106, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %108 = trunc i64 %sub.ptr.lhs.cast.i.i.i139 to i32 + %109 = sub i32 %108, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140 _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140: ; preds = %while.end.i.i.i137, %if.then.i131 - %retval.0.in.i.i.i141 = phi i32 [ %107, %while.end.i.i.i137 ], [ 6, %if.then.i131 ] + %retval.0.in.i.i.i141 = phi i32 [ %109, %while.end.i.i.i137 ], [ 6, %if.then.i131 ] %call2.i.i142 = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i141) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit if.else.i129: ; preds = %vaarg.end409 - %call3.i = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDscEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDs(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %102) + %call3.i = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDscEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDs(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %103) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit _ZN2EA4StdC12SprintfLocal12StringFormatIDscEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit: ; preds = %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i140, %if.else.i129 @@ -1143,10 +1143,10 @@ sw.bb417: ; preds = %sw.bb375, %sw.bb375 vaarg.in_reg421: ; preds = %sw.bb417 %reg_save_area422 = load ptr, ptr %1, align 8 - %108 = zext nneg i32 %gp_offset419 to i64 - %109 = getelementptr i8, ptr %reg_save_area422, i64 %108 - %110 = add nuw nsw i32 %gp_offset419, 8 - store i32 %110, ptr %arguments, align 8 + %110 = zext nneg i32 %gp_offset419 to i64 + %111 = getelementptr i8, ptr %reg_save_area422, i64 %110 + %112 = add nuw nsw i32 %gp_offset419, 8 + store i32 %112, ptr %arguments, align 8 br label %vaarg.end427 vaarg.in_mem423: ; preds = %sw.bb417 @@ -1156,45 +1156,45 @@ vaarg.in_mem423: ; preds = %sw.bb417 br label %vaarg.end427 vaarg.end427: ; preds = %vaarg.in_mem423, %vaarg.in_reg421 - %vaarg.addr428 = phi ptr [ %109, %vaarg.in_reg421 ], [ %overflow_arg_area425, %vaarg.in_mem423 ] - %111 = load ptr, ptr %vaarg.addr428, align 8 + %vaarg.addr428 = phi ptr [ %111, %vaarg.in_reg421 ], [ %overflow_arg_area425, %vaarg.in_mem423 ] + %113 = load ptr, ptr %vaarg.addr428, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %helper2.i150) - %cmp.i151 = icmp eq ptr %111, null + %cmp.i151 = icmp eq ptr %113, null br i1 %cmp.i151, label %if.then.i155, label %if.else.i152 if.then.i155: ; preds = %vaarg.end427 - %112 = load i32, ptr %mnPrecision.i, align 4, !noalias !21 - %cmp.not.i.i.i157 = icmp eq i32 %112, 2147483647 + %114 = load i32, ptr %mnPrecision.i, align 4, !noalias !21 + %cmp.not.i.i.i157 = icmp eq i32 %114, 2147483647 br i1 %cmp.not.i.i.i157, label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164, label %if.then.i.i.i158 if.then.i.i.i158: ; preds = %if.then.i155 - %cmp211.i.i.i160 = icmp sgt i32 %112, 0 + %cmp211.i.i.i160 = icmp sgt i32 %114, 0 br i1 %cmp211.i.i.i160, label %land.rhs.i.i.i167.preheader, label %while.end.i.i.i161 land.rhs.i.i.i167.preheader: ; preds = %if.then.i.i.i158 - %113 = add nsw i32 %112, -7 - %114 = icmp ult i32 %113, -6 - br i1 %114, label %while.end.i.i.i161, label %while.end.i.i.loopexit.split.loop.exit6.i173 + %narrow = add nsw i32 %114, -7 + %115 = icmp ult i32 %narrow, -6 + br i1 %115, label %while.end.i.i.i161, label %while.end.i.i.loopexit.split.loop.exit6.i173 while.end.i.i.loopexit.split.loop.exit6.i173: ; preds = %land.rhs.i.i.i167.preheader - %idx.ext.i.i.i159 = zext nneg i32 %112 to i64 - %incdec.ptr.i.i.ptr.le.i174 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %idx.ext.i.i.i159 + %116 = zext nneg i32 %112 to i64 + %117 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %116 br label %while.end.i.i.i161 while.end.i.i.i161: ; preds = %land.rhs.i.i.i167.preheader, %while.end.i.i.loopexit.split.loop.exit6.i173, %if.then.i.i.i158 %pBufferCurrent.0.lcssa.i.i.i162 = phi ptr [ @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, %if.then.i.i.i158 ], [ %incdec.ptr.i.i.ptr.le.i174, %while.end.i.i.loopexit.split.loop.exit6.i173 ], [ getelementptr inbounds nuw (i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 6), %land.rhs.i.i.i167.preheader ] %sub.ptr.lhs.cast.i.i.i163 = ptrtoint ptr %pBufferCurrent.0.lcssa.i.i.i162 to i64 - %115 = trunc i64 %sub.ptr.lhs.cast.i.i.i163 to i32 - %116 = sub i32 %115, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) + %118 = trunc i64 %sub.ptr.lhs.cast.i.i.i163 to i32 + %119 = sub i32 %118, ptrtoint (ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E to i32) br label %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164 _ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164: ; preds = %while.end.i.i.i161, %if.then.i155 - %retval.0.in.i.i.i165 = phi i32 [ %116, %while.end.i.i.i161 ], [ 6, %if.then.i155 ] + %retval.0.in.i.i.i165 = phi i32 [ %119, %while.end.i.i.i161 ], [ 6, %if.then.i155 ] %call2.i.i166 = call fastcc noundef i32 @_ZN2EA4StdC12SprintfLocalL11WriteBufferIcEEiPFiPKT_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataES5_i(ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i32 noundef %retval.0.in.i.i.i165) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit if.else.i152: ; preds = %vaarg.end427 - %call3.i153 = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDicEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDi(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i150, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %111) + %call3.i153 = call noundef i32 @_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb0EDicEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcPKDi(ptr noundef nonnull align 1 dereferenceable(1) %helper2.i150, ptr noundef %pWriteFunction, ptr noundef %pWriteFunctionContext, ptr noundef nonnull align 4 dereferenceable(40) %fd, ptr noundef nonnull %pBuffer, ptr noundef nonnull %113) br label %_ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit _ZN2EA4StdC12SprintfLocal12StringFormatIDicEEiPFiPKT0_mPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPS3_PKT_.exit: ; preds = %_ZN2EA4StdC12SprintfLocal18StringFormatHelperILb1EccEclEPFiPKcmPvNS0_18WriteFunctionStateEES6_RKNS1_10FormatDataEPcS5_.exit.i164, %if.else.i152 @@ -1210,8 +1210,8 @@ sw.epilog435: ; preds = %_ZN2EA4StdC12Sprint while.cond.backedge: ; preds = %sw.bb449, %sw.bb451, %sw.bb453, %sw.bb454, %sw.bb456, %sw.bb458, %sw.bb460, %sw.bb462, %sw.bb464, %sw.default467, %sw.epilog435 %nWriteCountSum.0.be = phi i32 [ %nWriteCountSum.3, %sw.epilog435 ], [ %nWriteCountSum.1, %sw.default467 ], [ %nWriteCountSum.1, %sw.bb464 ], [ %nWriteCountSum.1, %sw.bb462 ], [ %nWriteCountSum.1, %sw.bb460 ], [ %nWriteCountSum.1, %sw.bb458 ], [ %nWriteCountSum.1, %sw.bb456 ], [ %nWriteCountSum.1, %sw.bb454 ], [ %nWriteCountSum.1, %sw.bb453 ], [ %nWriteCountSum.1, %sw.bb451 ], [ %nWriteCountSum.1, %sw.bb449 ] - %117 = load i8, ptr %call13, align 1 - %tobool.not = icmp eq i8 %117, 0 + %120 = load i8, ptr %call13, align 1 + %tobool.not = icmp eq i8 %120, 0 br i1 %tobool.not, label %return, label %while.cond1.preheader, !llvm.loop !26 sw.bb436: ; preds = %if.then12 @@ -1221,10 +1221,10 @@ sw.bb436: ; preds = %if.then12 vaarg.in_reg440: ; preds = %sw.bb436 %reg_save_area441 = load ptr, ptr %1, align 8 - %118 = zext nneg i32 %gp_offset438 to i64 - %119 = getelementptr i8, ptr %reg_save_area441, i64 %118 - %120 = add nuw nsw i32 %gp_offset438, 8 - store i32 %120, ptr %arguments, align 8 + %121 = zext nneg i32 %gp_offset438 to i64 + %122 = getelementptr i8, ptr %reg_save_area441, i64 %121 + %123 = add nuw nsw i32 %gp_offset438, 8 + store i32 %123, ptr %arguments, align 8 br label %vaarg.end446 vaarg.in_mem442: ; preds = %sw.bb436 @@ -1234,10 +1234,10 @@ vaarg.in_mem442: ; preds = %sw.bb436 br label %vaarg.end446 vaarg.end446: ; preds = %vaarg.in_mem442, %vaarg.in_reg440 - %vaarg.addr447 = phi ptr [ %119, %vaarg.in_reg440 ], [ %overflow_arg_area444, %vaarg.in_mem442 ] - %121 = load ptr, ptr %vaarg.addr447, align 8 - %122 = load i32, ptr %mModifier.i, align 4 - switch i32 %122, label %sw.default467 [ + %vaarg.addr447 = phi ptr [ %122, %vaarg.in_reg440 ], [ %overflow_arg_area444, %vaarg.in_mem442 ] + %124 = load ptr, ptr %vaarg.addr447, align 8 + %125 = load i32, ptr %mModifier.i, align 4 + switch i32 %125, label %sw.default467 [ i32 12, label %sw.bb449 i32 1, label %sw.bb449 i32 13, label %sw.bb451 @@ -1253,55 +1253,55 @@ vaarg.end446: ; preds = %vaarg.in_mem442, %v sw.bb449: ; preds = %vaarg.end446, %vaarg.end446 %conv450 = trunc i32 %nWriteCountSum.1 to i8 - store i8 %conv450, ptr %121, align 1 + store i8 %conv450, ptr %124, align 1 br label %while.cond.backedge sw.bb451: ; preds = %vaarg.end446, %vaarg.end446 %conv452 = trunc i32 %nWriteCountSum.1 to i16 - store i16 %conv452, ptr %121, align 2 + store i16 %conv452, ptr %124, align 2 br label %while.cond.backedge sw.bb453: ; preds = %vaarg.end446 - store i32 %nWriteCountSum.1, ptr %121, align 4 + store i32 %nWriteCountSum.1, ptr %124, align 4 br label %while.cond.backedge sw.bb454: ; preds = %vaarg.end446 %conv455 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv455, ptr %121, align 8 + store i64 %conv455, ptr %124, align 8 br label %while.cond.backedge sw.bb456: ; preds = %vaarg.end446 %conv457 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv457, ptr %121, align 8 + store i64 %conv457, ptr %124, align 8 br label %while.cond.backedge sw.bb458: ; preds = %vaarg.end446 %conv459 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv459, ptr %121, align 8 + store i64 %conv459, ptr %124, align 8 br label %while.cond.backedge sw.bb460: ; preds = %vaarg.end446 %conv461 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv461, ptr %121, align 8 + store i64 %conv461, ptr %124, align 8 br label %while.cond.backedge sw.bb462: ; preds = %vaarg.end446 %conv463 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv463, ptr %121, align 8 + store i64 %conv463, ptr %124, align 8 br label %while.cond.backedge sw.bb464: ; preds = %vaarg.end446 %conv465 = sext i32 %nWriteCountSum.1 to i64 - store i64 %conv465, ptr %121, align 8 + store i64 %conv465, ptr %124, align 8 br label %while.cond.backedge sw.default467: ; preds = %vaarg.end446 - store i32 %nWriteCountSum.1, ptr %121, align 4 + store i32 %nWriteCountSum.1, ptr %124, align 4 br label %while.cond.backedge sw.bb469: ; preds = %if.then12, %if.then12 - %123 = load i32, ptr %mModifier.i, align 4 - switch i32 %123, label %FormatError [ + %126 = load i32, ptr %mModifier.i, align 4 + switch i32 %126, label %FormatError [ i32 12, label %sw.bb477 i32 1, label %sw.bb477 i32 13, label %sw.bb493 @@ -1316,10 +1316,10 @@ sw.bb477: ; preds = %sw.bb469, %sw.bb469 vaarg.in_reg481: ; preds = %sw.bb477 %reg_save_area482 = load ptr, ptr %1, align 8 - %124 = zext nneg i32 %gp_offset479 to i64 - %125 = getelementptr i8, ptr %reg_save_area482, i64 %124 - %126 = add nuw nsw i32 %gp_offset479, 8 - store i32 %126, ptr %arguments, align 8 + %127 = zext nneg i32 %gp_offset479 to i64 + %128 = getelementptr i8, ptr %reg_save_area482, i64 %127 + %129 = add nuw nsw i32 %gp_offset479, 8 + store i32 %129, ptr %arguments, align 8 br label %vaarg.end487 vaarg.in_mem483: ; preds = %sw.bb477 @@ -1329,9 +1329,9 @@ vaarg.in_mem483: ; preds = %sw.bb477 br label %vaarg.end487 vaarg.end487: ; preds = %vaarg.in_mem483, %vaarg.in_reg481 - %vaarg.addr488 = phi ptr [ %125, %vaarg.in_reg481 ], [ %overflow_arg_area485, %vaarg.in_mem483 ] - %127 = load i32, ptr %vaarg.addr488, align 4 - %conv489 = trunc i32 %127 to i8 + %vaarg.addr488 = phi ptr [ %128, %vaarg.in_reg481 ], [ %overflow_arg_area485, %vaarg.in_mem483 ] + %130 = load i32, ptr %vaarg.addr488, align 4 + %conv489 = trunc i32 %130 to i8 store i8 %conv489, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1342,10 +1342,10 @@ sw.bb493: ; preds = %sw.bb469 vaarg.in_reg497: ; preds = %sw.bb493 %reg_save_area498 = load ptr, ptr %1, align 8 - %128 = zext nneg i32 %gp_offset495 to i64 - %129 = getelementptr i8, ptr %reg_save_area498, i64 %128 - %130 = add nuw nsw i32 %gp_offset495, 8 - store i32 %130, ptr %arguments, align 8 + %131 = zext nneg i32 %gp_offset495 to i64 + %132 = getelementptr i8, ptr %reg_save_area498, i64 %131 + %133 = add nuw nsw i32 %gp_offset495, 8 + store i32 %133, ptr %arguments, align 8 br label %vaarg.end503 vaarg.in_mem499: ; preds = %sw.bb493 @@ -1355,9 +1355,9 @@ vaarg.in_mem499: ; preds = %sw.bb493 br label %vaarg.end503 vaarg.end503: ; preds = %vaarg.in_mem499, %vaarg.in_reg497 - %vaarg.addr504 = phi ptr [ %129, %vaarg.in_reg497 ], [ %overflow_arg_area501, %vaarg.in_mem499 ] - %131 = load i32, ptr %vaarg.addr504, align 4 - %conv507 = trunc i32 %131 to i8 + %vaarg.addr504 = phi ptr [ %132, %vaarg.in_reg497 ], [ %overflow_arg_area501, %vaarg.in_mem499 ] + %134 = load i32, ptr %vaarg.addr504, align 4 + %conv507 = trunc i32 %134 to i8 store i8 %conv507, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1368,10 +1368,10 @@ sw.bb510: ; preds = %sw.bb469, %sw.bb469 vaarg.in_reg514: ; preds = %sw.bb510 %reg_save_area515 = load ptr, ptr %1, align 8 - %132 = zext nneg i32 %gp_offset512 to i64 - %133 = getelementptr i8, ptr %reg_save_area515, i64 %132 - %134 = add nuw nsw i32 %gp_offset512, 8 - store i32 %134, ptr %arguments, align 8 + %135 = zext nneg i32 %gp_offset512 to i64 + %136 = getelementptr i8, ptr %reg_save_area515, i64 %135 + %137 = add nuw nsw i32 %gp_offset512, 8 + store i32 %137, ptr %arguments, align 8 br label %vaarg.end520 vaarg.in_mem516: ; preds = %sw.bb510 @@ -1381,9 +1381,9 @@ vaarg.in_mem516: ; preds = %sw.bb510 br label %vaarg.end520 vaarg.end520: ; preds = %vaarg.in_mem516, %vaarg.in_reg514 - %vaarg.addr521 = phi ptr [ %133, %vaarg.in_reg514 ], [ %overflow_arg_area518, %vaarg.in_mem516 ] - %135 = load i32, ptr %vaarg.addr521, align 4 - %conv522 = trunc i32 %135 to i8 + %vaarg.addr521 = phi ptr [ %136, %vaarg.in_reg514 ], [ %overflow_arg_area518, %vaarg.in_mem516 ] + %138 = load i32, ptr %vaarg.addr521, align 4 + %conv522 = trunc i32 %138 to i8 store i8 %conv522, ptr %pBuffer, align 16 br label %sw.epilog542 @@ -1417,8 +1417,8 @@ while.cond.outer.backedge: ; preds = %if.end10, %if.end54 %lValue.0.ph.be = phi i64 [ %lValue.3, %land.lhs.true ], [ %lValue.3, %FormatError ], [ %lValue.4, %if.end546 ], [ %lValue.0.ph261, %if.end10 ] %nWriteCountSum.0.ph.be = phi i32 [ %add535, %land.lhs.true ], [ %add535, %FormatError ], [ %add547, %if.end546 ], [ %nWriteCountSum.1, %if.end10 ] %pFormatCurrent.0.ph.be = phi ptr [ %call13, %land.lhs.true ], [ %call13, %FormatError ], [ %call13, %if.end546 ], [ %pFormatCurrent.1, %if.end10 ] - %136 = load i8, ptr %pFormatCurrent.0.ph.be, align 1 - %tobool.not253 = icmp eq i8 %136, 0 + %139 = load i8, ptr %pFormatCurrent.0.ph.be, align 1 + %tobool.not253 = icmp eq i8 %139, 0 br i1 %tobool.not253, label %return, label %while.cond1.preheader.lr.ph, !llvm.loop !26 sw.epilog542: ; preds = %vaarg.end487, %vaarg.end503, %vaarg.end520, %sw.bb526, %if.end369, %if.end341, %if.end169 diff --git a/bench/fmt/optimized/scan-test.ll b/bench/fmt/optimized/scan-test.ll index f394f4b48a0..8c1c4d024d5 100644 --- a/bench/fmt/optimized/scan-test.ll +++ b/bench/fmt/optimized/scan-test.ll @@ -10662,12 +10662,12 @@ define linkonce_odr hidden void @_ZN3fmt3v1114basic_scan_argINS0_12scan_contextE %11 = alloca %"struct.fmt::v11::format_specs", align 4 %12 = load i32, ptr %1, align 8, !tbaa !263 switch i32 %12, label %202 [ - i32 6, label %179 + i32 6, label %180 i32 1, label %13 i32 2, label %42 i32 3, label %81 i32 4, label %110 - i32 5, label %144 + i32 5, label %145 ] 13: ; preds = %3 @@ -10745,7 +10745,7 @@ _ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !398 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %11), !noalias !395 - br label %203 + br label %204 42: ; preds = %3 %43 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10854,7 +10854,7 @@ _ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 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) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.9) - br label %203 + br label %204 81: ; preds = %3 %82 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10931,7 +10931,7 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !411 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %10), !noalias !408 - br label %203 + br label %204 110: ; preds = %3 %111 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -10964,13 +10964,13 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.8) #37, !noalias !417 unreachable -120: ; preds = %137, %.preheader.i27 - %121 = phi ptr [ %133, %137 ], [ %.pre41.i29, %.preheader.i27 ] - %122 = phi ptr [ %132, %137 ], [ %.pre.i28, %.preheader.i27 ] +120: ; preds = %138, %.preheader.i27 + %121 = phi ptr [ %134, %137 ], [ %.pre41.i29, %.preheader.i27 ] + %122 = phi ptr [ %133, %137 ], [ %.pre.i28, %.preheader.i27 ] %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %137 ], [ %.sroa.085.0.copyload, %.preheader.i27 ] - %.024.i30 = phi i32 [ %135, %137 ], [ 0, %.preheader.i27 ] + %.024.i30 = phi i32 [ %136, %137 ], [ 0, %.preheader.i27 ] %.023.i31 = phi i64 [ %126, %137 ], [ 0, %.preheader.i27 ] - %.0.i32 = phi i8 [ %134, %137 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] + %.0.i32 = phi i8 [ %135, %137 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] %123 = mul i64 %.023.i31, 10 %124 = and i8 %.0.i32, 15 %125 = zext nneg i8 %124 to i64 @@ -10981,51 +10981,51 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi br i1 %.not.i.i.i33, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38: ; preds = %120 - %128 = load ptr, ptr %.sroa.486.0.copyload, align 8, !tbaa !24, !noalias !417 - %129 = load ptr, ptr %128, align 8, !noalias !417 + %129 = load ptr, ptr %.sroa.486.0.copyload, align 8, !tbaa !24, !noalias !417 + %130 = load ptr, ptr %129, align 8, !noalias !417 tail call void %129(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.486.0.copyload), !noalias !417 - %130 = load ptr, ptr %117, align 8, !tbaa !17, !noalias !417 - %131 = load ptr, ptr %118, align 8, !tbaa !23, !noalias !417 - %.not.i.i39 = icmp eq ptr %130, %131 + %131 = load ptr, ptr %117, align 8, !tbaa !17, !noalias !417 + %132 = load ptr, ptr %118, align 8, !tbaa !23, !noalias !417 + %.not.i.i39 = icmp eq ptr %131, %132 %spec.select.i40 = select i1 %.not.i.i39, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.031.0.copyload35.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, %120 - %132 = phi ptr [ %127, %120 ], [ %130, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] - %133 = phi ptr [ %121, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] + %133 = phi ptr [ %127, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] + %134 = phi ptr [ %121, %120 ], [ %132, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %120 ], [ %spec.select.i40, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] - %134 = load i8, ptr %132, align 1, !tbaa !4, !noalias !417 - %135 = add nuw nsw i32 %.024.i30, 1 - %136 = add i8 %134, -58 - %or.cond5.i35 = icmp ult i8 %136, -10 - br i1 %or.cond5.i35, label %139, label %137 + %135 = load i8, ptr %133, align 1, !tbaa !4, !noalias !417 + %136 = add nuw nsw i32 %.024.i30, 1 + %137 = add i8 %135, -58 + %or.cond5.i35 = icmp ult i8 %137, -10 + br i1 %or.cond5.i35, label %140, label %138 -137: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 - %138 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !417 - %.not33.i = icmp eq ptr %138, null - br i1 %.not33.i, label %139, label %120, !llvm.loop !420 +138: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 + %139 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !417 + %.not33.i = icmp eq ptr %139, null + br i1 %.not33.i, label %140, label %120, !llvm.loop !420 -139: ; preds = %137, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 - %140 = icmp samesign ult i32 %.024.i30, 9 - br i1 %140, label %.sink.split.i37, label %141 +140: ; preds = %138, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 + %141 = icmp samesign ult i32 %.024.i30, 9 + br i1 %141, label %.sink.split.i37, label %142 -141: ; preds = %139 - %142 = icmp ne i32 %135, 10 +142: ; preds = %140 + %143 = icmp ne i32 %136, 10 %.not.i36 = icmp ugt i64 %126, 2147483647 - %or.cond27.i = select i1 %142, i1 true, i1 %.not.i36 - br i1 %or.cond27.i, label %143, label %.sink.split.i37 + %or.cond27.i = select i1 %143, i1 true, i1 %.not.i36 + br i1 %or.cond27.i, label %144, label %.sink.split.i37 -143: ; preds = %141 +144: ; preds = %142 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.25) #37, !noalias !417 unreachable -.sink.split.i37: ; preds = %141, %139 +.sink.split.i37: ; preds = %142, %140 store i64 %126, ptr %112, align 8, !tbaa !166, !noalias !417 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %110, %.sink.split.i37 %.sroa.075.0 = phi ptr [ %.sroa.085.0.copyload, %110 ], [ %.sroa.031.0.copyload36.i, %.sink.split.i37 ] - %.sroa.780.0 = phi i8 [ %.sroa.587.0.copyload, %110 ], [ %134, %.sink.split.i37 ] + %.sroa.780.0 = phi i8 [ %.sroa.587.0.copyload, %110 ], [ %135, %.sink.split.i37 ] store ptr %.sroa.075.0, ptr %0, align 8 %.sroa.677.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.486.0.copyload, ptr %.sroa.677.0..sroa_idx, align 8 @@ -11034,11 +11034,11 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.983.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.983.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.983, i64 7, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.983) - br label %203 + br label %204 -144: ; preds = %3 - %145 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %146 = load ptr, ptr %145, align 8, !tbaa !4 +145: ; preds = %3 + %146 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %147 = load ptr, ptr %146, align 8, !tbaa !4 %.sroa.099.0.copyload = load ptr, ptr %2, align 8, !tbaa !12, !noalias !421 %.sroa.4100.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4100.0.copyload = load ptr, ptr %.sroa.4100.0..sroa_idx, align 8, !tbaa !33, !noalias !421 @@ -11047,81 +11047,81 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type %.sroa.6102.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 17 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.997) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.6102.0..sroa_idx, i64 7, i1 false) - %147 = load ptr, ptr %.sroa.099.0.copyload, align 8, !tbaa !15, !noalias !424 - %.not48.i = icmp eq ptr %147, null + %148 = load ptr, ptr %.sroa.099.0.copyload, align 8, !tbaa !15, !noalias !424 + %.not48.i = icmp eq ptr %148, null br i1 %.not48.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %.lr.ph.i -.lr.ph.i: ; preds = %144 - %148 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 8 - %149 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 16 - %150 = getelementptr inbounds nuw i8, ptr %146, i64 8 - %151 = getelementptr inbounds nuw i8, ptr %146, i64 16 - br label %152 +.lr.ph.i: ; preds = %145 + %149 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 8 + %150 = getelementptr inbounds nuw i8, ptr %.sroa.4100.0.copyload, i64 16 + %151 = getelementptr inbounds nuw i8, ptr %147, i64 8 + %152 = getelementptr inbounds nuw i8, ptr %147, i64 16 + br label %153 -152: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %.lr.ph.i +153: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %.lr.ph.i %.sroa.03.0.copyload69.i = phi ptr [ %.sroa.099.0.copyload, %.lr.ph.i ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %153 = phi i8 [ %.sroa.5101.0.copyload, %.lr.ph.i ], [ %163, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %.not.i43 = icmp eq i8 %153, 32 - br i1 %.not.i43, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %154 - -154: ; preds = %152 - %155 = load ptr, ptr %148, align 8, !tbaa !17, !noalias !427 - %156 = load ptr, ptr %149, align 8, !tbaa !23, !noalias !427 - %157 = getelementptr inbounds nuw i8, ptr %155, i64 1 - store ptr %157, ptr %148, align 8, !tbaa !17, !noalias !427 - %.not.i.i.i.i = icmp eq ptr %157, %156 + %154 = phi i8 [ %.sroa.5101.0.copyload, %.lr.ph.i ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] + %.not.i43 = icmp eq i8 %154, 32 + br i1 %.not.i43, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %155 + +155: ; preds = %153 + %156 = load ptr, ptr %149, align 8, !tbaa !17, !noalias !427 + %157 = load ptr, ptr %150, align 8, !tbaa !23, !noalias !427 + %158 = getelementptr inbounds nuw i8, ptr %156, i64 1 + store ptr %158, ptr %149, align 8, !tbaa !17, !noalias !427 + %.not.i.i.i.i = icmp eq ptr %158, %157 br i1 %.not.i.i.i.i, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i -_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %154 - %158 = load ptr, ptr %.sroa.4100.0.copyload, align 8, !tbaa !24, !noalias !427 - %159 = load ptr, ptr %158, align 8, !noalias !427 +_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %155 + %159 = load ptr, ptr %.sroa.4100.0.copyload, align 8, !tbaa !24, !noalias !427 + %160 = load ptr, ptr %159, align 8, !noalias !427 tail call void %159(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.4100.0.copyload), !noalias !427 - %160 = load ptr, ptr %148, align 8, !tbaa !17, !noalias !427 - %161 = load ptr, ptr %149, align 8, !tbaa !23, !noalias !427 - %.not.i.i.i44 = icmp eq ptr %160, %161 + %161 = load ptr, ptr %149, align 8, !tbaa !17, !noalias !427 + %162 = load ptr, ptr %150, align 8, !tbaa !23, !noalias !427 + %.not.i.i.i44 = icmp eq ptr %161, %162 %spec.select.i45 = select i1 %.not.i.i.i44, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.03.0.copyload69.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i -_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, %154 - %162 = phi ptr [ %157, %154 ], [ %160, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] +_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, %155 + %163 = phi ptr [ %158, %154 ], [ %161, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] %.sroa.03.0.copyload5.i = phi ptr [ %.sroa.03.0.copyload69.i, %154 ], [ %spec.select.i45, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] - %163 = load i8, ptr %162, align 1, !tbaa !4, !noalias !427 - %164 = load i64, ptr %150, align 8, !tbaa !26, !noalias !424 - %165 = add i64 %164, 1 - %166 = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 - %167 = icmp eq ptr %166, %151 - br i1 %167, label %168, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - -168: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i - %169 = icmp ult i64 %164, 16 - tail call void @llvm.assume(i1 %169) + %164 = load i8, ptr %163, align 1, !tbaa !4, !noalias !427 + %165 = load i64, ptr %151, align 8, !tbaa !26, !noalias !424 + %166 = add i64 %165, 1 + %167 = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 + %168 = icmp eq ptr %167, %152 + br i1 %168, label %169, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + +169: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i + %170 = icmp ult i64 %165, 16 + tail call void @llvm.assume(i1 %170) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %168, %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i - %170 = load i64, ptr %151, align 8, !noalias !424 - %171 = select i1 %167, i64 15, i64 %170 - %172 = icmp ugt i64 %165, %171 - br i1 %172, label %173, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; preds = %169, %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i + %171 = load i64, ptr %152, align 8, !noalias !424 + %172 = select i1 %168, i64 15, i64 %171 + %173 = icmp ugt i64 %166, %172 + br i1 %173, label %174, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i -173: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %146, i64 noundef %164, i64 noundef 0, ptr noundef null, i64 noundef 1), !noalias !424 - %.pre.i.i = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 +174: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %147, i64 noundef %165, i64 noundef 0, ptr noundef null, i64 noundef 1), !noalias !424 + %.pre.i.i = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; preds = %173, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - %174 = phi ptr [ %.pre.i.i, %173 ], [ %166, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] - %175 = getelementptr inbounds nuw i8, ptr %174, i64 %164 - store i8 %153, ptr %175, align 1, !tbaa !4, !noalias !424 - store i64 %165, ptr %150, align 8, !tbaa !26, !noalias !424 - %176 = load ptr, ptr %146, align 8, !tbaa !30, !noalias !424 - %177 = getelementptr inbounds nuw i8, ptr %176, i64 %165 - store i8 0, ptr %177, align 1, !tbaa !4, !noalias !424 - %178 = load ptr, ptr %.sroa.03.0.copyload5.i, align 8, !tbaa !15, !noalias !424 - %.not4.i = icmp eq ptr %178, null - br i1 %.not4.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %152, !llvm.loop !31 - -_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit: ; preds = %152, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %144 - %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %144 ], [ 32, %152 ], [ %163, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; preds = %174, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i + %175 = phi ptr [ %.pre.i.i, %173 ], [ %167, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] + %176 = getelementptr inbounds nuw i8, ptr %175, i64 %165 + store i8 %154, ptr %176, align 1, !tbaa !4, !noalias !424 + store i64 %166, ptr %151, align 8, !tbaa !26, !noalias !424 + %177 = load ptr, ptr %147, align 8, !tbaa !30, !noalias !424 + %178 = getelementptr inbounds nuw i8, ptr %177, i64 %166 + store i8 0, ptr %178, align 1, !tbaa !4, !noalias !424 + %179 = load ptr, ptr %.sroa.03.0.copyload5.i, align 8, !tbaa !15, !noalias !424 + %.not4.i = icmp eq ptr %179, null + br i1 %.not4.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %153, !llvm.loop !31 + +_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit: ; preds = %153, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %145 + %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %144 ], [ 32, %152 ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] %.sroa.03.0.copyload6.lcssa.i = phi ptr [ %.sroa.099.0.copyload, %144 ], [ %.sroa.03.0.copyload69.i, %152 ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] store ptr %.sroa.03.0.copyload6.lcssa.i, ptr %0, align 8, !tbaa !12 %.sroa.691.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -11131,90 +11131,90 @@ _ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcS %.sroa.997.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.997, i64 7, i1 false), !tbaa.struct !37 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.997) - br label %203 + br label %204 -179: ; preds = %3 - %180 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %181 = load ptr, ptr %180, align 8, !tbaa !4 +180: ; preds = %3 + %181 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %182 = load ptr, ptr %181, align 8, !tbaa !4 %.sroa.0106.0.copyload = load ptr, ptr %2, align 8, !tbaa !12, !noalias !430 %.sroa.4107.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4107.0.copyload = load ptr, ptr %.sroa.4107.0..sroa_idx, align 8, !tbaa !33, !noalias !430 %.sroa.5108.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %182 = load i64, ptr %.sroa.5108.0..sroa_idx, align 8, !noalias !430 + %183 = load i64, ptr %.sroa.5108.0..sroa_idx, align 8, !noalias !430 tail call void @llvm.experimental.noalias.scope.decl(metadata !433) - %183 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 24 - %184 = load i8, ptr %183, align 8, !tbaa !35, !range !36, !noalias !433, !noundef !37 - %185 = trunc nuw i8 %184 to i1 - br i1 %185, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i - -_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i: ; preds = %179 - %186 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 8 - %187 = load ptr, ptr %186, align 8, !tbaa !17, !noalias !433 - %188 = ptrtoint ptr %187 to i64 - %189 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 16 - %190 = load ptr, ptr %189, align 8, !tbaa !23, !noalias !433 - %191 = ptrtoint ptr %190 to i64 - %.not31.i48 = icmp eq ptr %187, null + %184 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 24 + %185 = load i8, ptr %184, align 8, !tbaa !35, !range !36, !noalias !433, !noundef !37 + %186 = trunc nuw i8 %185 to i1 + br i1 %186, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i + +_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i: ; preds = %180 + %187 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 8 + %188 = load ptr, ptr %187, align 8, !tbaa !17, !noalias !433 + %189 = ptrtoint ptr %188 to i64 + %190 = getelementptr inbounds nuw i8, ptr %.sroa.4107.0.copyload, i64 16 + %191 = load ptr, ptr %190, align 8, !tbaa !23, !noalias !433 + %192 = ptrtoint ptr %191 to i64 + %.not31.i48 = icmp eq ptr %188, null br i1 %.not31.i48, label %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i, label %.preheader.i49 .preheader.i49: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i - %.not32.i = icmp eq ptr %187, %190 + %.not32.i = icmp eq ptr %188, %191 br i1 %.not32.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.preheader.i49 - %192 = sub i64 %191, %188 - %scevgep.i = getelementptr i8, ptr %187, i64 %192 + %193 = sub i64 %192, %189 + %scevgep.i = getelementptr i8, ptr %188, i64 %193 br label %.lr.ph.i50 -_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, %179 +_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; preds = %_ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.i, %180 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str) #37, !noalias !433 unreachable -.lr.ph.i50: ; preds = %194, %.lr.ph.preheader.i - %.033.i = phi ptr [ %195, %194 ], [ %187, %.lr.ph.preheader.i ] - %193 = load i8, ptr %.033.i, align 1, !tbaa !4, !noalias !433 - %.not6.i = icmp eq i8 %193, 32 - br i1 %.not6.i, label %.critedge.loopexit.i, label %194 +.lr.ph.i50: ; preds = %195, %.lr.ph.preheader.i + %.033.i = phi ptr [ %196, %194 ], [ %188, %.lr.ph.preheader.i ] + %194 = load i8, ptr %.033.i, align 1, !tbaa !4, !noalias !433 + %.not6.i = icmp eq i8 %194, 32 + br i1 %.not6.i, label %.critedge.loopexit.i, label %195 -194: ; preds = %.lr.ph.i50 - %195 = getelementptr inbounds nuw i8, ptr %.033.i, i64 1 - %.not.i51 = icmp eq ptr %195, %190 +195: ; preds = %.lr.ph.i50 + %196 = getelementptr inbounds nuw i8, ptr %.033.i, i64 1 + %.not.i51 = icmp eq ptr %196, %191 br i1 %.not.i51, label %.critedge.loopexit.i, label %.lr.ph.i50, !llvm.loop !38 -.critedge.loopexit.i: ; preds = %194, %.lr.ph.i50 +.critedge.loopexit.i: ; preds = %195, %.lr.ph.i50 %.0.lcssa.ph.i = phi ptr [ %.033.i, %.lr.ph.i50 ], [ %scevgep.i, %194 ] %.pre.i52 = ptrtoint ptr %.0.lcssa.ph.i to i64 br label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit _ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit: ; preds = %.preheader.i49, %.critedge.loopexit.i - %.pre-phi.i = phi i64 [ %.pre.i52, %.critedge.loopexit.i ], [ %188, %.preheader.i49 ] - %196 = sub i64 %.pre-phi.i, %188 - store ptr %187, ptr %181, align 8, !tbaa !15, !noalias !433 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %181, i64 8 - store i64 %196, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !39, !noalias !433 + %.pre-phi.i = phi i64 [ %.pre.i52, %.critedge.loopexit.i ], [ %189, %.preheader.i49 ] + %197 = sub i64 %.pre-phi.i, %189 + store ptr %188, ptr %182, align 8, !tbaa !15, !noalias !433 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %182, i64 8 + store i64 %197, ptr %.sroa.4.0..sroa_idx.i, align 8, !tbaa !39, !noalias !433 %.sroa.721.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 17 - %.sroa.5105.sroa.0.1.extract.shift = lshr i64 %182, 8 + %.sroa.5105.sroa.0.1.extract.shift = lshr i64 %183, 8 %.sroa.5105.sroa.0.1.extract.trunc = trunc nuw i64 %.sroa.5105.sroa.0.1.extract.shift to i56 store i56 %.sroa.5105.sroa.0.1.extract.trunc, ptr %.sroa.721.0..sroa_idx.i, align 1 - %197 = load ptr, ptr %186, align 8, !tbaa !15, !noalias !436 - %198 = getelementptr inbounds nuw i8, ptr %197, i64 %196 - store ptr %198, ptr %186, align 8, !tbaa !15, !noalias !436 - %199 = load i8, ptr %198, align 1, !tbaa !4, !noalias !436 - %200 = load ptr, ptr %189, align 8, !tbaa !23, !noalias !436 - %201 = icmp eq ptr %198, %200 - %spec.select.i53 = select i1 %201, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.0106.0.copyload + %198 = load ptr, ptr %187, align 8, !tbaa !15, !noalias !436 + %199 = getelementptr inbounds nuw i8, ptr %198, i64 %197 + store ptr %199, ptr %187, align 8, !tbaa !15, !noalias !436 + %200 = load i8, ptr %199, align 1, !tbaa !4, !noalias !436 + %201 = load ptr, ptr %190, align 8, !tbaa !23, !noalias !436 + %202 = icmp eq ptr %199, %201 + %spec.select.i53 = select i1 %202, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.0106.0.copyload store ptr %spec.select.i53, ptr %0, align 8, !tbaa !12, !alias.scope !433 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4107.0.copyload, ptr %.sroa.5.0..sroa_idx.i, align 8, !tbaa !33, !alias.scope !433 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i8 %199, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !4, !alias.scope !433 - br label %203 + store i8 %200, ptr %.sroa.6.0..sroa_idx.i, align 8, !tbaa !4, !alias.scope !433 + br label %204 -202: ; preds = %3 +203: ; preds = %3 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) - br label %203 + br label %204 -203: ; preds = %202, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit +204: ; preds = %203, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit, %_ZN3fmt3v116detail4readIjTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %_ZN3fmt3v116detail4readIiTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_RKNS0_12format_specsE.exit ret void } @@ -11473,7 +11473,7 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st 8: ; preds = %4 tail call void @_ZN3fmt3v116detail8read_hexIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_(ptr dead_on_unwind writable sret(%"class.fmt::v11::detail::scan_buffer::iterator") align 8 %0, ptr noundef nonnull byval(%"class.fmt::v11::detail::scan_buffer::iterator") align 8 %1, ptr noundef nonnull align 8 dereferenceable(8) %2) - br label %41 + br label %42 9: ; preds = %4 %.sroa.09.0.copyload = load ptr, ptr %1, align 8, !tbaa !12 @@ -11502,13 +11502,13 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.8) #37, !noalias !443 unreachable -17: ; preds = %34, %.preheader.i - %18 = phi ptr [ %30, %34 ], [ %.pre41.i, %.preheader.i ] - %19 = phi ptr [ %29, %34 ], [ %.pre.i, %.preheader.i ] +17: ; preds = %35, %.preheader.i + %18 = phi ptr [ %31, %34 ], [ %.pre41.i, %.preheader.i ] + %19 = phi ptr [ %30, %34 ], [ %.pre.i, %.preheader.i ] %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %34 ], [ %.sroa.09.0.copyload, %.preheader.i ] - %.024.i = phi i32 [ %32, %34 ], [ 0, %.preheader.i ] + %.024.i = phi i32 [ %33, %34 ], [ 0, %.preheader.i ] %.023.i = phi i64 [ %23, %34 ], [ 0, %.preheader.i ] - %.0.i = phi i8 [ %31, %34 ], [ %.sroa.3.0.copyload, %.preheader.i ] + %.0.i = phi i8 [ %32, %34 ], [ %.sroa.3.0.copyload, %.preheader.i ] %20 = mul i64 %.023.i, 10 %21 = and i8 %.0.i, 15 %22 = zext nneg i8 %21 to i64 @@ -11519,50 +11519,50 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st br i1 %.not.i.i.i, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i: ; preds = %17 - %25 = load ptr, ptr %.sroa.2.0.copyload, align 8, !tbaa !24, !noalias !443 - %26 = load ptr, ptr %25, align 8, !noalias !443 + %26 = load ptr, ptr %.sroa.2.0.copyload, align 8, !tbaa !24, !noalias !443 + %27 = load ptr, ptr %26, align 8, !noalias !443 tail call void %26(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.2.0.copyload), !noalias !443 - %27 = load ptr, ptr %14, align 8, !tbaa !17, !noalias !443 - %28 = load ptr, ptr %15, align 8, !tbaa !23, !noalias !443 - %.not.i.i = icmp eq ptr %27, %28 + %28 = load ptr, ptr %14, align 8, !tbaa !17, !noalias !443 + %29 = load ptr, ptr %15, align 8, !tbaa !23, !noalias !443 + %.not.i.i = icmp eq ptr %28, %29 %spec.select.i = select i1 %.not.i.i, ptr @_ZZN3fmt3v116detail11scan_buffer8iterator12get_sentinelEvE3ptr, ptr %.sroa.031.0.copyload35.i br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, %17 - %29 = phi ptr [ %24, %17 ], [ %27, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] - %30 = phi ptr [ %18, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] + %30 = phi ptr [ %24, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] + %31 = phi ptr [ %18, %17 ], [ %29, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %17 ], [ %spec.select.i, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] - %31 = load i8, ptr %29, align 1, !tbaa !4, !noalias !443 - %32 = add nuw nsw i32 %.024.i, 1 - %33 = add i8 %31, -58 - %or.cond5.i = icmp ult i8 %33, -10 - br i1 %or.cond5.i, label %36, label %34 - -34: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i - %35 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !443 - %.not33.i = icmp eq ptr %35, null - br i1 %.not33.i, label %36, label %17, !llvm.loop !420 - -36: ; preds = %34, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i - %37 = icmp samesign ult i32 %.024.i, 9 - br i1 %37, label %.sink.split.i, label %38 - -38: ; preds = %36 - %39 = icmp ne i32 %32, 10 + %32 = load i8, ptr %30, align 1, !tbaa !4, !noalias !443 + %33 = add nuw nsw i32 %.024.i, 1 + %34 = add i8 %32, -58 + %or.cond5.i = icmp ult i8 %34, -10 + br i1 %or.cond5.i, label %37, label %35 + +35: ; preds = %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i + %36 = load ptr, ptr %.sroa.031.0.copyload36.i, align 8, !tbaa !15, !noalias !443 + %.not33.i = icmp eq ptr %36, null + br i1 %.not33.i, label %37, label %17, !llvm.loop !420 + +37: ; preds = %35, %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i + %38 = icmp samesign ult i32 %.024.i, 9 + br i1 %38, label %.sink.split.i, label %39 + +39: ; preds = %37 + %40 = icmp ne i32 %33, 10 %.not.i = icmp ugt i64 %23, 2147483647 - %or.cond27.i = select i1 %39, i1 true, i1 %.not.i - br i1 %or.cond27.i, label %40, label %.sink.split.i + %or.cond27.i = select i1 %40, i1 true, i1 %.not.i + br i1 %or.cond27.i, label %41, label %.sink.split.i -40: ; preds = %38 +41: ; preds = %39 tail call void @_ZN3fmt3v1112report_errorEPKc(ptr noundef nonnull @.str.25) #37, !noalias !443 unreachable -.sink.split.i: ; preds = %38, %36 +.sink.split.i: ; preds = %39, %37 store i64 %23, ptr %2, align 8, !tbaa !166, !noalias !443 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %9, %.sink.split.i - %.sroa.7.0 = phi i8 [ %.sroa.3.0.copyload, %9 ], [ %31, %.sink.split.i ] + %.sroa.7.0 = phi i8 [ %.sroa.3.0.copyload, %9 ], [ %32, %.sink.split.i ] %.sroa.0.0 = phi ptr [ %.sroa.09.0.copyload, %9 ], [ %.sroa.031.0.copyload36.i, %.sink.split.i ] store ptr %.sroa.0.0, ptr %0, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -11571,9 +11571,9 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type store i8 %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 17 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.4.0..sroa_idx, i64 7, i1 false) - br label %41 + br label %42 -41: ; preds = %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %8 +42: ; preds = %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit, %8 ret void } diff --git a/bench/git/optimized/cache-tree.ll b/bench/git/optimized/cache-tree.ll index 7e65ab601bc..88c7afb39e7 100644 --- a/bench/git/optimized/cache-tree.ll +++ b/bench/git/optimized/cache-tree.ll @@ -605,7 +605,7 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 %15 = icmp ugt i32 %.03768.us.i, 9 br i1 %15, label %.thread57.i, label %16 -16: ; preds = %14 +18: ; preds = %14 %17 = add nuw nsw i32 %.03768.us.i, 1 %18 = load ptr, ptr @stderr, align 8, !tbaa !46 %19 = getelementptr inbounds nuw i8, ptr %10, i64 108 @@ -615,7 +615,7 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 %.pre.i = load i32, ptr %4, align 4, !tbaa !42 br label %23 -23: ; preds = %16, %.lr.ph.split.us.i +23: ; preds = %18, %.lr.ph.split.us.i %24 = phi i32 [ %7, %.lr.ph.split.us.i ], [ %.pre.i, %16 ] %.3.ph.us.i = phi i32 [ %.03768.us.i, %.lr.ph.split.us.i ], [ %17, %16 ] %indvars.iv.next78.i = add nuw nsw i64 %indvars.iv77.i, 1 @@ -628,7 +628,7 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 %28 = zext i32 %5 to i64 br label %29 -29: ; preds = %37, %.lr.ph.split.i +29: ; preds = %36, %.lr.ph.split.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.split.i ], [ %indvars.iv.next.i, %37 ] %30 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv.i %31 = load ptr, ptr %30, align 8, !tbaa !44 @@ -636,151 +636,151 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 %33 = load i32, ptr %32, align 8, !tbaa !20 %34 = and i32 %33, 12288 %.not.i = icmp eq i32 %34, 0 - br i1 %.not.i, label %37, label %verify_cache.exit.thread + br i1 %.not.i, label %36, label %verify_cache.exit.thread .thread57.i: ; preds = %14 %35 = load ptr, ptr @stderr, align 8, !tbaa !46 %36 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %35) #23 br label %verify_cache.exit.thread -37: ; preds = %29 +36: ; preds = %29 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next.i, %28 br i1 %exitcond.not, label %.preheader.i, label %29, !llvm.loop !48 ._crit_edge.i: ; preds = %23 - %38 = icmp eq i32 %.3.ph.us.i, 0 - br i1 %38, label %.preheader.i, label %verify_cache.exit.thread + %37 = icmp eq i32 %.3.ph.us.i, 0 + br i1 %37, label %.preheader.i, label %verify_cache.exit.thread -.preheader.i: ; preds = %37, %._crit_edge.i - %39 = phi i32 [ %24, %._crit_edge.i ], [ %5, %37 ] - %40 = icmp ugt i32 %39, 1 - br i1 %40, label %.lr.ph72.i, label %verify_cache.exit.thread25 +.preheader.i: ; preds = %36, %._crit_edge.i + %38 = phi i32 [ %24, %._crit_edge.i ], [ %5, %37 ] + %39 = icmp ugt i32 %38, 1 + br i1 %39, label %.lr.ph72.i, label %verify_cache.exit.thread25 -.lr.ph72.i: ; preds = %.preheader.i, %69 - %41 = phi i32 [ %70, %69 ], [ %39, %.preheader.i ] +.lr.ph72.i: ; preds = %.preheader.i, %68 + %40 = phi i32 [ %69, %69 ], [ %38, %.preheader.i ] %indvars.iv82.i = phi i64 [ %indvars.iv.next83.i, %69 ], [ 0, %.preheader.i ] %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %69 ], [ 1, %.preheader.i ] %.470.i = phi i32 [ %.7.i, %69 ], [ 0, %.preheader.i ] - %42 = load ptr, ptr %0, align 8, !tbaa !43 - %43 = getelementptr inbounds nuw ptr, ptr %42, i64 %indvars.iv82.i - %44 = load ptr, ptr %43, align 8, !tbaa !44 - %45 = getelementptr inbounds nuw ptr, ptr %42, i64 %indvars.iv80.i - %46 = load ptr, ptr %45, align 8, !tbaa !44 - %47 = getelementptr inbounds nuw i8, ptr %44, i64 108 - %48 = getelementptr inbounds nuw i8, ptr %46, i64 108 - %49 = getelementptr inbounds nuw i8, ptr %44, i64 64 - %50 = load i32, ptr %49, align 8, !tbaa !20 - %51 = getelementptr inbounds nuw i8, ptr %46, i64 64 - %52 = load i32, ptr %51, align 8, !tbaa !20 - %53 = icmp ult i32 %50, %52 - br i1 %53, label %54, label %69 - -54: ; preds = %.lr.ph72.i - %55 = sext i32 %50 to i64 - %56 = getelementptr inbounds i8, ptr %48, i64 %55 - %57 = load i8, ptr %56, align 1, !tbaa !38 - %58 = icmp eq i8 %57, 47 - br i1 %58, label %59, label %69 - -59: ; preds = %54 - %60 = tail call i32 @strncmp(ptr noundef nonnull %47, ptr noundef nonnull %48, i64 noundef %55) #20 - %61 = icmp eq i32 %60, 0 - br i1 %61, label %62, label %69 - -62: ; preds = %59 - %63 = add i32 %.470.i, 1 - %64 = icmp ugt i32 %63, 10 - %65 = load ptr, ptr @stderr, align 8, !tbaa !46 - br i1 %64, label %.thread60.i, label %67 - -.thread60.i: ; preds = %62 - %66 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %65) #23 + %41 = load ptr, ptr %0, align 8, !tbaa !43 + %42 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv82.i + %43 = load ptr, ptr %42, align 8, !tbaa !44 + %44 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv80.i + %45 = load ptr, ptr %44, align 8, !tbaa !44 + %46 = getelementptr inbounds nuw i8, ptr %43, i64 108 + %47 = getelementptr inbounds nuw i8, ptr %45, i64 108 + %48 = getelementptr inbounds nuw i8, ptr %43, i64 64 + %49 = load i32, ptr %48, align 8, !tbaa !20 + %50 = getelementptr inbounds nuw i8, ptr %45, i64 64 + %51 = load i32, ptr %50, align 8, !tbaa !20 + %52 = icmp ult i32 %49, %51 + br i1 %52, label %53, label %68 + +53: ; preds = %.lr.ph72.i + %54 = sext i32 %49 to i64 + %55 = getelementptr inbounds i8, ptr %47, i64 %54 + %56 = load i8, ptr %55, align 1, !tbaa !38 + %57 = icmp eq i8 %56, 47 + br i1 %57, label %58, label %68 + +58: ; preds = %53 + %59 = tail call i32 @strncmp(ptr noundef nonnull %46, ptr noundef nonnull %47, i64 noundef %54) #20 + %60 = icmp eq i32 %59, 0 + br i1 %60, label %61, label %68 + +61: ; preds = %58 + %62 = add i32 %.470.i, 1 + %63 = icmp ugt i32 %62, 10 + %64 = load ptr, ptr @stderr, align 8, !tbaa !46 + br i1 %63, label %.thread60.i, label %66 + +.thread60.i: ; preds = %61 + %65 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %64) #23 br label %verify_cache.exit.thread -67: ; preds = %62 - %68 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %65, ptr noundef nonnull @.str.17, ptr noundef nonnull %47, ptr noundef nonnull %48) #22 +66: ; preds = %61 + %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %64, ptr noundef nonnull @.str.17, ptr noundef nonnull %46, ptr noundef nonnull %47) #22 %.pre87.i = load i32, ptr %4, align 4, !tbaa !42 - br label %69 + br label %68 -69: ; preds = %67, %59, %54, %.lr.ph72.i - %70 = phi i32 [ %.pre87.i, %67 ], [ %41, %59 ], [ %41, %54 ], [ %41, %.lr.ph72.i ] - %.7.i = phi i32 [ %63, %67 ], [ %.470.i, %59 ], [ %.470.i, %54 ], [ %.470.i, %.lr.ph72.i ] +68: ; preds = %66, %58, %53, %.lr.ph72.i + %69 = phi i32 [ %.pre87.i, %67 ], [ %40, %59 ], [ %40, %54 ], [ %40, %.lr.ph72.i ] + %.7.i = phi i32 [ %62, %67 ], [ %.470.i, %59 ], [ %.470.i, %54 ], [ %.470.i, %.lr.ph72.i ] %indvars.iv.next81.i = add nuw nsw i64 %indvars.iv80.i, 1 - %71 = zext i32 %70 to i64 - %72 = icmp samesign ult i64 %indvars.iv.next81.i, %71 + %70 = zext i32 %69 to i64 + %71 = icmp samesign ult i64 %indvars.iv.next81.i, %70 %indvars.iv.next83.i = add nuw nsw i64 %indvars.iv82.i, 1 - br i1 %72, label %.lr.ph72.i, label %verify_cache.exit, !llvm.loop !49 + br i1 %71, label %.lr.ph72.i, label %verify_cache.exit, !llvm.loop !49 -verify_cache.exit: ; preds = %69 +verify_cache.exit: ; preds = %68 %.not28 = icmp eq i32 %.7.i, 0 br i1 %.not28, label %verify_cache.exit.thread25, label %verify_cache.exit.thread verify_cache.exit.thread25: ; preds = %2, %.preheader.i, %verify_cache.exit - %73 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %74 = load ptr, ptr %73, align 8, !tbaa !23 - %.not17 = icmp eq ptr %74, null - br i1 %.not17, label %75, label %77 - -75: ; preds = %verify_cache.exit.thread25 - %76 = tail call noundef ptr @xcalloc(i64 noundef 1, i64 noundef 56) #19 - store i32 -1, ptr %76, align 8, !tbaa !4 - store ptr %76, ptr %73, align 8, !tbaa !23 - br label %77 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %73 = load ptr, ptr %72, align 8, !tbaa !23 + %.not17 = icmp eq ptr %73, null + br i1 %.not17, label %74, label %76 + +74: ; preds = %verify_cache.exit.thread25 + %75 = tail call noundef ptr @xcalloc(i64 noundef 1, i64 noundef 56) #19 + store i32 -1, ptr %75, align 8, !tbaa !4 + store ptr %75, ptr %72, align 8, !tbaa !23 + br label %76 -77: ; preds = %75, %verify_cache.exit.thread25 - %78 = and i32 %1, 1 - %.not18 = icmp eq i32 %78, 0 - br i1 %.not18, label %79, label %83 +76: ; preds = %74, %verify_cache.exit.thread25 + %77 = and i32 %1, 1 + %.not18 = icmp eq i32 %77, 0 + br i1 %.not18, label %78, label %82 -79: ; preds = %77 - %80 = load ptr, ptr @the_repository, align 8, !tbaa !40 - %81 = tail call i32 @repo_has_promisor_remote(ptr noundef %80) #19 - %.not19 = icmp eq i32 %81, 0 - br i1 %.not19, label %83, label %82 +78: ; preds = %76 + %79 = load ptr, ptr @the_repository, align 8, !tbaa !40 + %80 = tail call i32 @repo_has_promisor_remote(ptr noundef %79) #19 + %.not19 = icmp eq i32 %80, 0 + br i1 %.not19, label %82, label %81 -82: ; preds = %79 +81: ; preds = %78 tail call void @prefetch_cache_entries(ptr noundef nonnull %0, ptr noundef nonnull @must_check_existence) #19 - br label %83 + br label %82 -83: ; preds = %82, %79, %77 - %84 = tail call i64 @trace_performance_enter() #19 - %85 = load ptr, ptr @the_repository, align 8, !tbaa !40 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 486, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %85) #19 +82: ; preds = %81, %78, %76 + %83 = tail call i64 @trace_performance_enter() #19 + %84 = load ptr, ptr @the_repository, align 8, !tbaa !40 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_enter_fl(ptr noundef nonnull @.str, i32 noundef 486, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %84) #19 tail call void @begin_odb_transaction() #19 - %86 = load ptr, ptr %73, align 8, !tbaa !23 - %87 = load ptr, ptr %0, align 8, !tbaa !43 - %88 = load i32, ptr %4, align 4, !tbaa !42 - %89 = call fastcc i32 @update_one(ptr noundef %86, ptr noundef %87, i32 noundef %88, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %3, i32 noundef %1) + %85 = load ptr, ptr %72, align 8, !tbaa !23 + %86 = load ptr, ptr %0, align 8, !tbaa !43 + %87 = load i32, ptr %4, align 4, !tbaa !42 + %88 = call fastcc i32 @update_one(ptr noundef %85, ptr noundef %86, i32 noundef %87, ptr noundef nonnull @.str.3, i32 noundef 0, ptr noundef %3, i32 noundef %1) tail call void @end_odb_transaction() #19 - %90 = load ptr, ptr @the_repository, align 8, !tbaa !40 - tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 491, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %90) #19 - %91 = load i32, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 8), align 8, !tbaa !50 - %.not.i21 = icmp eq i32 %91, 0 - %92 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 - %93 = and i8 %92, 1 - %.not2029 = icmp ne i8 %93, 0 + %89 = load ptr, ptr @the_repository, align 8, !tbaa !40 + tail call void (ptr, i32, ptr, ptr, ptr, ...) @trace2_region_leave_fl(ptr noundef nonnull @.str, i32 noundef 491, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, ptr noundef %89) #19 + %90 = load i32, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 8), align 8, !tbaa !50 + %.not.i21 = icmp eq i32 %90, 0 + %91 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 + %92 = and i8 %91, 1 + %.not2029 = icmp ne i8 %92, 0 %.not20 = select i1 %.not.i21, i1 %.not2029, i1 false - br i1 %.not20, label %96, label %94 - -94: ; preds = %83 - %95 = tail call i64 @getnanotime() #19 - tail call void (ptr, i32, i64, ptr, ...) @trace_performance_leave_fl(ptr noundef nonnull @.str, i32 noundef 492, i64 noundef %95, ptr noundef nonnull @.str.4) #19 - br label %96 - -96: ; preds = %94, %83 - %97 = icmp slt i32 %89, 0 - br i1 %97, label %verify_cache.exit.thread, label %98 - -98: ; preds = %96 - %99 = getelementptr inbounds nuw i8, ptr %0, i64 20 - %100 = load i32, ptr %99, align 4, !tbaa !39 - %101 = or i32 %100, 32 - store i32 %101, ptr %99, align 4, !tbaa !39 + br i1 %.not20, label %95, label %93 + +93: ; preds = %82 + %94 = tail call i64 @getnanotime() #19 + tail call void (ptr, i32, i64, ptr, ...) @trace_performance_leave_fl(ptr noundef nonnull @.str, i32 noundef 492, i64 noundef %94, ptr noundef nonnull @.str.4) #19 + br label %95 + +95: ; preds = %93, %82 + %96 = icmp slt i32 %88, 0 + br i1 %96, label %verify_cache.exit.thread, label %97 + +97: ; preds = %95 + %98 = getelementptr inbounds nuw i8, ptr %0, i64 20 + %99 = load i32, ptr %98, align 4, !tbaa !39 + %100 = or i32 %99, 32 + store i32 %100, ptr %98, align 4, !tbaa !39 br label %verify_cache.exit.thread -verify_cache.exit.thread: ; preds = %29, %.thread60.i, %.thread57.i, %._crit_edge.i, %96, %verify_cache.exit, %98 - %.0 = phi i32 [ 0, %98 ], [ -1, %verify_cache.exit ], [ %89, %96 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] +verify_cache.exit.thread: ; preds = %29, %.thread60.i, %.thread57.i, %._crit_edge.i, %95, %verify_cache.exit, %97 + %.0 = phi i32 [ 0, %98 ], [ -1, %verify_cache.exit ], [ %88, %96 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } diff --git a/bench/git/optimized/tree-walk.ll b/bench/git/optimized/tree-walk.ll index ccfb1a19f1f..301a9022c5a 100644 --- a/bench/git/optimized/tree-walk.ll +++ b/bench/git/optimized/tree-walk.ll @@ -736,7 +736,7 @@ define dso_local range(i32 -2147483648, 1) i32 @traverse_trees(ptr noundef %0, i 13: ; preds = %4 %14 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.6) #15 - br label %300 + br label %302 15: ; preds = %4 %16 = load i32, ptr @traverse_trees_count, align 4, !tbaa !42 @@ -1302,14 +1302,14 @@ extended_entry_extract.exit169: ; preds = %.lr.ph50.i, %.crite %or.cond.i.i = select i1 %251, i1 true, i1 %252 br i1 %or.cond.i.i, label %prune_traversal.exit, label %253 -253: ; preds = %246 +253:; preds = %246 %254 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 1) %255 = icmp eq i32 %247, 2 %256 = icmp eq i32 %254, 0 %or.cond3.i.i = select i1 %255, i1 %256, i1 false br i1 %or.cond3.i.i, label %.thread, label %257 -257: ; preds = %253 +257:; preds = %253 %258 = icmp slt i32 %254, 1 br i1 %258, label %.thread, label %259 @@ -1322,7 +1322,7 @@ extended_entry_extract.exit169: ; preds = %.lr.ph50.i, %.crite %or.cond7.i.i = select i1 %263, i1 %264, i1 false br i1 %or.cond7.i.i, label %.thread, label %265 -265: ; preds = %259 +265:; preds = %259 %266 = icmp eq i32 %247, 1 %or.cond11.i.i = select i1 %255, i1 %264, i1 false %or.cond35.i.i = select i1 %266, i1 true, i1 %or.cond11.i.i @@ -1332,92 +1332,92 @@ extended_entry_extract.exit169: ; preds = %.lr.ph50.i, %.crite prune_traversal.exit: ; preds = %246, %265 %.0.i170 = phi i32 [ %247, %246 ], [ %spec.select.i.i, %265 ] - %267 = icmp slt i32 %.0.i170, 0 - br i1 %267, label %.lr.ph230.preheader, label %268 + %269 = icmp slt i32 %.0.i170, 0 + br i1 %269, label %.lr.ph230.preheader, label %270 -268: ; preds = %prune_traversal.exit +270: ; preds = %prune_traversal.exit %.not146 = icmp eq i32 %.0.i170, 0 - br i1 %.not146, label %277, label %.thread + br i1 %.not146, label %279, label %.thread -.thread: ; preds = %243, %253, %257, %259, %268 +.thread: ; preds = %243, %253, %257, %259, %270 %.0.i170186192 = phi i32 [ %.0.i170, %268 ], [ 1, %259 ], [ %247, %257 ], [ 1, %253 ], [ 2, %243 ] - %269 = load ptr, ptr %63, align 8, !tbaa !86 - %270 = call i32 %269(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 - %271 = icmp slt i32 %270, 0 - br i1 %271, label %272, label %274 - -272: ; preds = %.thread - %273 = load i32, ptr %64, align 8, !tbaa !87 - %.not147 = icmp eq i32 %273, 0 - br i1 %.not147, label %.lr.ph230.preheader, label %274 - -274: ; preds = %272, %.thread - %.3130 = phi i32 [ %270, %272 ], [ %.0127344, %.thread ] - %275 = sext i32 %270 to i64 - %276 = and i64 %.1120, %275 - br label %277 - -277: ; preds = %274, %268 + %271 = load ptr, ptr %63, align 8, !tbaa !86 + %272 = call i32 %269(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 + %273 = icmp slt i32 %272, 0 + br i1 %273, label %274, label %276 + +274: ; preds = %.thread + %275 = load i32, ptr %64, align 8, !tbaa !87 + %.not147 = icmp eq i32 %275, 0 + br i1 %.not147, label %.lr.ph230.preheader, label %276 + +276: ; preds = %274, %.thread + %.3130 = phi i32 [ %272, %272 ], [ %.0127344, %.thread ] + %277 = sext i32 %272 to i64 + %278 = and i64 %.1120, %277 + br label %279 + +279: ; preds = %276, %270 %.0.i170187 = phi i32 [ %.0.i170186192, %274 ], [ 0, %268 ] %.2129 = phi i32 [ %.3130, %274 ], [ %.0127344, %268 ] - %.2121 = phi i64 [ %276, %274 ], [ %.1120, %268 ] + %.2121 = phi i64 [ %278, %274 ], [ %.1120, %268 ] br label %.lr.ph228 -.lr.ph228: ; preds = %277, %update_extended_entry.exit +.lr.ph228: ; preds = %279, %update_extended_entry.exit %indvars.iv271 = phi i64 [ %indvars.iv.next272, %update_extended_entry.exit ], [ 0, %277 ] - %278 = shl nuw i64 1, %indvars.iv271 - %279 = and i64 %278, %.2121 - %.not148 = icmp eq i64 %279, 0 - br i1 %.not148, label %update_extended_entry.exit, label %280 - -280: ; preds = %.lr.ph228 - %281 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv271 - %282 = getelementptr inbounds nuw %struct.name_entry, ptr %25, i64 %indvars.iv271 - %283 = getelementptr inbounds nuw i8, ptr %281, i64 56 - %284 = load ptr, ptr %283, align 8, !tbaa !88 - %285 = getelementptr inbounds nuw i8, ptr %282, i64 40 - %286 = load ptr, ptr %285, align 8, !tbaa !71 - %287 = icmp eq ptr %284, %286 - br i1 %287, label %288, label %289 - -288: ; preds = %280 - call void @update_tree_entry(ptr noundef nonnull %281) + %280 = shl nuw i64 1, %indvars.iv271 + %281 = and i64 %280, %.2121 + %.not148 = icmp eq i64 %281, 0 + br i1 %.not148, label %update_extended_entry.exit, label %282 + +282: ; preds = %.lr.ph228 + %283 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv271 + %284 = getelementptr inbounds nuw %struct.name_entry, ptr %25, i64 %indvars.iv271 + %285 = getelementptr inbounds nuw i8, ptr %283, i64 56 + %286 = load ptr, ptr %285, align 8, !tbaa !88 + %287 = getelementptr inbounds nuw i8, ptr %284, i64 40 + %288 = load ptr, ptr %287, align 8, !tbaa !71 + %289 = icmp eq ptr %286, %288 + br i1 %289, label %290, label %291 + +290: ; preds = %282 + call void @update_tree_entry(ptr noundef nonnull %283) br label %update_extended_entry.exit -289: ; preds = %280 - %290 = call ptr @xmalloc(i64 noundef 16) #15 - %291 = load ptr, ptr %285, align 8, !tbaa !71 - %292 = getelementptr inbounds nuw i8, ptr %290, i64 8 - store ptr %291, ptr %292, align 8, !tbaa !72 - %293 = getelementptr inbounds nuw i8, ptr %281, i64 80 - %294 = load ptr, ptr %293, align 8, !tbaa !62 - store ptr %294, ptr %290, align 8, !tbaa !89 - store ptr %290, ptr %293, align 8, !tbaa !62 +291: ; preds = %282 + %292 = call ptr @xmalloc(i64 noundef 16) #15 + %293 = load ptr, ptr %287, align 8, !tbaa !71 + %294 = getelementptr inbounds nuw i8, ptr %292, i64 8 + store ptr %293, ptr %294, align 8, !tbaa !72 + %295 = getelementptr inbounds nuw i8, ptr %283, i64 80 + %296 = load ptr, ptr %295, align 8, !tbaa !62 + store ptr %296, ptr %292, align 8, !tbaa !89 + store ptr %292, ptr %295, align 8, !tbaa !62 br label %update_extended_entry.exit -update_extended_entry.exit: ; preds = %289, %288, %.lr.ph228 +update_extended_entry.exit: ; preds = %291, %290, %.lr.ph228 %indvars.iv.next272 = add nuw nsw i64 %indvars.iv271, 1 %exitcond276.not = icmp eq i64 %indvars.iv.next272, %wide.trip.count275 br i1 %exitcond276.not, label %.lr.ph204.preheader.loopexit, label %.lr.ph228, !llvm.loop !68 -.lr.ph230.preheader: ; preds = %272, %prune_traversal.exit, %._crit_edge222 - %.1128.ph = phi i32 [ %270, %272 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] +.lr.ph230.preheader: ; preds = %274, %prune_traversal.exit, %._crit_edge222 + %.1128.ph = phi i32 [ %274, %272 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] %wide.trip.count281 = zext nneg i32 %65 to i64 br label %.lr.ph230 .lr.ph230: ; preds = %.lr.ph230.preheader, %free_extended_entry.exit %indvars.iv277 = phi i64 [ 0, %.lr.ph230.preheader ], [ %indvars.iv.next278, %free_extended_entry.exit ] - %295 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv277 - %296 = getelementptr i8, ptr %295, i64 80 - %.val156 = load ptr, ptr %296, align 8, !tbaa !62 + %297 = getelementptr inbounds nuw %struct.tree_desc_x, ptr %27, i64 %indvars.iv277 + %298 = getelementptr i8, ptr %297, i64 80 + %.val156 = load ptr, ptr %298, align 8, !tbaa !62 %.not1.i = icmp eq ptr %.val156, null br i1 %.not1.i, label %free_extended_entry.exit, label %.lr.ph.i171 .lr.ph.i171: ; preds = %.lr.ph230, %.lr.ph.i171 - %.02.i = phi ptr [ %297, %.lr.ph.i171 ], [ %.val156, %.lr.ph230 ] - %297 = load ptr, ptr %.02.i, align 8, !tbaa !89 + %.02.i = phi ptr [ %299, %.lr.ph.i171 ], [ %.val156, %.lr.ph230 ] + %299 = load ptr, ptr %.02.i, align 8, !tbaa !89 call void @free(ptr noundef nonnull %.02.i) #15 - %.not.i172 = icmp eq ptr %297, null + %.not.i172 = icmp eq ptr %299, null br i1 %.not.i172, label %free_extended_entry.exit, label %.lr.ph.i171, !llvm.loop !90 free_extended_entry.exit: ; preds = %.lr.ph.i171, %.lr.ph230 @@ -1432,12 +1432,12 @@ free_extended_entry.exit: ; preds = %.lr.ph.i171, %.lr.p call void @free(ptr noundef %.0124) #15 store ptr null, ptr %3, align 8, !tbaa !67 call void @strbuf_release(ptr noundef nonnull %9) #15 - %298 = load i32, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 - %299 = add nsw i32 %298, -1 - store i32 %299, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 - br label %300 + %300 = load i32, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 + %301 = add nsw i32 %300, -1 + store i32 %301, ptr @traverse_trees_cur_depth, align 4, !tbaa !42 + br label %302 -300: ; preds = %._crit_edge231, %13 +302: ; preds = %._crit_edge231, %13 %.0122 = phi i32 [ -1, %13 ], [ %.1128.ph316, %._crit_edge231 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) ret i32 %.0122 diff --git a/bench/git/optimized/walker.ll b/bench/git/optimized/walker.ll index 55be210ead3..15eb2bcd40f 100644 --- a/bench/git/optimized/walker.ll +++ b/bench/git/optimized/walker.ll @@ -81,7 +81,7 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p %7 = getelementptr inbounds nuw i8, ptr %3, i64 16 br label %8 -8: ; preds = %.lr.ph, %29 +8: ; preds = %.lr.ph, %31 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %29 ] %.02539 = phi i32 [ 0, %.lr.ph ], [ %.2, %29 ] %9 = load ptr, ptr %7, align 8, !tbaa !14 @@ -98,13 +98,13 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p %.024 = phi ptr [ %12, %11 ], [ null, %8 ] %14 = sext i32 %.02539 to i64 %.not29 = icmp slt i64 %indvars.iv, %14 - br i1 %.not29, label %23, label %st_mult.exit33 + br i1 %.not29, label %23, label %15 -st_mult.exit33: ; preds = %13 +15: ; preds = %13 %.not30 = icmp eq i32 %.02539, 0 - %15 = shl nuw nsw i32 %.02539, 1 - %16 = select i1 %.not30, i32 64, i32 %15 - %17 = zext nneg i32 %16 to i64 + %16 = shl nuw nsw i32 %.02539, 1 + %17 = select i1 %.not30, i32 64, i32 %16 + %18 = zext nneg i32 %17 to i64 %18 = load ptr, ptr %0, align 8, !tbaa !12 %19 = shl nuw nsw i64 %17, 3 %20 = call ptr @xrealloc(ptr noundef %18, i64 noundef %19) #15 @@ -114,36 +114,36 @@ st_mult.exit33: ; preds = %13 store ptr %22, ptr %1, align 8, !tbaa !12 br label %23 -23: ; preds = %st_mult.exit33, %13 +23:; preds = %st_mult.exit33, %13 %.2 = phi i32 [ %16, %st_mult.exit33 ], [ %.02539, %13 ] %24 = call ptr @xstrdup(ptr noundef nonnull %9) #15 - %25 = load ptr, ptr %0, align 8, !tbaa !12 - %26 = getelementptr inbounds nuw ptr, ptr %25, i64 %indvars.iv + %23 = load ptr, ptr %0, align 8, !tbaa !12 + %26 = getelementptr inbounds nuw ptr, ptr %23, i64 %indvars.iv store ptr %24, ptr %26, align 8, !tbaa !19 %.not.i = icmp eq ptr %.024, null - br i1 %.not.i, label %29, label %27 + br i1 %.not.i, label %31, label %29 -27: ; preds = %23 - %28 = call ptr @xstrdup(ptr noundef nonnull %.024) #15 - br label %29 +29: ; preds = %23 + %30 = call ptr @xstrdup(ptr noundef nonnull %.024) #15 + br label %31 -29: ; preds = %27, %23 - %30 = phi ptr [ %28, %27 ], [ null, %23 ] - %31 = load ptr, ptr %1, align 8, !tbaa !12 - %32 = getelementptr inbounds nuw ptr, ptr %31, i64 %indvars.iv - store ptr %30, ptr %32, align 8, !tbaa !19 +31: ; preds = %29, %23 + %32 = phi ptr [ %30, %27 ], [ null, %23 ] + %33 = load ptr, ptr %1, align 8, !tbaa !12 + %34 = getelementptr inbounds nuw ptr, ptr %33, i64 %indvars.iv + store ptr %32, ptr %34, align 8, !tbaa !19 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %33 = load ptr, ptr @stdin, align 8, !tbaa !10 - %34 = call i32 @strbuf_getline_lf(ptr noundef nonnull %3, ptr noundef %33) #15 - %35 = icmp eq i32 %34, -1 - br i1 %35, label %._crit_edge.loopexit, label %8 + %35 = load ptr, ptr @stdin, align 8, !tbaa !10 + %36 = call i32 @strbuf_getline_lf(ptr noundef nonnull %3, ptr noundef %35) #15 + %37 = icmp eq i32 %36, -1 + br i1 %37, label %._crit_edge.loopexit, label %8 -._crit_edge.loopexit: ; preds = %29 - %36 = trunc nuw i64 %indvars.iv.next to i32 +._crit_edge.loopexit: ; preds = %31 + %38 = trunc nuw i64 %indvars.iv.next to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %2 - %.023.lcssa = phi i32 [ 0, %2 ], [ %36, %._crit_edge.loopexit ] + %.023.lcssa = phi i32 [ 0, %2 ], [ %38, %._crit_edge.loopexit ] call void @strbuf_release(ptr noundef nonnull %3) #15 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.023.lcssa diff --git a/bench/gromacs/optimized/atomdata.ll b/bench/gromacs/optimized/atomdata.ll index 7bf07829c38..2194a70a2ae 100644 --- a/bench/gromacs/optimized/atomdata.ll +++ b/bench/gromacs/optimized/atomdata.ll @@ -2398,8 +2398,8 @@ _ZNSt6vectorIfN3gmx9AllocatorIfNS0_20HostAllocationPolicyEEEE6resizeEm.exit218.i 194: ; preds = %194, %.lr.ph256.split.us.i %indvars.iv = phi i64 [ %indvars.iv.next, %194 ], [ 0, %.lr.ph256.split.us.i ] %195 = add nuw nsw i64 %indvars.iv, %192 - %.idx163 = shl i64 %195, 3 - %196 = getelementptr i8, ptr %190, i64 %.idx163 + %.idx164 = shl i64 %195, 3 + %196 = getelementptr i8, ptr %190, i64 %.idx164 store float 0.000000e+00, ptr %196, align 4, !tbaa !71 %197 = getelementptr i8, ptr %196, i64 4 store float 0.000000e+00, ptr %197, align 4, !tbaa !71 @@ -3314,9 +3314,9 @@ _ZN3gmxL15sc_iClusterSizeENS_15NbnxmKernelTypeE.exit: ; preds = %_ZN3gmxL28kerne ._ZNSt6vectorIN3gmx11BasicVectorIfEENS0_9AllocatorIS2_NS0_20HostAllocationPolicyEEEE6resizeEm.exit_crit_edge: ; preds = %590 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 224 %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !181 - %.phi.trans.insert89 = getelementptr inbounds nuw i8, ptr %0, i64 228 - %.pre90 = load i32, ptr %.phi.trans.insert89, align 4, !tbaa !182 - %592 = icmp eq i32 %.pre90, 1 + %.phi.trans.insert90 = getelementptr inbounds nuw i8, ptr %0, i64 228 + %.pre91 = load i32, ptr %.phi.trans.insert90, align 4, !tbaa !182 + %592 = icmp eq i32 %.pre91, 1 %593 = select i1 %592, i32 4, i32 3 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEENS0_9AllocatorIS2_NS0_20HostAllocationPolicyEEEE6resizeEm.exit diff --git a/bench/gromacs/optimized/tngio.ll b/bench/gromacs/optimized/tngio.ll index 90953e1a1ab..aa0970ed01b 100644 --- a/bench/gromacs/optimized/tngio.ll +++ b/bench/gromacs/optimized/tngio.ll @@ -681,37 +681,37 @@ _ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86: ; preds = %_ZNSt12_Vect br label %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 - %.sroa.13156.3499 = phi ptr [ %21, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] - %.sroa.22159.8498 = phi ptr [ %22, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] + %.sroa.13156.3498 = phi ptr [ %21, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] + %.sroa.22159.8497 = phi ptr [ %22, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %.sroa.0139.7 = phi ptr [ %24, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %.sroa.22.7 = phi ptr [ %25, %_ZNSt12_Vector_baseIfSaIfEE13_M_deallocateEPfm.exit.i86 ], [ null, %19 ] %26 = getelementptr inbounds nuw i8, ptr %1, i64 136 %27 = load ptr, ptr %26, align 8, !tbaa !97 %28 = getelementptr inbounds nuw i8, ptr %1, i64 144 %29 = load ptr, ptr %28, align 8, !tbaa !97 - %.not182365 = icmp eq ptr %27, %29 - br i1 %.not182365, label %._crit_edge374, label %.lr.ph373 + %.not182364 = icmp eq ptr %27, %29 + br i1 %.not182364, label %._crit_edge373, label %.lr.ph372 -.lr.ph373: ; preds = %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 +.lr.ph372: ; preds = %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 %30 = getelementptr inbounds nuw i8, ptr %1, i64 112 %31 = getelementptr inbounds nuw i8, ptr %8, i64 1 br label %35 -._crit_edge374.loopexit: ; preds = %._crit_edge - %.pre473 = load i32, ptr %14, align 8, !tbaa !42 - %.pre474 = sext i32 %.pre473 to i64 - br label %._crit_edge374 +._crit_edge373.loopexit: ; preds = %._crit_edge + %.pre472 = load i32, ptr %14, align 8, !tbaa !42 + %.pre473 = sext i32 %.pre472 to i64 + br label %._crit_edge373 -._crit_edge374: ; preds = %._crit_edge374.loopexit, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 - %.pre-phi = phi i64 [ %.pre474, %._crit_edge374.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] +._crit_edge373: ; preds = %._crit_edge373.loopexit, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 + %.pre-phi = phi i64 [ %.pre473, %._crit_edge374.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] %.sroa.0139.2.lcssa = phi ptr [ %.sroa.0139.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.0139.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] %.sroa.22.2.lcssa = phi ptr [ %.sroa.22.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22159.8498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.13156.3499, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22159.8497, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.13156.3498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] %32 = invoke i32 @tng_particle_data_block_add(ptr noundef %12, i64 noundef 268435460, ptr noundef nonnull @.str.9, i8 noundef signext 2, i8 noundef signext 0, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 0, i64 noundef %.pre-phi, i64 noundef 3, ptr noundef %.sroa.0150.2.lcssa) to label %324 unwind label %33 -33: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i, %18, %324, %._crit_edge374 +33: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i, %18, %324, %._crit_edge373 %.sroa.0139.1 = phi ptr [ null, %18 ], [ %.sroa.0139.2.lcssa, %324 ], [ %.sroa.0139.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] %.sroa.22.1 = phi ptr [ null, %18 ], [ %.sroa.22.2.lcssa, %324 ], [ %.sroa.22.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] %.sroa.22159.1 = phi ptr [ null, %18 ], [ %.sroa.22159.2.lcssa, %324 ], [ %.sroa.22159.2.lcssa, %._crit_edge374 ], [ %22, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] @@ -720,24 +720,24 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector cleanup br label %337 -35: ; preds = %.lr.ph373, %._crit_edge - %.sroa.0150.2372 = phi ptr [ %.sroa.13156.3499, %.lr.ph373 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] - %.sroa.13156.0371 = phi ptr [ %.sroa.13156.3499, %.lr.ph373 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] - %.sroa.22159.2370 = phi ptr [ %.sroa.22159.8498, %.lr.ph373 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] - %.sroa.0136.0369 = phi ptr [ %27, %.lr.ph373 ], [ %254, %._crit_edge ] - %.sroa.22.2368 = phi ptr [ %.sroa.22.7, %.lr.ph373 ], [ %.sroa.22.6.lcssa, %._crit_edge ] - %.sroa.13.0367 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.13.2.lcssa, %._crit_edge ] - %.sroa.0139.2366 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] +35: ; preds = %.lr.ph372, %._crit_edge + %.sroa.0150.2371 = phi ptr [ %.sroa.13156.3498, %.lr.ph373 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] + %.sroa.13156.0370 = phi ptr [ %.sroa.13156.3498, %.lr.ph373 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] + %.sroa.22159.2369 = phi ptr [ %.sroa.22159.8497, %.lr.ph373 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] + %.sroa.0136.0368 = phi ptr [ %27, %.lr.ph373 ], [ %254, %._crit_edge ] + %.sroa.22.2367 = phi ptr [ %.sroa.22.7, %.lr.ph373 ], [ %.sroa.22.6.lcssa, %._crit_edge ] + %.sroa.13.0366 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.13.2.lcssa, %._crit_edge ] + %.sroa.0139.2365 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] call void @llvm.lifetime.start.p0(ptr nonnull %11) store ptr null, ptr %11, align 8, !tbaa !98 - %36 = load i32, ptr %.sroa.0136.0369, align 8, !tbaa !100 + %36 = load i32, ptr %.sroa.0136.0368, align 8, !tbaa !100 %37 = sext i32 %36 to i64 %38 = load ptr, ptr %30, align 8, !tbaa !107 %39 = getelementptr inbounds nuw %struct.gmx_moltype_t, ptr %38, i64 %37 %40 = load ptr, ptr %39, align 8, !tbaa !108 %41 = load ptr, ptr %40, align 8, !tbaa !116 %42 = getelementptr inbounds nuw i8, ptr %39, i64 8 - %43 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0369, i64 4 + %43 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0368, i64 4 %44 = load i32, ptr %43, align 4, !tbaa !117 %45 = sext i32 %44 to i64 %.val = load ptr, ptr %0, align 8, !tbaa !41 @@ -746,7 +746,7 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr null, ptr %4, align 8, !tbaa !120 %46 = invoke i32 @tng_molecule_add(ptr noundef %.val, ptr noundef %41, ptr noundef nonnull %11) - to label %.noexc90 unwind label %.loopexit.split-lp202.loopexit + to label %.noexc90 unwind label %.loopexit.split-lp201.loopexit .noexc90: ; preds = %35 %.not.i = icmp eq i32 %46, 0 @@ -771,7 +771,7 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.13, ptr noundef nonnull align 1 dereferenceable(1) %6) - to label %.noexc91 unwind label %.loopexit.split-lp202.loopexit.split-lp + to label %.noexc91 unwind label %.loopexit.split-lp201.loopexit.split-lp .noexc91: ; preds = %56 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -820,7 +820,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, ._crit_edge.i: ; preds = %110, %.lr.ph.i, %.preheader.i %69 = load ptr, ptr %11, align 8, !tbaa !98 %70 = invoke i32 @tng_molecule_cnt_set(ptr noundef %.val, ptr noundef %69, i64 noundef range(i64 -2147483648, 2147483648) %45) - to label %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit unwind label %.loopexit.split-lp202.loopexit + to label %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit unwind label %.loopexit.split-lp201.loopexit .lr.ph.splitthread-pre-split.i: ; preds = %110 %.pr.i = load i32, ptr %49, align 8, !tbaa !123 @@ -872,14 +872,14 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, .critedge.i: ; preds = %88, %74 %94 = load ptr, ptr %11, align 8, !tbaa !98 %95 = invoke i32 @tng_molecule_chain_add(ptr noundef %.val, ptr noundef %94, ptr noundef nonnull %8, ptr noundef nonnull %3) - to label %.noexc93 unwind label %.loopexit201 + to label %.noexc93 unwind label %.loopexit200 .noexc93: ; preds = %.critedge.i, %88 %96 = load ptr, ptr %3, align 8, !tbaa !118 %97 = load ptr, ptr %81, align 8, !tbaa !134 %98 = load ptr, ptr %97, align 8, !tbaa !116 %99 = invoke i32 @tng_chain_residue_add(ptr noundef %.val, ptr noundef %96, ptr noundef %98, ptr noundef nonnull %4) - to label %.noexc94 unwind label %.loopexit201 + to label %.noexc94 unwind label %.loopexit200 .noexc94: ; preds = %.noexc93, %85 %100 = load ptr, ptr %4, align 8, !tbaa !120 @@ -892,7 +892,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %63, %107 = load ptr, ptr %106, align 8, !tbaa !136 %108 = load ptr, ptr %107, align 8, !tbaa !116 %109 = invoke i32 @tng_residue_atom_add(ptr noundef %.val, ptr noundef %100, ptr noundef %104, ptr noundef %108, ptr noundef nonnull %9) - to label %.noexc95 unwind label %.loopexit201 + to label %.noexc95 unwind label %.loopexit200 .noexc95: ; preds = %.noexc94 call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -914,8 +914,8 @@ _ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecu br label %115 115: ; preds = %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit, %_ZL11IS_CHEMBONDi.exit.thread - %indvars.iv464 = phi i64 [ 0, %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit ], [ %indvars.iv.next465, %_ZL11IS_CHEMBONDi.exit.thread ] - %116 = getelementptr inbounds nuw %struct.t_interaction_function, ptr @interaction_function, i64 %indvars.iv464 + %indvars.iv463 = phi i64 [ 0, %_ZL26addTngMoleculeFromTopologyP18gmx_tng_trajectoryPKcPK7t_atomslPP12tng_molecule.exit ], [ %indvars.iv.next464, %_ZL11IS_CHEMBONDi.exit.thread ] + %116 = getelementptr inbounds nuw %struct.t_interaction_function, ptr @interaction_function, i64 %indvars.iv463 %117 = getelementptr inbounds nuw i8, ptr %116, i64 16 %118 = load i32, ptr %117, align 16, !tbaa !141 %119 = icmp eq i32 %118, 2 @@ -925,11 +925,11 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 %120 = getelementptr inbounds nuw i8, ptr %116, i64 28 %121 = load i32, ptr %120, align 4, !tbaa !143 %122 = and i32 %121, 8 - %.not187 = icmp eq i32 %122, 0 - br i1 %.not187, label %_ZL11IS_CHEMBONDi.exit.thread, label %123 + %.not186 = icmp eq i32 %122, 0 + br i1 %.not186, label %_ZL11IS_CHEMBONDi.exit.thread, label %123 123: ; preds = %_ZL11IS_CHEMBONDi.exit - %124 = getelementptr inbounds nuw %struct.InteractionList, ptr %114, i64 %indvars.iv464 + %124 = getelementptr inbounds nuw %struct.InteractionList, ptr %114, i64 %indvars.iv463 %125 = getelementptr inbounds nuw i8, ptr %124, i64 8 %126 = load ptr, ptr %125, align 8, !tbaa !144 %127 = load ptr, ptr %124, align 8, !tbaa !145 @@ -967,18 +967,18 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 %152 = icmp slt i32 %151, %150 br i1 %152, label %.lr.ph, label %_ZL11IS_CHEMBONDi.exit.thread, !llvm.loop !147 -.loopexit201: ; preds = %.critedge.i, %.noexc93, %.noexc94 - %lpad.loopexit203 = landingpad { ptr, i32 } +.loopexit200: ; preds = %.critedge.i, %.noexc93, %.noexc94 + %lpad.loopexit202 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp202.loopexit: ; preds = %._crit_edge.i, %35 - %lpad.loopexit206 = landingpad { ptr, i32 } +.loopexit.split-lp201.loopexit: ; preds = %._crit_edge.i, %35 + %lpad.loopexit205 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp202.loopexit.split-lp: ; preds = %56 - %lpad.loopexit.split-lp207 = landingpad { ptr, i32 } +.loopexit.split-lp201.loopexit.split-lp: ; preds = %56 + %lpad.loopexit.split-lp206 = landingpad { ptr, i32 } cleanup br label %.body @@ -988,8 +988,8 @@ _ZL11IS_CHEMBONDi.exit: ; preds = %115 br label %.body _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ZL11IS_CHEMBONDi.exit - %indvars.iv.next465 = add nuw nsw i64 %indvars.iv464, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next465, 95 + %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next464, 95 br i1 %exitcond.not, label %155, label %115, !llvm.loop !148 155: ; preds = %_ZL11IS_CHEMBONDi.exit.thread @@ -1003,22 +1003,22 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %163 = lshr exact i64 %162, 2 %164 = trunc i64 %163 to i32 %165 = icmp sgt i32 %164, 1 - br i1 %165, label %.lr.ph332, label %.preheader193 + br i1 %165, label %.lr.ph331, label %.preheader192 -.preheader193: ; preds = %188, %155 +.preheader192: ; preds = %188, %155 %166 = load i32, ptr %42, align 8, !tbaa !149 %167 = icmp sgt i32 %166, 0 - br i1 %167, label %.lr.ph340, label %._crit_edge + br i1 %167, label %.lr.ph339, label %._crit_edge -.lr.ph340: ; preds = %.preheader193 +.lr.ph339: ; preds = %.preheader192 %168 = getelementptr inbounds nuw i8, ptr %39, i64 16 br label %203 -.lr.ph332: ; preds = %155, %188 - %indvars.iv467 = phi i64 [ %indvars.iv.next468, %188 ], [ 1, %155 ] +.lr.ph331: ; preds = %155, %188 + %indvars.iv466 = phi i64 [ %indvars.iv.next467, %188 ], [ 1, %155 ] %169 = phi ptr [ %190, %188 ], [ %159, %155 ] %170 = load ptr, ptr %11, align 8, !tbaa !98 - %171 = getelementptr inbounds nuw i32, ptr %169, i64 %indvars.iv467 + %171 = getelementptr inbounds nuw i32, ptr %169, i64 %indvars.iv466 %172 = load i32, ptr %171, align 4, !tbaa !146 %173 = sext i32 %172 to i64 %174 = getelementptr inbounds nuw i8, ptr %171, i64 4 @@ -1027,10 +1027,10 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %177 = invoke i32 @tng_molecule_bond_add(ptr noundef %12, ptr noundef %170, i64 noundef %173, i64 noundef %176, ptr noundef nonnull %10) to label %178 unwind label %198 -178: ; preds = %.lr.ph332 +178: ; preds = %.lr.ph331 %179 = load ptr, ptr %11, align 8, !tbaa !98 %180 = load ptr, ptr %156, align 8, !tbaa !145 - %181 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv467 + %181 = getelementptr inbounds nuw i32, ptr %180, i64 %indvars.iv466 %182 = load i32, ptr %181, align 4, !tbaa !146 %183 = sext i32 %182 to i64 %184 = getelementptr inbounds nuw i8, ptr %181, i64 8 @@ -1040,7 +1040,7 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ to label %188 unwind label %198 188: ; preds = %178 - %indvars.iv.next468 = add nuw nsw i64 %indvars.iv467, 4 + %indvars.iv.next467 = add nuw nsw i64 %indvars.iv466, 4 %189 = load ptr, ptr %157, align 8, !tbaa !144 %190 = load ptr, ptr %156, align 8, !tbaa !145 %191 = ptrtoint ptr %189 to i64 @@ -1048,11 +1048,11 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %193 = sub i64 %191, %192 %194 = lshr exact i64 %193, 2 %195 = trunc i64 %194 to i32 - %196 = trunc nuw i64 %indvars.iv.next468 to i32 + %196 = trunc nuw i64 %indvars.iv.next467 to i32 %197 = icmp slt i32 %196, %195 - br i1 %197, label %.lr.ph332, label %.preheader193, !llvm.loop !150 + br i1 %197, label %.lr.ph331, label %.preheader192, !llvm.loop !150 -198: ; preds = %178, %.lr.ph332 +198: ; preds = %178, %.lr.ph331 %199 = landingpad { ptr, i32 } cleanup br label %.body @@ -1062,37 +1062,37 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ %201 = icmp slt i32 %200, 2 %202 = icmp slt i32 %251, 1 %or.cond = or i1 %201, %202 - br i1 %or.cond, label %._crit_edge, label %.lr.ph353.split - -203: ; preds = %.lr.ph340, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 - %indvars.iv470 = phi i64 [ 0, %.lr.ph340 ], [ %indvars.iv.next471, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0150.5338 = phi ptr [ %.sroa.0150.2372, %.lr.ph340 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13156.1337 = phi ptr [ %.sroa.13156.0371, %.lr.ph340 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22159.5336 = phi ptr [ %.sroa.22159.2370, %.lr.ph340 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22.5335 = phi ptr [ %.sroa.22.2368, %.lr.ph340 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13.1334 = phi ptr [ %.sroa.13.0367, %.lr.ph340 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0139.5333 = phi ptr [ %.sroa.0139.2366, %.lr.ph340 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + br i1 %or.cond, label %._crit_edge, label %.lr.ph352.split + +203: ; preds = %.lr.ph339, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 + %indvars.iv469 = phi i64 [ 0, %.lr.ph340 ], [ %indvars.iv.next470, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0150.5337 = phi ptr [ %.sroa.0150.2371, %.lr.ph340 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13156.1336 = phi ptr [ %.sroa.13156.0370, %.lr.ph340 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22159.5335 = phi ptr [ %.sroa.22159.2369, %.lr.ph340 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22.5334 = phi ptr [ %.sroa.22.2367, %.lr.ph340 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13.1333 = phi ptr [ %.sroa.13.0366, %.lr.ph340 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0139.5332 = phi ptr [ %.sroa.0139.2365, %.lr.ph340 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] %204 = load ptr, ptr %168, align 8, !tbaa !151 - %205 = getelementptr inbounds nuw %struct.t_atom, ptr %204, i64 %indvars.iv470 + %205 = getelementptr inbounds nuw %struct.t_atom, ptr %204, i64 %indvars.iv469 %206 = getelementptr inbounds nuw i8, ptr %205, i64 4 - %.not.i96 = icmp eq ptr %.sroa.13156.1337, %.sroa.22159.5336 + %.not.i96 = icmp eq ptr %.sroa.13156.1336, %.sroa.22159.5335 br i1 %.not.i96, label %209, label %207 207: ; preds = %203 %208 = load float, ptr %206, align 4, !tbaa !152 - store float %208, ptr %.sroa.13156.1337, align 4, !tbaa !152 + store float %208, ptr %.sroa.13156.1336, align 4, !tbaa !152 br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit 209: ; preds = %203 - %210 = ptrtoint ptr %.sroa.13156.1337 to i64 - %211 = ptrtoint ptr %.sroa.0150.5338 to i64 + %210 = ptrtoint ptr %.sroa.13156.1336 to i64 + %211 = ptrtoint ptr %.sroa.0150.5337 to i64 %212 = sub i64 %210, %211 %213 = icmp eq i64 %212, 9223372036854775804 br i1 %213, label %214, label %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i 214: ; preds = %209 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc97 unwind label %.loopexit.split-lp195 + to label %.noexc97 unwind label %.loopexit.split-lp194 .noexc97: ; preds = %214 unreachable @@ -1108,7 +1108,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i: ; preds = %209 call void @llvm.assume(i1 %.not.i.i.i) %220 = shl nuw nsw i64 %219, 2 %221 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %220) #21 - to label %.noexc98 unwind label %.loopexit194 + to label %.noexc98 unwind label %.loopexit193 .noexc98: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i %222 = getelementptr inbounds i8, ptr %221, i64 %212 @@ -1118,15 +1118,15 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i: ; preds = %209 br i1 %224, label %225, label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i 225: ; preds = %.noexc98 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %.sroa.0150.5338, i64 %212, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %221, ptr align 4 %.sroa.0150.5337, i64 %212, i1 false) br label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i _ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i: ; preds = %225, %.noexc98 - %.not.i17.i.i = icmp eq ptr %.sroa.0150.5338, null + %.not.i17.i.i = icmp eq ptr %.sroa.0150.5337, null br i1 %.not.i17.i.i, label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i, label %226 226: ; preds = %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.5338, i64 noundef %212) #23 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0150.5337, i64 noundef %212) #23 br label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i: ; preds = %226, %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i @@ -1136,29 +1136,29 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP _ZNSt6vectorIfSaIfEE9push_backERKf.exit: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i, %207 %228 = phi ptr [ %.pre, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %204, %207 ] - %.sroa.22159.9 = phi ptr [ %227, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.22159.5336, %207 ] - %.pn185 = phi ptr [ %222, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.13156.1337, %207 ] - %.sroa.0150.9 = phi ptr [ %221, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.0150.5338, %207 ] - %.sroa.13156.4 = getelementptr inbounds nuw i8, ptr %.pn185, i64 4 - %229 = getelementptr inbounds nuw %struct.t_atom, ptr %228, i64 %indvars.iv470 - %.not.i99 = icmp eq ptr %.sroa.13.1334, %.sroa.22.5335 + %.sroa.22159.9 = phi ptr [ %227, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.22159.5335, %207 ] + %.pn184 = phi ptr [ %222, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.13156.1336, %207 ] + %.sroa.0150.9 = phi ptr [ %221, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i ], [ %.sroa.0150.5337, %207 ] + %.sroa.13156.4 = getelementptr inbounds nuw i8, ptr %.pn184, i64 4 + %229 = getelementptr inbounds nuw %struct.t_atom, ptr %228, i64 %indvars.iv469 + %.not.i99 = icmp eq ptr %.sroa.13.1333, %.sroa.22.5334 br i1 %.not.i99, label %232, label %230 230: ; preds = %_ZNSt6vectorIfSaIfEE9push_backERKf.exit %231 = load float, ptr %229, align 4, !tbaa !152 - store float %231, ptr %.sroa.13.1334, align 4, !tbaa !152 + store float %231, ptr %.sroa.13.1333, align 4, !tbaa !152 br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 232: ; preds = %_ZNSt6vectorIfSaIfEE9push_backERKf.exit - %233 = ptrtoint ptr %.sroa.22.5335 to i64 - %234 = ptrtoint ptr %.sroa.0139.5333 to i64 + %233 = ptrtoint ptr %.sroa.22.5334 to i64 + %234 = ptrtoint ptr %.sroa.0139.5332 to i64 %235 = sub i64 %233, %234 %236 = icmp eq i64 %235, 9223372036854775804 br i1 %236, label %237, label %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 237: ; preds = %232 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc106 unwind label %.loopexit.split-lp195 + to label %.noexc106 unwind label %.loopexit.split-lp194 .noexc106: ; preds = %237 unreachable @@ -1174,7 +1174,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100: ; preds = %232 call void @llvm.assume(i1 %.not.i.i.i102) %243 = shl nuw nsw i64 %242, 2 %244 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %243) #21 - to label %.noexc107 unwind label %.loopexit194 + to label %.noexc107 unwind label %.loopexit193 .noexc107: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 %245 = getelementptr inbounds i8, ptr %244, i64 %235 @@ -1184,15 +1184,15 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100: ; preds = %232 br i1 %247, label %248, label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 248: ; preds = %.noexc107 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %.sroa.0139.5333, i64 %235, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %.sroa.0139.5332, i64 %235, i1 false) br label %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 _ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103: ; preds = %248, %.noexc107 - %.not.i17.i.i104 = icmp eq ptr %.sroa.0139.5333, null + %.not.i17.i.i104 = icmp eq ptr %.sroa.0139.5332, null br i1 %.not.i17.i.i104, label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105, label %249 249: ; preds = %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.0139.5333, i64 noundef %235) #23 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.0139.5332, i64 noundef %235) #23 br label %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105: ; preds = %249, %_ZNSt6vectorIfSaIfEE11_S_relocateEPfS2_S2_RS0_.exit16.i.i103 @@ -1200,68 +1200,68 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP br label %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105, %230 - %.sroa.0139.8 = phi ptr [ %244, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.0139.5333, %230 ] - %.pn186 = phi ptr [ %245, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.13.1334, %230 ] - %.sroa.22.8 = phi ptr [ %250, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.22.5335, %230 ] - %.sroa.13.4 = getelementptr inbounds nuw i8, ptr %.pn186, i64 4 - %indvars.iv.next471 = add nuw nsw i64 %indvars.iv470, 1 + %.sroa.0139.8 = phi ptr [ %244, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.0139.5332, %230 ] + %.pn185 = phi ptr [ %245, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.13.1333, %230 ] + %.sroa.22.8 = phi ptr [ %250, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i105 ], [ %.sroa.22.5334, %230 ] + %.sroa.13.4 = getelementptr inbounds nuw i8, ptr %.pn185, i64 4 + %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1 %251 = load i32, ptr %42, align 8, !tbaa !149 %252 = sext i32 %251 to i64 - %253 = icmp slt i64 %indvars.iv.next471, %252 + %253 = icmp slt i64 %indvars.iv.next470, %252 br i1 %253, label %203, label %.preheader, !llvm.loop !153 -.loopexit194: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 - %.sroa.22159.6.ph = phi ptr [ %.sroa.13156.1337, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.22159.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] - %.sroa.0150.6.ph = phi ptr [ %.sroa.0150.5338, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.0150.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] - %lpad.loopexit198 = landingpad { ptr, i32 } +.loopexit193: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 + %.sroa.22159.6.ph = phi ptr [ %.sroa.13156.1336, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.22159.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] + %.sroa.0150.6.ph = phi ptr [ %.sroa.0150.5337, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i ], [ %.sroa.0150.9, %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i100 ] + %lpad.loopexit197 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp195: ; preds = %214, %237 - %.sroa.22159.6.ph196 = phi ptr [ %.sroa.22159.9, %237 ], [ %.sroa.13156.1337, %214 ] - %.sroa.0150.6.ph197 = phi ptr [ %.sroa.0150.9, %237 ], [ %.sroa.0150.5338, %214 ] - %lpad.loopexit.split-lp199 = landingpad { ptr, i32 } +.loopexit.split-lp194: ; preds = %214, %237 + %.sroa.22159.6.ph195 = phi ptr [ %.sroa.22159.9, %237 ], [ %.sroa.13156.1336, %214 ] + %.sroa.0150.6.ph196 = phi ptr [ %.sroa.0150.9, %237 ], [ %.sroa.0150.5337, %214 ] + %lpad.loopexit.split-lp198 = landingpad { ptr, i32 } cleanup br label %.body -._crit_edge: ; preds = %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, %.preheader193, %.preheader - %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2366, %.preheader193 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0367, %.preheader193 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2368, %.preheader193 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2370, %.preheader193 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0371, %.preheader193 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2372, %.preheader193 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] +._crit_edge: ; preds = %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, %.preheader192, %.preheader + %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2365, %.preheader193 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0366, %.preheader193 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2367, %.preheader193 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2369, %.preheader193 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0370, %.preheader193 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2371, %.preheader193 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) - %254 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0369, i64 56 + %254 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0368, i64 56 %.not182 = icmp eq ptr %254, %29 - br i1 %.not182, label %._crit_edge374.loopexit, label %35 - -.lr.ph353.split: ; preds = %.preheader, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 - %.074352 = phi i32 [ %321, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ 1, %.preheader ] - %.sroa.0150.7351 = phi ptr [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0150.9, %.preheader ] - %.sroa.13156.2350 = phi ptr [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13156.4, %.preheader ] - %.sroa.22159.7349 = phi ptr [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22159.9, %.preheader ] - %.sroa.22.6348 = phi ptr [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22.8, %.preheader ] - %.sroa.13.2347 = phi ptr [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13.4, %.preheader ] - %.sroa.0139.6346 = phi ptr [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0139.8, %.preheader ] + br i1 %.not182, label %._crit_edge373.loopexit, label %35 + +.lr.ph352.split: ; preds = %.preheader, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 + %.074351 = phi i32 [ %321, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ 1, %.preheader ] + %.sroa.0150.7350 = phi ptr [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0150.9, %.preheader ] + %.sroa.13156.2349 = phi ptr [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13156.4, %.preheader ] + %.sroa.22159.7348 = phi ptr [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22159.9, %.preheader ] + %.sroa.22.6347 = phi ptr [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.22.8, %.preheader ] + %.sroa.13.2346 = phi ptr [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.13.4, %.preheader ] + %.sroa.0139.6345 = phi ptr [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ], [ %.sroa.0139.8, %.preheader ] %255 = load i32, ptr %42, align 8, !tbaa !149 %256 = icmp slt i32 %255, 1 br i1 %256, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, label %.lr.ph.i.i.i.i.i.i.i -.lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph353.split +.lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph352.split %narrow = sub nsw i32 0, %255 %257 = sext i32 %narrow to i64 - %258 = getelementptr inbounds float, ptr %.sroa.13156.2350, i64 %257 + %259 = getelementptr inbounds float, ptr %.sroa.13156.2349, i64 %257 %259 = zext nneg i32 %255 to i64 br label %260 260: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i - %.sroa.22159.10 = phi ptr [ %.sroa.22159.7349, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.sroa.0150.10 = phi ptr [ %.sroa.0150.7351, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %261 = phi ptr [ %.sroa.22159.7349, %.lr.ph.i.i.i.i.i.i.i ], [ %284, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %262 = phi ptr [ %.sroa.13156.2350, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.sroa.22159.10 = phi ptr [ %.sroa.22159.7348, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.sroa.0150.10 = phi ptr [ %.sroa.0150.7350, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %261 = phi ptr [ %.sroa.22159.7348, %.lr.ph.i.i.i.i.i.i.i ], [ %284, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %262 = phi ptr [ %.sroa.13156.2349, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %.07.i.i.i.i.i.i.i = phi i64 [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %286, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.056.i.i.i.i.i.i.i = phi ptr [ %258, %.lr.ph.i.i.i.i.i.i.i ], [ %285, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.056.i.i.i.i.i.i.i = phi ptr [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %285, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %262, %261 br i1 %.not.i.i.i.i.i.i.i.i.i, label %265, label %263 @@ -1279,7 +1279,7 @@ _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfE 270: ; preds = %265 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #22 - to label %.noexc109 unwind label %.loopexit.split-lp189 + to label %.noexc109 unwind label %.loopexit.split-lp188 .noexc109: ; preds = %270 unreachable @@ -1295,7 +1295,7 @@ _ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i: ; preds = %26 call void @llvm.assume(i1 %.not.i.i.i.i.i.i.i.i.i.i.i) %276 = shl nuw nsw i64 %275, 2 %277 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %276) #21 - to label %.noexc110 unwind label %.loopexit188 + to label %.noexc110 unwind label %.loopexit187 .noexc110: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i %278 = getelementptr inbounds i8, ptr %277, i64 %268 @@ -1339,17 +1339,17 @@ _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i: ; preds .lr.ph.i.i.i.i.i.i.i111: ; preds = %288 %narrow183 = sub nsw i32 0, %.pr %290 = sext i32 %narrow183 to i64 - %291 = getelementptr inbounds float, ptr %.sroa.13.2347, i64 %290 + %292 = getelementptr inbounds float, ptr %.sroa.13.2346, i64 %290 %292 = zext nneg i32 %.pr to i64 br label %293 293: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph.i.i.i.i.i.i.i111 - %.sroa.0139.9 = phi ptr [ %.sroa.0139.6346, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22.9 = phi ptr [ %.sroa.22.6348, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %294 = phi ptr [ %.sroa.22.6348, %.lr.ph.i.i.i.i.i.i.i111 ], [ %317, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %295 = phi ptr [ %.sroa.13.2347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0139.9 = phi ptr [ %.sroa.0139.6345, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22.9 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %294 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %317, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %295 = phi ptr [ %.sroa.13.2346, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %.07.i.i.i.i.i.i.i114 = phi i64 [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %319, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.056.i.i.i.i.i.i.i115 = phi ptr [ %291, %.lr.ph.i.i.i.i.i.i.i111 ], [ %318, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.056.i.i.i.i.i.i.i115 = phi ptr [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %318, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %.not.i.i.i.i.i.i.i.i.i116 = icmp eq ptr %295, %294 br i1 %.not.i.i.i.i.i.i.i.i.i116, label %298, label %296 @@ -1410,34 +1410,34 @@ _ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIP _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117: ; preds = %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123, %296 %.sroa.0139.10 = phi ptr [ %310, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %.sroa.0139.9, %296 ] - %.pn184 = phi ptr [ %311, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %295, %296 ] + %.pn183 = phi ptr [ %311, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %295, %296 ] %.sroa.22.10 = phi ptr [ %316, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %.sroa.22.9, %296 ] %317 = phi ptr [ %316, %_ZNSt6vectorIfSaIfEE17_M_realloc_insertIJRKfEEEvN9__gnu_cxx17__normal_iteratorIPfS1_EEDpOT_.exit.i.i.i.i.i.i.i.i.i123 ], [ %294, %296 ] - %.sroa.13.5 = getelementptr inbounds nuw i8, ptr %.pn184, i64 4 + %.sroa.13.5 = getelementptr inbounds nuw i8, ptr %.pn183, i64 4 %318 = getelementptr inbounds nuw i8, ptr %.056.i.i.i.i.i.i.i115, i64 4 %319 = add nsw i64 %.07.i.i.i.i.i.i.i114, -1 %320 = icmp sgt i64 %.07.i.i.i.i.i.i.i114, 1 br i1 %320, label %293, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, !llvm.loop !154 -_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph353.split, %288 - %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7351, %.lr.ph353.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2350, %.lr.ph353.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7349, %.lr.ph353.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.0139.11 = phi ptr [ %.sroa.0139.6346, %288 ], [ %.sroa.0139.6346, %.lr.ph353.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13.6 = phi ptr [ %.sroa.13.2347, %288 ], [ %.sroa.13.2347, %.lr.ph353.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22.11 = phi ptr [ %.sroa.22.6348, %288 ], [ %.sroa.22.6348, %.lr.ph353.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %321 = add nuw nsw i32 %.074352, 1 +_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph352.split, %288 + %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7350, %.lr.ph353.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2349, %.lr.ph353.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7348, %.lr.ph353.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0139.11 = phi ptr [ %.sroa.0139.6345, %288 ], [ %.sroa.0139.6345, %.lr.ph353.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13.6 = phi ptr [ %.sroa.13.2346, %288 ], [ %.sroa.13.2346, %.lr.ph353.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22.11 = phi ptr [ %.sroa.22.6347, %288 ], [ %.sroa.22.6347, %.lr.ph353.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %321 = add nuw nsw i32 %.074351, 1 %322 = load i32, ptr %43, align 4, !tbaa !117 %323 = icmp slt i32 %321, %322 - br i1 %323, label %.lr.ph353.split, label %._crit_edge, !llvm.loop !155 + br i1 %323, label %.lr.ph352.split, label %._crit_edge, !llvm.loop !155 -.loopexit188: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i - %lpad.loopexit190 = landingpad { ptr, i32 } +.loopexit187: ; preds = %_ZNKSt6vectorIfSaIfEE12_M_check_lenEmPKc.exit.i.i.i.i.i.i.i.i.i.i + %lpad.loopexit189 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp189: ; preds = %270 - %lpad.loopexit.split-lp191 = landingpad { ptr, i32 } +.loopexit.split-lp188: ; preds = %270 + %lpad.loopexit.split-lp190 = landingpad { ptr, i32 } cleanup br label %.body @@ -1451,16 +1451,16 @@ _ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert cleanup br label %.body -.body: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit188, %.loopexit.split-lp189, %.loopexit194, %.loopexit.split-lp195, %.loopexit201, %.loopexit.split-lp202.loopexit.split-lp, %.loopexit.split-lp202.loopexit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %198, %153 - %.sroa.0139.4 = phi ptr [ %.sroa.0139.2366, %153 ], [ %.sroa.0139.2366, %198 ], [ %.sroa.0139.2366, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2366, %.loopexit201 ], [ %.sroa.0139.2366, %.loopexit.split-lp202.loopexit ], [ %.sroa.0139.2366, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0139.5333, %.loopexit194 ], [ %.sroa.0139.5333, %.loopexit.split-lp195 ], [ %.sroa.0139.6346, %.loopexit188 ], [ %.sroa.0139.6346, %.loopexit.split-lp189 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] - %.sroa.22.4 = phi ptr [ %.sroa.22.2368, %153 ], [ %.sroa.22.2368, %198 ], [ %.sroa.22.2368, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2368, %.loopexit201 ], [ %.sroa.22.2368, %.loopexit.split-lp202.loopexit ], [ %.sroa.22.2368, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22.5335, %.loopexit194 ], [ %.sroa.22.5335, %.loopexit.split-lp195 ], [ %.sroa.22.6348, %.loopexit188 ], [ %.sroa.22.6348, %.loopexit.split-lp189 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] - %.sroa.22159.4 = phi ptr [ %.sroa.22159.2370, %153 ], [ %.sroa.22159.2370, %198 ], [ %.sroa.22159.2370, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2370, %.loopexit201 ], [ %.sroa.22159.2370, %.loopexit.split-lp202.loopexit ], [ %.sroa.22159.2370, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit194 ], [ %.sroa.22159.6.ph196, %.loopexit.split-lp195 ], [ %.sroa.22159.10, %.loopexit188 ], [ %.sroa.22159.10, %.loopexit.split-lp189 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] - %.sroa.0150.4 = phi ptr [ %.sroa.0150.2372, %153 ], [ %.sroa.0150.2372, %198 ], [ %.sroa.0150.2372, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2372, %.loopexit201 ], [ %.sroa.0150.2372, %.loopexit.split-lp202.loopexit ], [ %.sroa.0150.2372, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit194 ], [ %.sroa.0150.6.ph197, %.loopexit.split-lp195 ], [ %.sroa.0150.10, %.loopexit188 ], [ %.sroa.0150.10, %.loopexit.split-lp189 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] - %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit203, %.loopexit201 ], [ %lpad.loopexit206, %.loopexit.split-lp202.loopexit ], [ %lpad.loopexit.split-lp207, %.loopexit.split-lp202.loopexit.split-lp ], [ %lpad.loopexit198, %.loopexit194 ], [ %lpad.loopexit.split-lp199, %.loopexit.split-lp195 ], [ %lpad.loopexit190, %.loopexit188 ], [ %lpad.loopexit.split-lp191, %.loopexit.split-lp189 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +.body: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit187, %.loopexit.split-lp188, %.loopexit193, %.loopexit.split-lp194, %.loopexit200, %.loopexit.split-lp201.loopexit.split-lp, %.loopexit.split-lp201.loopexit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %198, %153 + %.sroa.0139.4 = phi ptr [ %.sroa.0139.2365, %153 ], [ %.sroa.0139.2365, %198 ], [ %.sroa.0139.2365, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2365, %.loopexit201 ], [ %.sroa.0139.2365, %.loopexit.split-lp202.loopexit ], [ %.sroa.0139.2365, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0139.5332, %.loopexit194 ], [ %.sroa.0139.5333, %.loopexit.split-lp195 ], [ %.sroa.0139.6346, %.loopexit188 ], [ %.sroa.0139.6346, %.loopexit.split-lp189 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] + %.sroa.22.4 = phi ptr [ %.sroa.22.2367, %153 ], [ %.sroa.22.2367, %198 ], [ %.sroa.22.2367, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2367, %.loopexit201 ], [ %.sroa.22.2367, %.loopexit.split-lp202.loopexit ], [ %.sroa.22.2367, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22.5334, %.loopexit194 ], [ %.sroa.22.5334, %.loopexit.split-lp195 ], [ %.sroa.22.6348, %.loopexit188 ], [ %.sroa.22.6348, %.loopexit.split-lp189 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] + %.sroa.22159.4 = phi ptr [ %.sroa.22159.2369, %153 ], [ %.sroa.22159.2369, %198 ], [ %.sroa.22159.2369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2369, %.loopexit201 ], [ %.sroa.22159.2369, %.loopexit.split-lp202.loopexit ], [ %.sroa.22159.2369, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit194 ], [ %.sroa.22159.6.ph196, %.loopexit.split-lp195 ], [ %.sroa.22159.10, %.loopexit188 ], [ %.sroa.22159.10, %.loopexit.split-lp189 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] + %.sroa.0150.4 = phi ptr [ %.sroa.0150.2371, %153 ], [ %.sroa.0150.2371, %198 ], [ %.sroa.0150.2371, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2371, %.loopexit201 ], [ %.sroa.0150.2371, %.loopexit.split-lp202.loopexit ], [ %.sroa.0150.2371, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit194 ], [ %.sroa.0150.6.ph197, %.loopexit.split-lp195 ], [ %.sroa.0150.10, %.loopexit188 ], [ %.sroa.0150.10, %.loopexit.split-lp189 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] + %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit202, %.loopexit201 ], [ %lpad.loopexit205, %.loopexit.split-lp202.loopexit ], [ %lpad.loopexit.split-lp206, %.loopexit.split-lp202.loopexit.split-lp ], [ %lpad.loopexit197, %.loopexit194 ], [ %lpad.loopexit.split-lp198, %.loopexit.split-lp195 ], [ %lpad.loopexit189, %.loopexit188 ], [ %lpad.loopexit.split-lp191, %.loopexit.split-lp189 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %337 -324: ; preds = %._crit_edge374 +324: ; preds = %._crit_edge373 %325 = load i32, ptr %14, align 8, !tbaa !42 %326 = sext i32 %325 to i64 %327 = invoke i32 @tng_particle_data_block_add(ptr noundef %12, i64 noundef 268435472, ptr noundef nonnull @.str.10, i8 noundef signext 2, i8 noundef signext 0, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 0, i64 noundef %326, i64 noundef 3, ptr noundef %.sroa.0139.2.lcssa) diff --git a/bench/hwloc/optimized/topology-synthetic.ll b/bench/hwloc/optimized/topology-synthetic.ll index 1eb6d1e570f..f6200af6d24 100644 --- a/bench/hwloc/optimized/topology-synthetic.ll +++ b/bench/hwloc/optimized/topology-synthetic.ll @@ -1538,9 +1538,9 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %99 = load i8, ptr %.1.i, align 1, !tbaa !56 %100 = add i8 %99, -58 %or.cond367.i = icmp ult i8 %100, -10 - br i1 %or.cond367.i, label %104, label %.thread523.i + br i1 %or.cond367.i, label %104, label %.thread524.i -.thread523.i: ; preds = %95 +.thread524.i: ; preds = %95 %101 = getelementptr inbounds nuw i8, ptr %46, i64 16 store i32 -1, ptr %101, align 8, !tbaa !90 %102 = getelementptr inbounds nuw i8, ptr %46, i64 20 @@ -1640,12 +1640,12 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n store i32 %140, ptr %130, align 4, !tbaa !101 br label %141 -141: ; preds = %139, %137, %134, %.thread523.i +141: ; preds = %139, %137, %134, %.thread524.i %142 = phi ptr [ %129, %137 ], [ %129, %139 ], [ %129, %134 ], [ %101, %.thread523.i ] - %.2521.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread523.i ] - %143 = call i64 @strtoul(ptr noundef nonnull %.2521.i, ptr noundef nonnull %8, i32 noundef 0) #25 + %.2522.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread523.i ] + %143 = call i64 @strtoul(ptr noundef nonnull %.2522.i, ptr noundef nonnull %8, i32 noundef 0) #25 %144 = load ptr, ptr %8, align 8, !tbaa !81 - %145 = icmp eq ptr %144, %.2521.i + %145 = icmp eq ptr %144, %.2522.i br i1 %145, label %146, label %150 146: ; preds = %141 @@ -1654,7 +1654,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n 147: ; preds = %146 %148 = load ptr, ptr @stderr, align 8, !tbaa !37 - %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.14, ptr noundef nonnull %.2521.i) #29 + %149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef nonnull @.str.14, ptr noundef nonnull %.2522.i) #29 br label %.thread374.sink.split.i 150: ; preds = %141 @@ -1667,7 +1667,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n 152: ; preds = %151 %153 = load ptr, ptr @stderr, align 8, !tbaa !37 - %154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %153, ptr noundef nonnull @.str.15, ptr noundef nonnull %.2521.i) #29 + %154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %153, ptr noundef nonnull @.str.15, ptr noundef nonnull %.2522.i) #29 br label %.thread374.sink.split.i 155: ; preds = %150 @@ -1918,7 +1918,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n .preheader.i: ; preds = %256 %260 = icmp ugt i64 %182, 1 - br i1 %260, label %.lr.ph435.i, label %.thread531.i + br i1 %260, label %.lr.ph435.i, label %.thread532.i 261: ; preds = %256 %.not358.i = icmp eq i32 %.0292.i, 0 @@ -1972,7 +1972,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %477 284: ; preds = %._crit_edge436.i - br i1 %.not347.i, label %.thread531.i, label %285 + br i1 %.not347.i, label %.thread532.i, label %285 285: ; preds = %284 %286 = trunc i64 %.0283419.i to i32 @@ -2092,13 +2092,13 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br i1 %.not393.i, label %.thread391.i, label %.thread391.sink.split.i .thread391.sink.split.i: ; preds = %332, %326 - %.sink571.i = phi i32 [ %325, %326 ], [ %333, %332 ] - %.sink567.i = phi i32 [ 5, %326 ], [ 10, %332 ] + %.sink572.i = phi i32 [ %325, %326 ], [ %333, %332 ] + %.sink568.i = phi i32 [ 5, %326 ], [ 10, %332 ] %.sink.i = phi i32 [ 1, %326 ], [ 2, %332 ] - %349 = zext i32 %.sink571.i to i64 + %349 = zext i32 %.sink572.i to i64 %350 = getelementptr inbounds nuw %struct.hwloc_synthetic_level_data_s, ptr %28, i64 %349 %351 = getelementptr inbounds nuw i8, ptr %350, i64 16 - store i32 %.sink567.i, ptr %351, align 8, !tbaa !90 + store i32 %.sink568.i, ptr %351, align 8, !tbaa !90 %352 = getelementptr inbounds nuw i8, ptr %350, i64 20 store i32 1, ptr %352, align 4, !tbaa !101 %353 = getelementptr inbounds nuw i8, ptr %350, i64 24 @@ -2106,7 +2106,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %.thread391.i .thread391.i: ; preds = %.thread391.sink.split.i, %332, %326, %316 - br i1 %294, label %354, label %.thread531.i + br i1 %294, label %354, label %.thread532.i 354: ; preds = %.thread391.i %355 = add i32 %297, 1 @@ -2117,14 +2117,14 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %360 = getelementptr inbounds nuw %struct.hwloc_synthetic_level_data_s, ptr %28, i64 %359 %361 = getelementptr inbounds nuw i8, ptr %360, i64 16 store i32 3, ptr %361, align 8, !tbaa !90 - br label %.thread531.i + br label %.thread532.i -.thread531.i: ; preds = %354, %.thread391.i, %284, %.preheader.i +.thread532.i: ; preds = %354, %.thread391.i, %284, %.preheader.i %362 = phi i32 [ %317, %.thread391.i ], [ %317, %354 ], [ %239, %284 ], [ %239, %.preheader.i ] %.not353.i = icmp eq i32 %362, 0 br i1 %.not353.i, label %363, label %.lr.ph452.i -363: ; preds = %.thread531.i +363: ; preds = %.thread532.i %364 = load i64, ptr %25, align 8, !tbaa !82 %.not354.i = icmp eq i64 %364, 0 br i1 %.not354.i, label %365, label %.lr.ph452.i @@ -2158,7 +2158,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n %379 = add nuw nsw i64 %.0283419.i, 1 br label %.lr.ph452.i -.lr.ph452.i: ; preds = %369, %363, %.thread531.i +.lr.ph452.i: ; preds = %369, %363, %.thread532.i %.3.i = phi i64 [ %.0283419.i, %.thread531.i ], [ %.0283419.i, %363 ], [ %379, %369 ] %380 = getelementptr inbounds nuw i8, ptr %9, i64 52 %.promoted454.i = load i32, ptr %380, align 4 diff --git a/bench/hyperscan/optimized/ng_revacc.ll b/bench/hyperscan/optimized/ng_revacc.ll index 571c07c2846..d52846528c4 100644 --- a/bench/hyperscan/optimized/ng_revacc.ll +++ b/bench/hyperscan/optimized/ng_revacc.ll @@ -1300,7 +1300,7 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS ret void 38: ; preds = %.preheader92, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 - %indvars.iv = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] + %indvars.iv112 = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store i32 0, ptr %14, align 8 store ptr null, ptr %15, align 8 @@ -1308,11 +1308,11 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS store ptr %14, ptr %17, align 8 store i64 0, ptr %18, align 8 %39 = load ptr, ptr %9, align 8 - %.not88102 = icmp eq ptr %39, %7 - br i1 %.not88102, label %._crit_edge, label %.lr.ph104 + %.not88103 = icmp eq ptr %39, %7 + br i1 %.not88103, label %._crit_edge, label %.lr.ph105 -.lr.ph104: ; preds = %38 - %40 = icmp samesign ult i64 %indvars.iv, 15 +.lr.ph105: ; preds = %38 + %40 = icmp samesign ult i64 %indvars.iv112, 15 br label %72 ._crit_edge.loopexit: ; preds = %.critedge @@ -1405,16 +1405,16 @@ _ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57: ; preds = %_ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EEvRSt3setIT_T0_T1_ESH_.exit call void @llvm.lifetime.end.p0(ptr nonnull %6) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond112.not = icmp eq i64 %indvars.iv.next, 16 - br i1 %exitcond112.not, label %33, label %38, !llvm.loop !26 + %exitcond115.not = icmp eq i64 %indvars.iv.next, 16 + br i1 %exitcond115.not, label %33, label %38, !llvm.loop !26 -72: ; preds = %.lr.ph104, %.critedge - %.sroa.077.0103 = phi ptr [ %39, %.lr.ph104 ], [ %145, %.critedge ] - %73 = getelementptr inbounds nuw i8, ptr %.sroa.077.0103, i64 32 +72: ; preds = %.lr.ph105, %.critedge + %.sroa.077.0104 = phi ptr [ %39, %.lr.ph104 ], [ %145, %.critedge ] + %73 = getelementptr inbounds nuw i8, ptr %.sroa.077.0104, i64 32 %.sroa.075.0.copyload = load ptr, ptr %73, align 8 %74 = getelementptr inbounds nuw i8, ptr %.sroa.075.0.copyload, i64 16 %75 = load ptr, ptr %2, align 8 - %76 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %75, i64 %indvars.iv + %76 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %75, i64 %indvars.iv112 %77 = load i64, ptr %74, align 8 %78 = load i64, ptr %76, align 8 %79 = or i64 %78, %77 @@ -1457,7 +1457,7 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS br i1 %or.cond, label %.preheader, label %106 .preheader: ; preds = %.lr.ph99 - br i1 %40, label %.lr.ph101, label %.critedge + br i1 %40, label %.lr.ph102, label %.critedge 102: ; preds = %_ZNSt8_Rb_treeIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEES8_St9_IdentityIS8_ESt4lessIS8_ESaIS8_EE10_M_insert_IRKS8_NSE_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS8_EPSt18_Rb_tree_node_baseSM_OT_RT0_.exit.i %103 = landingpad { ptr, i32 } @@ -1465,8 +1465,8 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS invoke void @_ZNSt8_Rb_treeIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEES8_St9_IdentityIS8_ESt4lessIS8_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef %.02630.i.i) to label %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit62 unwind label %146 -.lr.ph101: ; preds = %.preheader, %.lr.ph101 - %indvars.iv108 = phi i64 [ %indvars.iv.next109, %.lr.ph101 ], [ %indvars.iv, %.preheader ] +.lr.ph102: ; preds = %.preheader, %.lr.ph102 + %indvars.iv109 = phi i64 [ %indvars.iv.next109, %.lr.ph101 ], [ %indvars.iv, %.preheader ] %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 %104 = load ptr, ptr %2, align 8 %105 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %104, i64 %indvars.iv.next109 @@ -1505,14 +1505,14 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS br i1 %.not.i.i, label %._crit_edge.thread.i.i, label %.lr.ph.split.i.i.backedge .lr.ph.split.i.i.backedge: ; preds = %114, %.thread - %.02632.i.i.be = phi ptr [ %.026.i.i, %114 ], [ %.026.i.i121, %.thread ] + %.02632.i.i.be = phi ptr [ %.026.i.i, %114 ], [ %.026.i.i124, %.thread ] br label %.lr.ph.split.i.i, !llvm.loop !27 .thread: ; preds = %.lr.ph.split.i.i, %112 %116 = getelementptr inbounds nuw i8, ptr %.02632.i.i, i64 24 - %.026.i.i121 = load ptr, ptr %116, align 8 - %.not.i.i122 = icmp eq ptr %.026.i.i121, null - br i1 %.not.i.i122, label %._crit_edge.i.i.thread, label %.lr.ph.split.i.i.backedge + %.026.i.i124 = load ptr, ptr %116, align 8 + %.not.i.i125 = icmp eq ptr %.026.i.i124, null + br i1 %.not.i.i125, label %._crit_edge.i.i.thread, label %.lr.ph.split.i.i.backedge ._crit_edge.thread.i.i: ; preds = %114, %110 %.025.lcssa42.i.i = phi ptr [ %14, %110 ], [ %.02632.i.i, %114 ] @@ -1588,8 +1588,8 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS %.not89 = icmp eq ptr %.sroa.071.0, %95 br i1 %.not89, label %.critedge, label %.lr.ph99 -.critedge: ; preds = %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EE6insertERKS8_.exit61, %.lr.ph101, %72, %.preheader - %145 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.077.0103) #16 +.critedge: ; preds = %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EE6insertERKS8_.exit61, %.lr.ph102, %72, %.preheader + %145 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.077.0104) #16 %.not88 = icmp eq ptr %145, %7 br i1 %.not88, label %._crit_edge.loopexit, label %72 diff --git a/bench/lean4/optimized/name.ll b/bench/lean4/optimized/name.ll index 559acc98d72..6fb0e8c45d1 100644 --- a/bench/lean4/optimized/name.ll +++ b/bench/lean4/optimized/name.ll @@ -1637,72 +1637,72 @@ define noundef i64 @_ZNK4lean4name9size_coreEb(ptr noundef nonnull readonly alig %9 = ptrtoint ptr %8 to i64 %10 = and i64 %9, 1 %.not = icmp eq i64 %10, 0 - br i1 %.not, label %_ZN4lean4name4kindEP11lean_object.exit, label %.loopexit + br i1 %.not, label %.preheader, label %.loopexit -_ZN4lean4name4kindEP11lean_object.exit: ; preds = %2, %100 - %.016 = phi i64 [ %101, %100 ], [ 0, %2 ] - %.015 = phi ptr [ %97, %100 ], [ %8, %2 ] +.preheader: ; preds = %2, %107 + %.016 = phi i64 [ %108, %100 ], [ 0, %2 ] + %.015 = phi ptr [ %104, %100 ], [ %8, %2 ] %11 = getelementptr i8, ptr %.015, i64 4 %.val.i.i.i = load i32, ptr %11, align 4 %.mask = and i32 %.val.i.i.i, -16777216 - %12 = icmp eq i32 %.mask, 16777216 + %12 = icmp eq i32 %.mask, 16777223 %13 = getelementptr inbounds nuw i8, ptr %.015, i64 16 %14 = load ptr, ptr %13, align 8, !tbaa !6 br i1 %12, label %15, label %21 -15: ; preds = %_ZN4lean4name4kindEP11lean_object.exit - br i1 %1, label %16, label %18 +22: ; preds = %_ZN4lean4name4kindEP11lean_object.exit + br i1 %1, label %23, label %25 -16: ; preds = %15 - %17 = getelementptr i8, ptr %14, i64 24 - %.val.i.i = load i64, ptr %17, align 8, !tbaa !33 +23: ; preds = %22 + %24 = getelementptr i8, ptr %14, i64 24 + %.val.i.i = load i64, ptr %24, align 8, !tbaa !33 br label %_ZN4lean10object_refD2Ev.exit -18: ; preds = %15 - %19 = getelementptr i8, ptr %14, i64 8 - %.val.i.i17 = load i64, ptr %19, align 8, !tbaa !33 - %20 = add i64 %.val.i.i17, -1 +25: ; preds = %22 + %26 = getelementptr i8, ptr %14, i64 8 + %.val.i.i17 = load i64, ptr %26, align 8, !tbaa !33 + %27 = add i64 %.val.i.i17, -1 br label %_ZN4lean10object_refD2Ev.exit -21: ; preds = %_ZN4lean4name4kindEP11lean_object.exit +28: ; preds = %_ZN4lean4name4kindEP11lean_object.exit store ptr %14, ptr %7, align 8, !tbaa !6 - %22 = ptrtoint ptr %14 to i64 - %23 = and i64 %22, 1 - %.not.i.i.i18 = icmp eq i64 %23, 0 - br i1 %.not.i.i.i18, label %24, label %30 + %29 = ptrtoint ptr %14 to i64 + %30 = and i64 %29, 1 + %.not.i.i.i18 = icmp eq i64 %30, 0 + br i1 %.not.i.i.i18, label %31, label %37 -24: ; preds = %21 +31: ; preds = %28 %.val.i.i.i.i = load i32, ptr %14, align 4, !tbaa !9 - %25 = icmp sgt i32 %.val.i.i.i.i, 0 - br i1 %25, label %26, label %28, !prof !12 + %32 = icmp sgt i32 %.val.i.i.i.i, 0 + br i1 %32, label %33, label %35, !prof !12 -26: ; preds = %24 - %27 = add nuw nsw i32 %.val.i.i.i.i, 1 - store i32 %27, ptr %14, align 4, !tbaa !9 +33: ; preds = %31 + %34 = add nuw nsw i32 %.val.i.i.i.i, 1 + store i32 %34, ptr %14, align 4, !tbaa !9 br label %.critedge.i.i.i.i.i -28: ; preds = %24 +35: ; preds = %31 %.not.i.i.i.i = icmp eq i32 %.val.i.i.i.i, 0 - br i1 %.not.i.i.i.i, label %.critedge.i.i.i.i.i, label %29 + br i1 %.not.i.i.i.i, label %.critedge.i.i.i.i.i, label %36 -29: ; preds = %28 +36: ; preds = %35 tail call void @lean_inc_ref_cold(ptr noundef nonnull %14) br label %.critedge.i.i.i.i.i -30: ; preds = %21 +37: ; preds = %28 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %31 = icmp eq ptr %14, inttoptr (i64 1 to ptr) + %38 = icmp eq ptr %14, inttoptr (i64 1 to ptr) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br i1 %31, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader + br i1 %38, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader -.critedge.i.i.i.i.i: ; preds = %26, %28, %29 +.critedge.i.i.i.i.i: ; preds = %33, %35, %36 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr inttoptr (i64 1 to ptr), ptr %4, align 8, !tbaa !6 - %32 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %14, ptr noundef nonnull inttoptr (i64 1 to ptr)) - to label %_ZN4leaneqERKNS_3natEj.exit.i unwind label %33 + %39 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %14, ptr noundef nonnull inttoptr (i64 1 to ptr)) + to label %_ZN4leaneqERKNS_3natEj.exit.i unwind label %40 -33: ; preds = %.critedge.i.i.i.i.i - %34 = landingpad { ptr, i32 } +40: ; preds = %.critedge.i.i.i.i.i + %41 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #19 call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -1711,33 +1711,33 @@ _ZN4lean4name4kindEP11lean_object.exit: ; preds = %2, %100 _ZN4leaneqERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %4) %.pre33 = load ptr, ptr %7, align 8, !tbaa !6 - br i1 %32, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader + br i1 %39, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader -.preheader.i.preheader: ; preds = %_ZN4leaneqERKNS_3natEj.exit.i, %30 +.preheader.i.preheader: ; preds = %_ZN4leaneqERKNS_3natEj.exit.i, %37 %.ph = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ %14, %30 ] br label %.preheader.i .preheader.i: ; preds = %.preheader.i.preheader, %_ZN4lean10object_refD2Ev.exit13.i - %35 = phi ptr [ %54, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] - %.05.i = phi i32 [ %76, %_ZN4lean10object_refD2Ev.exit13.i ], [ 0, %.preheader.i.preheader ] + %42 = phi ptr [ %54, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] + %.05.i = phi i32 [ %83, %_ZN4lean10object_refD2Ev.exit13.i ], [ 0, %.preheader.i.preheader ] call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr inttoptr (i64 1 to ptr), ptr %3, align 8, !tbaa !6 - %36 = ptrtoint ptr %35 to i64 - %37 = and i64 %36, 1 - %or.cond.not.i.i.i.i.i = icmp eq i64 %37, 0 - br i1 %or.cond.not.i.i.i.i.i, label %.critedge.i.i.i.i.i.i, label %38, !prof !34 + %43 = ptrtoint ptr %42 to i64 + %44 = and i64 %43, 1 + %or.cond.not.i.i.i.i.i = icmp eq i64 %44, 0 + br i1 %or.cond.not.i.i.i.i.i, label %.critedge.i.i.i.i.i.i, label %45, !prof !34 -38: ; preds = %.preheader.i - %39 = icmp eq ptr %35, inttoptr (i64 1 to ptr) +45: ; preds = %.preheader.i + %46 = icmp eq ptr %42, inttoptr (i64 1 to ptr) call void @llvm.lifetime.end.p0(ptr nonnull %3) - br i1 %39, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %43 + br i1 %46, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %50 .critedge.i.i.i.i.i.i: ; preds = %.preheader.i - %40 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef %35, ptr noundef nonnull inttoptr (i64 1 to ptr)) - to label %_ZN4leanneERKNS_3natEj.exit.i unwind label %41 + %47 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef %42, ptr noundef nonnull inttoptr (i64 1 to ptr)) + to label %_ZN4leanneERKNS_3natEj.exit.i unwind label %48 -41: ; preds = %.critedge.i.i.i.i.i.i - %42 = landingpad { ptr, i32 } +48: ; preds = %.critedge.i.i.i.i.i.i + %49 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #19 call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -1746,39 +1746,39 @@ _ZN4leaneqERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i _ZN4leanneERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %3) %.pre32.pre = load ptr, ptr %7, align 8, !tbaa !6 - br i1 %40, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %_ZN4leanneERKNS_3natEj.exit.i._crit_edge + br i1 %47, label %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, label %_ZN4leanneERKNS_3natEj.exit.i._crit_edge _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3natEj.exit.i %.pre35 = ptrtoint ptr %.pre32.pre to i64 - br label %43 + br label %50 -43: ; preds = %_ZN4leanneERKNS_3natEj.exit.i._crit_edge, %38 - %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %36, %38 ] - %44 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %35, %38 ] +50: ; preds = %_ZN4leanneERKNS_3natEj.exit.i._crit_edge, %45 + %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %43, %38 ] + %51 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %42, %38 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr inttoptr (i64 21 to ptr), ptr %6, align 8, !tbaa !6 - %45 = and i64 %.pre-phi, 1 - %.not.i.i.i.i19 = icmp eq i64 %45, 0 - br i1 %.not.i.i.i.i19, label %.critedge.i.i.i.i, label %46, !prof !37 - -46: ; preds = %43 - %47 = udiv i64 %.pre-phi, 20 - %48 = shl nuw nsw i64 %47, 1 - %49 = or disjoint i64 %48, 1 - %50 = inttoptr i64 %49 to ptr + %52 = and i64 %.pre-phi, 1 + %.not.i.i.i.i19 = icmp eq i64 %52, 0 + br i1 %.not.i.i.i.i19, label %.critedge.i.i.i.i, label %53, !prof !37 + +53: ; preds = %50 + %54 = udiv i64 %.pre-phi, 20 + %55 = shl nuw nsw i64 %54, 1 + %56 = or disjoint i64 %55, 1 + %57 = inttoptr i64 %56 to ptr br label %52 -.critedge.i.i.i.i: ; preds = %43 - %51 = invoke ptr @lean_nat_big_div(ptr noundef %44, ptr noundef nonnull inttoptr (i64 21 to ptr)) - to label %.critedge.i.i.i._crit_edge.i unwind label %77 +.critedge.i.i.i.i: ; preds = %50 + %58 = invoke ptr @lean_nat_big_div(ptr noundef %51, ptr noundef nonnull inttoptr (i64 21 to ptr)) + to label %.critedge.i.i.i._crit_edge.i unwind label %84 .critedge.i.i.i._crit_edge.i: ; preds = %.critedge.i.i.i.i %.pre.i = load ptr, ptr %7, align 8, !tbaa !6 %.pre22.i = ptrtoint ptr %.pre.i to i64 br label %52 -52: ; preds = %.critedge.i.i.i._crit_edge.i, %46 +66: ; preds = %.critedge.i.i.i._crit_edge.i, %46 %.pre-phi.i = phi i64 [ %.pre22.i, %.critedge.i.i.i._crit_edge.i ], [ %.pre-phi, %46 ] %53 = phi ptr [ %.pre.i, %.critedge.i.i.i._crit_edge.i ], [ %44, %46 ] %54 = phi ptr [ %51, %.critedge.i.i.i._crit_edge.i ], [ %50, %46 ] @@ -1797,127 +1797,127 @@ _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3na store i32 %60, ptr %53, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit.i -61: ; preds = %56 +68: ; preds = %56 %.not.i.i.i.i.i = icmp eq i32 %57, 0 - br i1 %.not.i.i.i.i.i, label %_ZN4lean10object_refD2Ev.exit.i, label %62 + br i1 %.not.i.i.i.i.i, label %_ZN4lean10object_refD2Ev.exit.i, label %69 -62: ; preds = %61 +69: ; preds = %68 invoke void @lean_dec_ref_cold(ptr noundef nonnull %53) - to label %_ZN4lean10object_refD2Ev.exit.i unwind label %79 + to label %_ZN4lean10object_refD2Ev.exit.i unwind label %86 -_ZN4lean10object_refD2Ev.exit.i: ; preds = %62, %61, %59, %52 +_ZN4lean10object_refD2Ev.exit.i: ; preds = %69, %68, %59, %52 store ptr %54, ptr %7, align 8, !tbaa !6 - %63 = load ptr, ptr %6, align 8, !tbaa !6 - %64 = ptrtoint ptr %63 to i64 - %65 = and i64 %64, 1 - %.not.i.i11.i = icmp eq i64 %65, 0 - br i1 %.not.i.i11.i, label %66, label %_ZN4lean10object_refD2Ev.exit13.i - -66: ; preds = %_ZN4lean10object_refD2Ev.exit.i - %67 = load i32, ptr %63, align 4, !tbaa !9 - %68 = icmp sgt i32 %67, 1 - br i1 %68, label %69, label %71, !prof !12 - -69: ; preds = %66 - %70 = add nsw i32 %67, -1 - store i32 %70, ptr %63, align 4, !tbaa !9 + %70 = load ptr, ptr %6, align 8, !tbaa !6 + %71 = ptrtoint ptr %70 to i64 + %72 = and i64 %71, 1 + %.not.i.i11.i = icmp eq i64 %72, 0 + br i1 %.not.i.i11.i, label %73, label %_ZN4lean10object_refD2Ev.exit13.i + +73: ; preds = %_ZN4lean10object_refD2Ev.exit.i + %74 = load i32, ptr %70, align 4, !tbaa !9 + %75 = icmp sgt i32 %74, 1 + br i1 %75, label %76, label %78, !prof !12 + +76: ; preds = %73 + %77 = add nsw i32 %74, -1 + store i32 %77, ptr %70, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit13.i -71: ; preds = %66 - %.not.i.i.i12.i = icmp eq i32 %67, 0 - br i1 %.not.i.i.i12.i, label %_ZN4lean10object_refD2Ev.exit13.i, label %72 +78: ; preds = %73 + %.not.i.i.i12.i = icmp eq i32 %74, 0 + br i1 %.not.i.i.i12.i, label %_ZN4lean10object_refD2Ev.exit13.i, label %79 -72: ; preds = %71 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %63) - to label %_ZN4lean10object_refD2Ev.exit13.i unwind label %73 +79: ; preds = %78 + invoke void @lean_dec_ref_cold(ptr noundef nonnull %70) + to label %_ZN4lean10object_refD2Ev.exit13.i unwind label %80 -73: ; preds = %72 - %74 = landingpad { ptr, i32 } +80: ; preds = %79 + %81 = landingpad { ptr, i32 } catch ptr null - %75 = extractvalue { ptr, i32 } %74, 0 - tail call void @__clang_call_terminate(ptr %75) #20 + %82 = extractvalue { ptr, i32 } %81, 0 + tail call void @__clang_call_terminate(ptr %82) #20 unreachable -_ZN4lean10object_refD2Ev.exit13.i: ; preds = %72, %71, %69, %_ZN4lean10object_refD2Ev.exit.i +_ZN4lean10object_refD2Ev.exit13.i: ; preds = %79, %78, %76, %_ZN4lean10object_refD2Ev.exit.i call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) - %76 = add nuw nsw i32 %.05.i, 1 + %83 = add nuw nsw i32 %.05.i, 1 br label %.preheader.i, !llvm.loop !41 -77: ; preds = %.critedge.i.i.i.i - %78 = landingpad { ptr, i32 } +84: ; preds = %.critedge.i.i.i.i + %85 = landingpad { ptr, i32 } cleanup - br label %81 + br label %88 -79: ; preds = %62 - %80 = landingpad { ptr, i32 } +86: ; preds = %69 + %87 = landingpad { ptr, i32 } cleanup call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #19 - br label %81 + br label %88 -81: ; preds = %79, %77 - %.pn.i = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ] +88: ; preds = %86, %84 + %.pn.i = phi { ptr, i32 } [ %87, %79 ], [ %85, %77 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #19 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.body -_ZN4leanL10num_digitsENS_3natE.exit.loopexit: ; preds = %38, %_ZN4leanneERKNS_3natEj.exit.i +_ZN4leanL10num_digitsENS_3natE.exit.loopexit: ; preds = %45, %_ZN4leanneERKNS_3natEj.exit.i %.pre32 = phi ptr [ inttoptr (i64 1 to ptr), %38 ], [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i ] - %82 = zext nneg i32 %.05.i to i64 + %89 = zext nneg i32 %.05.i to i64 br label %_ZN4leanL10num_digitsENS_3natE.exit -_ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, %_ZN4leaneqERKNS_3natEj.exit.i, %30 - %83 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %30 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] - %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %30 ], [ %82, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] - %84 = ptrtoint ptr %83 to i64 - %85 = and i64 %84, 1 - %.not.i.i = icmp eq i64 %85, 0 - br i1 %.not.i.i, label %86, label %_ZN4lean10object_refD2Ev.exit +_ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, %_ZN4leaneqERKNS_3natEj.exit.i, %37 + %90 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %30 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %30 ], [ %89, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %91 = ptrtoint ptr %90 to i64 + %92 = and i64 %91, 1 + %.not.i.i = icmp eq i64 %92, 0 + br i1 %.not.i.i, label %93, label %_ZN4lean10object_refD2Ev.exit -86: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit - %87 = load i32, ptr %83, align 4, !tbaa !9 - %88 = icmp sgt i32 %87, 1 - br i1 %88, label %89, label %91, !prof !12 +93: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit + %94 = load i32, ptr %90, align 4, !tbaa !9 + %95 = icmp sgt i32 %94, 1 + br i1 %95, label %96, label %98, !prof !12 -89: ; preds = %86 - %90 = add nsw i32 %87, -1 - store i32 %90, ptr %83, align 4, !tbaa !9 +96: ; preds = %93 + %97 = add nsw i32 %94, -1 + store i32 %97, ptr %90, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit -91: ; preds = %86 - %.not.i.i.i20 = icmp eq i32 %87, 0 - br i1 %.not.i.i.i20, label %_ZN4lean10object_refD2Ev.exit, label %92 +98: ; preds = %93 + %.not.i.i.i20 = icmp eq i32 %94, 0 + br i1 %.not.i.i.i20, label %_ZN4lean10object_refD2Ev.exit, label %99 -92: ; preds = %91 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %83) - to label %_ZN4lean10object_refD2Ev.exit unwind label %93 +99: ; preds = %98 + invoke void @lean_dec_ref_cold(ptr noundef nonnull %90) + to label %_ZN4lean10object_refD2Ev.exit unwind label %100 -93: ; preds = %92 - %94 = landingpad { ptr, i32 } +100: ; preds = %99 + %101 = landingpad { ptr, i32 } catch ptr null - %95 = extractvalue { ptr, i32 } %94, 0 - tail call void @__clang_call_terminate(ptr %95) #20 + %102 = extractvalue { ptr, i32 } %101, 0 + tail call void @__clang_call_terminate(ptr %102) #20 unreachable -.body: ; preds = %33, %41, %81 - %eh.lpad-body = phi { ptr, i32 } [ %34, %33 ], [ %42, %41 ], [ %.pn.i, %81 ] +.body: ; preds = %40, %48, %88 + %eh.lpad-body = phi { ptr, i32 } [ %41, %33 ], [ %49, %41 ], [ %.pn.i, %81 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #19 resume { ptr, i32 } %eh.lpad-body -_ZN4lean10object_refD2Ev.exit: ; preds = %92, %91, %89, %_ZN4leanL10num_digitsENS_3natE.exit, %16, %18 - %.pn = phi i64 [ %.val.i.i, %16 ], [ %20, %18 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %89 ], [ %.06.i, %91 ], [ %.06.i, %92 ] +_ZN4lean10object_refD2Ev.exit: ; preds = %99, %98, %96, %_ZN4leanL10num_digitsENS_3natE.exit, %23, %25 + %.pn = phi i64 [ %.val.i.i, %16 ], [ %27, %18 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %89 ], [ %.06.i, %91 ], [ %.06.i, %92 ] %.1 = add i64 %.pn, %.016 - %96 = getelementptr inbounds nuw i8, ptr %.015, i64 8 - %97 = load ptr, ptr %96, align 8, !tbaa !26 - %98 = ptrtoint ptr %97 to i64 - %99 = and i64 %98, 1 - %.not21 = icmp eq i64 %99, 0 - br i1 %.not21, label %100, label %.loopexit - -100: ; preds = %_ZN4lean10object_refD2Ev.exit - %101 = add i64 %.1, 1 - br label %_ZN4lean4name4kindEP11lean_object.exit, !llvm.loop !42 + %103 = getelementptr inbounds nuw i8, ptr %.015, i64 8 + %104 = load ptr, ptr %103, align 8, !tbaa !26 + %105 = ptrtoint ptr %104 to i64 + %106 = and i64 %105, 1 + %.not21 = icmp eq i64 %106, 0 + br i1 %.not21, label %107, label %.loopexit + +107: ; preds = %_ZN4lean10object_refD2Ev.exit + %108 = add i64 %.1, 1 + br label %.preheader, !llvm.loop !42 .loopexit: ; preds = %_ZN4lean10object_refD2Ev.exit, %2 %.0 = phi i64 [ 11, %2 ], [ %.1, %_ZN4lean10object_refD2Ev.exit ] diff --git a/bench/libigl/optimized/cotmatrix.ll b/bench/libigl/optimized/cotmatrix.ll index d3da1570cdc..724b6e22236 100644 --- a/bench/libigl/optimized/cotmatrix.ll +++ b/bench/libigl/optimized/cotmatrix.ll @@ -789,9 +789,9 @@ _ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18sc %.sroa.0586.0.vec.insert.us = insertelement <2 x double> poison, double %225, i64 0 %.sroa.0586.8.vec.insert.us = insertelement <2 x double> %.sroa.0586.0.vec.insert.us, double %228, i64 1 %231 = fmul <2 x double> %.sroa.0595.8.vec.insert.us, %.sroa.0586.8.vec.insert.us - %shift2377 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> - %foldExtExtBinop2378 = fadd <2 x double> %231, %shift2377 - %232 = extractelement <2 x double> %foldExtExtBinop2378, i64 0 + %shift2392 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> + %foldExtExtBinop2393 = fadd <2 x double> %231, %shift2392 + %232 = extractelement <2 x double> %foldExtExtBinop2393, i64 0 %233 = fmul double %221, %230 %234 = fadd double %233, %232 %235 = mul nsw i64 %188, %.01721268.us @@ -985,9 +985,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL 320: ; preds = %314, %._crit_edge.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = phi <2 x double> [ %319, %314 ], [ %313, %._crit_edge.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i ] - %shift2380 = shufflevector <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, <2 x double> poison, <2 x i32> - %foldExtExtBinop2381 = fadd <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %shift2380 - %321 = extractelement <2 x double> %foldExtExtBinop2381, i64 0 + %shift2395 = shufflevector <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, <2 x double> poison, <2 x i32> + %foldExtExtBinop2396 = fadd <2 x double> %.072.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %shift2395 + %321 = extractelement <2 x double> %foldExtExtBinop2396, i64 0 br i1 %279, label %.lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdLi1ELi3ELi1ELi1ELi3EEEEENS2_INS_7ProductINS_9TransposeIKNS3_IdLin1ELi1ELi0ELin1ELi1EEEEENS_5BlockINS3_IdLin1ELi3ELi0ELin1ELi3EEELin1ELi3ELb0EEELi1EEEEENS0_9assign_opIddEELi0EE11assignCoeffEl.exit.us14.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i .lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %320, %.lr.ph85.i.i.i.i.i.us.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -1021,9 +1021,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL %333 = getelementptr inbounds double, ptr %268, i64 %332 %334 = load <2 x double>, ptr %333, align 1, !tbaa !92 %335 = fmul <2 x double> %331, %334 - %shift2383 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> - %foldExtExtBinop2384 = fadd <2 x double> %335, %shift2383 - %336 = extractelement <2 x double> %foldExtExtBinop2384, i64 0 + %shift2398 = shufflevector <2 x double> %335, <2 x double> poison, <2 x i32> + %foldExtExtBinop2399 = fadd <2 x double> %335, %shift2398 + %336 = extractelement <2 x double> %foldExtExtBinop2399, i64 0 br label %.lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i .lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph85.i.i.i.i.i.us17.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph85.i.i.i.i.i.preheader.us23.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -1052,9 +1052,9 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_6MatrixIdL %347 = getelementptr inbounds double, ptr %268, i64 %346 %348 = load <2 x double>, ptr %347, align 1, !tbaa !92 %349 = fmul <2 x double> %331, %348 - %shift2386 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> - %foldExtExtBinop2387 = fadd <2 x double> %349, %shift2386 - %350 = extractelement <2 x double> %foldExtExtBinop2387, i64 0 + %shift2401 = shufflevector <2 x double> %349, <2 x double> poison, <2 x i32> + %foldExtExtBinop2402 = fadd <2 x double> %349, %shift2401 + %350 = extractelement <2 x double> %foldExtExtBinop2402, i64 0 %351 = getelementptr inbounds nuw double, ptr %11, i64 %.07.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i store double %350, ptr %351, align 8, !tbaa !22 %352 = add nuw nsw i64 %.07.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, 1 diff --git a/bench/libigl/optimized/exact_geodesic.ll b/bench/libigl/optimized/exact_geodesic.ll index 45e327b6371..3bd129862f2 100644 --- a/bench/libigl/optimized/exact_geodesic.ll +++ b/bench/libigl/optimized/exact_geodesic.ll @@ -15345,7 +15345,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %62 -62: ; preds = %100, %.lr.ph.i21 +62: ; preds = %98, %.lr.ph.i21 %.sroa.0.018.i22 = phi ptr [ %.sroa.0.015.i19, %.lr.ph.i21 ], [ %.sroa.0.0.i31, %100 ] %.pn17.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.sroa.0.018.i22, %100 ] %63 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 16 @@ -15358,7 +15358,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %70 = icmp ult i32 %68, %69 %71 = icmp ult i32 %64, %65 %.0.i.i.i24 = select i1 %66, i1 %70, i1 %71 - br i1 %.0.i.i.i24, label %72, label %85 + br i1 %.0.i.i.i24, label %72, label %83 72: ; preds = %62 call void @llvm.lifetime.start.p0(ptr nonnull %3) @@ -15366,71 +15366,71 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H %73 = ptrtoint ptr %.sroa.0.018.i22 to i64 %74 = sub i64 %73, %6 %75 = icmp sgt i64 %74, 12 - br i1 %75, label %76, label %81, !prof !348 + br i1 %75, label %76, label %79, !prof !348 76: ; preds = %72 %77 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 24 - %78 = udiv exact i64 %74, 12 - %79 = sub nsw i64 0, %78 - %80 = getelementptr inbounds %"struct.igl::geodesic::HalfEdge", ptr %77, i64 %79 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %80, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %74, i1 false) + %.neg22.i38 = udiv exact i64 %74, 12 + %.neg22.neg.i39 = sub nsw i64 0, %.neg22.i38 + %78 = getelementptr inbounds %"struct.igl::geodesic::HalfEdge", ptr %77, i64 %.neg22.neg.i39 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %78, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %74, i1 false) br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -81: ; preds = %72 - %82 = icmp eq i64 %74, 12 - br i1 %82, label %83, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 +79: ; preds = %72 + %80 = icmp eq i64 %74, 12 + br i1 %80, label %81, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -83: ; preds = %81 - %84 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %0, i64 12, i1 false), !tbaa.struct !422 +81: ; preds = %79 + %82 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(12) %0, i64 12, i1 false), !tbaa.struct !422 br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37: ; preds = %83, %81, %76 +_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37: ; preds = %81, %79, %76 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %0, ptr noundef nonnull align 4 dereferenceable(12) %3, i64 12, i1 false), !tbaa.struct !422 call void @llvm.lifetime.end.p0(ptr nonnull %3) - br label %100 + br label %98 -85: ; preds = %62 +83: ; preds = %62 %.sroa.03.0.copyload.i.i25 = load i32, ptr %.sroa.0.018.i22, align 4, !tbaa !24 - %86 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 4 - %87 = load i32, ptr %86, align 4, !tbaa !429 - %88 = icmp eq i32 %64, %87 - %89 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 8 - %90 = load i32, ptr %89, align 4 - %91 = icmp ult i32 %68, %90 - %92 = icmp ult i32 %64, %87 - %.0.i.i12.i.i26 = select i1 %88, i1 %91, i1 %92 + %84 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 4 + %85 = load i32, ptr %84, align 4, !tbaa !429 + %86 = icmp eq i32 %64, %85 + %87 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 8 + %88 = load i32, ptr %87, align 4 + %89 = icmp ult i32 %68, %88 + %90 = icmp ult i32 %64, %85 + %.0.i.i12.i.i26 = select i1 %86, i1 %89, i1 %90 br i1 %.0.i.i12.i.i26, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27 -.lr.ph.i.i33: ; preds = %85, %.lr.ph.i.i33 +.lr.ph.i.i33: ; preds = %83, %.lr.ph.i.i33 %.sroa.09.013.i.i34 = phi ptr [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ], [ %.sroa.0.018.i22, %85 ] %.sroa.0.0.i.i35 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -12 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.09.013.i.i34, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.0.i.i35, i64 12, i1 false), !tbaa.struct !422 - %93 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -20 - %94 = load i32, ptr %93, align 4, !tbaa !429 - %95 = icmp eq i32 %64, %94 - %96 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -16 - %97 = load i32, ptr %96, align 4 - %98 = icmp ult i32 %68, %97 - %99 = icmp ult i32 %64, %94 - %.0.i.i.i.i36 = select i1 %95, i1 %98, i1 %99 + %91 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -20 + %92 = load i32, ptr %91, align 4, !tbaa !429 + %93 = icmp eq i32 %64, %92 + %94 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -16 + %95 = load i32, ptr %94, align 4 + %96 = icmp ult i32 %68, %95 + %97 = icmp ult i32 %64, %92 + %.0.i.i.i.i36 = select i1 %93, i1 %96, i1 %97 br i1 %.0.i.i.i.i36, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, !llvm.loop !473 -_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27: ; preds = %.lr.ph.i.i33, %85 +_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27: ; preds = %.lr.ph.i.i33, %83 %.sroa.09.0.lcssa.i.i28 = phi ptr [ %.sroa.0.018.i22, %85 ], [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ] store i32 %.sroa.03.0.copyload.i.i25, ptr %.sroa.09.0.lcssa.i.i28, align 4, !tbaa !24 %.sroa.4.0..sroa_idx5.i.i29 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.lcssa.i.i28, i64 4 store i32 %64, ptr %.sroa.4.0..sroa_idx5.i.i29, align 4, !tbaa !24 %.sroa.5.0..sroa_idx7.i.i30 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.lcssa.i.i28, i64 8 store i32 %68, ptr %.sroa.5.0..sroa_idx7.i.i30, align 4, !tbaa !24 - br label %100 + br label %98 -100: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 +98: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i37 %.sroa.0.0.i31 = getelementptr inbounds nuw i8, ptr %.sroa.0.018.i22, i64 12 %.not.i32 = icmp eq ptr %.sroa.0.0.i31, %1 br i1 %.not.i32, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit, label %62, !llvm.loop !474 -_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit: ; preds = %100, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i9, %.preheader.i18, %58, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit +_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit: ; preds = %98, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i9, %.preheader.i18, %58, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_.exit ret void } diff --git a/bench/libquic/optimized/s3_enc.ll b/bench/libquic/optimized/s3_enc.ll index 6bf440a7b40..70ca640dd97 100644 --- a/bench/libquic/optimized/s3_enc.ll +++ b/bench/libquic/optimized/s3_enc.ll @@ -249,24 +249,24 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt call void @llvm.lifetime.start.p0(ptr nonnull %15) call void @EVP_MD_CTX_init(ptr noundef nonnull %12) #6 call void @EVP_MD_CTX_init(ptr noundef nonnull %13) #6 - %.not47 = icmp eq i64 %2, 0 - br i1 %.not47, label %._crit_edge, label %.lr.ph + %.not49 = icmp eq i64 %2, 0 + br i1 %.not49, label %._crit_edge48, label %.lr.ph47 -.lr.ph: ; preds = %11 - %.not39 = icmp eq i64 %8, 0 - %.not40 = icmp eq i64 %10, 0 +.lr.ph47: ; preds = %11 + %.not38 = icmp eq i64 %8, 0 + %.not39 = icmp eq i64 %10, 0 br label %16 -16: ; preds = %.lr.ph, %46 - %.046 = phi i64 [ 0, %.lr.ph ], [ %17, %46 ] - %.03045 = phi i64 [ 0, %.lr.ph ], [ %39, %46 ] - %.03144 = phi i8 [ 65, %.lr.ph ], [ %18, %46 ] - %.03343 = phi ptr [ %1, %.lr.ph ], [ %47, %46 ] - %17 = add nuw nsw i64 %.046, 1 - %exitcond = icmp eq i64 %.046, 16 - br i1 %exitcond, label %21, label %.preheader.preheader +16: ; preds = %.lr.ph47, %46 + %.045 = phi i64 [ 0, %.lr.ph ], [ %17, %46 ] + %.03044 = phi i64 [ 0, %.lr.ph ], [ %39, %46 ] + %.03143 = phi i8 [ 65, %.lr.ph ], [ %18, %46 ] + %.03342 = phi ptr [ %1, %.lr.ph ], [ %47, %46 ] + %17 = add nuw nsw i64 %.045, 1 + %exitcond = icmp eq i64 %.045, 16 + br i1 %exitcond, label %21, label %18 -.preheader.preheader: ; preds = %16 +18: ; preds = %16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %14, i8 %.03144, i64 %17, i1 false), !tbaa !54 %18 = add nuw nsw i8 %.03144, 1 %19 = call ptr @EVP_sha1() #6 @@ -278,21 +278,21 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 68, ptr noundef nonnull @.str, i32 noundef 170) #6 br label %51 -22: ; preds = %.preheader.preheader +._crit_edge: ; preds = %18 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 6, ptr noundef nonnull @.str, i32 noundef 179) #6 br label %51 -23: ; preds = %.preheader.preheader +23: ; preds = %18 %24 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %17) #6 %25 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %3, i64 noundef %4) #6 - br i1 %.not39, label %28, label %26 + br i1 %.not38, label %28, label %26 26: ; preds = %23 %27 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %7, i64 noundef %8) #6 br label %28 28: ; preds = %26, %23 - br i1 %.not40, label %31, label %29 + br i1 %.not39, label %31, label %29 29: ; preds = %28 %30 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %9, i64 noundef %10) #6 @@ -302,8 +302,8 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt %32 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef null) #6 %33 = call ptr @EVP_md5() #6 %34 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %12, ptr noundef %33, ptr noundef null) #6 - %.not41 = icmp eq i32 %34, 0 - br i1 %.not41, label %35, label %36 + %.not40 = icmp eq i32 %34, 0 + br i1 %.not40, label %35, label %36 35: ; preds = %31 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 6, ptr noundef nonnull @.str, i32 noundef 194) #6 @@ -312,32 +312,32 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt 36: ; preds = %31 %37 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %12, ptr noundef %3, i64 noundef %4) #6 %38 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %12, ptr noundef nonnull %15, i64 noundef 20) #6 - %39 = add nuw nsw i64 %.03045, 16 + %39 = add nuw nsw i64 %.03044, 16 %40 = icmp ugt i64 %39, %2 br i1 %40, label %41, label %44 41: ; preds = %36 %42 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef null) #6 - %43 = sub i64 %2, %.03045 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.03343, ptr nonnull align 16 %15, i64 %43, i1 false) + %43 = sub i64 %2, %.03044 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.03342, ptr nonnull align 16 %15, i64 %43, i1 false) br label %46 44: ; preds = %36 - %45 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef %.03343, ptr noundef null) #6 + %45 = call i32 @EVP_DigestFinal_ex(ptr noundef nonnull %12, ptr noundef %.03342, ptr noundef null) #6 br label %46 46: ; preds = %44, %41 - %47 = getelementptr inbounds nuw i8, ptr %.03343, i64 16 + %47 = getelementptr inbounds nuw i8, ptr %.03342, i64 16 %48 = icmp ult i64 %39, %2 - br i1 %48, label %16, label %._crit_edge, !llvm.loop !55 + br i1 %48, label %16, label %._crit_edge48, !llvm.loop !55 -._crit_edge: ; preds = %46, %11 +._crit_edge48: ; preds = %46, %11 call void @OPENSSL_cleanse(ptr noundef nonnull %15, i64 noundef 20) #6 %49 = call i32 @EVP_MD_CTX_cleanup(ptr noundef nonnull %12) #6 %50 = call i32 @EVP_MD_CTX_cleanup(ptr noundef nonnull %13) #6 br label %51 -51: ; preds = %._crit_edge, %35, %22, %21 +51: ; preds = %._crit_edge48, %35, %22, %21 %.032 = phi i32 [ 0, %21 ], [ 0, %35 ], [ 0, %22 ], [ 1, %._crit_edge ] call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %14) diff --git a/bench/linux/optimized/scsi.ll b/bench/linux/optimized/scsi.ll index 04aacfeaa01..7abb2d18f06 100644 --- a/bench/linux/optimized/scsi.ll +++ b/bench/linux/optimized/scsi.ll @@ -2059,14 +2059,14 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext %10 = getelementptr inbounds nuw i8, ptr %3, i64 4 %11 = getelementptr inbounds nuw i8, ptr %0, i64 440 %12 = zext i8 %1 to i32 - %narrow8 = add nuw nsw i32 %4, 24 - %13 = zext nneg i32 %narrow8 to i64 + %narrow = add nuw nsw i32 %4, 24 + %13 = zext nneg i32 %narrow to i64 %14 = tail call noalias align 8 ptr @__kmalloc(i64 noundef %13, i32 noundef 3264) #18 %15 = icmp eq ptr %14, null br i1 %15, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %6, %42 - %16 = phi ptr [ %44, %42 ], [ %14, %6 ] + %16 = phi ptr [ %45, %42 ], [ %14, %6 ] %17 = phi i32 [ %37, %42 ], [ %4, %6 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %3, i8 0, i64 16, i1 false), !annotation !14 @@ -2110,7 +2110,7 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext %37 = add nuw nsw i32 %36, 4 call void @llvm.lifetime.end.p0(ptr nonnull %3) %38 = icmp samesign ugt i32 %37, %17 - br i1 %38, label %39, label %46 + br i1 %38, label %39, label %47 39: ; preds = %34 %40 = load i1, ptr @scsi_get_vpd_buf.__print_once, align 1 @@ -2125,18 +2125,18 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext call void @kfree(ptr noundef nonnull %16) #15 %narrow = add nuw nsw i32 %36, 28 %43 = zext nneg i32 %narrow to i64 - %44 = call noalias align 8 ptr @__kmalloc(i64 noundef %43, i32 noundef 3264) #18 - %45 = icmp eq ptr %44, null - br i1 %45, label %.loopexit, label %.lr.ph + %45 = call noalias align 8 ptr @__kmalloc(i64 noundef %43, i32 noundef 3264) #18 + %46 = icmp eq ptr %45, null + br i1 %46, label %.loopexit, label %.lr.ph -46: ; preds = %34 - %47 = getelementptr inbounds nuw i8, ptr %16, i64 16 - store i32 %37, ptr %47, align 8 +47: ; preds = %34 + %48 = getelementptr inbounds nuw i8, ptr %16, i64 16 + store i32 %37, ptr %48, align 8 br label %.loopexit -.loopexit: ; preds = %42, %6, %46, %.thread, %2 - %48 = phi ptr [ null, %.thread ], [ %16, %46 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] - ret ptr %48 +.loopexit: ; preds = %42, %6, %47, %.thread, %2 + %49 = phi ptr [ null, %.thread ], [ %16, %46 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] + ret ptr %49 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/APINotesReader.ll b/bench/llvm/optimized/APINotesReader.ll index c540dd53589..a95fa2091ab 100644 --- a/bench/llvm/optimized/APINotesReader.ll +++ b/bench/llvm/optimized/APINotesReader.ll @@ -16434,7 +16434,7 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %27, label %.lr.ph + br i1 %22, label %26, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 @@ -16446,24 +16446,24 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %26 = and i32 %23, %.sroa.032.0.extract.trunc37 br label %58 -27: ; preds = %16 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %29 = load i8, ptr %28, align 8 - %30 = and i8 %29, -2 - store i8 %30, ptr %28, align 8 +26: ; preds = %16 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %28 = load i8, ptr %27, align 8 + %29 = and i8 %28, -2 + store i8 %29, ptr %27, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !97 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %32 = and i32 %23, %.sroa.032.0.extract.trunc45 - %33 = shl i32 %32, %59 - %34 = or i32 %33, %60 - %35 = and i32 %.sroa.032.0.extract.trunc45, %20 - %36 = icmp eq i32 %35, 0 - br i1 %36, label %._crit_edge, label %40, !llvm.loop !969 - -._crit_edge: ; preds = %31 + %31 = and i32 %23, %.sroa.032.0.extract.trunc45 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 + %34 = and i32 %.sroa.032.0.extract.trunc45, %20 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %._crit_edge, label %39, !llvm.loop !969 + +._crit_edge: ; preds = %30 %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 %38 = load i8, ptr %37, align 8 @@ -16472,7 +16472,7 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 store i32 %34, ptr %0, align 8, !tbaa !97 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -40: ; preds = %31 +39: ; preds = %30 %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !969 @@ -16525,71 +16525,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %.lr.ph116, %40 +58: ; preds = %.lr.ph116, %39 %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.144") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %61 = load i8, ptr %24, align 8 - %62 = trunc i8 %61 to i1 - %63 = load i64, ptr %8, align 8, !tbaa !8 - br i1 %62, label %65, label %64 + %59 = load i8, ptr %24, align 8 + %60 = trunc i8 %59 to i1 + %61 = load i64, ptr %8, align 8, !tbaa !8 + br i1 %60, label %63, label %62 -64: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %63, 4294967295 +62: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %61, 4294967295 %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -65: ; preds = %58 +63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !91 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 - %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] - %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] %66 = trunc i8 %61 to i1 br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 -67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +67:; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i %68 = load ptr, ptr %8, align 8, !tbaa !91 %.not.i.i16 = icmp eq ptr %68, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 - %69 = load ptr, ptr %68, align 8, !tbaa !89 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 - %71 = load ptr, ptr %70, align 8 + %74 = load ptr, ptr %68, align 8, !tbaa !89 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %76 = load ptr, ptr %75, align 8 call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #19 br label %_ZN4llvm8ExpectedImED2Ev.exit19 _ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 + br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %73 = load i8, ptr %72, align 8 - %74 = or i8 %73, 1 - store i8 %74, ptr %72, align 8 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %78 = load i8, ptr %77, align 8 + %79 = or i8 %78, 1 + store i8 %79, ptr %77, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !91 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %75 = trunc i8 %.sroa.18.0 to i1 + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %76 = inttoptr i64 %.sroa.032.0 to ptr - %77 = load ptr, ptr %76, align 8, !tbaa !89 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 - %79 = load ptr, ptr %78, align 8 - call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #19 + %81 = inttoptr i64 %.sroa.032.0 to ptr + %82 = load ptr, ptr %81, align 8, !tbaa !89 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 + %84 = load ptr, ptr %83, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #19 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ASTReader.ll b/bench/llvm/optimized/ASTReader.ll index d01a9a5b4cb..2b2ae330900 100644 --- a/bench/llvm/optimized/ASTReader.ll +++ b/bench/llvm/optimized/ASTReader.ll @@ -147680,13 +147680,13 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %23 = add i32 %20, -1 %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 %25 = icmp ugt i32 %17, 31 - br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 + br i1 %25, label %._crit_edge.i.i.i.i, label %26 -.lr.ph116: ; preds = %.lr.ph +26: ; preds = %.lr.ph %26 = and i32 %23, %.sroa.032.0.extract.trunc37 br label %58 -27: ; preds = %16 +27:; preds = %16 %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 %29 = load i8, ptr %28, align 8 %30 = and i8 %29, -2 @@ -147694,16 +147694,16 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %32 = and i32 %23, %.sroa.032.0.extract.trunc45 - %33 = shl i32 %32, %59 - %34 = or i32 %33, %60 - %35 = and i32 %.sroa.032.0.extract.trunc45, %20 - %36 = icmp eq i32 %35, 0 - br i1 %36, label %._crit_edge, label %40, !llvm.loop !5767 - -._crit_edge: ; preds = %31 + %31 = and i32 %23, %.sroa.032.0.extract.trunc45 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 + %34 = and i32 %.sroa.032.0.extract.trunc45, %20 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %._crit_edge, label %39, !llvm.loop !5767 + +._crit_edge: ; preds = %30 %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 %38 = load i8, ptr %37, align 8 @@ -147712,12 +147712,12 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 store i32 %34, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -40: ; preds = %31 +39: ; preds = %30 %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !5767 + br i1 %42, label %._crit_edge.i.i.i.i, label %58, !llvm.loop !5767 -._crit_edge.i.i.i.i.loopexit: ; preds = %40 +._crit_edge.i.i.i.i: ; preds = %39 %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 br label %._crit_edge.i.i.i.i @@ -147765,71 +147765,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %.lr.ph116, %40 +58: ; preds = %26, %39 %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.3457") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %61 = load i8, ptr %24, align 8 - %62 = trunc i8 %61 to i1 - %63 = load i64, ptr %8, align 8, !tbaa !696 - br i1 %62, label %65, label %64 + %59 = load i8, ptr %24, align 8 + %60 = trunc i8 %59 to i1 + %61 = load i64, ptr %8, align 8, !tbaa !696 + br i1 %60, label %63, label %62 -64: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %63, 4294967295 +62: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %61, 4294967295 %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -65: ; preds = %58 +63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !1435 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 - %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] - %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] %66 = trunc i8 %61 to i1 br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 -67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %68 = load ptr, ptr %8, align 8, !tbaa !1435 - %.not.i.i16 = icmp eq ptr %68, null +72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %73 = load ptr, ptr %8, align 8, !tbaa !1435 + %.not.i.i16 = icmp eq ptr %73, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 - %69 = load ptr, ptr %68, align 8, !tbaa !8 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 - %71 = load ptr, ptr %70, align 8 - call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #39 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 + %74 = load ptr, ptr %73, align 8, !tbaa !8 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %76 = load ptr, ptr %75, align 8 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %73) #39 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 + br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %73 = load i8, ptr %72, align 8 - %74 = or i8 %73, 1 - store i8 %74, ptr %72, align 8 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %78 = load i8, ptr %77, align 8 + %79 = or i8 %78, 1 + store i8 %79, ptr %77, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !1435 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %75 = trunc i8 %.sroa.18.0 to i1 + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %76 = inttoptr i64 %.sroa.032.0 to ptr - %77 = load ptr, ptr %76, align 8, !tbaa !8 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 - %79 = load ptr, ptr %78, align 8 - call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #39 + %81 = inttoptr i64 %.sroa.032.0 to ptr + %82 = load ptr, ptr %81, align 8, !tbaa !8 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 + %84 = load ptr, ptr %83, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #39 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/GlobalModuleIndex.ll b/bench/llvm/optimized/GlobalModuleIndex.ll index 799b718b50c..bdca0d1280d 100644 --- a/bench/llvm/optimized/GlobalModuleIndex.ll +++ b/bench/llvm/optimized/GlobalModuleIndex.ll @@ -7811,7 +7811,7 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %27, label %.lr.ph + br i1 %22, label %26, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 @@ -7823,24 +7823,24 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %26 = and i32 %23, %.sroa.032.0.extract.trunc37 br label %58 -27: ; preds = %16 - %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %29 = load i8, ptr %28, align 8 - %30 = and i8 %29, -2 - store i8 %30, ptr %28, align 8 +26: ; preds = %16 + %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %28 = load i8, ptr %27, align 8 + %29 = and i8 %28, -2 + store i8 %29, ptr %27, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !36 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -31: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 +30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 - %32 = and i32 %23, %.sroa.032.0.extract.trunc45 - %33 = shl i32 %32, %59 - %34 = or i32 %33, %60 - %35 = and i32 %.sroa.032.0.extract.trunc45, %20 - %36 = icmp eq i32 %35, 0 - br i1 %36, label %._crit_edge, label %40, !llvm.loop !630 - -._crit_edge: ; preds = %31 + %31 = and i32 %23, %.sroa.032.0.extract.trunc45 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 + %34 = and i32 %.sroa.032.0.extract.trunc45, %20 + %35 = icmp eq i32 %34, 0 + br i1 %35, label %._crit_edge, label %39, !llvm.loop !630 + +._crit_edge: ; preds = %30 %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 %38 = load i8, ptr %37, align 8 @@ -7849,7 +7849,7 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 store i32 %34, ptr %0, align 8, !tbaa !36 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -40: ; preds = %31 +39: ; preds = %30 %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !630 @@ -7902,71 +7902,71 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %.lr.ph116, %40 +58: ; preds = %.lr.ph116, %39 %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.39") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %61 = load i8, ptr %24, align 8 - %62 = trunc i8 %61 to i1 - %63 = load i64, ptr %8, align 8, !tbaa !51 - br i1 %62, label %65, label %64 + %59 = load i8, ptr %24, align 8 + %60 = trunc i8 %59 to i1 + %61 = load i64, ptr %8, align 8, !tbaa !51 + br i1 %60, label %63, label %62 -64: ; preds = %58 - %.sroa.0.0.insert.ext = and i64 %63, 4294967295 +62: ; preds = %58 + %.sroa.0.0.insert.ext = and i64 %61, 4294967295 %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -65: ; preds = %58 +63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !37 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %64 - %.sroa.0.3 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] - %.sroa.0.1 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] %66 = trunc i8 %61 to i1 br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 -67: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %68 = load ptr, ptr %8, align 8, !tbaa !37 - %.not.i.i16 = icmp eq ptr %68, null +72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %73 = load ptr, ptr %8, align 8, !tbaa !37 + %.not.i.i16 = icmp eq ptr %73, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 - %69 = load ptr, ptr %68, align 8, !tbaa !42 - %70 = getelementptr inbounds nuw i8, ptr %69, i64 8 - %71 = load ptr, ptr %70, align 8 - call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #27 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 + %74 = load ptr, ptr %73, align 8, !tbaa !42 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 + %76 = load ptr, ptr %75, align 8 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %73) #27 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %62, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %31 + br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %73 = load i8, ptr %72, align 8 - %74 = or i8 %73, 1 - store i8 %74, ptr %72, align 8 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %78 = load i8, ptr %77, align 8 + %79 = or i8 %78, 1 + store i8 %79, ptr %77, align 8 store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !37 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %27 ], [ %61, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] - %75 = trunc i8 %.sroa.18.0 to i1 + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 - %or.cond.not = select i1 %75, i1 %.not.i.i21, i1 false + %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false br i1 %or.cond.not, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit - %76 = inttoptr i64 %.sroa.032.0 to ptr - %77 = load ptr, ptr %76, align 8, !tbaa !42 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 8 - %79 = load ptr, ptr %78, align 8 - call void %79(ptr noundef nonnull align 8 dereferenceable(8) %76) #27 + %81 = inttoptr i64 %.sroa.032.0 to ptr + %82 = load ptr, ptr %81, align 8, !tbaa !42 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 + %84 = load ptr, ptr %83, align 8 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #27 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ItaniumMangle.ll b/bench/llvm/optimized/ItaniumMangle.ll index 6700519f3bb..dee39466c5d 100644 --- a/bench/llvm/optimized/ItaniumMangle.ll +++ b/bench/llvm/optimized/ItaniumMangle.ll @@ -42916,7 +42916,7 @@ define internal fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePr 10: ; preds = %2 %11 = ptrtoint ptr %9 to i64 call fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePrefixEN5clang10GlobalDeclEb(ptr noundef nonnull align 8 dereferenceable(280) %0, i64 %11, i1 noundef zeroext false) - br label %93 + br label %94 12: ; preds = %2 %13 = call noundef ptr @_ZNK5clang12TemplateName26getAsDependentTemplateNameEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #30 @@ -42948,12 +42948,12 @@ define internal fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePr store i64 %25, ptr %7, align 8 %26 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEm(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, i64 noundef %25) call void @llvm.lifetime.end.p0(ptr nonnull %7) - br i1 %26, label %93, label %28 + br i1 %26, label %94, label %28 _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit: ; preds = %19 %27 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEPKN5clang9NamedDeclE(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, ptr noundef nonnull %20) call void @llvm.lifetime.end.p0(ptr nonnull %7) - br i1 %27, label %93, label %28 + br i1 %27, label %94, label %28 28: ; preds = %21, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %12 %29 = getelementptr inbounds nuw i8, ptr %13, i64 8 @@ -42987,20 +42987,20 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi store i64 %40, ptr %6, align 8 %41 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEm(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, i64 noundef %40) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %41, label %93, label %43 + br i1 %41, label %94, label %43 _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24: ; preds = %34 %42 = call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEPKN5clang9NamedDeclE(ptr noundef nonnull readonly align 8 dereferenceable(280) %0, ptr noundef nonnull %35) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %42, label %93, label %43 + br i1 %42, label %94, label %43 43: ; preds = %36, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24, %33 %44 = getelementptr inbounds nuw i8, ptr %13, i64 16 %45 = load ptr, ptr %44, align 8 %.not18 = icmp eq ptr %45, null - br i1 %.not18, label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit, label %46 + br i1 %.not18, label %71, label %46 -46: ; preds = %43 +47: ; preds = %43 %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val20 = load ptr, ptr %47, align 8 %48 = getelementptr inbounds nuw i8, ptr %45, i64 16 @@ -43022,11 +43022,11 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi %64 = icmp ugt i64 %56, %63 br i1 %64, label %65, label %67 -65: ; preds = %46 +65: ; preds = %47 %66 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEPKcm(ptr noundef nonnull align 8 dereferenceable(48) %52, ptr noundef nonnull %54, i64 noundef %56) #30 br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit -67: ; preds = %46 +67: ; preds = %47 %.not.i.i = icmp eq i64 %56, 0 br i1 %.not.i.i, label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit, label %68 @@ -43037,56 +43037,56 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi store ptr %70, ptr %59, align 8, !tbaa !529 br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit -_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit: ; preds = %43, %68, %67, %65 +71: ; preds = %43, %68, %67, %65 %.sroa.0.0.copyload = load i64, ptr %8, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 %.sroa.0.0.copyload, ptr %5, align 8 - %71 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEb(ptr noundef nonnull align 8 dereferenceable(8) %5, i1 noundef zeroext false) #30 - %.not.not.i25 = icmp eq ptr %71, null - br i1 %.not.not.i25, label %83, label %72 + %72 = call noundef ptr @_ZNK5clang12TemplateName17getAsTemplateDeclEb(ptr noundef nonnull align 8 dereferenceable(8) %5, i1 noundef zeroext false) #30 + %.not.not.i25 = icmp eq ptr %72, null + br i1 %.not.not.i25, label %84, label %73 -72: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - %73 = load ptr, ptr %71, align 8, !tbaa !22 - %74 = getelementptr inbounds nuw i8, ptr %73, i64 32 - %75 = load ptr, ptr %74, align 8 - %76 = call noundef ptr %75(ptr noundef nonnull align 8 dereferenceable(33) %71) #30 - %77 = ptrtoint ptr %76 to i64 +73: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit + %74 = load ptr, ptr %72, align 8, !tbaa !22 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %76 = load ptr, ptr %75, align 8 + %77 = call noundef ptr %75(ptr noundef nonnull align 8 dereferenceable(33) %72) #30 + %78 = ptrtoint ptr %77 to i64 call void @llvm.lifetime.start.p0(ptr nonnull %4) - store i64 %77, ptr %4, align 8, !tbaa !105 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %79 = load i32, ptr %78, align 8, !tbaa !542 - %80 = add i32 %79, 1 - store i32 %80, ptr %78, align 8, !tbaa !542 - %81 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %81, ptr noundef nonnull align 8 dereferenceable(8) %4) - store i32 %79, ptr %82, align 4, !tbaa !487 + store i64 %78, ptr %4, align 8, !tbaa !105 + %79 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %80 = load i32, ptr %79, align 8, !tbaa !542 + %81 = add i32 %80, 1 + store i32 %81, ptr %79, align 8, !tbaa !542 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %82, ptr noundef nonnull align 8 dereferenceable(8) %4) + store i32 %80, ptr %83, align 4, !tbaa !487 call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit -83: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - %84 = load ptr, ptr %0, align 8, !tbaa !541 - %85 = getelementptr inbounds nuw i8, ptr %84, i64 8 - %86 = load ptr, ptr %85, align 8, !tbaa !128 +84: ; preds = %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit + %85 = load ptr, ptr %0, align 8, !tbaa !541 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 8 + %87 = load ptr, ptr %86, align 8, !tbaa !128 %.sroa.0.0.copyload.i26 = load i64, ptr %5, align 8 - %87 = call i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameENS_12TemplateNameEb(ptr noundef nonnull align 8 dereferenceable(23216) %86, i64 %.sroa.0.0.copyload.i26, i1 noundef zeroext false) #30 - store i64 %87, ptr %5, align 8 + %88 = call i64 @_ZNK5clang10ASTContext24getCanonicalTemplateNameENS_12TemplateNameEb(ptr noundef nonnull align 8 dereferenceable(23216) %87, i64 %.sroa.0.0.copyload.i26, i1 noundef zeroext false) #30 + store i64 %88, ptr %5, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) - store i64 %87, ptr %3, align 8, !tbaa !105 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %89 = load i32, ptr %88, align 8, !tbaa !542 - %90 = add i32 %89, 1 - store i32 %90, ptr %88, align 8, !tbaa !542 - %91 = getelementptr inbounds nuw i8, ptr %0, i64 232 - %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(8) %3) - store i32 %89, ptr %92, align 4, !tbaa !487 + store i64 %88, ptr %3, align 8, !tbaa !105 + %89 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %90 = load i32, ptr %89, align 8, !tbaa !542 + %91 = add i32 %90, 1 + store i32 %91, ptr %89, align 8, !tbaa !542 + %92 = getelementptr inbounds nuw i8, ptr %0, i64 232 + %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapImjNS_12DenseMapInfoImvEENS_6detail12DenseMapPairImjEEEEmjS3_S6_EixERKm(ptr noundef nonnull align 1 dereferenceable(1) %92, ptr noundef nonnull align 8 dereferenceable(8) %3) + store i32 %90, ptr %93, align 4, !tbaa !487 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit -_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit: ; preds = %72, %83 +_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit: ; preds = %73, %84 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %93 + br label %94 -93: ; preds = %36, %21, %10, %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24 +94: ; preds = %36, %21, %10, %_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit, %_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exit24 ret void } diff --git a/bench/llvm/optimized/RegAllocGreedy.ll b/bench/llvm/optimized/RegAllocGreedy.ll index 76c0dd42d5c..98d526f47e8 100644 --- a/bench/llvm/optimized/RegAllocGreedy.ll +++ b/bench/llvm/optimized/RegAllocGreedy.ll @@ -3432,30 +3432,30 @@ define hidden i32 @_ZN4llvm8RAGreedy9tryAssignERKNS_12LiveIntervalERNS_15Allocat %10 = sub nsw i32 0, %9 %11 = getelementptr inbounds nuw i8, ptr %2, i64 72 %12 = load i32, ptr %11, align 8, !tbaa !267 - %.not98128 = icmp eq i32 %12, %10 - br i1 %.not98128, label %.critedge42, label %.lr.ph131 + %.not100130 = icmp eq i32 %12, %10 + br i1 %.not100130, label %.critedge42, label %.lr.ph133 -.lr.ph131: ; preds = %5 +.lr.ph133: ; preds = %5 %13 = getelementptr inbounds nuw i8, ptr %0, i64 96 %14 = getelementptr inbounds nuw i8, ptr %2, i64 56 br label %15 -15: ; preds = %.lr.ph131, %_ZN4llvm15AllocationOrder8IteratorppEv.exit - %.sroa.076.0130 = phi i32 [ 0, %.lr.ph131 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] - %.sroa.8.0129 = phi i32 [ %10, %.lr.ph131 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] - %.not = icmp eq i32 %.sroa.076.0130, 0 +15: ; preds = %.lr.ph133, %_ZN4llvm15AllocationOrder8IteratorppEv.exit + %.sroa.076.0132 = phi i32 [ 0, %.lr.ph131 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.sroa.8.0131 = phi i32 [ %10, %.lr.ph131 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.not = icmp eq i32 %.sroa.076.0132, 0 br i1 %.not, label %16, label %.critedge.thread 16: ; preds = %15 %17 = load ptr, ptr %13, align 8, !tbaa !192 - %18 = icmp slt i32 %.sroa.8.0129, 0 + %18 = icmp slt i32 %.sroa.8.0131, 0 br i1 %18, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread _ZNK4llvm15AllocationOrder8IteratordeEv.exit: ; preds = %16 %19 = load ptr, ptr %2, align 8, !tbaa !270 %20 = load i64, ptr %7, align 8, !tbaa !266 %21 = getelementptr inbounds nuw i16, ptr %19, i64 %20 - %22 = sext i32 %.sroa.8.0129 to i64 + %22 = sext i32 %.sroa.8.0131 to i64 %23 = getelementptr inbounds i16, ptr %21, i64 %22 %.sroa.0.0.in.i = load i16, ptr %23, align 2, !tbaa !271 %.sroa.0.0.i = zext i16 %.sroa.0.0.in.i to i32 @@ -3464,7 +3464,7 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit: ; preds = %16 br i1 %.not35, label %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50, label %35 _ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread: ; preds = %16 - %25 = zext nneg i32 %.sroa.8.0129 to i64 + %25 = zext nneg i32 %.sroa.8.0131 to i64 %26 = load ptr, ptr %14, align 8, !tbaa !272 %27 = getelementptr inbounds nuw i16, ptr %26, i64 %25 %.sroa.0.0.in.i84 = load i16, ptr %27, align 2, !tbaa !271 @@ -3492,9 +3492,9 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati 35: ; preds = %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit54 %.sroa.076.1 = phi i32 [ %.sroa.0.0.i53, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit54 ], [ 0, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit ], [ 0, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit.thread ] %36 = load i32, ptr %11, align 8, !tbaa !267 - %37 = icmp slt i32 %.sroa.8.0129, %36 + %37 = icmp slt i32 %.sroa.8.0131, %36 %38 = zext i1 %37 to i32 - %spec.select = add nsw i32 %.sroa.8.0129, %38 + %spec.select = add nsw i32 %.sroa.8.0131, %38 %39 = icmp sgt i32 %spec.select, -1 %40 = icmp slt i32 %spec.select, %36 %or.cond13.i = and i1 %39, %40 @@ -3505,8 +3505,8 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati %42 = zext nneg i32 %spec.select to i64 %43 = getelementptr inbounds nuw i16, ptr %41, i64 %42 %44 = load i16, ptr %43, align 2, !tbaa !271 - %.not.i115 = icmp eq i16 %44, 0 - br i1 %.not.i115, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %.lr.ph + %.not.i117 = icmp eq i16 %44, 0 + br i1 %.not.i117, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %.lr.ph .lr.ph: ; preds = %.lr.ph.i %45 = load ptr, ptr %2, align 8, !tbaa !270 @@ -3526,8 +3526,8 @@ _ZNK4llvm15AllocationOrder8IteratordeEv.exit54: ; preds = %_ZNK4llvm15Allocati ._crit_edge.i.i.i.i.i.i.us: ; preds = %53, %.lr.ph.split.us %52 = phi i16 [ %44, %.lr.ph.split.us ], [ %55, %53 ] - %indvars.iv.i118.us = phi i64 [ %42, %.lr.ph.split.us ], [ %indvars.iv.next.i.us, %53 ] - %.sroa.8.2116.us = phi i32 [ %spec.select, %.lr.ph.split.us ], [ %66, %53 ] + %indvars.iv.i120.us = phi i64 [ %42, %.lr.ph.split.us ], [ %indvars.iv.next.i.us, %53 ] + %.sroa.8.2118.us = phi i32 [ %spec.select, %.lr.ph.split.us ], [ %66, %53 ] switch i64 %46, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit [ i64 3, label %56 i64 2, label %._crit_edge._crit_edge.i.i.i.i.i.i.us @@ -3567,7 +3567,7 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us: ; preds = %._crit_edg br i1 %.not4.i.us, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %65 65: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us - %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i118.us, 1 + %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i120.us, 1 %66 = trunc nuw i64 %indvars.iv.next.i.us to i32 %67 = icmp sgt i32 %36, %66 br i1 %67, label %53, label %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, !llvm.loop !273 @@ -3584,8 +3584,8 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us: ; preds = %._crit_edg .lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.split, %69 %72 = phi i16 [ %44, %.lr.ph.split ], [ %71, %69 ] - %indvars.iv.i118 = phi i64 [ %42, %.lr.ph.split ], [ %indvars.iv.next.i, %69 ] - %.sroa.8.2116 = phi i32 [ %spec.select, %.lr.ph.split ], [ %105, %69 ] + %indvars.iv.i120 = phi i64 [ %42, %.lr.ph.split ], [ %indvars.iv.next.i, %69 ] + %.sroa.8.2118 = phi i32 [ %spec.select, %.lr.ph.split ], [ %105, %69 ] br label %73 73: ; preds = %88, %.lr.ph.i.i.i.i.i.i @@ -3666,7 +3666,7 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i: ; preds = %73, %_ZNK4llv br i1 %.not4.i, label %_ZN4llvm15AllocationOrder8IteratorppEv.exit, label %104 104: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i - %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i118, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i120, 1 %105 = trunc nuw i64 %indvars.iv.next.i to i32 %106 = icmp sgt i32 %36, %105 br i1 %106, label %69, label %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, !llvm.loop !273 @@ -3678,16 +3678,16 @@ default.unreachable: ; preds = %._crit_edge.loopexi unreachable _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i, %._crit_edge._crit_edge52.i.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i.i, %69, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us, %._crit_edge.i.i.i.i.i.i.us, %53, %.lr.ph.i, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge, %35 - %.sroa.8.3 = phi i32 [ %spec.select, %35 ], [ %36, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge ], [ %spec.select, %.lr.ph.i ], [ %.sroa.8.2116.us, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us ], [ %.sroa.8.2116.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us ], [ %spec.select, %._crit_edge.i.i.i.i.i.i.us ], [ %66, %53 ], [ %.sroa.8.2116, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i ], [ %.sroa.8.2116, %._crit_edge._crit_edge52.i.i.i.i.i.i ], [ %.sroa.8.2116, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %105, %69 ] - %.not98 = icmp eq i32 %.sroa.8.3, %12 - br i1 %.not98, label %.critedge, label %15, !llvm.loop !275 + %.sroa.8.3 = phi i32 [ %spec.select, %35 ], [ %36, %._ZN4llvm15AllocationOrder8IteratorppEv.exit.loopexit_crit_edge ], [ %spec.select, %.lr.ph.i ], [ %.sroa.8.2118.us, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i.us ], [ %.sroa.8.2118.us, %._crit_edge._crit_edge52.i.i.i.i.i.i.us ], [ %spec.select, %._crit_edge.i.i.i.i.i.i.us ], [ %66, %53 ], [ %.sroa.8.2118, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.i ], [ %.sroa.8.2118, %._crit_edge._crit_edge52.i.i.i.i.i.i ], [ %.sroa.8.2118, %._crit_edge.loopexit.i.i.i.i.i.i ], [ %105, %69 ] + %.not100 = icmp eq i32 %.sroa.8.3, %12 + br i1 %.not100, label %.critedge, label %15, !llvm.loop !275 .critedge: ; preds = %_ZN4llvm15AllocationOrder8IteratorppEv.exit - %.not99 = icmp eq i32 %.sroa.076.1, 0 - br i1 %.not99, label %.critedge42, label %.critedge.thread + %.not101 = icmp eq i32 %.sroa.076.1, 0 + br i1 %.not101, label %.critedge42, label %.critedge.thread .critedge.thread: ; preds = %15, %.critedge - %.sroa.076.0104 = phi i32 [ %.sroa.076.1, %.critedge ], [ %.sroa.076.0130, %15 ] + %.sroa.076.0106 = phi i32 [ %.sroa.076.1, %.critedge ], [ %.sroa.076.0132, %15 ] %107 = getelementptr inbounds nuw i8, ptr %0, i64 72 %108 = load ptr, ptr %107, align 8, !tbaa !276 %109 = getelementptr inbounds nuw i8, ptr %1, i64 112 @@ -3696,7 +3696,7 @@ _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15Allocati %111 = getelementptr inbounds nuw i8, ptr %108, i64 240 %112 = load i32, ptr %111, align 8, !tbaa !26 %113 = icmp ugt i32 %112, %110 - br i1 %113, label %114, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 + br i1 %113, label %114, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 114: ; preds = %.critedge.thread %115 = getelementptr inbounds nuw i8, ptr %108, i64 232 @@ -3706,7 +3706,7 @@ _ZN4llvm15AllocationOrder8IteratorppEv.exit: ; preds = %_ZNK4llvm15Allocati %119 = getelementptr inbounds nuw i8, ptr %118, i64 16 %120 = load i32, ptr %119, align 8, !tbaa !26 %.not.i.i = icmp eq i32 %120, 0 - br i1 %.not.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + br i1 %.not.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %114 %121 = getelementptr inbounds nuw i8, ptr %118, i64 8 @@ -3716,8 +3716,8 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre %.not.i56 = icmp eq i32 %124, 0 %125 = add i32 %123, -1 %126 = icmp ult i32 %125, 1073741823 - %or.cond = select i1 %.not.i56, i1 %126, i1 false - br i1 %or.cond, label %127, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 + %or.cond99 = select i1 %.not.i56, i1 %126, i1 false + br i1 %or.cond99, label %127, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 127: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i %128 = load ptr, ptr %2, align 8, !tbaa !270 @@ -3807,7 +3807,7 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre %168 = load i16, ptr %.2.i.i.i.i.i, align 2, !tbaa !271 %169 = zext i16 %168 to i32 %170 = icmp eq i32 %123, %169 - br i1 %170, label %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 + br i1 %170, label %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit: ; preds = %147 %171 = getelementptr inbounds nuw i8, ptr %.02946.i.i.i.i.i, i64 6 @@ -3823,8 +3823,8 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195 _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit: ; preds = %133, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit193, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195, %157, %._crit_edge._crit_edge.i.i.i.i.i, %._crit_edge._crit_edge52.i.i.i.i.i %.028.i.i.i.i.i = phi ptr [ %.029.lcssa.i.i.i.i.i, %157 ], [ %.1.i.i.i.i.i, %._crit_edge._crit_edge.i.i.i.i.i ], [ %.2.i.i.i.i.i, %._crit_edge._crit_edge52.i.i.i.i.i ], [ %171, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit ], [ %172, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit193 ], [ %173, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit.loopexit.split.loop.exit195 ], [ %.02946.i.i.i.i.i, %133 ] - %.not100 = icmp eq ptr %.028.i.i.i.i.i, %130 - br i1 %.not100, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, label %174 + %.not103 = icmp eq ptr %.028.i.i.i.i.i, %130 + br i1 %.not103, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, label %174 174: ; preds = %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit %175 = getelementptr inbounds nuw i8, ptr %0, i64 920 @@ -3850,25 +3850,25 @@ _ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit: ; preds = %133, %_ZNK4llvm store ptr %1, ptr %6, align 8, !tbaa !181 %187 = call noundef zeroext i1 @_ZN4llvm9SetVectorIPKNS_12LiveIntervalENS_11SmallVectorIS3_Lj8EEENS_8DenseSetIS3_NS_12DenseMapInfoIS3_vEEEELj8EE6insertERKS3_(ptr noundef nonnull align 8 dereferenceable(104) %186, ptr noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %6) - br label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 + br label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 -_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89: ; preds = %114, %._crit_edge._crit_edge52.i.i.i.i.i, %._crit_edge.i.i.i.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %.critedge.thread, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, %185 +_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92: ; preds = %114, %._crit_edge._crit_edge52.i.i.i.i.i, %._crit_edge.i.i.i.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %.critedge.thread, %_ZNK4llvm15AllocationOrder6isHintENS_8RegisterE.exit, %185 %188 = getelementptr inbounds nuw i8, ptr %0, i64 29008 - %189 = zext nneg i32 %.sroa.076.0104 to i64 + %189 = zext nneg i32 %.sroa.076.0106 to i64 %190 = load ptr, ptr %188, align 8, !tbaa !279 %191 = getelementptr inbounds nuw i8, ptr %190, i64 %189 %192 = load i8, ptr %191, align 1, !tbaa !250 %.not37 = icmp eq i8 %192, 0 br i1 %.not37, label %.critedge42, label %193 -193: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 +193: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 %194 = call i32 @_ZN4llvm8RAGreedy8tryEvictERKNS_12LiveIntervalERNS_15AllocationOrderERNS_15SmallVectorImplINS_8RegisterEEEhRKNS_8SmallSetIS7_Lj16ESt4lessIS7_EEE(ptr noundef nonnull align 8 dereferenceable(29026) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(76) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, i8 noundef zeroext %192, ptr noundef nonnull align 1 %4) %.not38 = icmp eq i32 %194, 0 - %195 = select i1 %.not38, i32 %.sroa.076.0104, i32 %194 + %195 = select i1 %.not38, i32 %.sroa.076.0106, i32 %194 br label %.critedge42 -.critedge42: ; preds = %5, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89, %181, %182, %.critedge, %193, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 - %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0104, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 ], [ 0, %5 ] +.critedge42: ; preds = %5, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, %181, %182, %.critedge, %193, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 + %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0106, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 ], [ 0, %5 ] ret i32 %.sroa.082.0 } @@ -15088,19 +15088,19 @@ _ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit %.not.i.i92 = icmp eq i32 %87, 0 br i1 %.not.i.i92, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, label %88 -88: ; preds = %81 - %89 = getelementptr inbounds nuw i8, ptr %85, i64 8 - %90 = load ptr, ptr %89, align 8, !tbaa !25 - %91 = load i32, ptr %90, align 4, !tbaa !68 +_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %81 + %88 = getelementptr inbounds nuw i8, ptr %85, i64 8 + %89 = load ptr, ptr %88, align 8, !tbaa !25 + %90 = load i32, ptr %89, align 4, !tbaa !68 br label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i -_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %88, %81 +_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i:; preds = %88, %81 %.sroa.03.0.i.i = phi i32 [ %91, %88 ], [ 0, %81 ] %92 = load i32, ptr %85, align 4, !tbaa !68 %.not.i93 = icmp eq i32 %92, 0 - br i1 %.not.i93, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit, label %.critedge88 + br i1 %.not.i93, label %94, label %.critedge88 -_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i +94: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i %.not80 = icmp ne i32 %.sroa.03.0.i.i, 0 %93 = icmp ne i32 %.sroa.03.0.i.i, %73 %or.cond = and i1 %.not80, %93 @@ -15206,7 +15206,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %135 = getelementptr inbounds nuw i8, ptr %1, i64 8 %136 = load i32, ptr %135, align 8, !tbaa !26 %.not.i.i96 = icmp eq i32 %136, 0 - br i1 %.not.i.i96, label %.thread131, label %137 + br i1 %.not.i.i96, label %.thread132, label %137 137: ; preds = %.thread %138 = load i32, ptr %64, align 8, !tbaa !26 @@ -15217,24 +15217,24 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds 140: ; preds = %137 %141 = load i32, ptr %64, align 8, !tbaa !26 %.not82 = icmp eq i32 %141, %138 - br i1 %.not82, label %.thread131, label %.critedge88 + br i1 %.not82, label %.thread132, label %.critedge88 142: ; preds = %133 %143 = icmp samesign ugt i32 %70, 5 - br i1 %143, label %148, label %.thread131 + br i1 %143, label %148, label %.thread132 -.thread131: ; preds = %.thread, %140, %142 +.thread132: ; preds = %.thread, %140, %142 %144 = getelementptr inbounds nuw i8, ptr %1, i64 116 %145 = load float, ptr %144, align 4, !tbaa !831 %146 = load float, ptr @_ZN4llvm9huge_valfE, align 4, !tbaa !807 %147 = fcmp une float %145, %146 br i1 %147, label %150, label %148 -148: ; preds = %.thread131, %142 +148: ; preds = %.thread132, %142 %149 = call noundef i32 @_ZN4llvm8RAGreedy23tryLastChanceRecoloringERKNS_12LiveIntervalERNS_15AllocationOrderERNS_15SmallVectorImplINS_8RegisterEEERNS_8SmallSetIS7_Lj16ESt4lessIS7_EEERNS_11SmallVectorISt4pairIPS2_NS_10MCRegisterEELj8EEEj(ptr noundef nonnull align 8 dereferenceable(29026) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(76) %8, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef nonnull align 8 dereferenceable(144) %4, i32 noundef %5) br label %.critedge88 -150: ; preds = %.thread131 +150: ; preds = %.thread132 %151 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZL22EnableDeferredSpilling, i64 120), align 8, !tbaa !71, !range !56, !noundef !57 %152 = trunc nuw i8 %151 to i1 br i1 %152, label %162, label %153 @@ -15313,8 +15313,8 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %204 = extractvalue { ptr, i64 } %202, 1 %.idx = shl nuw nsw i64 %204, 2 %205 = getelementptr inbounds nuw i8, ptr %203, i64 %.idx - %.not83132 = icmp eq i64 %204, 0 - br i1 %.not83132, label %._crit_edge, label %.lr.ph + %.not83135 = icmp eq i64 %204, 0 + br i1 %.not83135, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %170 %206 = getelementptr inbounds nuw i8, ptr %0, i64 816 @@ -15333,20 +15333,20 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %216 = call { ptr, i64 } %215(ptr noundef nonnull align 8 dereferenceable(8) %212) #24 %217 = extractvalue { ptr, i64 } %216, 0 %218 = extractvalue { ptr, i64 } %216, 1 - %.idx139 = shl nuw nsw i64 %218, 2 - %219 = getelementptr inbounds nuw i8, ptr %217, i64 %.idx139 - %.not84134 = icmp eq i64 %218, 0 - br i1 %.not84134, label %._crit_edge138, label %.lr.ph137 + %.idx142 = shl nuw nsw i64 %218, 2 + %219 = getelementptr inbounds nuw i8, ptr %217, i64 %.idx142 + %.not84137 = icmp eq i64 %218, 0 + br i1 %.not84137, label %._crit_edge141, label %.lr.ph140 -.lr.ph137: ; preds = %._crit_edge +.lr.ph140: ; preds = %._crit_edge %220 = getelementptr inbounds nuw i8, ptr %0, i64 816 %221 = getelementptr inbounds nuw i8, ptr %13, i64 16 %222 = getelementptr inbounds nuw i8, ptr %13, i64 64 br label %238 223: ; preds = %.lr.ph, %223 - %.073133 = phi ptr [ %203, %.lr.ph ], [ %235, %223 ] - %.sroa.013.0.copyload = load i32, ptr %.073133, align 4, !tbaa !68 + %.073136 = phi ptr [ %203, %.lr.ph ], [ %235, %223 ] + %.sroa.013.0.copyload = load i32, ptr %.073136, align 4, !tbaa !68 %224 = load ptr, ptr %206, align 8, !tbaa !739 %225 = load ptr, ptr %207, align 8, !tbaa !728 %226 = load ptr, ptr %225, align 8, !tbaa !25 @@ -15359,18 +15359,18 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %233 = getelementptr inbounds nuw %"class.llvm::Register", ptr %226, i64 %231 %234 = load ptr, ptr %179, align 8, !tbaa !144 call void @_ZN4llvm18LiveDebugVariables13splitRegisterENS_8RegisterENS_8ArrayRefIS1_EERNS_13LiveIntervalsE(ptr noundef nonnull align 8 dereferenceable(8) %224, i32 %.sroa.013.0.copyload, ptr %233, i64 %232, ptr noundef nonnull align 8 dereferenceable(440) %234) #24 - %235 = getelementptr inbounds nuw i8, ptr %.073133, i64 4 + %235 = getelementptr inbounds nuw i8, ptr %.073136, i64 4 %.not83 = icmp eq ptr %235, %205 br i1 %.not83, label %._crit_edge, label %223 -._crit_edge138: ; preds = %238, %._crit_edge +._crit_edge141: ; preds = %238, %._crit_edge %236 = load i8, ptr @_ZN4llvm12RegAllocBase13VerifyEnabledE, align 1, !tbaa !81, !range !56, !noundef !57 %237 = trunc nuw i8 %236 to i1 br i1 %237, label %251, label %255 -238: ; preds = %.lr.ph137, %238 - %.074135 = phi ptr [ %217, %.lr.ph137 ], [ %250, %238 ] - %.sroa.04.0.copyload = load i32, ptr %.074135, align 4, !tbaa !68 +238: ; preds = %.lr.ph140, %238 + %.074138 = phi ptr [ %217, %.lr.ph137 ], [ %250, %238 ] + %.sroa.04.0.copyload = load i32, ptr %.074138, align 4, !tbaa !68 %239 = load ptr, ptr %220, align 8, !tbaa !739 %240 = load ptr, ptr %221, align 8, !tbaa !728 %241 = load ptr, ptr %240, align 8, !tbaa !25 @@ -15383,17 +15383,17 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds %248 = getelementptr inbounds nuw %"class.llvm::Register", ptr %241, i64 %246 %249 = load ptr, ptr %179, align 8, !tbaa !144 call void @_ZN4llvm18LiveDebugVariables13splitRegisterENS_8RegisterENS_8ArrayRefIS1_EERNS_13LiveIntervalsE(ptr noundef nonnull align 8 dereferenceable(8) %239, i32 %.sroa.04.0.copyload, ptr %248, i64 %247, ptr noundef nonnull align 8 dereferenceable(440) %249) #24 - %250 = getelementptr inbounds nuw i8, ptr %.074135, i64 4 + %250 = getelementptr inbounds nuw i8, ptr %.074138, i64 4 %.not84 = icmp eq ptr %250, %219 - br i1 %.not84, label %._crit_edge138, label %238 + br i1 %.not84, label %._crit_edge141, label %238 -251: ; preds = %._crit_edge138 +251: ; preds = %._crit_edge141 %252 = load ptr, ptr %177, align 8, !tbaa !325 %253 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN4llvm4errsEv() #24 %254 = call noundef zeroext i1 @_ZNK4llvm15MachineFunction6verifyEPNS_4PassEPKcPNS_11raw_ostreamEb(ptr noundef nonnull align 8 dereferenceable(1065) %252, ptr noundef nonnull %0, ptr noundef nonnull @.str.61, ptr noundef nonnull %253, i1 noundef zeroext true) #24 br label %255 -255: ; preds = %251, %._crit_edge138 +255: ; preds = %251, %._crit_edge141 call void @_ZN4llvm13LiveRangeEditD2Ev(ptr noundef nonnull align 8 dereferenceable(192) %13) #24 call void @llvm.lifetime.end.p0(ptr nonnull %13) %256 = load ptr, ptr %10, align 8, !tbaa !606 @@ -15408,7 +15408,7 @@ _ZN4llvm10TimeRegionD2Ev.exit: ; preds = %255, %257 call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %.critedge88 -.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 +.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %94, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 %.sroa.0121.1 = phi i32 [ 0, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %149, %148 ], [ 0, %61 ], [ %60, %59 ], [ %20, %56 ], [ %20, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit ], [ %20, %21 ], [ 0, %.critedge ], [ %73, %94 ], [ %73, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit ], [ 0, %140 ], [ %139, %137 ], [ 0, %_ZN4llvm10TimeRegionD2Ev.exit ], [ 0, %169 ], [ %20, %24 ], [ %73, %74 ], [ %73, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i ], [ %20, %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i ] %258 = load ptr, ptr %8, align 8, !tbaa !270 %259 = getelementptr inbounds nuw i8, ptr %8, i64 24 diff --git a/bench/llvm/optimized/SemaOverload.ll b/bench/llvm/optimized/SemaOverload.ll index c06a75560a7..aefe7bf9206 100644 --- a/bench/llvm/optimized/SemaOverload.ll +++ b/bench/llvm/optimized/SemaOverload.ll @@ -90999,7 +90999,7 @@ _ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit: ; preds = %7, %13, %2 %42 = and i64 %38, 7 br label %43 -43: ; preds = %.lr.ph, %51 +44: ; preds = %.lr.ph, %52 %indvars.iv = phi i64 [ %42, %.lr.ph ], [ %indvars.iv.next, %51 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %44 = trunc nuw nsw i64 %indvars.iv.next to i32 @@ -91008,21 +91008,21 @@ _ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit: ; preds = %7, %13, %2 %.not = icmp eq i64 %indvars.iv.next, %46 br i1 %.not, label %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit, label %51 -_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %43 - %47 = or i64 %.sroa.0.0.copyload.i, %indvars.iv.next +_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %44 + %48 = or i64 %.sroa.0.0.copyload.i, %indvars.iv.next call void @llvm.lifetime.start.p0(ptr nonnull %4) - %48 = load ptr, ptr %41, align 8, !tbaa !1912 - %49 = call i64 @_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23216) %48, i64 %47, ptr noundef %36) #30 - store i64 %49, ptr %4, align 8 - %50 = call noundef zeroext i1 @_ZN4llvm9SetVectorIN5clang8QualTypeENS_11SmallVectorIS2_Lj8EEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_vEEEELj8EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull align 8 dereferenceable(8) %4) + %49 = load ptr, ptr %41, align 8, !tbaa !1912 + %50 = call i64 @_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23216) %49, i64 %48, ptr noundef %36) #30 + store i64 %50, ptr %4, align 8 + %51 = call noundef zeroext i1 @_ZN4llvm9SetVectorIN5clang8QualTypeENS_11SmallVectorIS2_Lj8EEENS_8DenseSetIS2_NS_12DenseMapInfoIS2_vEEEELj8EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %51 + br label %52 -51: ; preds = %43, %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit +52: ; preds = %44, %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit %exitcond.not = icmp eq i64 %indvars.iv.next, 7 br i1 %exitcond.not, label %.loopexit, label %43, !llvm.loop !2293 -.loopexit: ; preds = %51, %34, %_ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit, %2 +.loopexit: ; preds = %52, %34, %_ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit, %2 ret void } diff --git a/bench/meshlab/optimized/filter_parametrization.ll b/bench/meshlab/optimized/filter_parametrization.ll index 1b458f4d795..598151c549c 100644 --- a/bench/meshlab/optimized/filter_parametrization.ll +++ b/bench/meshlab/optimized/filter_parametrization.ll @@ -3271,9 +3271,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %86 = getelementptr inbounds nuw i8, ptr %18, i64 8 %87 = getelementptr inbounds nuw i8, ptr %18, i64 16 %.not.i108 = icmp eq i64 %83, 0 - br i1 %.not.i108, label %.thread259, label %89 + br i1 %.not.i108, label %.thread261, label %89 -.thread259: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i +.thread261: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i store i64 %83, ptr %86, align 8 store i64 3, ptr %87, align 8 %88 = load ptr, ptr %11, align 8 @@ -3323,7 +3323,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %107 = icmp slt i64 %106, %101 br i1 %107, label %.lr.ph.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, !llvm.loop !30 -._crit_edge.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i, %.thread259, %98 +._crit_edge.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i, %.thread261, %98 %108 = phi i64 [ 0, %.thread259 ], [ %101, %98 ], [ %101, %.lr.ph.i.i.i.i.i ] %109 = phi ptr [ %88, %.thread259 ], [ %99, %98 ], [ %99, %.lr.ph.i.i.i.i.i ] %110 = phi ptr [ null, %.thread259 ], [ %.sink.i, %98 ], [ %.sink.i, %.lr.ph.i.i.i.i.i ] @@ -3601,7 +3601,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %226 = getelementptr inbounds nuw i8, ptr %20, i64 8 %227 = load i64, ptr %226, align 8 %228 = icmp sgt i64 %227, 3074457345618258602 - br i1 %228, label %.invoke262, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 + br i1 %228, label %.invoke264, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 229: ; preds = %219 %230 = landingpad { ptr, i32 } @@ -3613,9 +3613,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %232 = getelementptr inbounds nuw i8, ptr %28, i64 8 %233 = getelementptr inbounds nuw i8, ptr %28, i64 16 %.not.i138 = icmp eq i64 %227, 0 - br i1 %.not.i138, label %.thread260, label %235 + br i1 %.not.i138, label %.thread262, label %235 -.thread260: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 +.thread262: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i96 store i64 %227, ptr %232, align 8 store i64 3, ptr %233, align 8 %234 = load ptr, ptr %20, align 8 @@ -3627,21 +3627,21 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi 237: ; preds = %235 %238 = icmp samesign ugt i64 %231, 2305843009213693951 - br i1 %238, label %.invoke262, label %239 + br i1 %238, label %.invoke264, label %239 239: ; preds = %237 %240 = mul i64 %227, 24 %241 = call noalias ptr @malloc(i64 noundef %240) #43 %242 = icmp eq ptr %241, null - br i1 %242, label %.invoke262, label %244 + br i1 %242, label %.invoke264, label %244 -.invoke262: ; preds = %239, %237, %.sink.split.i117 +.invoke264: ; preds = %239, %237, %.sink.split.i117 %243 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %243, align 8 invoke void @__cxa_throw(ptr nonnull %243, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 to label %.cont263 unwind label %262 -.cont263: ; preds = %.invoke262 +.cont265: ; preds = %.invoke264 unreachable 244: ; preds = %235, %239 @@ -3665,7 +3665,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %253 = icmp slt i64 %252, %247 br i1 %253, label %.lr.ph.i.i.i.i.i132, label %._crit_edge.i.i.i.i.i128, !llvm.loop !30 -._crit_edge.i.i.i.i.i128: ; preds = %.lr.ph.i.i.i.i.i132, %.thread260, %244 +._crit_edge.i.i.i.i.i128: ; preds = %.lr.ph.i.i.i.i.i132, %.thread262, %244 %254 = phi i64 [ 0, %.thread260 ], [ %247, %244 ], [ %247, %.lr.ph.i.i.i.i.i132 ] %255 = phi ptr [ %234, %.thread260 ], [ %245, %244 ], [ %245, %.lr.ph.i.i.i.i.i132 ] %256 = phi ptr [ null, %.thread260 ], [ %.sink.i140, %244 ], [ %.sink.i140, %.lr.ph.i.i.i.i.i132 ] @@ -3682,7 +3682,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %exitcond.not.i.i.i.i.i.i131 = icmp eq i64 %261, %231 br i1 %exitcond.not.i.i.i.i.i.i131, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101, label %.lr.ph.i.i.i.i.i.i129, !llvm.loop !31 -262: ; preds = %.invoke262 +262: ; preds = %.invoke264 %263 = landingpad { ptr, i32 } cleanup br label %.body99 @@ -3692,16 +3692,16 @@ _ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERK %264 = getelementptr inbounds nuw i8, ptr %22, i64 8 %265 = load i64, ptr %264, align 8 %266 = icmp sgt i64 %265, 3074457345618258602 - br i1 %266, label %.invoke264, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i + br i1 %266, label %.invoke266, label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i: ; preds = %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 %267 = mul nsw i64 %265, 3 %268 = getelementptr inbounds nuw i8, ptr %29, i64 8 %269 = getelementptr inbounds nuw i8, ptr %29, i64 16 %.not.i158 = icmp eq i64 %265, 0 - br i1 %.not.i158, label %.thread261, label %271 + br i1 %.not.i158, label %.thread263, label %271 -.thread261: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i +.thread263: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exit.i.i.i store i64 %265, ptr %268, align 8 store i64 3, ptr %269, align 8 %270 = load ptr, ptr %22, align 8 @@ -3713,21 +3713,21 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi 273: ; preds = %271 %274 = icmp samesign ugt i64 %267, 4611686018427387903 - br i1 %274, label %.invoke264, label %275 + br i1 %274, label %.invoke266, label %275 275: ; preds = %273 %276 = mul i64 %265, 12 %277 = call noalias ptr @malloc(i64 noundef %276) #43 %278 = icmp eq ptr %277, null - br i1 %278, label %.invoke264, label %280 + br i1 %278, label %.invoke266, label %280 -.invoke264: ; preds = %275, %273, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 +.invoke266: ; preds = %275, %273, %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 %279 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %279, align 8 invoke void @__cxa_throw(ptr nonnull %279, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 to label %.cont265 unwind label %298 -.cont265: ; preds = %.invoke264 +.cont267: ; preds = %.invoke266 unreachable 280: ; preds = %271, %275 @@ -3751,7 +3751,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %289 = icmp slt i64 %288, %283 br i1 %289, label %.lr.ph.i.i.i.i.i153, label %._crit_edge.i.i.i.i.i149, !llvm.loop !38 -._crit_edge.i.i.i.i.i149: ; preds = %.lr.ph.i.i.i.i.i153, %.thread261, %280 +._crit_edge.i.i.i.i.i149: ; preds = %.lr.ph.i.i.i.i.i153, %.thread263, %280 %290 = phi i64 [ 0, %.thread261 ], [ %283, %280 ], [ %283, %.lr.ph.i.i.i.i.i153 ] %291 = phi ptr [ %270, %.thread261 ], [ %281, %280 ], [ %281, %.lr.ph.i.i.i.i.i153 ] %292 = phi ptr [ null, %.thread261 ], [ %.sink.i160, %280 ], [ %.sink.i160, %.lr.ph.i.i.i.i.i153 ] @@ -3768,7 +3768,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %exitcond.not.i.i.i.i.i.i152 = icmp eq i64 %297, %267 br i1 %exitcond.not.i.i.i.i.i.i152, label %_ZN5Eigen6MatrixIiLin1ELin1ELi0ELin1ELin1EEC2INS0_IiLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit, label %.lr.ph.i.i.i.i.i.i150, !llvm.loop !39 -298: ; preds = %.invoke264 +298: ; preds = %.invoke266 %299 = landingpad { ptr, i32 } cleanup br label %.body103 diff --git a/bench/oiio/optimized/exrinput_c.ll b/bench/oiio/optimized/exrinput_c.ll index 8fdf5613910..17d9c7430ac 100644 --- a/bench/oiio/optimized/exrinput_c.ll +++ b/bench/oiio/optimized/exrinput_c.ll @@ -10056,7 +10056,7 @@ define hidden noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16rea 16: ; preds = %7 tail call void @_ZNK11OpenImageIO6v3_1_010ImageInput8errorfmtIJEEEvPKcDpRKT_(ptr noundef nonnull align 8 dereferenceable(184) %0, ptr noundef nonnull @.str.87) - br label %151 + br label %152 17: ; preds = %7 %18 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput9init_partEii(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %1, i32 noundef %2) @@ -10084,7 +10084,7 @@ define hidden noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16rea %35 = add nsw i32 %22, %4 %36 = load i32, ptr %23, align 4, !tbaa !303 %37 = call noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %34, i32 noundef %4, i32 noundef %35, i32 poison, i32 poison, i32 noundef 0, i32 noundef %36, ptr noundef %6, i64 noundef %25, i64 noundef %27) - br label %150 + br label %151 38: ; preds = %17 %39 = sub nsw i32 %4, %30 @@ -10134,7 +10134,7 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh 63: ; preds = %48, %38 %64 = landingpad { ptr, i32 } cleanup - br label %149 + br label %150 .critedge: ; preds = %46, %51 %65 = add nsw i32 %20, %3 @@ -10150,12 +10150,12 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh 71: ; preds = %.critedge %72 = landingpad { ptr, i32 } cleanup - br label %149 + br label %150 ._crit_edge: ; preds = %.loopexit, %.preheader %73 = load ptr, ptr %14, align 8, !tbaa !138 %74 = invoke i32 @exr_decoding_choose_default_routines(ptr noundef %73, i32 noundef %1, ptr noundef nonnull %11) - to label %127 unwind label %134 + to label %127 unwind label %135 _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph, %.loopexit %indvars.iv153 = phi i64 [ 0, %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph ], [ %indvars.iv.next154, %.loopexit ] @@ -10224,53 +10224,53 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread: ; preds = %_ZNK1 .lr.ph.split.us.preheader: ; preds = %.lr.ph.thread, %.lr.ph %110 = phi ptr [ %107, %.lr.ph.thread ], [ %108, %.lr.ph ] %.in = phi i16 [ %105, %.lr.ph.thread ], [ %103, %.lr.ph ] - %wide.trip.count151 = zext nneg i16 %.in to i64 + %111 = zext nneg i16 %.in to i64 br label %.lr.ph.split.us -.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %114 +.lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %115 %indvars.iv148 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next149, %114 ] - %111 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %110, i64 %indvars.iv148 - %112 = load ptr, ptr %111, align 8, !tbaa !344 - %.not.i.us = icmp eq ptr %112, null + %112 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %110, i64 %indvars.iv148 + %113 = load ptr, ptr %112, align 8, !tbaa !344 + %.not.i.us = icmp eq ptr %113, null br i1 %.not.i.us, label %.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us: ; preds = %.lr.ph.split.us - %char0 = load i8, ptr %112, align 1 - %113 = icmp eq i8 %char0, 0 - br i1 %113, label %.thread, label %114 + %char0 = load i8, ptr %113, align 1 + %114 = icmp eq i8 %char0, 0 + br i1 %114, label %.thread, label %115 -114: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us +115: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 - %exitcond152.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count151 + %exitcond152.not = icmp eq i64 %indvars.iv.next149, %111 br i1 %exitcond152.not, label %.loopexit, label %.lr.ph.split.us, !llvm.loop !346 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread %indvars.iv = phi i64 [ 0, %.lr.ph.split.preheader ], [ %indvars.iv.next, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] - %115 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %108, i64 %indvars.iv - %116 = load ptr, ptr %115, align 8, !tbaa !344 - %.not.i = icmp eq ptr %116, null + %116 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %108, i64 %indvars.iv + %117 = load ptr, ptr %116, align 8, !tbaa !344 + %.not.i = icmp eq ptr %117, null br i1 %.not.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit: ; preds = %.lr.ph.split - %117 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %116) #29 - %118 = icmp eq i64 %102, %117 - br i1 %118, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread + %118 = call noundef i64 @strlen(ptr noundef nonnull dereferenceable(1) %117) #29 + %119 = icmp eq i64 %102, %118 + br i1 %119, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit - %bcmp.i = call i32 @bcmp(ptr %99, ptr nonnull %116, i64 %102) + %bcmp.i = call i32 @bcmp(ptr %99, ptr nonnull %117, i64 %102) %.not.i.i = icmp eq i32 %bcmp.i, 0 br i1 %.not.i.i, label %.thread, label %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread .thread: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %.lr.ph.split.us, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us - %.us-phi = phi ptr [ %111, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us ], [ %111, %.lr.ph.split.us ], [ %115, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ] - %119 = getelementptr inbounds nuw i8, ptr %6, i64 %.098140 - %120 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 - store ptr %119, ptr %120, align 8, !tbaa !67 - %121 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 - store i32 %61, ptr %121, align 8, !tbaa !347 - %122 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 36 - store i32 %62, ptr %122, align 4, !tbaa !348 - %123 = add i64 %90, %.098140 + %.us-phi = phi ptr [ %112, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.us ], [ %112, %.lr.ph.split.us ], [ %116, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i ] + %120 = getelementptr inbounds nuw i8, ptr %6, i64 %.098140 + %121 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 40 + store ptr %120, ptr %121, align 8, !tbaa !67 + %122 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 32 + store i32 %61, ptr %122, align 8, !tbaa !347 + %123 = getelementptr inbounds nuw i8, ptr %.us-phi, i64 36 + store i32 %62, ptr %123, align 4, !tbaa !348 + %124 = add i64 %90, %.098140 br label %.loopexit _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread: ; preds = %.lr.ph.split, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit @@ -10278,68 +10278,68 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !346 -.loopexit: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, %114, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit, %.thread - %.2100 = phi i64 [ %123, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %114 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] +.loopexit: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, %115, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit, %.thread + %.2100 = phi i64 [ %124, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %114 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1 - %124 = load i32, ptr %23, align 4, !tbaa !303 - %125 = sext i32 %124 to i64 - %126 = icmp slt i64 %indvars.iv.next154, %125 - br i1 %126, label %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit, label %._crit_edge, !llvm.loop !349 + %125 = load i32, ptr %23, align 4, !tbaa !303 + %126 = sext i32 %125 to i64 + %127 = icmp slt i64 %indvars.iv.next154, %126 + br i1 %127, label %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit, label %._crit_edge, !llvm.loop !349 -127: ; preds = %._crit_edge - %128 = icmp eq i32 %74, 0 - br i1 %128, label %129, label %.critedge116 +128: ; preds = %._crit_edge + %129 = icmp eq i32 %74, 0 + br i1 %129, label %130, label %.critedge116 -129: ; preds = %127 - %130 = load ptr, ptr %14, align 8, !tbaa !138 - %131 = invoke i32 @exr_decoding_run(ptr noundef %130, i32 noundef %1, ptr noundef nonnull %11) - to label %132 unwind label %134 +130: ; preds = %128 + %131 = load ptr, ptr %14, align 8, !tbaa !138 + %132 = invoke i32 @exr_decoding_run(ptr noundef %131, i32 noundef %1, ptr noundef nonnull %11) + to label %132 unwind label %135 -132: ; preds = %129 - %133 = icmp eq i32 %131, 0 - br i1 %133, label %144, label %.critedge116 +133: ; preds = %130 + %134 = icmp eq i32 %132, 0 + br i1 %134, label %145, label %.critedge116 -134: ; preds = %129, %._crit_edge - %135 = landingpad { ptr, i32 } +135: ; preds = %130, %._crit_edge + %136 = landingpad { ptr, i32 } cleanup - br label %149 - -.critedge116: ; preds = %127, %132 - %136 = add nsw i32 %20, %3 - %137 = load i32, ptr %8, align 4, !tbaa !202 - %.sroa.speculated122 = call i32 @llvm.smin.i32(i32 %136, i32 %137) - %138 = add nsw i32 %22, %4 - %139 = load i32, ptr %9, align 4, !tbaa !202 - %.sroa.speculated = call i32 @llvm.smin.i32(i32 %138, i32 %139) - %140 = load i32, ptr %23, align 4, !tbaa !303 - %141 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated122, i32 noundef %4, i32 noundef %.sroa.speculated, i32 poison, i32 poison, i32 noundef 0, i32 noundef %140, ptr noundef %6, i64 noundef %25, i64 noundef %27) - to label %144 unwind label %142 + br label %150 -142: ; preds = %.critedge116 - %143 = landingpad { ptr, i32 } +.critedge116: ; preds = %128, %133 + %137 = add nsw i32 %20, %3 + %138 = load i32, ptr %8, align 4, !tbaa !202 + %.sroa.speculated122 = call i32 @llvm.smin.i32(i32 %137, i32 %138) + %139 = add nsw i32 %22, %4 + %140 = load i32, ptr %9, align 4, !tbaa !202 + %.sroa.speculated = call i32 @llvm.smin.i32(i32 %139, i32 %140) + %141 = load i32, ptr %23, align 4, !tbaa !303 + %142 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated122, i32 noundef %4, i32 noundef %.sroa.speculated, i32 poison, i32 poison, i32 noundef 0, i32 noundef %141, ptr noundef %6, i64 noundef %25, i64 noundef %27) + to label %144 unwind label %143 + +143: ; preds = %.critedge116 + %144 = landingpad { ptr, i32 } cleanup - br label %149 + br label %150 -144: ; preds = %.critedge116, %.critedge, %132 - %.2 = phi i1 [ true, %132 ], [ %70, %.critedge ], [ %141, %.critedge116 ] - %145 = invoke i32 @exr_decoding_destroy(ptr noundef %43, ptr noundef nonnull %11) - to label %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit unwind label %146 +145: ; preds = %.critedge116, %.critedge, %133 + %.2 = phi i1 [ true, %132 ], [ %70, %.critedge ], [ %142, %.critedge116 ] + %146 = invoke i32 @exr_decoding_destroy(ptr noundef %43, ptr noundef nonnull %11) + to label %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit unwind label %147 -146: ; preds = %144 - %147 = landingpad { ptr, i32 } +147: ; preds = %145 + %148 = landingpad { ptr, i32 } catch ptr null - %148 = extractvalue { ptr, i32 } %147, 0 - call void @__clang_call_terminate(ptr %148) #31 + %149 = extractvalue { ptr, i32 } %148, 0 + call void @__clang_call_terminate(ptr %149) #31 unreachable -_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = %144 +_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = %145 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) call void @llvm.lifetime.end.p0(ptr nonnull %10) - br label %150 + br label %151 -149: ; preds = %134, %142, %71, %63 - %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %143, %142 ], [ %135, %134 ] +150: ; preds = %135, %143, %71, %63 + %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %144, %142 ], [ %136, %134 ] call void @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #29 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) @@ -10348,13 +10348,13 @@ _ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = call void @llvm.lifetime.end.p0(ptr nonnull %8) resume { ptr, i32 } %.pn113 -150: ; preds = %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit, %33 +151: ; preds = %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit, %33 %.1 = phi i1 [ %37, %33 ], [ %.2, %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %151 + br label %152 -151: ; preds = %150, %16 +152: ; preds = %151, %16 %.0 = phi i1 [ %.1, %150 ], [ false, %16 ] ret i1 %.0 } diff --git a/bench/openjdk/optimized/check_classname.ll b/bench/openjdk/optimized/check_classname.ll index d594ddca90a..3b0066fa7d4 100644 --- a/bench/openjdk/optimized/check_classname.ll +++ b/bench/openjdk/optimized/check_classname.ll @@ -5,94 +5,94 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nofree norecurse nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable define hidden zeroext range(i8 0, 2) i8 @verifyClassname(ptr noundef %0, i8 noundef zeroext %1) local_unnamed_addr #0 { - %3 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #4 + %3 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #5 %4 = trunc i64 %3 to i32 %.not = icmp eq i32 %4, 0 - br i1 %.not, label %29, label %5 + br i1 %.not, label %31, label %5 5: ; preds = %2 %6 = load i8, ptr %0, align 1 %7 = icmp eq i8 %6, 91 - br i1 %7, label %8, label %29 + br i1 %7, label %8, label %31 8: ; preds = %5 %.not15 = icmp eq i8 %1, 0 - br i1 %.not15, label %37, label %.preheader + br i1 %.not15, label %39, label %.preheader -thread-pre-split: ; preds = %27 +9: ; preds = %27 %9 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 %10 = add nuw nsw i32 %.01531.i, 1 %.pr = load i8, ptr %9, align 1 br label %.preheader -.preheader: ; preds = %8, %thread-pre-split - %11 = phi i8 [ %.pr, %thread-pre-split ], [ 91, %8 ] - %.01531.i = phi i32 [ %10, %thread-pre-split ], [ 0, %8 ] +.preheader:; preds = %8, %9 + %.01630.i = phi i8 [ %.pr, %thread-pre-split ], [ 91, %8 ] + %.01829.i = phi i32 [ %10, %thread-pre-split ], [ 0, %8 ] %.01630.i = phi i32 [ %28, %thread-pre-split ], [ %4, %8 ] %.01829.i = phi ptr [ %9, %thread-pre-split ], [ %0, %8 ] switch i8 %11, label %skip_over_field_signature.exit [ i8 91, label %26 - i8 90, label %12 - i8 66, label %12 - i8 67, label %12 - i8 83, label %12 - i8 73, label %12 - i8 70, label %12 - i8 74, label %12 + i8 90, label %13 + i8 66, label %13 + i8 67, label %13 + i8 83, label %13 + i8 73, label %13 + i8 70, label %13 + i8 74, label %13 i8 68, label %12 i8 76, label %14 ] -12: ; preds = %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader - %13 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 +13: ; preds = %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader + %14 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 br label %skip_over_field_signature.exit -14: ; preds = %.preheader - %15 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 - %16 = add i32 %.01630.i, -1 - %17 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %15, i32 noundef %16) - %.not21.i = icmp ne ptr %17, null - %18 = ptrtoint ptr %17 to i64 - %19 = ptrtoint ptr %.01829.i to i64 - %20 = sub i64 %19, %18 - %21 = icmp slt i64 %20, -1 - %or.cond.i = and i1 %.not21.i, %21 - br i1 %or.cond.i, label %22, label %skip_over_field_signature.exit - -22: ; preds = %14 - %23 = load i8, ptr %17, align 1 - %24 = icmp eq i8 %23, 59 - %25 = getelementptr inbounds nuw i8, ptr %17, i64 1 - %spec.select.i = select i1 %24, ptr %25, ptr null +15: ; preds = %.preheader + %16 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 + %17 = add i32 %.01630.i, -1 + %18 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %16, i32 noundef %17) + %.not21.i = icmp ne ptr %18, null + %19 = ptrtoint ptr %18 to i64 + %20 = ptrtoint ptr %.01829.i to i64 + %21 = sub i64 %20, %19 + %22 = icmp slt i64 %21, -1 + %or.cond.i = and i1 %.not21.i, %22 + br i1 %or.cond.i, label %23, label %skip_over_field_signature.exit + +23: ; preds = %15 + %24 = load i8, ptr %18, align 1 + %25 = icmp eq i8 %24, 59 + %26 = getelementptr inbounds nuw i8, ptr %18, i64 1 + %spec.select.i = select i1 %25, ptr %26, ptr null br label %skip_over_field_signature.exit -26: ; preds = %.preheader +27: ; preds = %.preheader %exitcond.i = icmp eq i32 %.01531.i, 255 br i1 %exitcond.i, label %skip_over_field_signature.exit, label %27 -27: ; preds = %26 +27:; preds = %26 %28 = add i32 %.01630.i, -1 %.not.i = icmp eq i32 %28, 0 br i1 %.not.i, label %skip_over_field_signature.exit, label %thread-pre-split, !llvm.loop !6 -29: ; preds = %5, %2 - %30 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %0, i32 noundef %4) +31: ; preds = %5, %2 + %32 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %0, i32 noundef %4) br label %skip_over_field_signature.exit -skip_over_field_signature.exit: ; preds = %27, %26, %.preheader, %22, %14, %12, %29 - %.0 = phi ptr [ %30, %29 ], [ %13, %12 ], [ null, %14 ], [ %spec.select.i, %22 ], [ null, %.preheader ], [ null, %26 ], [ null, %27 ] +skip_over_field_signature.exit: ; preds = %27, %26, %.preheader, %23, %15, %13, %31 + %.0 = phi ptr [ %32, %29 ], [ %14, %12 ], [ null, %14 ], [ %spec.select.i, %22 ], [ null, %.preheader ], [ null, %26 ], [ null, %27 ] %.not16 = icmp ne ptr %.0, null - %31 = ptrtoint ptr %.0 to i64 - %32 = ptrtoint ptr %0 to i64 - %33 = sub i64 %31, %32 - %34 = and i64 %3, 4294967295 - %35 = icmp eq i64 %33, %34 - %narrow = select i1 %.not16, i1 %35, i1 false - %36 = zext i1 %narrow to i8 - br label %37 - -37: ; preds = %8, %skip_over_field_signature.exit - %.013 = phi i8 [ %36, %skip_over_field_signature.exit ], [ 0, %8 ] + %33 = ptrtoint ptr %.0 to i64 + %34 = ptrtoint ptr %0 to i64 + %35 = sub i64 %33, %34 + %36 = and i64 %3, 4294967295 + %37 = icmp eq i64 %35, %36 + %narrow = select i1 %.not16, i1 %37, i1 false + %38 = zext i1 %narrow to i8 + br label %39 + +39: ; preds = %8, %skip_over_field_signature.exit + %.013 = phi i8 [ %38, %skip_over_field_signature.exit ], [ 0, %8 ] ret i8 %.013 } diff --git a/bench/openjdk/optimized/hb-blob.ll b/bench/openjdk/optimized/hb-blob.ll index 54852b58b43..95e35c8da0a 100644 --- a/bench/openjdk/optimized/hb-blob.ll +++ b/bench/openjdk/optimized/hb-blob.ll @@ -810,13 +810,13 @@ define hidden noalias noundef ptr @hb_blob_create_from_file_or_fail(ptr noundef %11 = icmp samesign ugt i64 %.030, 268435456 br i1 %11, label %36, label %12 -12: ; preds = %10 +13: ; preds = %10 %13 = shl nuw nsw i64 %.030, 1 %14 = tail call ptr @realloc(ptr noundef %.132, i64 noundef %13) #24 %.not39 = icmp eq ptr %14, null br i1 %.not39, label %36, label %._crit_edge -._crit_edge: ; preds = %12 +._crit_edge: ; preds = %13 %.pre = sub i64 %13, %.029.ph br label %15 @@ -870,7 +870,7 @@ _ZL16hb_object_createI9hb_blob_tJEEPT_DpT0_.exit.thread.i: ; preds = %25, %21 store ptr @free, ptr %35, align 8 br label %hb_blob_create_or_fail.exit -36: ; preds = %15, %12, %10 +36: ; preds = %15, %13, %10 %.3 = phi ptr [ %.132, %10 ], [ %.132, %12 ], [ %.2, %15 ] %37 = tail call i32 @fclose(ptr noundef nonnull %4) br label %38 diff --git a/bench/openjdk/optimized/hb-ot-layout.ll b/bench/openjdk/optimized/hb-ot-layout.ll index cf5791442f4..be8ca3c4734 100644 --- a/bench/openjdk/optimized/hb-ot-layout.ll +++ b/bench/openjdk/optimized/hb-ot-layout.ll @@ -40261,8 +40261,8 @@ _ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i: ; preds = %17, %.lr.ph.i.i.i.i 28: ; preds = %29, %_ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %29 ], [ 8, %_ZNK13hb_bit_page_t8is_emptyEv.exit.thread.i ] - %.not9.i.i = icmp eq i64 %indvars.iv.i.i, 0 - br i1 %.not9.i.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.i, label %29 + %.not10.i.i = icmp eq i64 %indvars.iv.i.i, 0 + br i1 %.not10.i.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.i, label %29 29: ; preds = %28 %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 @@ -40356,7 +40356,7 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable %73 = load ptr, ptr %72, align 8 %74 = zext i32 %69 to i64 %75 = getelementptr inbounds nuw %struct.hb_bit_page_t, ptr %73, i64 %74 - %.0.i17 = select i1 %.not.i, ptr %75, ptr @_hb_NullPool + %.0.i18 = select i1 %.not.i, ptr %75, ptr @_hb_NullPool %76 = and i32 %3, 511 %77 = icmp eq i32 %76, 0 br i1 %77, label %_ZNK13hb_bit_page_t8previousEPj.exit.thread, label %78 @@ -40366,37 +40366,37 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable %80 = lshr i32 %79, 6 %81 = and i32 %80, 7 %82 = and i32 %79, 63 - %.not.i18 = icmp eq i32 %82, 63 + %.not.i19 = icmp eq i32 %82, 63 %83 = add nuw nsw i32 %82, 1 %84 = zext nneg i32 %83 to i64 %notmask.i = shl nsw i64 -1, %84 %85 = xor i64 %notmask.i, -1 - %86 = select i1 %.not.i18, i64 -1, i64 %85 - %87 = getelementptr inbounds nuw i8, ptr %.0.i17, i64 8 + %86 = select i1 %.not.i19, i64 -1, i64 %85 + %87 = getelementptr inbounds nuw i8, ptr %.0.i18, i64 8 %88 = zext nneg i32 %81 to i64 %89 = getelementptr inbounds nuw i64, ptr %87, i64 %88 %90 = load i64, ptr %89, align 8 %91 = and i64 %90, %86 %.not2023.i = icmp eq i64 %91, 0 - br i1 %.not2023.i, label %.lr.ph.i19, label %96 + br i1 %.not2023.i, label %.lr.ph.i20, label %96 ._crit_edge.loopexit.i: ; preds = %94 - %92 = trunc nuw nsw i64 %indvars.iv.next.i21 to i32 + %92 = trunc nuw nsw i64 %indvars.iv.next.i22 to i32 br label %96 -.lr.ph.i19: ; preds = %78, %94 - %indvars.iv.i20 = phi i64 [ %indvars.iv.next.i21, %94 ], [ %88, %78 ] - %93 = icmp slt i64 %indvars.iv.i20, 1 +.lr.ph.i20: ; preds = %78, %94 + %indvars.iv.i21 = phi i64 [ %indvars.iv.next.i22, %94 ], [ %88, %78 ] + %93 = icmp slt i64 %indvars.iv.i21, 1 br i1 %93, label %_ZNK13hb_bit_page_t8previousEPj.exit.thread, label %94 -94: ; preds = %.lr.ph.i19 - %indvars.iv.next.i21 = add nsw i64 %indvars.iv.i20, -1 - %95 = getelementptr i64, ptr %.0.i17, i64 %indvars.iv.i20 +94: ; preds = %.lr.ph.i20 + %indvars.iv.next.i22 = add nsw i64 %indvars.iv.i21, -1 + %95 = getelementptr i64, ptr %.0.i18, i64 %indvars.iv.i21 %.pr.i = load i64, ptr %95, align 8 %.not20.i = icmp eq i64 %.pr.i, 0 - br i1 %.not20.i, label %.lr.ph.i19, label %._crit_edge.loopexit.i, !llvm.loop !266 + br i1 %.not20.i, label %.lr.ph.i20, label %._crit_edge.loopexit.i, !llvm.loop !266 -_ZNK13hb_bit_page_t8previousEPj.exit.thread: ; preds = %.lr.ph.i19, %67 +_ZNK13hb_bit_page_t8previousEPj.exit.thread: ; preds = %.lr.ph.i20, %67 store i32 -1, ptr %1, align 4 %.pre = load ptr, ptr %43, align 8 br label %_ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable_ifIXT0_EvE4typeELPv0EEEbRKT_Pj14hb_not_found_tj.exit._crit_edge @@ -40441,35 +40441,35 @@ _ZNK11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5bfindIS1_Lb1ETnPN12hb_enable br label %120 120: ; preds = %121, %113 - %indvars.iv.i22 = phi i64 [ %indvars.iv.next.i23, %121 ], [ 8, %113 ] - %.not9.i = icmp eq i64 %indvars.iv.i22, 0 - br i1 %.not9.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread, label %121 + %indvars.iv.i23 = phi i64 [ %indvars.iv.next.i24, %121 ], [ 8, %113 ] + %.not10.i = icmp eq i64 %indvars.iv.i23, 0 + br i1 %.not10.i, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread, label %121 121: ; preds = %120 - %indvars.iv.next.i23 = add nsw i64 %indvars.iv.i22, -1 - %122 = getelementptr i64, ptr %119, i64 %indvars.iv.i22 + %indvars.iv.next.i24 = add nsw i64 %indvars.iv.i23, -1 + %122 = getelementptr i64, ptr %119, i64 %indvars.iv.i23 %123 = load i64, ptr %122, align 8 - %.not.i24 = icmp eq i64 %123, 0 - br i1 %.not.i24, label %120, label %_ZNK13hb_bit_page_t7get_maxEv.exit, !llvm.loop !265 + %.not.i25 = icmp eq i64 %123, 0 + br i1 %.not.i25, label %120, label %_ZNK13hb_bit_page_t7get_maxEv.exit, !llvm.loop !265 _ZNK13hb_bit_page_t7get_maxEv.exit: ; preds = %121 - %124 = trunc nsw i64 %indvars.iv.next.i23 to i32 + %124 = trunc nsw i64 %indvars.iv.next.i24 to i32 %125 = shl i32 %124, 6 %126 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %123, i1 true) %127 = trunc nuw nsw i64 %126 to i32 %128 = or disjoint i32 %125, %127 %.not = icmp eq i32 %128, -64 - br i1 %.not, label %110, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36, !llvm.loop !267 + br i1 %.not, label %110, label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37, !llvm.loop !267 -_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36: ; preds = %_ZNK13hb_bit_page_t7get_maxEv.exit +_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37: ; preds = %_ZNK13hb_bit_page_t7get_maxEv.exit %129 = xor i32 %128, 63 br label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread -_ZNK13hb_bit_page_t7get_maxEv.exit.thread: ; preds = %120, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 - %.06.i34 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 ], [ 0, %120 ] +_ZNK13hb_bit_page_t7get_maxEv.exit.thread: ; preds = %120, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37 + %.06.i35 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 ], [ 0, %120 ] %130 = load i32, ptr %115, align 4 %131 = shl i32 %130, 9 - %132 = add i32 %131, %.06.i34 + %132 = add i32 %131, %.06.i35 store i32 %132, ptr %1, align 4 br label %134 diff --git a/bench/openssl/optimized/tls13encryptiontest.ll b/bench/openssl/optimized/tls13encryptiontest.ll index f0d6d475443..ecfa715a780 100644 --- a/bench/openssl/optimized/tls13encryptiontest.ll +++ b/bench/openssl/optimized/tls13encryptiontest.ll @@ -335,11 +335,11 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %.not46 = icmp eq i64 %7, 0 br i1 %.not46, label %8, label %.loopexit -8: ; preds = %3 +8:; preds = %3 %9 = add i64 %6, %.03652 %10 = add nuw nsw i64 %.03353, 1 - %exitcond.not = icmp eq i64 %10, 3 - br i1 %exitcond.not, label %11, label %3, !llvm.loop !42 + %.not46 = icmp eq i64 %10, 3 + br i1 %.not46, label %11, label %3, !llvm.loop !42 11: ; preds = %8 %12 = lshr exact i64 %9, 1 @@ -392,8 +392,8 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) ._crit_edge: ; preds = %28, %.preheader %.139.lcssa = phi i64 [ %.03857, %.preheader ], [ %32, %28 ] %38 = add nuw nsw i64 %.13458, 1 - %exitcond60.not = icmp eq i64 %38, 3 - br i1 %exitcond60.not, label %39, label %.preheader, !llvm.loop !45 + %exitcond61.not = icmp eq i64 %38, 3 + br i1 %exitcond61.not, label %39, label %.preheader, !llvm.loop !45 39: ; preds = %._crit_edge store i64 %12, ptr %1, align 8, !tbaa !21 diff --git a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll index 8e6f179ed14..c29a538aad2 100644 --- a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll +++ b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll @@ -324948,7 +324948,7 @@ define hidden void @_ZN10polars_ops5frame4join12merge_sorted19get_merge_indicato cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke146, %140, %124, %189, %151, %144, %94 +.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke147, %140, %124, %189, %151, %144, %94 %.sroa.01.1.ph.ph = phi i1 [ true, %189 ], [ false, %151 ], [ false, %144 ], [ true, %94 ], [ true, %124 ], [ true, %140 ], [ true, %.invoke146 ] %lpad.loopexit.split-lp85 = landingpad { ptr, i32 } cleanup @@ -324963,7 +324963,7 @@ define hidden void @_ZN10polars_ops5frame4join12merge_sorted19get_merge_indicato 99: ; preds = %94 %100 = load i128, ptr %15, align 16, !range !31843, !noundef !3 %.not = icmp eq i128 %100, 2 - br i1 %.not, label %.invoke146, label %101, !prof !331 + br i1 %.not, label %.invoke147, label %101, !prof !331 101: ; preds = %99 %102 = getelementptr inbounds nuw i8, ptr %15, i64 16 @@ -325045,14 +325045,14 @@ thread-pre-split: ; preds = %_ZN4core3cmp10Parti 128: ; preds = %thread-pre-split, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h52361581e7d50d83E.exit" %129 = phi i64 [ %.pr, %thread-pre-split ], [ %127, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h52361581e7d50d83E.exit" ] %.not9 = icmp eq i64 %129, 0 - br i1 %.not9, label %.invoke146, label %131, !prof !331 + br i1 %.not9, label %.invoke147, label %131, !prof !331 -.invoke146: ; preds = %128, %99 +.invoke147: ; preds = %128, %99 %130 = phi ptr [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.307, %99 ], [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.309, %128 ] invoke void @_ZN4core6option13unwrap_failed17h4c7f35545a6d0c7eE(ptr noalias noundef readonly align 8 dereferenceable(24) %130) #25 to label %.cont147 unwind label %.loopexit.split-lp.loopexit.split-lp -.cont147: ; preds = %.invoke146 +.cont148: ; preds = %.invoke147 unreachable 131: ; preds = %128 diff --git a/bench/postgres/optimized/fe-exec.ll b/bench/postgres/optimized/fe-exec.ll index 9a3dc309e92..7be301acde2 100644 --- a/bench/postgres/optimized/fe-exec.ll +++ b/bench/postgres/optimized/fe-exec.ll @@ -269,10 +269,10 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu br i1 %.not43, label %.preheader, label %25 .preheader: ; preds = %.preheader44 - %.not50 = icmp eq i64 %indvars.iv, 0 - br i1 %.not50, label %._crit_edge, label %.lr.ph + %.not49 = icmp eq i64 %indvars.iv, 0 + br i1 %.not49, label %._crit_edge, label %.lr.ph.preheader -.lr.ph: ; preds = %.preheader, %.lr.ph +.lr.ph.preheader: ; preds = %.preheader, %.lr.ph %indvars.iv54 = phi i64 [ %indvars.iv.next55, %.lr.ph ], [ %indvars.iv, %.preheader ] %indvars.iv.next55 = add nsw i64 %indvars.iv54, -1 %21 = getelementptr inbounds nuw %struct.PGEvent, ptr %8, i64 %indvars.iv.next55 diff --git a/bench/postgres/optimized/pl_gram.ll b/bench/postgres/optimized/pl_gram.ll index 5e1a4332dbf..4742103697b 100644 --- a/bench/postgres/optimized/pl_gram.ll +++ b/bench/postgres/optimized/pl_gram.ll @@ -5356,7 +5356,7 @@ define internal fastcc noundef ptr @read_into_scalar_list(ptr noundef %0, ptr no store i32 %10, ptr %8, align 16 %11 = tail call i32 @plpgsql_yylex(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5) #11 %12 = icmp eq i32 %11, 44 - br i1 %12, label %.lr.ph, label %._crit_edge + br i1 %12, label %.lr.ph, label %.lr.ph72.preheader .lr.ph: ; preds = %6 %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -5446,9 +5446,9 @@ NameOfDatum.exit: ; preds = %36, %38 ._crit_edge.loopexit: ; preds = %NameOfDatum.exit %53 = trunc nuw nsw i64 %indvars.iv.next to i32 - br label %._crit_edge + br label %.lr.ph72.preheader -._crit_edge: ; preds = %._crit_edge.loopexit, %6 +.lr.ph72.preheader: ; preds = %._crit_edge.loopexit, %6 %.0.lcssa = phi i32 [ 1, %6 ], [ %53, %._crit_edge.loopexit ] %.lcssa = phi i32 [ %11, %6 ], [ %46, %._crit_edge.loopexit ] tail call void @plpgsql_push_back_token(i32 noundef %.lcssa, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5) #11 @@ -5474,7 +5474,7 @@ NameOfDatum.exit: ; preds = %36, %38 store ptr %65, ptr %66, align 8 br label %67 -67: ; preds = %._crit_edge, %67 +67:; preds = %.lr.ph72.preheader, %67 %indvars.iv75 = phi i64 [ %60, %._crit_edge ], [ %indvars.iv.next76, %67 ] %indvars.iv.next76 = add nsw i64 %indvars.iv75, -1 %68 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv.next76 @@ -5490,7 +5490,7 @@ NameOfDatum.exit: ; preds = %36, %38 %76 = icmp samesign ugt i64 %indvars.iv75, 1 br i1 %76, label %67, label %77, !llvm.loop !17 -77: ; preds = %67 +77: ; preds = %67 tail call void @plpgsql_adddatum(ptr noundef nonnull %54) #11 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/qemu/optimized/fdt.ll b/bench/qemu/optimized/fdt.ll index e07c8f19d24..dea593690ef 100644 --- a/bench/qemu/optimized/fdt.ll +++ b/bench/qemu/optimized/fdt.ll @@ -923,8 +923,8 @@ fdt_check_node_offset_.exit.i: ; preds = %24 %44 = add i32 %43, %29 %45 = icmp ult i32 %44, %29 %46 = icmp ugt i32 %44, -5 - %or.cond43 = or i1 %45, %46 - br i1 %or.cond43, label %fdt_next_node.exit.thread, label %.lr.ph + %or.cond42 = or i1 %45, %46 + br i1 %or.cond42, label %fdt_next_node.exit.thread, label %.lr.ph .lr.ph: ; preds = %28 %47 = load i8, ptr %8, align 1 @@ -957,7 +957,7 @@ fdt_check_node_offset_.exit.i: ; preds = %24 72: ; preds = %.lr.ph, %.backedge.i %73 = phi i32 [ %44, %.lr.ph ], [ %153, %.backedge.i ] %74 = phi i32 [ %29, %.lr.ph ], [ %152, %.backedge.i ] - %.144 = phi i32 [ %.019, %.lr.ph ], [ %.2, %.backedge.i ] + %.143 = phi i32 [ %.019, %.lr.ph ], [ %.2, %.backedge.i ] %75 = add nuw i32 %73, 4 %76 = icmp ugt i32 %75, %60 br i1 %76, label %fdt_next_node.exit.thread, label %77 @@ -997,8 +997,8 @@ fdt_check_node_offset_.exit.i: ; preds = %24 %107 = zext i8 %106 to i32 %108 = or disjoint i32 %105, %107 %109 = icmp ugt i32 %93, %108 - %or.cond34 = or i1 %.not.i.old, %109 - br i1 %or.cond34, label %fdt_next_node.exit.thread, label %fdt_offset_ptr.exit13._crit_edge + %or.cond33 = or i1 %.not.i.old, %109 + br i1 %or.cond33, label %fdt_next_node.exit.thread, label %fdt_offset_ptr.exit13._crit_edge fdt_offset_ptr.exit13._crit_edge: ; preds = %77, %94 %110 = zext nneg i32 %74 to i64 @@ -1100,7 +1100,7 @@ fdt_next_tag.exit: ; preds = %.critedge.i ] .backedge.i: ; preds = %157, %fdt_next_tag.exit - %.2 = phi i32 [ %.144, %fdt_next_tag.exit ], [ %158, %157 ] + %.2 = phi i32 [ %.143, %fdt_next_tag.exit ], [ %158, %157 ] %153 = add i32 %43, %152 %154 = icmp slt i32 %151, 0 %155 = icmp ult i32 %153, %152 @@ -1110,18 +1110,18 @@ fdt_next_tag.exit: ; preds = %.critedge.i br i1 %or.cond, label %fdt_next_node.exit.thread, label %72, !llvm.loop !6 157: ; preds = %fdt_next_tag.exit - %158 = add i32 %.144, -1 + %158 = add i32 %.143, -1 %159 = icmp slt i32 %158, 0 br i1 %159, label %fdt_next_node.exit.thread, label %.backedge.i fdt_next_node.exit: ; preds = %fdt_next_tag.exit - %160 = icmp ugt i32 %.144, 2147483646 + %160 = icmp ugt i32 %.143, 2147483646 br i1 %160, label %fdt_next_node.exit.thread, label %161 161: ; preds = %fdt_next_node.exit - %162 = add nuw nsw i32 %.144, 1 - %.not33 = icmp eq i32 %.144, 0 - br i1 %.not33, label %fdt_next_node.exit.thread, label %20, !llvm.loop !7 + %162 = add nuw nsw i32 %.143, 1 + %.not49 = icmp eq i32 %.143, 0 + br i1 %.not49, label %fdt_next_node.exit.thread, label %20, !llvm.loop !7 fdt_next_node.exit.thread: ; preds = %fdt_check_node_offset_.exit.i, %161, %fdt_next_node.exit, %28, %157, %94, %72, %.backedge.i, %.critedge.i, %fdt_offset_ptr.exit13._crit_edge, %137, %fdt_next_tag.exit, %.preheader.i, %120, %fdt_check_node_offset_.exit.thread.i %.05 = phi i32 [ -1, %fdt_check_node_offset_.exit.thread.i ], [ -1, %120 ], [ -1, %.preheader.i ], [ -1, %fdt_next_tag.exit ], [ -1, %137 ], [ -1, %fdt_offset_ptr.exit13._crit_edge ], [ -1, %.critedge.i ], [ -1, %.backedge.i ], [ -1, %72 ], [ -1, %94 ], [ -1, %157 ], [ -1, %28 ], [ -1, %fdt_check_node_offset_.exit.i ], [ %74, %161 ], [ -1, %fdt_next_node.exit ] diff --git a/bench/qemu/optimized/virtio-pci.ll b/bench/qemu/optimized/virtio-pci.ll index 400a30fccd3..19f306ac1ab 100644 --- a/bench/qemu/optimized/virtio-pci.ll +++ b/bench/qemu/optimized/virtio-pci.ll @@ -851,7 +851,7 @@ virtio_bus_get_device.exit: ; preds = %3, %5 18: ; preds = %virtio_bus_get_device.exit %19 = load i32, ptr %17, align 8 %.not = icmp eq i32 %19, 0 - br i1 %.not, label %104, label %20 + br i1 %.not, label %105, label %20 20: ; preds = %18 %21 = icmp eq i32 %16, %19 @@ -963,17 +963,17 @@ kvm_virtio_pci_vector_vq_release.exit: ; preds = %.lr.ph.i, %45, %vir %61 = getelementptr inbounds nuw i8, ptr %8, i64 457 %62 = load i8, ptr %61, align 1, !range !7, !noundef !6 %63 = trunc nuw i8 %62 to i1 - br i1 %63, label %64, label %104 + br i1 %63, label %64, label %105 64: ; preds = %60 %65 = getelementptr inbounds nuw i8, ptr %10, i64 296 %66 = load ptr, ptr %65, align 8 %67 = icmp ne ptr %66, null %or.cond4 = and i1 %2, %67 - br i1 %or.cond4, label %.thread104, label %104 + br i1 %or.cond4, label %.thread104, label %105 68: ; preds = %59 - br i1 %2, label %69, label %104 + br i1 %2, label %69, label %105 69: ; preds = %68 %70 = tail call i32 @msix_nr_vectors_allocated(ptr noundef nonnull %0) #16 @@ -1023,17 +1023,17 @@ kvm_virtio_pci_vector_vq_use.exit: ; preds = %79 88: ; preds = %83 %89 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %90 = icmp slt i32 %89, 0 - br i1 %90, label %.thread108, label %104 + br i1 %90, label %.thread108, label %105 .thread114: ; preds = %.thread111 %91 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %92 = icmp slt i32 %91, 0 - br i1 %92, label %.thread108, label %104 + br i1 %92, label %.thread108, label %105 .thread104: ; preds = %64 %93 = tail call i32 @msix_set_vector_notifiers(ptr noundef nonnull %0, ptr noundef nonnull @virtio_pci_vector_unmask, ptr noundef nonnull @virtio_pci_vector_mask, ptr noundef nonnull @virtio_pci_vector_poll) #16 %94 = icmp slt i32 %93, 0 - br i1 %94, label %kvm_virtio_pci_vector_vq_use.exit.thread, label %104 + br i1 %94, label %kvm_virtio_pci_vector_vq_use.exit.thread, label %105 .thread108: ; preds = %88, %.thread114 %95 = phi i32 [ %91, %.thread114 ], [ %89, %88 ] @@ -1054,30 +1054,30 @@ kvm_virtio_pci_vector_vq_use.exit.thread: ; preds = %.lr.ph.i96, %.threa .loopexit: ; preds = %52, %kvm_virtio_pci_vector_vq_use.exit.thread %.081118 = phi i32 [ %.081.lcssa, %kvm_virtio_pci_vector_vq_use.exit.thread ], [ %.081120, %52 ] %.080 = phi i32 [ %.1, %kvm_virtio_pci_vector_vq_use.exit.thread ], [ %53, %52 ] - br i1 %2, label %.preheader, label %99 + br i1 %2, label %.preheader, label %100 .preheader: ; preds = %.loopexit %98 = icmp sgt i32 %.081118, 0 br i1 %98, label %.lr.ph124, label %._crit_edge125 -99: ; preds = %.loopexit +100: ; preds = %.loopexit tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.5, i32 noundef 1314, ptr noundef nonnull @__PRETTY_FUNCTION__.virtio_pci_set_guest_notifiers) #17 unreachable -.lr.ph124: ; preds = %.preheader, %.lr.ph124 - %.182123 = phi i32 [ %100, %.lr.ph124 ], [ %.081118, %.preheader ] - %100 = add nsw i32 %.182123, -1 +.lr.ph123: ; preds = %.preheader, %.lr.ph123 + %101 = phi i32 [ %100, %.lr.ph124 ], [ %.081118, %.preheader ] + %100 = add nsw i32 %101, -1 %101 = tail call fastcc i32 @virtio_pci_set_guest_notifier(ptr noundef nonnull %0, i32 noundef %100, i1 noundef zeroext false, i1 noundef zeroext %15) - %102 = icmp samesign ugt i32 %.182123, 1 - br i1 %102, label %.lr.ph124, label %._crit_edge125, !llvm.loop !11 + %.not144 = icmp samesign ugt i32 %101, 1 + br i1 %.not144, label %.lr.ph124, label %._crit_edge125, !llvm.loop !11 -._crit_edge125: ; preds = %.lr.ph124, %.preheader - %103 = load ptr, ptr %49, align 16 - tail call void @g_free(ptr noundef %103) #16 +._crit_edge124: ; preds = %.lr.ph123, %.preheader + %104 = load ptr, ptr %49, align 16 + tail call void @g_free(ptr noundef %104) #16 store ptr null, ptr %49, align 16 - br label %104 + br label %105 -104: ; preds = %.thread114, %.thread104, %60, %64, %68, %88, %18, %._crit_edge125 +105: ; preds = %.thread114, %.thread104, %60, %64, %68, %88, %18, %._crit_edge124 %.0 = phi i32 [ %.080, %._crit_edge125 ], [ 0, %18 ], [ 0, %88 ], [ 0, %68 ], [ 0, %64 ], [ 0, %60 ], [ 0, %.thread104 ], [ 0, %.thread114 ] ret i32 %.0 } diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index 202d1fc1074..1d04163f83d 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10666,10 +10666,10 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp br i1 %exitcond74.not, label %.loopexit.sink.split, label %.preheader50, !llvm.loop !65 .lr.ph: ; preds = %.preheader, %33 - %indvars.iv63 = phi i64 [ %indvars.iv.next64, %33 ], [ %indvars.iv, %.preheader ] - %indvars.iv.next64 = add nsw i64 %indvars.iv63, -1 + %indvars.iv62 = phi i64 [ %indvars.iv.next63, %33 ], [ %indvars.iv, %.preheader ] + %indvars.iv.next63 = add nsw i64 %indvars.iv62, -1 %24 = load ptr, ptr %5, align 8 - %25 = getelementptr inbounds nuw %struct.VirtQueue, ptr %24, i64 %indvars.iv.next64 + %25 = getelementptr inbounds nuw %struct.VirtQueue, ptr %24, i64 %indvars.iv.next63 %26 = load i32, ptr %25, align 8 %.not45 = icmp eq i32 %26, 0 br i1 %.not45, label %33, label %27, !llvm.loop !66 @@ -10677,7 +10677,7 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp 27: ; preds = %.lr.ph %28 = getelementptr inbounds nuw i8, ptr %25, i64 116 tail call void @event_notifier_set_handler(ptr noundef nonnull %28, ptr noundef null) #24 - %29 = trunc nuw nsw i64 %indvars.iv.next64 to i32 + %29 = trunc nuw nsw i64 %indvars.iv.next63 to i32 %30 = tail call i32 @virtio_bus_set_host_notifier(ptr noundef %4, i32 noundef %29, i1 noundef zeroext false) #24 %31 = icmp sgt i32 %30, -1 br i1 %31, label %33, label %32 @@ -10687,7 +10687,7 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp unreachable 33: ; preds = %27, %.lr.ph - %34 = icmp sgt i64 %indvars.iv63, 1 + %34 = icmp sgt i64 %indvars.iv62, 1 br i1 %34, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %33 @@ -10703,7 +10703,7 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp %.not44 = icmp eq i32 %37, 0 br i1 %.not44, label %.backedge, label %38 -38: ; preds = %.lr.ph56 +38:; preds = %.lr.ph56 %39 = trunc nuw nsw i64 %indvars.iv.next69 to i32 tail call void @virtio_bus_cleanup_host_notifier(ptr noundef %4, i32 noundef %39) #24 br label %.backedge diff --git a/bench/rocksdb/optimized/version_set.ll b/bench/rocksdb/optimized/version_set.ll index 74b32d3e3df..a2aa34d0a0c 100644 --- a/bench/rocksdb/optimized/version_set.ll +++ b/bench/rocksdb/optimized/version_set.ll @@ -29100,22 +29100,22 @@ define noundef ptr @_ZNK7rocksdb18VersionStorageInfo16LevelFileSummaryEPNS0_18Fi %9 = load ptr, ptr %8, align 8, !tbaa !652 %10 = getelementptr inbounds nuw i8, ptr %8, i64 8 %11 = load ptr, ptr %10, align 8, !tbaa !652 - %.not3638 = icmp eq ptr %9, %11 - br i1 %.not3638, label %._crit_edge, label %.lr.ph + %.not3637 = icmp eq ptr %9, %11 + br i1 %.not3637, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %31 - %.040 = phi i32 [ %32, %31 ], [ 11, %3 ] - %.sroa.033.039 = phi ptr [ %33, %31 ], [ %9, %3 ] - %12 = zext nneg i32 %.040 to i64 - %13 = sub nsw i32 3000, %.040 + %.039 = phi i32 [ %32, %31 ], [ 11, %3 ] + %.sroa.033.038 = phi ptr [ %33, %31 ], [ %9, %3 ] + %12 = zext nneg i32 %.039 to i64 + %13 = sub nsw i32 3000, %.039 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %14 = load ptr, ptr %.sroa.033.039, align 8, !tbaa !410 + %14 = load ptr, ptr %.sroa.033.038, align 8, !tbaa !410 %15 = getelementptr inbounds nuw i8, ptr %14, i64 16 %16 = load i64, ptr %15, align 8, !tbaa !598 %17 = call noundef i32 @_ZN7rocksdb16AppendHumanBytesEmPci(i64 noundef %16, ptr noundef nonnull %4, i32 noundef 16) %18 = getelementptr inbounds nuw i8, ptr %1, i64 %12 %19 = sext i32 %13 to i64 - %20 = load ptr, ptr %.sroa.033.039, align 8, !tbaa !410 + %20 = load ptr, ptr %.sroa.033.038, align 8, !tbaa !410 %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 %22 = load i64, ptr %21, align 8, !tbaa !556 %23 = and i64 %22, 4611686018427387903 @@ -29132,19 +29132,19 @@ define noundef ptr @_ZNK7rocksdb18VersionStorageInfo16LevelFileSummaryEPNS0_18Fi br i1 %or.cond30, label %31, label %._crit_edge.loopexit 31: ; preds = %.lr.ph - %32 = add nuw nsw i32 %29, %.040 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.033.039, i64 8 + %32 = add nuw nsw i32 %29, %.039 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.033.038, i64 8 %.not36 = icmp eq ptr %33, %11 br i1 %.not36, label %._crit_edge.loopexit, label %.lr.ph ._crit_edge.loopexit: ; preds = %31, %.lr.ph - %.0.lcssa.ph = phi i32 [ %.040, %.lr.ph ], [ %32, %31 ] + %.0.lcssa.ph = phi i32 [ %.039, %.lr.ph ], [ %32, %31 ] %.pre = load ptr, ptr %5, align 8, !tbaa !360 %.phi.trans.insert = getelementptr inbounds %"class.std::vector.296", ptr %.pre, i64 %7 - %.phi.trans.insert43 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 - %.pre44 = load ptr, ptr %.phi.trans.insert43, align 8, !tbaa !408 - %.pre45 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !361 - %34 = icmp ne ptr %.pre44, %.pre45 + %.phi.trans.insert42 = getelementptr inbounds nuw i8, ptr %.phi.trans.insert, i64 8 + %.pre43 = load ptr, ptr %.phi.trans.insert42, align 8, !tbaa !408 + %.pre44 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !361 + %34 = icmp ne ptr %.pre43, %.pre44 %35 = sext i1 %34 to i32 %36 = add nsw i32 %.0.lcssa.ph, %35 %37 = sext i32 %36 to i64 diff --git a/bench/ruby/optimized/dir.ll b/bench/ruby/optimized/dir.ll index f5bf85f2f9f..91a6e3ba3de 100644 --- a/bench/ruby/optimized/dir.ll +++ b/bench/ruby/optimized/dir.ll @@ -2978,16 +2978,16 @@ ruby_nonempty_memcpy.exit47.i: ; preds = %81, %78 br i1 %.not.i, label %join_path_from_pattern.exit, label %.lr.ph.i.backedge .lr.ph.i.backedge: ; preds = %85, %.thread - %.053.i.be = phi ptr [ %.0.i, %85 ], [ %.0.i653, %.thread ] + %.053.i.be = phi ptr [ %.0.i, %85 ], [ %.0.i654, %.thread ] %.03152.i.be = phi ptr [ %.1.i, %85 ], [ null, %.thread ] %.03351.i.be = phi i64 [ %.134.i, %85 ], [ %66, %.thread ] br label %.lr.ph.i, !llvm.loop !126 .thread: ; preds = %glob_alloc_n.exit.i %87 = getelementptr inbounds nuw i8, ptr %.053.i, i64 16 - %.0.i653 = load ptr, ptr %87, align 8, !tbaa !28 - %.not.i654 = icmp eq ptr %.0.i653, null - br i1 %.not.i654, label %join_path_from_pattern.exit.thread, label %.lr.ph.i.backedge + %.0.i654 = load ptr, ptr %87, align 8, !tbaa !28 + %.not.i655 = icmp eq ptr %.0.i654, null + br i1 %.not.i655, label %join_path_from_pattern.exit.thread, label %.lr.ph.i.backedge join_path_from_pattern.exit: ; preds = %85 %.not360 = icmp eq ptr %.1.i, null @@ -3022,18 +3022,18 @@ join_path_from_pattern.exit.thread: ; preds = %.thread, %59, %join br label %.thread451 ._crit_edge.thread: ; preds = %12, %._crit_edge - %.0294.lcssa650 = phi i1 [ %58, %._crit_edge ], [ true, %12 ] - %.0298.lcssa649 = phi i1 [ %57, %._crit_edge ], [ false, %12 ] - %.0300.lcssa648 = phi i1 [ %56, %._crit_edge ], [ false, %12 ] - %.0302.lcssa647 = phi i1 [ %53, %._crit_edge ], [ false, %12 ] - %.0304.lcssa646 = phi i1 [ %54, %._crit_edge ], [ false, %12 ] + %.0294.lcssa651 = phi i1 [ %58, %._crit_edge ], [ true, %12 ] + %.0298.lcssa650 = phi i1 [ %57, %._crit_edge ], [ false, %12 ] + %.0300.lcssa649 = phi i1 [ %56, %._crit_edge ], [ false, %12 ] + %.0302.lcssa648 = phi i1 [ %53, %._crit_edge ], [ false, %12 ] + %.0304.lcssa647 = phi i1 [ %54, %._crit_edge ], [ false, %12 ] %99 = load i8, ptr %1, align 1, !tbaa !19 %.not333 = icmp eq i8 %99, 0 br i1 %.not333, label %187, label %100 100: ; preds = %._crit_edge.thread %101 = icmp eq i32 %5, -2 - %or.cond = and i1 %101, %.0302.lcssa647 + %or.cond = and i1 %101, %.0302.lcssa648 br i1 %or.cond, label %102, label %124 102: ; preds = %100 @@ -3093,7 +3093,7 @@ do_lstat.exit: ; preds = %102 124: ; preds = %do_lstat.exit.thread, %do_lstat.exit, %119, %100 %.1275 = phi i32 [ %123, %119 ], [ %5, %100 ], [ -1, %do_lstat.exit ], [ -1, %do_lstat.exit.thread ] - br i1 %.0304.lcssa646, label %125, label %148 + br i1 %.0304.lcssa647, label %125, label %148 125: ; preds = %124 switch i32 %.1275, label %148 [ @@ -3159,7 +3159,7 @@ do_stat.exit: ; preds = %126 148: ; preds = %125, %143, %124 %.2276 = phi i32 [ %147, %143 ], [ %.1275, %125 ], [ %.1275, %124 ] %149 = icmp sgt i32 %.2276, -1 - %or.cond8 = select i1 %.0302.lcssa647, i1 %149, i1 false + %or.cond8 = select i1 %.0302.lcssa648, i1 %149, i1 false br i1 %or.cond8, label %150, label %161 150: ; preds = %148 @@ -3183,7 +3183,7 @@ do_stat.exit: ; preds = %126 161: ; preds = %156, %148 %162 = icmp eq i32 %.2276, 4 - %or.cond10 = select i1 %.0304.lcssa646, i1 %162, i1 false + %or.cond10 = select i1 %.0304.lcssa647, i1 %162, i1 false br i1 %or.cond10, label %163, label %187 163: ; preds = %161 @@ -3250,7 +3250,7 @@ ruby_nonempty_memcpy.exit.i374: ; preds = %180, %179 br i1 %188, label %.thread451, label %.thread455 .thread455: ; preds = %183, %187 - br i1 %.0298.lcssa649, label %189, label %456 + br i1 %.0298.lcssa650, label %189, label %456 189: ; preds = %.thread455 %190 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -3564,7 +3564,7 @@ glob_opendir.exit: ; preds = %272, %219 %302 = getelementptr inbounds nuw i8, ptr %24, i64 24 %303 = and i32 %8, 4 %.not351 = icmp eq i32 %303, 0 - %or.cond363 = and i1 %.not351, %.0300.lcssa648 + %or.cond363 = and i1 %.not351, %.0300.lcssa649 %.not352 = icmp ne i32 %298, 0 %or.cond368.not = or i1 %.not352, %or.cond363 %.not.i384 = icmp ne i32 %4, 0 @@ -3705,7 +3705,7 @@ ruby_nonempty_memcpy.exit.i388: ; preds = %356, %355 %.not354 = icmp eq i8 %367, 0 %368 = zext i8 %367 to i32 %spec.select = select i1 %.not354, i32 %.0285, i32 %368 - br i1 %.0300.lcssa648, label %369, label %387 + br i1 %.0300.lcssa649, label %369, label %387 369: ; preds = %362 %370 = icmp samesign ult i32 %.0284, %307 @@ -3887,22 +3887,22 @@ glob_alloc_n.exit: ; preds = %387 %427 = load ptr, ptr %.0283, align 8, !tbaa !32 %428 = call fastcc i32 @ruby_brace_expand(ptr noundef %427, i32 noundef %299, ptr noundef nonnull @dirent_match_brace, i64 noundef %322, ptr noundef %11, i64 noundef 0) %429 = icmp sgt i32 %428, 0 - br i1 %429, label %.sink.split672, label %436 + br i1 %429, label %.sink.split673, label %436 430: ; preds = %424, %424, %424 %431 = load ptr, ptr %.0283, align 8, !tbaa !32 %432 = call fastcc i32 @fnmatch(ptr noundef %431, ptr noundef %11, ptr noundef %365, i32 noundef %299) %.not359.not = icmp eq i32 %432, 0 - br i1 %.not359.not, label %.sink.split672, label %436 + br i1 %.not359.not, label %.sink.split673, label %436 -.sink.split672: ; preds = %430, %426 +.sink.split673: ; preds = %430, %426 %433 = getelementptr inbounds nuw i8, ptr %.0283, i64 16 %434 = load ptr, ptr %433, align 8, !tbaa !30 %435 = getelementptr i8, ptr %.0288555, i64 8 store ptr %434, ptr %.0288555, align 8, !tbaa !28 br label %436 -436: ; preds = %.sink.split672, %424, %430, %426 +436: ; preds = %.sink.split673, %424, %430, %426 %.3291 = phi ptr [ %.0288555, %424 ], [ %.0288555, %426 ], [ %.0288555, %430 ], [ %435, %.sink.split672 ] call void @llvm.lifetime.end.p0(ptr nonnull %25) %437 = getelementptr i8, ptr %.1280556, i64 8 @@ -3979,7 +3979,7 @@ glob_getent.exit.thread.thread500: ; preds = %324, %glob_getent.e br label %.thread451 456: ; preds = %.thread455 - br i1 %.0294.lcssa650, label %.thread451, label %457 + br i1 %.0294.lcssa651, label %.thread451, label %457 457: ; preds = %456 %458 = ptrtoint ptr %7 to i64 @@ -4229,8 +4229,8 @@ ruby_nonempty_memcpy.exit.i417: ; preds = %527, %526 br i1 %542, label %474, label %.thread493, !llvm.loop !173 .thread493.sink.split: ; preds = %glob_alloc_n.exit412, %533 - %.lcssa663.sink = phi ptr [ %504, %533 ], [ %481, %glob_alloc_n.exit412 ] - call void @free(ptr noundef %.lcssa663.sink) #22 + %.lcssa664.sink = phi ptr [ %504, %533 ], [ %481, %glob_alloc_n.exit412 ] + call void @free(ptr noundef %.lcssa664.sink) #22 br label %.thread493 .thread493: ; preds = %540, %534, %glob_alloc_n.exit403, %.thread493.sink.split, %.preheader505, %.preheader504 diff --git a/bench/slurm/optimized/slurmdb_defs.ll b/bench/slurm/optimized/slurmdb_defs.ll index 44e81da0bd6..f5754d7a552 100644 --- a/bench/slurm/optimized/slurmdb_defs.ll +++ b/bench/slurm/optimized/slurmdb_defs.ll @@ -4665,7 +4665,7 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn 4: ; preds = %1 %5 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.33) #19 - br label %22 + br label %24 6: ; preds = %1 %7 = tail call ptr @xstrdup(ptr noundef nonnull %0) #19 @@ -4674,7 +4674,7 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn %.not1115 = icmp eq ptr %8, null br i1 %.not1115, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %6, %_str_2_job_flags.exit.thread +.lr.ph: ; preds = %6, %22 %.017 = phi ptr [ %21, %_str_2_job_flags.exit.thread ], [ %8, %6 ] %.0816 = phi i32 [ %20, %_str_2_job_flags.exit.thread ], [ 0, %6 ] %9 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.14) #19 @@ -4694,34 +4694,34 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn 14: ; preds = %12 %15 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.31) #19 %.not7.i = icmp eq ptr %15, null - br i1 %.not7.i, label %_str_2_job_flags.exit, label %_str_2_job_flags.exit.thread + br i1 %.not7.i, label %16, label %_str_2_job_flags.exit.thread -_str_2_job_flags.exit: ; preds = %14 - %16 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.215) #19 - %.not8.i = icmp eq ptr %16, null +16: ; preds = %14 + %17 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.215) #19 + %.not8.i = icmp eq ptr %17, null %..i = select i1 %.not8.i, i32 1, i32 16 %17 = and i32 %..i, 1 %.not12 = icmp eq i32 %17, 0 br i1 %.not12, label %_str_2_job_flags.exit.thread, label %18 -18: ; preds = %_str_2_job_flags.exit +_str_2_job_flags.exit: ; preds = %16 %19 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.str_2_job_flags, ptr noundef nonnull %.017) #19 call void @slurm_xfree(ptr noundef nonnull %2) #19 - br label %22 + br label %24 -_str_2_job_flags.exit.thread: ; preds = %14, %12, %10, %.lr.ph, %_str_2_job_flags.exit +22: ; preds = %14, %12, %10, %.lr.ph, %_str_2_job_flags.exit %.0.i23 = phi i32 [ %..i, %_str_2_job_flags.exit ], [ 8, %14 ], [ 4, %12 ], [ 2, %10 ], [ 0, %.lr.ph ] %20 = or i32 %.0.i23, %.0816 %21 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.13, ptr noundef nonnull %3) #19 %.not11 = icmp eq ptr %21, null br i1 %.not11, label %._crit_edge, label %.lr.ph, !llvm.loop !21 -._crit_edge: ; preds = %_str_2_job_flags.exit.thread, %6 +._crit_edge: ; preds = %22, %6 %.08.lcssa = phi i32 [ 0, %6 ], [ %20, %_str_2_job_flags.exit.thread ] call void @slurm_xfree(ptr noundef nonnull %2) #19 - br label %22 + br label %24 -22: ; preds = %._crit_edge, %18, %4 +24: ; preds = %._crit_edge, %18, %4 %.09 = phi i32 [ 1, %18 ], [ %.08.lcssa, %._crit_edge ], [ 0, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) diff --git a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll index df04487bbad..505993c3190 100644 --- a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll +++ b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll @@ -129,13 +129,13 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %. = select i1 %22, i16 1, i16 32767 br label %.thread98 -51: ; preds = %47 +.thread89: ; preds = %47 %.not61 = icmp ne i64 %48, 0 %spec.select63 = select i1 %.not61, i1 true, i1 %.054 - %52 = icmp eq i8 %21, 0 - br i1 %52, label %.thread98, label %67 + %61 = icmp eq i8 %21, 0 + br i1 %61, label %.thread98, label %67 -53: ; preds = %47 +62: ; preds = %47 %54 = add nuw nsw i64 %.sroa.51.0.insert.ext.i, 50 %55 = lshr i64 %48, %54 %56 = trunc nuw nsw i64 %55 to i16 @@ -153,7 +153,7 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %66 = add nuw i16 %65, %56 br i1 %.not, label %.thread98, label %67 -67: ; preds = %51, %53 +67:; preds = %51, %53 %.15596 = phi i1 [ %spec.select64, %53 ], [ %spec.select63, %51 ] %.052 = phi i16 [ %66, %53 ], [ %.sroa.0.0.i, %51 ] %68 = and i16 %.052, 1 diff --git a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll index ad6d6060d8a..e13f01a9063 100644 --- a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll +++ b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll @@ -3467,9 +3467,9 @@ _ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60: ; preds 53: ; preds = %46, %67, %42 %.044 = phi i32 [ %45, %42 ], [ %51, %46 ], [ %69, %67 ] - %.141 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %67 ] - %.039 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %68, %67 ] - %54 = icmp slt i8 %.141, 0 + %.044 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %67 ] + %.141 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %68, %67 ] + %54 = icmp slt i8 %.044, 0 br i1 %54, label %61, label %55 55: ; preds = %53 @@ -3480,68 +3480,68 @@ _ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60: ; preds %60 = xor i16 %59, 32767 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -61: ; preds = %53 - %62 = sub i8 0, %.141 - %63 = and i8 %62, 15 - %64 = zext nneg i8 %63 to i16 - %65 = lshr i16 16384, %64 +62: ; preds = %53 + %63 = sub i8 0, %.141 + %64 = and i8 %63, 15 + %65 = zext nneg i8 %64 to i16 + %66 = lshr i16 16384, %65 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %55, %61 - %.sroa.51.0.in.i = phi i8 [ %62, %61 ], [ %56, %55 ] - %.sroa.0.0.i = phi i16 [ %65, %61 ], [ %60, %55 ] - %66 = icmp ugt i8 %.sroa.51.0.in.i, 14 - br i1 %66, label %94, label %70 +_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %55, %62 + %.sroa.51.0.in.i = phi i8 [ %63, %61 ], [ %56, %55 ] + %.sroa.0.0.i = phi i16 [ %66, %61 ], [ %60, %55 ] + %67 = icmp ugt i8 %.sroa.51.0.in.i, 14 + br i1 %67, label %95, label %71 -67: ; preds = %46 +68: ; preds = %46 %spec.select46 = add i8 %.211.i, %17 - %68 = xor i8 %17, 1 - %69 = lshr i32 %51, 1 + %69 = xor i8 %17, 1 + %70 = lshr i32 %51, 1 br label %53 -70: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit - %71 = and i32 %.044, 1073741823 +71: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit + %72 = and i32 %.044, 1073741823 %narrow = add nuw nsw i8 %.sroa.51.0.in.i, 1 - %72 = zext nneg i8 %narrow to i32 - %73 = lshr i32 %71, %72 - %74 = lshr i32 %73, 16 - %75 = trunc nuw nsw i32 %74 to i16 - %76 = icmp eq i8 %.sroa.51.0.in.i, 14 - %77 = icmp ne i8 %.039, 0 - %78 = and i32 %73, 32768 - %79 = icmp ne i32 %78, 0 - %.08.i = select i1 %76, i1 %77, i1 %79 - %.1.i = select i1 %76, i16 0, i16 %75 - %80 = zext nneg i8 %.039 to i16 - %81 = sub nsw i8 13, %.sroa.51.0.in.i - %82 = and i8 %81, 15 - %83 = zext nneg i8 %82 to i16 - %84 = shl nuw i16 %80, %83 - %.011.i = select i1 %76, i16 0, i16 %84 - %85 = add nuw i16 %.011.i, %.sroa.0.0.i - %86 = add i16 %85, %.1.i - br i1 %.08.i, label %87, label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" - -87: ; preds = %70 - %.not.i = icmp ne i32 %73, 0 - %.110.i = and i1 %76, %.not.i - %88 = and i32 %73, 32767 - %89 = icmp ne i32 %88, 0 - %spec.select13.i = or i1 %89, %.110.i - %90 = and i16 %86, 1 - %91 = zext i1 %spec.select13.i to i16 - %92 = or i16 %90, %91 - %93 = add i16 %92, %86 + %73 = zext nneg i8 %narrow to i32 + %74 = lshr i32 %72, %73 + %75 = lshr i32 %74, 16 + %76 = trunc nuw nsw i32 %75 to i16 + %77 = icmp eq i8 %.sroa.51.0.in.i, 14 + %78 = icmp ne i8 %.039, 0 + %79 = and i32 %74, 32768 + %80 = icmp ne i32 %79, 0 + %.08.i = select i1 %77, i1 %78, i1 %80 + %.1.i = select i1 %77, i16 0, i16 %76 + %81 = zext nneg i8 %.039 to i16 + %82 = sub nsw i8 13, %.sroa.51.0.in.i + %83 = and i8 %82, 15 + %84 = zext nneg i8 %83 to i16 + %85 = shl nuw i16 %81, %84 + %.011.i = select i1 %77, i16 0, i16 %85 + %86 = add nuw i16 %.011.i, %.sroa.0.0.i + %87 = add i16 %86, %.1.i + br i1 %.08.i, label %88, label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" + +88: ; preds = %71 + %.not.i = icmp ne i32 %74, 0 + %.110.i = and i1 %77, %.not.i + %89 = and i32 %74, 32767 + %90 = icmp ne i32 %89, 0 + %spec.select13.i = or i1 %90, %.110.i + %91 = and i16 %87, 1 + %92 = zext i1 %spec.select13.i to i16 + %93 = or i16 %91, %92 + %94 = add i16 %93, %87 br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" -94: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit +95: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %. = select i1 %54, i16 1, i16 32767 br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" -"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit": ; preds = %87, %70, %94 - %.042 = phi i16 [ %., %94 ], [ %93, %87 ], [ %86, %70 ] - %95 = sub i16 0, %.042 - %.0.i61 = select i1 %3, i16 %.042, i16 %95 +"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit": ; preds = %88, %71, %95 + %.042 = phi i16 [ %., %94 ], [ %94, %87 ], [ %87, %70 ] + %96 = sub i16 0, %.042 + %.0.i61 = select i1 %3, i16 %.042, i16 %96 ret i16 %.0.i61 } diff --git a/bench/sqlite/optimized/shell.ll b/bench/sqlite/optimized/shell.ll index 2e66facb966..17be4a5778e 100644 --- a/bench/sqlite/optimized/shell.ll +++ b/bench/sqlite/optimized/shell.ll @@ -5393,8 +5393,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re 17: ; preds = %14, %17 %indvars.iv = phi i64 [ 0, %14 ], [ %indvars.iv.next, %17 ] - %.079107 = phi i64 [ 0, %14 ], [ %22, %17 ] - %18 = shl i64 %.079107, 8 + %.079108 = phi i64 [ 0, %14 ], [ %22, %17 ] + %18 = shl i64 %.079108, 8 %19 = getelementptr inbounds nuw i8, ptr %16, i64 %indvars.iv %20 = load i8, ptr %19, align 1, !tbaa !25 %21 = zext i8 %20 to i64 @@ -5432,21 +5432,21 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re %40 = icmp slt i64 %34, 1075 %41 = and i64 %.1, 1 %42 = icmp eq i64 %41, 0 - %or.cond108 = select i1 %40, i1 %42, i1 false - br i1 %or.cond108, label %.lr.ph112, label %.critedge - -.lr.ph112: ; preds = %33, %.lr.ph112 - %.2110 = phi i64 [ %43, %.lr.ph112 ], [ %.1, %33 ] - %.185109 = phi i32 [ %44, %.lr.ph112 ], [ %35, %33 ] - %43 = lshr exact i64 %.2110, 1 - %44 = add nsw i32 %.185109, 1 - %45 = icmp slt i32 %.185109, 1074 - %46 = and i64 %.2110, 2 + %or.cond97109 = select i1 %40, i1 %42, i1 false + br i1 %or.cond97109, label %.lr.ph113, label %.critedge + +.lr.ph113: ; preds = %33, %.lr.ph113 + %.2111 = phi i64 [ %43, %.lr.ph112 ], [ %.1, %33 ] + %.185110 = phi i32 [ %44, %.lr.ph112 ], [ %35, %33 ] + %43 = lshr exact i64 %.2111, 1 + %44 = add nsw i32 %.185110, 1 + %45 = icmp slt i32 %.185110, 1074 + %46 = and i64 %.2111, 2 %47 = icmp eq i64 %46, 0 - %or.cond = select i1 %45, i1 %47, i1 false - br i1 %or.cond, label %.lr.ph112, label %.critedge, !llvm.loop !93 + %or.cond97 = select i1 %45, i1 %47, i1 false + br i1 %or.cond97, label %.lr.ph113, label %.critedge, !llvm.loop !93 -.critedge: ; preds = %.lr.ph112, %33 +.critedge: ; preds = %.lr.ph113, %33 %.185.lcssa = phi i32 [ %35, %33 ], [ %44, %.lr.ph112 ] %.2.lcssa = phi i64 [ %.1, %33 ], [ %43, %.lr.ph112 ] br i1 %29, label %50, label %48 @@ -5513,34 +5513,34 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re 74: ; preds = %67, %69 %.075 = phi i64 [ %68, %67 ], [ %62, %69 ] - %.not97 = icmp samesign ult i64 %.075, 9007199254740992 - br i1 %.not97, label %.preheader, label %.lr.ph + %.not98 = icmp samesign ult i64 %.075, 9007199254740992 + br i1 %.not98, label %.preheader, label %.lr.ph .preheader: ; preds = %.lr.ph, %74 %.176.lcssa = phi i64 [ %.075, %74 ], [ %77, %.lr.ph ] %.173.lcssa = phi i64 [ %.072, %74 ], [ %78, %.lr.ph ] %75 = add nsw i64 %.176.lcssa, -1 %76 = icmp ult i64 %75, 4503599627370495 - br i1 %76, label %.lr.ph103, label %._crit_edge + br i1 %76, label %.lr.ph104, label %._crit_edge .lr.ph: ; preds = %74, %.lr.ph - %.17399 = phi i64 [ %78, %.lr.ph ], [ %.072, %74 ] - %.17698 = phi i64 [ %77, %.lr.ph ], [ %.075, %74 ] - %77 = lshr i64 %.17698, 1 - %78 = add nsw i64 %.17399, 1 - %.not = icmp ult i64 %.17698, 18014398509481984 + %.173100 = phi i64 [ %78, %.lr.ph ], [ %.072, %74 ] + %.17699 = phi i64 [ %77, %.lr.ph ], [ %.075, %74 ] + %77 = lshr i64 %.17699, 1 + %78 = add nsw i64 %.173100, 1 + %.not = icmp ult i64 %.17699, 18014398509481984 br i1 %.not, label %.preheader, label %.lr.ph, !llvm.loop !94 -.lr.ph103: ; preds = %.preheader, %.lr.ph103 - %.274102 = phi i64 [ %80, %.lr.ph103 ], [ %.173.lcssa, %.preheader ] - %.277101 = phi i64 [ %79, %.lr.ph103 ], [ %.176.lcssa, %.preheader ] - %79 = shl nuw nsw i64 %.277101, 1 - %80 = add nsw i64 %.274102, -1 +.lr.ph104: ; preds = %.preheader, %.lr.ph104 + %.274103 = phi i64 [ %80, %.lr.ph103 ], [ %.173.lcssa, %.preheader ] + %.277102 = phi i64 [ %79, %.lr.ph103 ], [ %.176.lcssa, %.preheader ] + %79 = shl nuw nsw i64 %.277102, 1 + %80 = add nsw i64 %.274103, -1 %81 = add nsw i64 %79, -1 %82 = icmp samesign ult i64 %81, 4503599627370495 - br i1 %82, label %.lr.ph103, label %._crit_edge, !llvm.loop !95 + br i1 %82, label %.lr.ph104, label %._crit_edge, !llvm.loop !95 -._crit_edge: ; preds = %.lr.ph103, %.preheader +._crit_edge: ; preds = %.lr.ph104, %.preheader %.277.lcssa = phi i64 [ %.176.lcssa, %.preheader ], [ %79, %.lr.ph103 ] %.274.lcssa = phi i64 [ %.173.lcssa, %.preheader ], [ %80, %.lr.ph103 ] %83 = icmp slt i64 %.274.lcssa, -1074 @@ -33877,19 +33877,19 @@ define internal fastcc ptr @decimalFromDouble(double noundef %0) unnamed_addr #1 %14 = icmp slt i64 %8, 1075 %15 = and i64 %.129, 1 %16 = icmp eq i64 %15, 0 - %or.cond35 = select i1 %14, i1 %16, i1 false - br i1 %or.cond35, label %.lr.ph, label %.critedge + %or.cond3536 = select i1 %14, i1 %16, i1 false + br i1 %or.cond3536, label %.lr.ph, label %.critedge .lr.ph: ; preds = %7, %.lr.ph - %.137 = phi i32 [ %18, %.lr.ph ], [ %9, %7 ] - %.236 = phi i64 [ %17, %.lr.ph ], [ %.129, %7 ] - %17 = lshr exact i64 %.236, 1 - %18 = add nsw i32 %.137, 1 - %19 = icmp slt i32 %.137, 1074 - %20 = and i64 %.236, 2 + %.138 = phi i32 [ %18, %.lr.ph ], [ %9, %7 ] + %.237 = phi i64 [ %17, %.lr.ph ], [ %.129, %7 ] + %17 = lshr exact i64 %.237, 1 + %18 = add nsw i32 %.138, 1 + %19 = icmp slt i32 %.138, 1074 + %20 = and i64 %.237, 2 %21 = icmp eq i64 %20, 0 - %or.cond = select i1 %19, i1 %21, i1 false - br i1 %or.cond, label %.lr.ph, label %.critedge, !llvm.loop !704 + %or.cond35 = select i1 %19, i1 %21, i1 false + br i1 %or.cond35, label %.lr.ph, label %.critedge, !llvm.loop !704 .critedge: ; preds = %.lr.ph, %7 %.2.lcssa = phi i64 [ %.129, %7 ], [ %17, %.lr.ph ] diff --git a/bench/sundials/optimized/cvodea.ll b/bench/sundials/optimized/cvodea.ll index 05e6f1723e3..b198a3371ac 100644 --- a/bench/sundials/optimized/cvodea.ll +++ b/bench/sundials/optimized/cvodea.ll @@ -4529,7 +4529,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 48 %21 = load ptr, ptr %20, align 8, !tbaa !40 - %.fr262 = freeze ptr %21 + %.fr285 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !43 %.not = icmp eq i32 %23, 0 @@ -4542,44 +4542,44 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !60 - %.fr260 = freeze double %27 + %.fr283 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !61 - %.fr261 = freeze double %28 - %29 = fcmp ogt double %.fr260, %.fr261 + %.fr284 = freeze double %28 + %29 = fcmp ogt double %.fr283, %.fr284 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 72 %32 = load i32, ptr %31, align 8, !tbaa !45 %.not147 = icmp eq i32 %32, 0 - br i1 %.not147, label %72, label %.preheader170 + br i1 %.not147, label %72, label %.preheader171 -.preheader170: ; preds = %25 - %.not148177 = icmp eq ptr %.fr262, null - br i1 %.not148177, label %._crit_edge, label %.lr.ph +.preheader171: ; preds = %25 + %.not148181 = icmp eq ptr %.fr285, null + br i1 %.not148181, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader170 +.lr.ph: ; preds = %.preheader171 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 188 br label %35 35: ; preds = %.lr.ph, %62 - %.0135178 = phi ptr [ %.fr262, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0135178, i64 16 + %.0135182 = phi ptr [ %.fr285, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0135182, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !94 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1032 %39 = load double, ptr %38, align 8, !tbaa !72 - %40 = fsub double %39, %.fr261 + %40 = fsub double %39, %.fr284 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr260, %39 + %44 = fsub double %.fr283, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0135178, align 8, !tbaa !141 + %48 = load i32, ptr %.0135182, align 8, !tbaa !141 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -104, i32 noundef 1433, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.13, i32 noundef %48) #9 br label %.critedge163 @@ -4590,18 +4590,18 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0135178, align 8, !tbaa !141 + %54 = load i32, ptr %.0135182, align 8, !tbaa !141 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef -22, i32 noundef 1441, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.14, i32 noundef %54) #9 br label %.critedge163 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0135178, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0135182, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !143 %.not159 = icmp eq i32 %57, 0 br i1 %.not159, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0135178, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0135182, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !148 %.not160 = icmp eq i32 %60, 0 br i1 %.not160, label %62, label %61 @@ -4611,12 +4611,12 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0135178, i64 120 + %63 = getelementptr inbounds nuw i8, ptr %.0135182, i64 120 %64 = load ptr, ptr %63, align 8, !tbaa !90 %.not148 = icmp eq ptr %64, null br i1 %.not148, label %._crit_edge, label %35 -._crit_edge: ; preds = %62, %.preheader170 +._crit_edge: ; preds = %62, %.preheader171 %65 = getelementptr inbounds nuw i8, ptr %14, i64 188 %66 = load i32, ptr %65, align 4, !tbaa !39 %.not149 = icmp eq i32 %66, 0 @@ -4647,13 +4647,13 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr261 + %77 = fsub double %1, %.fr284 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr260, %1 + %81 = fsub double %.fr283, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %94, label %95 @@ -4662,8 +4662,8 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 %86 = load double, ptr %85, align 8, !tbaa !65 %87 = fmul double %86, 1.000000e+02 - %88 = tail call double @llvm.fabs.f64(double %.fr261) - %89 = tail call double @llvm.fabs.f64(double %.fr260) + %88 = tail call double @llvm.fabs.f64(double %.fr284) + %89 = tail call double @llvm.fabs.f64(double %.fr283) %90 = fadd double %89, %88 %91 = fmul double %90, %87 %92 = tail call double @llvm.fabs.f64(double %77) @@ -4675,11 +4675,11 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.critedge163 95: ; preds = %84, %80 - %.0132 = phi double [ %1, %80 ], [ %.fr261, %84 ] + %.0132 = phi double [ %1, %80 ], [ %.fr284, %84 ] %96 = getelementptr inbounds nuw i8, ptr %14, i64 80 %97 = load ptr, ptr %96, align 8, !tbaa !20 - %.not151179 = icmp eq ptr %.fr262, null - br i1 %.not151179, label %.critedge.us, label %.split + %.not151183 = icmp eq ptr %.fr285, null + br i1 %.not151183, label %.critedge.us, label %.split .critedge.us: ; preds = %95, %.critedge.us %.0133.us = phi ptr [ %99, %.critedge.us ], [ %97, %95 ] @@ -4693,24 +4693,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %102 = icmp eq i32 %2, 2 %103 = load ptr, ptr %101, align 8, !tbaa !26 %.not153.us.us = icmp eq ptr %.0133.us, %103 - br i1 %102, label %.split217.us.split.us, label %.split217.us.split.split.us + br i1 %102, label %.split222.us.split.us, label %.split222.us.split.split.us .split: ; preds = %95 %104 = icmp eq i32 %2, 1 - br i1 %104, label %.lr.ph182.us, label %.lr.ph182 + br i1 %104, label %.lr.ph186.us, label %.lr.ph186 -.lr.ph182.us: ; preds = %.split, %..critedge_crit_edge.split.us199 - %.0133.us193 = phi ptr [ %121, %..critedge_crit_edge.split.us199 ], [ %97, %.split ] - %105 = load double, ptr %.0133.us193, align 8, !tbaa !102 +.lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 + %.0133.us197 = phi ptr [ %121, %..critedge_crit_edge.split.us199 ], [ %97, %.split ] + %105 = load double, ptr %.0133.us197, align 8, !tbaa !102 %.fr = freeze double %105 %106 = fsub double %.0132, %.fr %107 = fmul double %106, %76 %108 = fcmp ult double %107, 0.000000e+00 - br i1 %108, label %.lr.ph182.split.split.us.us, label %.lr.ph182.split.split.us198 + br i1 %108, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 -.lr.ph182.split.split.us198: ; preds = %.lr.ph182.us, %117 - %.1136180.us194 = phi ptr [ %119, %117 ], [ %.fr262, %.lr.ph182.us ] - %109 = getelementptr inbounds nuw i8, ptr %.1136180.us194, i64 16 +.lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %117 + %.1136184.us198 = phi ptr [ %119, %117 ], [ %.fr285, %.lr.ph182.us ] + %109 = getelementptr inbounds nuw i8, ptr %.1136184.us198, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !94 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1032 %112 = load double, ptr %111, align 8, !tbaa !72 @@ -4718,24 +4718,24 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %114 = fmul double %113, %76 %115 = fcmp ogt double %114, 0.000000e+00 %116 = fcmp oeq double %112, %.fr - %or.cond258 = or i1 %115, %116 - br i1 %or.cond258, label %.loopexit, label %117 + %or.cond281 = or i1 %115, %116 + br i1 %or.cond281, label %.loopexit, label %117 -117: ; preds = %.lr.ph182.split.split.us198 - %118 = getelementptr inbounds nuw i8, ptr %.1136180.us194, i64 120 +117: ; preds = %.lr.ph186.split.split.us202 + %118 = getelementptr inbounds nuw i8, ptr %.1136184.us198, i64 120 %119 = load ptr, ptr %118, align 8, !tbaa !90 - %.not151.us195 = icmp eq ptr %119, null - br i1 %.not151.us195, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us198 + %.not151.us199 = icmp eq ptr %119, null + br i1 %.not151.us199, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us202 -..critedge_crit_edge.split.us199: ; preds = %117, %130 - %120 = getelementptr inbounds nuw i8, ptr %.0133.us193, i64 816 +..critedge_crit_edge.split.us203: ; preds = %117, %130 + %120 = getelementptr inbounds nuw i8, ptr %.0133.us197, i64 816 %121 = load ptr, ptr %120, align 8, !tbaa !82 %122 = icmp eq ptr %121, null - br i1 %122, label %.loopexit, label %.lr.ph182.us + br i1 %122, label %.loopexit, label %.lr.ph186.us -.lr.ph182.split.split.us.us: ; preds = %.lr.ph182.us, %130 - %.1136180.us183.us = phi ptr [ %132, %130 ], [ %.fr262, %.lr.ph182.us ] - %123 = getelementptr inbounds nuw i8, ptr %.1136180.us183.us, i64 16 +.lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %130 + %.1136184.us187.us = phi ptr [ %132, %130 ], [ %.fr285, %.lr.ph182.us ] + %123 = getelementptr inbounds nuw i8, ptr %.1136184.us187.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !94 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1032 %126 = load double, ptr %125, align 8, !tbaa !72 @@ -4744,20 +4744,20 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %129 = fcmp ogt double %128, 0.000000e+00 br i1 %129, label %.loopexit, label %130 -130: ; preds = %.lr.ph182.split.split.us.us - %131 = getelementptr inbounds nuw i8, ptr %.1136180.us183.us, i64 120 +130: ; preds = %.lr.ph186.split.split.us.us + %131 = getelementptr inbounds nuw i8, ptr %.1136184.us187.us, i64 120 %132 = load ptr, ptr %131, align 8, !tbaa !90 - %.not151.us184.us = icmp eq ptr %132, null - br i1 %.not151.us184.us, label %..critedge_crit_edge.split.us199, label %.lr.ph182.split.split.us.us + %.not151.us188.us = icmp eq ptr %132, null + br i1 %.not151.us188.us, label %..critedge_crit_edge.split.us203, label %.lr.ph186.split.split.us.us -.lr.ph182: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph186: ; preds = %.split, %..critedge_crit_edge.split.us %.0133 = phi ptr [ %146, %..critedge_crit_edge.split.us ], [ %97, %.split ] %133 = load double, ptr %.0133, align 8, !tbaa !102 br label %134 -134: ; preds = %142, %.lr.ph182 - %.1136180.us = phi ptr [ %.fr262, %.lr.ph182 ], [ %144, %142 ] - %135 = getelementptr inbounds nuw i8, ptr %.1136180.us, i64 16 +134: ; preds = %142, %.lr.ph186 + %.1136184.us = phi ptr [ %.fr285, %.lr.ph182 ], [ %144, %142 ] + %135 = getelementptr inbounds nuw i8, ptr %.1136184.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !94 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1032 %138 = load double, ptr %137, align 8, !tbaa !72 @@ -4767,7 +4767,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %141, label %.loopexit, label %142 142: ; preds = %134 - %143 = getelementptr inbounds nuw i8, ptr %.1136180.us, i64 120 + %143 = getelementptr inbounds nuw i8, ptr %.1136184.us, i64 120 %144 = load ptr, ptr %143, align 8, !tbaa !90 %.not151.us = icmp eq ptr %144, null br i1 %.not151.us, label %..critedge_crit_edge.split.us, label %134 @@ -4776,100 +4776,100 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %145 = getelementptr inbounds nuw i8, ptr %.0133, i64 816 %146 = load ptr, ptr %145, align 8, !tbaa !82 %147 = icmp eq ptr %146, null - br i1 %147, label %.loopexit, label %.lr.ph182 + br i1 %147, label %.loopexit, label %.lr.ph186 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us199, %.lr.ph182.split.split.us198, %.lr.ph182.split.split.us.us - %.0133174 = phi ptr [ %.0133.us193, %.lr.ph182.split.split.us.us ], [ %.0133.us193, %.lr.ph182.split.split.us198 ], [ %.0133.us193, %..critedge_crit_edge.split.us199 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us + %.0133178 = phi ptr [ %.0133.us197, %.lr.ph182.split.split.us.us ], [ %.0133.us197, %.lr.ph182.split.split.us198 ], [ %.0133.us193, %..critedge_crit_edge.split.us199 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 96 %149 = getelementptr inbounds nuw i8, ptr %14, i64 64 %150 = icmp eq i32 %2, 2 - br i1 %150, label %.split217.split.us, label %.split217.split.split + br i1 %150, label %.split222.split.us, label %.split222.split.split -.split217.us.split.us: ; preds = %.loopexit.thread +.split222.us.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %151 -151: ; preds = %.split217.us.split.us +151: ; preds = %.split222.us.split.us %152 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split217.us.split.split.us: ; preds = %.loopexit.thread +.split222.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not153.us.us, label %.critedge163, label %153 -153: ; preds = %.split217.us.split.split.us +153: ; preds = %.split222.us.split.split.us %154 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.0133.us) br label %.critedge163 -.split217.split.us: ; preds = %.loopexit +.split222.split.us: ; preds = %.loopexit %155 = load ptr, ptr %148, align 8, !tbaa !26 - %.not153.us222 = icmp eq ptr %.0133174, %155 - br i1 %.not153.us222, label %.lr.ph210.us.preheader, label %156 + %.not153.us229 = icmp eq ptr %.0133178, %155 + br i1 %.not153.us229, label %.lr.ph214.us.preheader, label %156 -156: ; preds = %.split217.split.us - %157 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133174) - %.not154.us223 = icmp eq i32 %157, 0 - br i1 %.not154.us223, label %.lr.ph210.us.preheader, label %.critedge163 +156: ; preds = %.split222.split.us + %157 = tail call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef nonnull %.0133178) + %.not154.us230 = icmp eq i32 %157, 0 + br i1 %.not154.us230, label %.lr.ph214.us.preheader, label %.critedge163 -.lr.ph210.us.preheader: ; preds = %156, %.split217.split.us - br label %.lr.ph210.us +.lr.ph214.us.preheader: ; preds = %156, %.split222.split.us + br label %.lr.ph214.us -.lr.ph210.us: ; preds = %.lr.ph210.us.preheader, %178 - %.2137208.us = phi ptr [ %180, %178 ], [ %.fr262, %.lr.ph210.us.preheader ] - %158 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 16 +.lr.ph214.us: ; preds = %.lr.ph214.us.preheader, %178 + %.2137212.us = phi ptr [ %180, %178 ], [ %.fr285, %.lr.ph210.us.preheader ] + %158 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !94 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1032 %161 = load double, ptr %160, align 8, !tbaa !72 - %162 = load double, ptr %.0133174, align 8, !tbaa !102 + %162 = load double, ptr %.0133178, align 8, !tbaa !102 %163 = fcmp oeq double %161, %162 br i1 %163, label %.thread, label %164 -164: ; preds = %.lr.ph210.us +164: ; preds = %.lr.ph214.us %165 = fsub double %161, %162 %166 = fmul double %165, %76 %167 = fcmp olt double %166, 0.000000e+00 br i1 %167, label %.thread, label %168 168: ; preds = %164 - store ptr %.2137208.us, ptr %149, align 8, !tbaa !41 + store ptr %.2137212.us, ptr %149, align 8, !tbaa !41 %169 = call i32 @CVodeSetStopTime(ptr noundef nonnull %159, double noundef %162) #9 %170 = load ptr, ptr %158, align 8, !tbaa !94 - %171 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 112 + %171 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 112 %172 = load ptr, ptr %171, align 8, !tbaa !98 %173 = call i32 @CVode(ptr noundef %170, double noundef %.0132, ptr noundef %172, ptr noundef nonnull %4, i32 noundef 2) #9 %174 = load double, ptr %4, align 8, !tbaa !67 - %175 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 104 + %175 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 104 store double %174, ptr %175, align 8, !tbaa !151 %176 = icmp slt i32 %173, 0 br i1 %176, label %.thread164, label %178 -.thread: ; preds = %.lr.ph210.us, %164 - %177 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 104 +.thread: ; preds = %.lr.ph214.us, %164 + %177 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 104 store double %161, ptr %177, align 8, !tbaa !151 br label %178 178: ; preds = %.thread, %168 %.5.us = phi i32 [ %173, %168 ], [ 0, %.thread ] - %179 = getelementptr inbounds nuw i8, ptr %.2137208.us, i64 120 + %179 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 120 %180 = load ptr, ptr %179, align 8, !tbaa !90 %.not155.us = icmp eq ptr %180, null - br i1 %.not155.us, label %.critedge163, label %.lr.ph210.us + br i1 %.not155.us, label %.critedge163, label %.lr.ph214.us -.split217.split.split: ; preds = %.loopexit, %220 - %.1134 = phi ptr [ %222, %220 ], [ %.0133174, %.loopexit ] +.split222.split.split: ; preds = %.loopexit, %220 + %.1134 = phi ptr [ %222, %220 ], [ %.0133178, %.loopexit ] %181 = load ptr, ptr %148, align 8, !tbaa !26 %.not153 = icmp eq ptr %.1134, %181 - br i1 %.not153, label %.lr.ph210.preheader, label %182 + br i1 %.not153, label %.lr.ph214.preheader, label %182 -182: ; preds = %.split217.split.split +182: ; preds = %.split222.split.split %183 = call fastcc i32 @CVAdataStore(ptr noundef %0, ptr noundef %.1134) %.not154 = icmp eq i32 %183, 0 - br i1 %.not154, label %.lr.ph210.preheader, label %.critedge163 + br i1 %.not154, label %.lr.ph214.preheader, label %.critedge163 -.lr.ph210.preheader: ; preds = %182, %.split217.split.split - br label %.lr.ph210 +.lr.ph214.preheader: ; preds = %182, %.split222.split.split + br label %.lr.ph214 -.lr.ph210: ; preds = %.lr.ph210.preheader, %208 - %.2137208 = phi ptr [ %210, %208 ], [ %.fr262, %.lr.ph210.preheader ] - %184 = getelementptr inbounds nuw i8, ptr %.2137208, i64 16 +.lr.ph214: ; preds = %.lr.ph214.preheader, %208 + %.2137212 = phi ptr [ %210, %208 ], [ %.fr285, %.lr.ph210.preheader ] + %184 = getelementptr inbounds nuw i8, ptr %.2137212, i64 16 %185 = load ptr, ptr %184, align 8, !tbaa !94 %186 = getelementptr inbounds nuw i8, ptr %185, i64 1032 %187 = load double, ptr %186, align 8, !tbaa !72 @@ -4877,72 +4877,72 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna %189 = fcmp oeq double %187, %188 br i1 %189, label %190, label %194 -190: ; preds = %.lr.ph210 +190: ; preds = %.lr.ph214 %191 = fsub double %.0132, %188 %192 = fmul double %191, %76 %193 = fcmp olt double %192, 0.000000e+00 - br i1 %193, label %.thread316, label %194 + br i1 %193, label %.thread339, label %194 -194: ; preds = %190, %.lr.ph210 +194: ; preds = %190, %.lr.ph214 %195 = fsub double %187, %188 %196 = fmul double %195, %76 %197 = fcmp olt double %196, 0.000000e+00 - br i1 %197, label %.thread316, label %198 + br i1 %197, label %.thread339, label %198 198: ; preds = %194 - store ptr %.2137208, ptr %149, align 8, !tbaa !41 + store ptr %.2137212, ptr %149, align 8, !tbaa !41 %199 = call i32 @CVodeSetStopTime(ptr noundef nonnull %185, double noundef %188) #9 %200 = load ptr, ptr %184, align 8, !tbaa !94 - %201 = getelementptr inbounds nuw i8, ptr %.2137208, i64 112 + %201 = getelementptr inbounds nuw i8, ptr %.2137212, i64 112 %202 = load ptr, ptr %201, align 8, !tbaa !98 %203 = call i32 @CVode(ptr noundef %200, double noundef %.0132, ptr noundef %202, ptr noundef nonnull %4, i32 noundef %2) #9 %204 = load double, ptr %4, align 8, !tbaa !67 - %205 = getelementptr inbounds nuw i8, ptr %.2137208, i64 104 + %205 = getelementptr inbounds nuw i8, ptr %.2137212, i64 104 store double %204, ptr %205, align 8, !tbaa !151 %206 = icmp slt i32 %203, 0 br i1 %206, label %.thread164, label %208 -.thread316: ; preds = %190, %194 - %207 = getelementptr inbounds nuw i8, ptr %.2137208, i64 104 +.thread339: ; preds = %190, %194 + %207 = getelementptr inbounds nuw i8, ptr %.2137212, i64 104 store double %187, ptr %207, align 8, !tbaa !151 br label %208 -208: ; preds = %198, %.thread316 +208: ; preds = %198, %.thread339 %.5 = phi i32 [ %203, %198 ], [ 0, %.thread316 ] - %209 = getelementptr inbounds nuw i8, ptr %.2137208, i64 120 + %209 = getelementptr inbounds nuw i8, ptr %.2137212, i64 120 %210 = load ptr, ptr %209, align 8, !tbaa !90 %.not155 = icmp eq ptr %210, null - br i1 %.not155, label %._crit_edge211, label %.lr.ph210 + br i1 %.not155, label %.preheader, label %.lr.ph214 .thread164: ; preds = %198, %168 - %.us-phi226 = phi i32 [ %173, %168 ], [ %203, %198 ] - %.us-phi227 = phi ptr [ %.2137208.us, %168 ], [ %.2137208, %198 ] - %211 = load i32, ptr %.us-phi227, align 8, !tbaa !141 - call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi226, i32 noundef 1604, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %211) #9 + %.us-phi233 = phi i32 [ %173, %168 ], [ %203, %198 ] + %.us-phi234 = phi ptr [ %.2137212.us, %168 ], [ %.2137212, %198 ] + %211 = load i32, ptr %.us-phi234, align 8, !tbaa !141 + call void (ptr, i32, i32, ptr, ptr, ptr, ...) @cvProcessError(ptr noundef nonnull %0, i32 noundef %.us-phi233, i32 noundef 1604, ptr noundef nonnull @__func__.CVodeB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %211) #9 br label %.critedge163 -._crit_edge211: ; preds = %208, %217 - %.3138213 = phi ptr [ %219, %217 ], [ %.fr262, %208 ] - %212 = getelementptr inbounds nuw i8, ptr %.3138213, i64 104 +.preheader: ; preds = %208, %217 + %.3138218 = phi ptr [ %219, %217 ], [ %.fr285, %208 ] + %212 = getelementptr inbounds nuw i8, ptr %.3138218, i64 104 %213 = load double, ptr %212, align 8, !tbaa !151 %214 = fsub double %213, %.0132 %215 = fmul double %214, %76 %216 = fcmp ogt double %215, 0.000000e+00 br i1 %216, label %220, label %217 -217: ; preds = %._crit_edge211 - %218 = getelementptr inbounds nuw i8, ptr %.3138213, i64 120 +217: ; preds = %.preheader + %218 = getelementptr inbounds nuw i8, ptr %.3138218, i64 120 %219 = load ptr, ptr %218, align 8, !tbaa !90 %.not157.not = icmp eq ptr %219, null - br i1 %.not157.not, label %.critedge163, label %._crit_edge211 + br i1 %.not157.not, label %.critedge163, label %.preheader -220: ; preds = %._crit_edge211 +220: ; preds = %.preheader %221 = getelementptr inbounds nuw i8, ptr %.1134, i64 816 %222 = load ptr, ptr %221, align 8, !tbaa !82 - br label %.split217.split.split + br label %.split222.split.split -.critedge163: ; preds = %182, %217, %178, %153, %151, %.split217.us.split.us, %156, %.split217.us.split.split.us, %.thread164, %94, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi226, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] +.critedge163: ; preds = %182, %217, %178, %153, %151, %.split222.us.split.us, %156, %.split222.us.split.split.us, %.thread164, %94, %74, %70, %53, %47, %24, %18, %11, %6 + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi233, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/sundials/optimized/idaa.ll b/bench/sundials/optimized/idaa.ll index a552f4cd92f..6deec032070 100644 --- a/bench/sundials/optimized/idaa.ll +++ b/bench/sundials/optimized/idaa.ll @@ -4188,7 +4188,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %14, i64 48 %21 = load ptr, ptr %20, align 8, !tbaa !38 - %.fr235 = freeze ptr %21 + %.fr248 = freeze ptr %21 %22 = getelementptr inbounds nuw i8, ptr %14, i64 16 %23 = load i32, ptr %22, align 8, !tbaa !41 %.not = icmp eq i32 %23, 0 @@ -4201,44 +4201,44 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 25: ; preds = %19 %26 = getelementptr inbounds nuw i8, ptr %14, i64 8 %27 = load double, ptr %26, align 8, !tbaa !58 - %.fr233 = freeze double %27 + %.fr246 = freeze double %27 %28 = load double, ptr %14, align 8, !tbaa !59 - %.fr234 = freeze double %28 - %29 = fcmp ogt double %.fr233, %.fr234 + %.fr247 = freeze double %28 + %29 = fcmp ogt double %.fr246, %.fr247 %30 = select i1 %29, i32 1, i32 -1 %31 = getelementptr inbounds nuw i8, ptr %14, i64 72 %32 = load i32, ptr %31, align 8, !tbaa !43 %.not148 = icmp eq i32 %32, 0 - br i1 %.not148, label %72, label %.preheader171 + br i1 %.not148, label %72, label %.preheader172 -.preheader171: ; preds = %25 - %.not149178 = icmp eq ptr %.fr235, null - br i1 %.not149178, label %._crit_edge, label %.lr.ph +.preheader172: ; preds = %25 + %.not149182 = icmp eq ptr %.fr248, null + br i1 %.not149182, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %.preheader171 +.lr.ph: ; preds = %.preheader172 %33 = sitofp i32 %30 to double %34 = getelementptr inbounds nuw i8, ptr %14, i64 188 br label %35 35: ; preds = %.lr.ph, %62 - %.0134179 = phi ptr [ %.fr235, %.lr.ph ], [ %64, %62 ] - %36 = getelementptr inbounds nuw i8, ptr %.0134179, i64 16 + %.0134183 = phi ptr [ %.fr248, %.lr.ph ], [ %64, %62 ] + %36 = getelementptr inbounds nuw i8, ptr %.0134183, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !89 %38 = getelementptr inbounds nuw i8, ptr %37, i64 1272 %39 = load double, ptr %38, align 8, !tbaa !98 - %40 = fsub double %39, %.fr234 + %40 = fsub double %39, %.fr247 %41 = fmul double %40, %33 %42 = fcmp olt double %41, 0.000000e+00 br i1 %42, label %47, label %43 43: ; preds = %35 - %44 = fsub double %.fr233, %39 + %44 = fsub double %.fr246, %39 %45 = fmul double %44, %33 %46 = fcmp olt double %45, 0.000000e+00 br i1 %46, label %47, label %49 47: ; preds = %43, %35 - %48 = load i32, ptr %.0134179, align 8, !tbaa !143 + %48 = load i32, ptr %.0134183, align 8, !tbaa !143 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -104, i32 noundef 1646, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.11, i32 noundef %48) #9 br label %.critedge164 @@ -4249,18 +4249,18 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %52, label %55, label %53 53: ; preds = %49 - %54 = load i32, ptr %.0134179, align 8, !tbaa !143 + %54 = load i32, ptr %.0134183, align 8, !tbaa !143 tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -22, i32 noundef 1654, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.17, i32 noundef %54) #9 br label %.critedge164 55: ; preds = %49 - %56 = getelementptr inbounds nuw i8, ptr %.0134179, i64 24 + %56 = getelementptr inbounds nuw i8, ptr %.0134183, i64 24 %57 = load i32, ptr %56, align 8, !tbaa !146 %.not160 = icmp eq i32 %57, 0 br i1 %.not160, label %58, label %61 58: ; preds = %55 - %59 = getelementptr inbounds nuw i8, ptr %.0134179, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.0134183, i64 28 %60 = load i32, ptr %59, align 4, !tbaa !150 %.not161 = icmp eq i32 %60, 0 br i1 %.not161, label %62, label %61 @@ -4270,12 +4270,12 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %62 62: ; preds = %61, %58 - %63 = getelementptr inbounds nuw i8, ptr %.0134179, i64 128 + %63 = getelementptr inbounds nuw i8, ptr %.0134183, i64 128 %64 = load ptr, ptr %63, align 8, !tbaa !85 %.not149 = icmp eq ptr %64, null br i1 %.not149, label %._crit_edge, label %35 -._crit_edge: ; preds = %62, %.preheader171 +._crit_edge: ; preds = %62, %.preheader172 %65 = getelementptr inbounds nuw i8, ptr %14, i64 188 %66 = load i32, ptr %65, align 4, !tbaa !36 %.not150 = icmp eq i32 %66, 0 @@ -4306,13 +4306,13 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u 75: ; preds = %72 %76 = sitofp i32 %30 to double - %77 = fsub double %1, %.fr234 + %77 = fsub double %1, %.fr247 %78 = fmul double %77, %76 %79 = fcmp olt double %78, 0.000000e+00 br i1 %79, label %84, label %80 80: ; preds = %75 - %81 = fsub double %.fr233, %1 + %81 = fsub double %.fr246, %1 %82 = fmul double %81, %76 %83 = fcmp olt double %82, 0.000000e+00 br i1 %83, label %94, label %95 @@ -4321,8 +4321,8 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 %86 = load double, ptr %85, align 8, !tbaa !63 %87 = fmul double %86, 1.000000e+02 - %88 = tail call double @llvm.fabs.f64(double %.fr234) - %89 = tail call double @llvm.fabs.f64(double %.fr233) + %88 = tail call double @llvm.fabs.f64(double %.fr247) + %89 = tail call double @llvm.fabs.f64(double %.fr246) %90 = fadd double %89, %88 %91 = fmul double %90, %87 %92 = tail call double @llvm.fabs.f64(double %77) @@ -4334,11 +4334,11 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.critedge164 95: ; preds = %84, %80 - %.0130 = phi double [ %1, %80 ], [ %.fr234, %84 ] + %.0130 = phi double [ %1, %80 ], [ %.fr247, %84 ] %96 = getelementptr inbounds nuw i8, ptr %14, i64 80 %97 = load ptr, ptr %96, align 8, !tbaa !76 - %.not152180 = icmp eq ptr %.fr235, null - br i1 %.not152180, label %.critedge.us, label %.split + %.not152184 = icmp eq ptr %.fr248, null + br i1 %.not152184, label %.critedge.us, label %.split .critedge.us: ; preds = %95, %.critedge.us %.0138.us = phi ptr [ %99, %.critedge.us ], [ %97, %95 ] @@ -4352,24 +4352,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %102 = icmp eq i32 %2, 2 %103 = load ptr, ptr %101, align 8, !tbaa !112 %.not154.us.us = icmp eq ptr %.0138.us, %103 - br i1 %102, label %.split218.us.split.us, label %.split218.us.split.split.us + br i1 %102, label %.split223.us.split.us, label %.split223.us.split.split.us .split: ; preds = %95 %104 = icmp eq i32 %2, 1 - br i1 %104, label %.lr.ph183.us, label %.lr.ph183 + br i1 %104, label %.lr.ph187.us, label %.lr.ph187 -.lr.ph183.us: ; preds = %.split, %..critedge_crit_edge.split.us200 - %.0138.us194 = phi ptr [ %121, %..critedge_crit_edge.split.us200 ], [ %97, %.split ] - %105 = load double, ptr %.0138.us194, align 8, !tbaa !99 +.lr.ph187.us: ; preds = %.split, %..critedge_crit_edge.split.us204 + %.0138.us198 = phi ptr [ %121, %..critedge_crit_edge.split.us200 ], [ %97, %.split ] + %105 = load double, ptr %.0138.us198, align 8, !tbaa !99 %.fr = freeze double %105 %106 = fsub double %.0130, %.fr %107 = fmul double %106, %76 %108 = fcmp ult double %107, 0.000000e+00 - br i1 %108, label %.lr.ph183.split.split.us.us, label %.lr.ph183.split.split.us199 + br i1 %108, label %.lr.ph187.split.split.us.us, label %.lr.ph187.split.split.us203 -.lr.ph183.split.split.us199: ; preds = %.lr.ph183.us, %117 - %.1135181.us195 = phi ptr [ %119, %117 ], [ %.fr235, %.lr.ph183.us ] - %109 = getelementptr inbounds nuw i8, ptr %.1135181.us195, i64 16 +.lr.ph187.split.split.us203: ; preds = %.lr.ph187.us, %117 + %.1135185.us199 = phi ptr [ %119, %117 ], [ %.fr248, %.lr.ph183.us ] + %109 = getelementptr inbounds nuw i8, ptr %.1135185.us199, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !89 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1272 %112 = load double, ptr %111, align 8, !tbaa !98 @@ -4377,24 +4377,24 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %114 = fmul double %113, %76 %115 = fcmp ogt double %114, 0.000000e+00 %116 = fcmp oeq double %112, %.fr - %or.cond231 = or i1 %115, %116 - br i1 %or.cond231, label %.loopexit, label %117 + %or.cond244 = or i1 %115, %116 + br i1 %or.cond244, label %.loopexit, label %117 -117: ; preds = %.lr.ph183.split.split.us199 - %118 = getelementptr inbounds nuw i8, ptr %.1135181.us195, i64 128 +117: ; preds = %.lr.ph187.split.split.us203 + %118 = getelementptr inbounds nuw i8, ptr %.1135185.us199, i64 128 %119 = load ptr, ptr %118, align 8, !tbaa !85 - %.not152.us196 = icmp eq ptr %119, null - br i1 %.not152.us196, label %..critedge_crit_edge.split.us200, label %.lr.ph183.split.split.us199 + %.not152.us200 = icmp eq ptr %119, null + br i1 %.not152.us200, label %..critedge_crit_edge.split.us204, label %.lr.ph187.split.split.us203 -..critedge_crit_edge.split.us200: ; preds = %117, %130 - %120 = getelementptr inbounds nuw i8, ptr %.0138.us194, i64 592 +..critedge_crit_edge.split.us204: ; preds = %117, %130 + %120 = getelementptr inbounds nuw i8, ptr %.0138.us198, i64 592 %121 = load ptr, ptr %120, align 8, !tbaa !78 %122 = icmp eq ptr %121, null - br i1 %122, label %.loopexit, label %.lr.ph183.us + br i1 %122, label %.loopexit, label %.lr.ph187.us -.lr.ph183.split.split.us.us: ; preds = %.lr.ph183.us, %130 - %.1135181.us184.us = phi ptr [ %132, %130 ], [ %.fr235, %.lr.ph183.us ] - %123 = getelementptr inbounds nuw i8, ptr %.1135181.us184.us, i64 16 +.lr.ph187.split.split.us.us: ; preds = %.lr.ph187.us, %130 + %.1135185.us188.us = phi ptr [ %132, %130 ], [ %.fr248, %.lr.ph183.us ] + %123 = getelementptr inbounds nuw i8, ptr %.1135185.us188.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !89 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1272 %126 = load double, ptr %125, align 8, !tbaa !98 @@ -4403,20 +4403,20 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %129 = fcmp ogt double %128, 0.000000e+00 br i1 %129, label %.loopexit, label %130 -130: ; preds = %.lr.ph183.split.split.us.us - %131 = getelementptr inbounds nuw i8, ptr %.1135181.us184.us, i64 128 +130: ; preds = %.lr.ph187.split.split.us.us + %131 = getelementptr inbounds nuw i8, ptr %.1135185.us188.us, i64 128 %132 = load ptr, ptr %131, align 8, !tbaa !85 - %.not152.us185.us = icmp eq ptr %132, null - br i1 %.not152.us185.us, label %..critedge_crit_edge.split.us200, label %.lr.ph183.split.split.us.us + %.not152.us189.us = icmp eq ptr %132, null + br i1 %.not152.us189.us, label %..critedge_crit_edge.split.us204, label %.lr.ph187.split.split.us.us -.lr.ph183: ; preds = %.split, %..critedge_crit_edge.split.us +.lr.ph187: ; preds = %.split, %..critedge_crit_edge.split.us %.0138 = phi ptr [ %146, %..critedge_crit_edge.split.us ], [ %97, %.split ] %133 = load double, ptr %.0138, align 8, !tbaa !99 br label %134 -134: ; preds = %142, %.lr.ph183 - %.1135181.us = phi ptr [ %.fr235, %.lr.ph183 ], [ %144, %142 ] - %135 = getelementptr inbounds nuw i8, ptr %.1135181.us, i64 16 +134: ; preds = %142, %.lr.ph187 + %.1135185.us = phi ptr [ %.fr248, %.lr.ph183 ], [ %144, %142 ] + %135 = getelementptr inbounds nuw i8, ptr %.1135185.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !89 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1272 %138 = load double, ptr %137, align 8, !tbaa !98 @@ -4426,7 +4426,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %141, label %.loopexit, label %142 142: ; preds = %134 - %143 = getelementptr inbounds nuw i8, ptr %.1135181.us, i64 128 + %143 = getelementptr inbounds nuw i8, ptr %.1135185.us, i64 128 %144 = load ptr, ptr %143, align 8, !tbaa !85 %.not152.us = icmp eq ptr %144, null br i1 %.not152.us, label %..critedge_crit_edge.split.us, label %134 @@ -4435,46 +4435,46 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %145 = getelementptr inbounds nuw i8, ptr %.0138, i64 592 %146 = load ptr, ptr %145, align 8, !tbaa !78 %147 = icmp eq ptr %146, null - br i1 %147, label %.loopexit, label %.lr.ph183 + br i1 %147, label %.loopexit, label %.lr.ph187 -.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us200, %.lr.ph183.split.split.us199, %.lr.ph183.split.split.us.us - %.0138175 = phi ptr [ %.0138.us194, %.lr.ph183.split.split.us.us ], [ %.0138.us194, %.lr.ph183.split.split.us199 ], [ %.0138.us194, %..critedge_crit_edge.split.us200 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] +.loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us204, %.lr.ph187.split.split.us203, %.lr.ph187.split.split.us.us + %.0138179 = phi ptr [ %.0138.us198, %.lr.ph183.split.split.us.us ], [ %.0138.us198, %.lr.ph183.split.split.us199 ], [ %.0138.us194, %..critedge_crit_edge.split.us200 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 88 %149 = icmp eq i32 %2, 2 %150 = getelementptr inbounds nuw i8, ptr %14, i64 64 - br label %.split218 + br label %.split223 -.split218.us.split.us: ; preds = %.loopexit.thread +.split223.us.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %151 -151: ; preds = %.split218.us.split.us +151: ; preds = %.split223.us.split.us %152 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split218.us.split.split.us: ; preds = %.loopexit.thread +.split223.us.split.split.us: ; preds = %.loopexit.thread br i1 %.not154.us.us, label %.critedge164, label %153 -153: ; preds = %.split218.us.split.split.us +153: ; preds = %.split223.us.split.split.us %154 = tail call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.0138.us) br label %.critedge164 -.split218: ; preds = %.loopexit, %197 - %.1139 = phi ptr [ %199, %197 ], [ %.0138175, %.loopexit ] +.split223: ; preds = %.loopexit, %197 + %.1139 = phi ptr [ %199, %197 ], [ %.0138179, %.loopexit ] %155 = load ptr, ptr %148, align 8, !tbaa !112 %.not154 = icmp eq ptr %.1139, %155 - br i1 %.not154, label %.lr.ph211.preheader, label %156 + br i1 %.not154, label %.lr.ph215.preheader, label %156 -156: ; preds = %.split218 +156: ; preds = %.split223 %157 = call fastcc i32 @IDAAdataStore(ptr noundef %0, ptr noundef %.1139) %.not155 = icmp eq i32 %157, 0 - br i1 %.not155, label %.lr.ph211.preheader, label %.critedge164 + br i1 %.not155, label %.lr.ph215.preheader, label %.critedge164 -.lr.ph211.preheader: ; preds = %156, %.split218 - br label %.lr.ph211 +.lr.ph215.preheader: ; preds = %156, %.split223 + br label %.lr.ph215 -.lr.ph211: ; preds = %.lr.ph211.preheader, %185 - %.2136209 = phi ptr [ %187, %185 ], [ %.fr235, %.lr.ph211.preheader ] - %158 = getelementptr inbounds nuw i8, ptr %.2136209, i64 16 +.lr.ph215: ; preds = %.lr.ph215.preheader, %185 + %.2136213 = phi ptr [ %187, %185 ], [ %.fr248, %.lr.ph211.preheader ] + %158 = getelementptr inbounds nuw i8, ptr %.2136213, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !89 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1272 %161 = load double, ptr %160, align 8, !tbaa !98 @@ -4482,13 +4482,13 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u %163 = fcmp oeq double %161, %162 br i1 %163, label %164, label %168 -164: ; preds = %.lr.ph211 +164: ; preds = %.lr.ph215 %165 = fsub double %.0130, %162 %166 = fmul double %165, %76 %167 = fcmp olt double %166, 0.000000e+00 br i1 %167, label %.thread, label %168 -168: ; preds = %164, %.lr.ph211 +168: ; preds = %164, %.lr.ph215 %or.cond3 = and i1 %149, %163 %169 = fsub double %161, %162 %170 = fmul double %169, %76 @@ -4497,61 +4497,61 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %172, label %.thread, label %173 173: ; preds = %168 - store ptr %.2136209, ptr %150, align 8, !tbaa !39 + store ptr %.2136213, ptr %150, align 8, !tbaa !39 %174 = call i32 @IDASetStopTime(ptr noundef nonnull %159, double noundef %162) #9 %175 = load ptr, ptr %158, align 8, !tbaa !89 - %176 = getelementptr inbounds nuw i8, ptr %.2136209, i64 112 + %176 = getelementptr inbounds nuw i8, ptr %.2136213, i64 112 %177 = load ptr, ptr %176, align 8, !tbaa !93 - %178 = getelementptr inbounds nuw i8, ptr %.2136209, i64 120 + %178 = getelementptr inbounds nuw i8, ptr %.2136213, i64 120 %179 = load ptr, ptr %178, align 8, !tbaa !94 %180 = call i32 @IDASolve(ptr noundef %175, double noundef %.0130, ptr noundef nonnull %4, ptr noundef %177, ptr noundef %179, i32 noundef %2) #9 %181 = load double, ptr %4, align 8, !tbaa !65 - %182 = getelementptr inbounds nuw i8, ptr %.2136209, i64 104 + %182 = getelementptr inbounds nuw i8, ptr %.2136213, i64 104 store double %181, ptr %182, align 8, !tbaa !153 %183 = icmp slt i32 %180, 0 br i1 %183, label %.thread165, label %185 .thread: ; preds = %164, %168 - %184 = getelementptr inbounds nuw i8, ptr %.2136209, i64 104 + %184 = getelementptr inbounds nuw i8, ptr %.2136213, i64 104 store double %161, ptr %184, align 8, !tbaa !153 br label %185 185: ; preds = %173, %.thread %.5 = phi i32 [ %180, %173 ], [ 0, %.thread ] - %186 = getelementptr inbounds nuw i8, ptr %.2136209, i64 128 + %186 = getelementptr inbounds nuw i8, ptr %.2136213, i64 128 %187 = load ptr, ptr %186, align 8, !tbaa !85 %.not156 = icmp eq ptr %187, null - br i1 %.not156, label %._crit_edge212, label %.lr.ph211 + br i1 %.not156, label %._crit_edge216, label %.lr.ph215 .thread165: ; preds = %173 - %188 = load i32, ptr %.2136209, align 8, !tbaa !143 + %188 = load i32, ptr %.2136213, align 8, !tbaa !143 call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef %180, i32 noundef 1809, ptr noundef nonnull @__func__.IDASolveB, ptr noundef nonnull @.str, ptr noundef nonnull @.str.18, i32 noundef %188) #9 br label %.critedge164 -._crit_edge212: ; preds = %185 - br i1 %149, label %.critedge164, label %.lr.ph215 +._crit_edge216: ; preds = %185 + br i1 %149, label %.critedge164, label %.lr.ph220 -.lr.ph215: ; preds = %._crit_edge212, %194 - %.3137214 = phi ptr [ %196, %194 ], [ %.fr235, %._crit_edge212 ] - %189 = getelementptr inbounds nuw i8, ptr %.3137214, i64 104 +.lr.ph220: ; preds = %._crit_edge216, %194 + %.3137219 = phi ptr [ %196, %194 ], [ %.fr248, %._crit_edge212 ] + %189 = getelementptr inbounds nuw i8, ptr %.3137219, i64 104 %190 = load double, ptr %189, align 8, !tbaa !153 %191 = fsub double %190, %.0130 %192 = fmul double %191, %76 %193 = fcmp ogt double %192, 0.000000e+00 br i1 %193, label %197, label %194 -194: ; preds = %.lr.ph215 - %195 = getelementptr inbounds nuw i8, ptr %.3137214, i64 128 +194: ; preds = %.lr.ph220 + %195 = getelementptr inbounds nuw i8, ptr %.3137219, i64 128 %196 = load ptr, ptr %195, align 8, !tbaa !85 %.not158.not = icmp eq ptr %196, null - br i1 %.not158.not, label %.critedge164, label %.lr.ph215 + br i1 %.not158.not, label %.critedge164, label %.lr.ph220 -197: ; preds = %.lr.ph215 +197: ; preds = %.lr.ph220 %198 = getelementptr inbounds nuw i8, ptr %.1139, i64 592 %199 = load ptr, ptr %198, align 8, !tbaa !78 - br label %.split218 + br label %.split223 -.critedge164: ; preds = %._crit_edge212, %156, %194, %153, %151, %.split218.us.split.us, %.split218.us.split.split.us, %.thread165, %94, %74, %70, %53, %47, %24, %18, %11, %6 +.critedge164: ; preds = %._crit_edge216, %156, %194, %153, %151, %.split223.us.split.us, %.split223.us.split.split.us, %.thread165, %94, %74, %70, %53, %47, %24, %18, %11, %6 %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %180, %.thread165 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split218.us.split.split.us ], [ 0, %.split218.us.split.us ], [ %152, %151 ], [ %154, %153 ], [ %.5, %194 ], [ %.5, %._crit_edge212 ], [ %157, %156 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 diff --git a/bench/tev/optimized/StbiLdrImageSaver.ll b/bench/tev/optimized/StbiLdrImageSaver.ll index 45700ef6685..7198b180023 100644 --- a/bench/tev/optimized/StbiLdrImageSaver.ll +++ b/bench/tev/optimized/StbiLdrImageSaver.ll @@ -1636,7 +1636,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit.thread: ; preds = %9, %19, %24 %65 = getelementptr inbounds i8, ptr %63, i64 -4 %66 = load i32, ptr %65, align 4 %67 = icmp sgt i32 %66, 0 - br i1 %67, label %.lr.ph, label %._crit_edge.thread813 + br i1 %67, label %.lr.ph, label %._crit_edge.thread812 .lr.ph: ; preds = %64 %68 = add nsw i32 %.1157655, -32768 @@ -1688,23 +1688,23 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo %.1164 = phi ptr [ %.0163645, %71 ], [ %spec.select601, %_ZL18stbiw__zlib_countmPhS_i.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.thread813, label %71, !llvm.loop !21 + br i1 %exitcond.not, label %._crit_edge.thread812, label %71, !llvm.loop !21 -._crit_edge.thread813: ; preds = %83, %64 - %.0163.lcssa817 = phi ptr [ null, %64 ], [ %.1164, %83 ] - %.0166.lcssa816 = phi i32 [ 3, %64 ], [ %.1167, %83 ] +._crit_edge.thread812: ; preds = %83, %64 + %.0163.lcssa816 = phi ptr [ null, %64 ], [ %.1164, %83 ] + %.0166.lcssa815 = phi i32 [ 3, %64 ], [ %.1167, %83 ] %84 = getelementptr inbounds i8, ptr %63, i64 -4 %85 = load i32, ptr %84, align 4 %86 = icmp eq i32 %85, %35 br i1 %86, label %87, label %89 -87: ; preds = %._crit_edge.thread813 +87: ; preds = %._crit_edge.thread812 %88 = getelementptr inbounds nuw ptr, ptr %63, i64 %36 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %63, ptr noundef nonnull align 8 dereferenceable(1) %88, i64 %37, i1 false) store i32 %spec.store.select, ptr %84, align 4 br label %89 -89: ; preds = %87, %._crit_edge.thread813 +89: ; preds = %87, %._crit_edge.thread812 %90 = phi i32 [ %spec.store.select, %87 ], [ %85, %._crit_edge.thread813 ] %91 = getelementptr inbounds i8, ptr %63, i64 -8 %92 = add nsw i32 %90, 1 @@ -1718,8 +1718,8 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo br label %.thread595 .thread595: ; preds = %40, %94 - %.0163.lcssa812 = phi ptr [ %.0163.lcssa817, %94 ], [ null, %40 ] - %.0166.lcssa810 = phi i32 [ %.0166.lcssa816, %94 ], [ 3, %40 ] + %.0163.lcssa811 = phi ptr [ %.0163.lcssa816, %94 ], [ null, %40 ] + %.0166.lcssa809 = phi i32 [ %.0166.lcssa815, %94 ], [ 3, %40 ] %97 = phi i32 [ %96, %94 ], [ 2, %40 ] %98 = getelementptr inbounds i8, ptr %63, i64 -8 %spec.select.i230 = select i1 %.not196, ptr null, ptr %98 @@ -1745,8 +1745,8 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo br label %_ZL14stbiw__sbgrowfPPvii.exit234 _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, %89 - %.0163.lcssa811 = phi ptr [ %.0163.lcssa812, %106 ], [ %.0163.lcssa812, %.thread595 ], [ %.0163.lcssa817, %89 ] - %.0166.lcssa809 = phi i32 [ %.0166.lcssa810, %106 ], [ %.0166.lcssa810, %.thread595 ], [ %.0166.lcssa816, %89 ] + %.0163.lcssa810 = phi ptr [ %.0163.lcssa811, %106 ], [ %.0163.lcssa811, %.thread595 ], [ %.0163.lcssa816, %89 ] + %.0166.lcssa808 = phi i32 [ %.0166.lcssa809, %106 ], [ %.0166.lcssa809, %.thread595 ], [ %.0166.lcssa815, %89 ] %108 = phi ptr [ %107, %106 ], [ %63, %.thread595 ], [ %63, %89 ] %109 = getelementptr inbounds i8, ptr %108, i64 -4 %110 = load i32, ptr %109, align 4 @@ -1755,7 +1755,7 @@ _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, % %112 = sext i32 %110 to i64 %113 = getelementptr inbounds ptr, ptr %108, i64 %112 store ptr %42, ptr %113, align 8 - %.not199 = icmp eq ptr %.0163.lcssa811, null + %.not199 = icmp eq ptr %.0163.lcssa810, null br i1 %.not199, label %.thread597, label %114 114: ; preds = %_ZL14stbiw__sbgrowfPPvii.exit234 @@ -1833,7 +1833,7 @@ _ZL14stbiw__sbgrowfPPvii.exit234: ; preds = %106, %.thread595, % _ZL18stbiw__zlib_countmPhS_i.exit245: ; preds = %157, %152, %._crit_edge.loopexit.split.loop.exit.i242 %.0.lcssa.i236 = phi i32 [ 0, %152 ], [ %158, %._crit_edge.loopexit.split.loop.exit.i242 ], [ %invariant.smin.i235, %157 ] - %159 = icmp sgt i32 %.0.lcssa.i236, %.0166.lcssa809 + %159 = icmp sgt i32 %.0.lcssa.i236, %.0166.lcssa808 br i1 %159, label %.thread597, label %160 160: ; preds = %146, %_ZL18stbiw__zlib_countmPhS_i.exit245 @@ -1850,12 +1850,12 @@ _ZL18stbiw__zlib_countmPhS_i.exit245: ; preds = %157, %152, %._crit_ %161 = getelementptr inbounds nuw i16, ptr @_ZZ18stbi_zlib_compressPhiPiiE7lengthc, i64 %indvars.iv.next737 %162 = load i16, ptr %161, align 2 %163 = zext i16 %162 to i32 - %.not203 = icmp slt i32 %.0166.lcssa809, %163 + %.not203 = icmp slt i32 %.0166.lcssa808, %163 br i1 %.not203, label %164, label %._crit_edge651, !llvm.loop !23 164: ; preds = %._crit_edge651 %165 = ptrtoint ptr %42 to i64 - %166 = ptrtoint ptr %.0163.lcssa811 to i64 + %166 = ptrtoint ptr %.0163.lcssa810 to i64 %167 = sub i64 %165, %166 %168 = trunc i64 %167 to i32 %169 = trunc nuw nsw i64 %indvars.iv736 to i32 @@ -2040,7 +2040,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit257: ; preds = %_ZL14stbiw__sbgrowf %255 = getelementptr inbounds nuw i16, ptr @_ZZ18stbi_zlib_compressPhiPiiE7lengthc, i64 %253 %256 = load i16, ptr %255, align 2 %257 = zext i16 %256 to i32 - %258 = sub nsw i32 %.0166.lcssa809, %257 + %258 = sub nsw i32 %.0166.lcssa808, %257 %259 = shl i32 %258, %.1543 %260 = or i32 %259, %.1559 %261 = load i8, ptr %254, align 1 @@ -2460,7 +2460,7 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit311: ; preds = %_ZL14stbiw__sbgrowf %.3561 = phi i32 [ %.19577, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %346, %338 ], [ %392, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %433, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %421, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %462, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %377, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.3545 = phi i32 [ %.19, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %349, %338 ], [ %393, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %434, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %422, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %463, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %378, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.4540 = phi ptr [ %.0.lcssa.i291, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0.lcssa.i291, %338 ], [ %.1537654, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ %.1537654, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ %.1.i326, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ %.1.i342, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.1.i310, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] - %.0166.pn = phi i32 [ %.0166.lcssa809, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0166.lcssa809, %338 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.0166.lcssa809, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] + %.0166.pn = phi i32 [ %.0166.lcssa808, %_ZL18stbiw__zlib_flushfPhPjPi.exit300 ], [ %.0166.lcssa808, %338 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit316 ], [ 1, %_ZL18stbiw__zlib_bitrevii.exit332 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i325 ], [ 1, %_ZL14stbiw__sbgrowfPPvii.exit.i341 ], [ %.0166.lcssa808, %_ZL14stbiw__sbgrowfPPvii.exit.i309 ] %.2 = add nsw i32 %.0166.pn, %.1157655 %465 = icmp slt i32 %.2, %32 br i1 %465, label %40, label %.preheader605, !llvm.loop !27 @@ -2831,8 +2831,8 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit402: ; preds = %_ZL14stbiw__sbgrowf %.0153685 = phi i32 [ %.1.lcssa, %._crit_edge680 ], [ 0, %.preheader.preheader ] %.0154684 = phi i32 [ %.1155.lcssa, %._crit_edge680 ], [ 1, %.preheader.preheader ] %.4162683 = phi i32 [ %630, %._crit_edge680 ], [ 0, %.preheader.preheader ] - %.not806 = icmp eq i32 %.0686, 0 - br i1 %.not806, label %._crit_edge680, label %.lr.ph679.preheader + %.not854 = icmp eq i32 %.0686, 0 + br i1 %.not854, label %._crit_edge680, label %.lr.ph679.preheader .lr.ph679.preheader: ; preds = %.preheader %623 = zext nneg i32 %.4162683 to i64 diff --git a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll index c6304d8cb79..d7e33eb341c 100644 --- a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll +++ b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll @@ -133068,18 +133068,18 @@ define void @"_ZN55_$LT$i64$u20$as$u20$typst..foundations..int..i64Ext$GT$10bit_ br i1 %4, label %12, label %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit _ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit: ; preds = %3 - %7 = tail call { ptr, i64 } @"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E"(ptr noalias noundef nonnull readonly align 1 @anon.53fe85e3a453dfbf0ab1e8743506e67c.1339, i64 noundef 23), !noalias !28115 - %8 = extractvalue { ptr, i64 } %7, 0 - %9 = extractvalue { ptr, i64 } %7, 1 - %10 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %10) - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %8, ptr %11, align 8 - br label %12 + %8 = tail call { ptr, i64 } @"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E"(ptr noalias noundef nonnull readonly align 1 @anon.53fe85e3a453dfbf0ab1e8743506e67c.1339, i64 noundef 23), !noalias !28115 + %9 = extractvalue { ptr, i64 } %8, 0 + %10 = extractvalue { ptr, i64 } %8, 1 + %11 = icmp ne ptr %9, null + tail call void @llvm.assume(i1 %11) + %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %9, ptr %12, align 8 + br label %13 -12: ; preds = %3, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit +13: ; preds = %3, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit %.sink16 = phi i64 [ 16, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 8, %3 ] - %.sink = phi i64 [ %9, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %6, %3 ] + %.sink = phi i64 [ %10, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %6, %3 ] %storemerge = phi i64 [ 1, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 0, %3 ] %.sroa.09.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 %.sink16 store i64 %.sink, ptr %.sroa.09.sroa.4.0..sroa_idx, align 8 diff --git a/bench/velox/optimized/DenseHll.ll b/bench/velox/optimized/DenseHll.ll index 69cc466209e..491fb7d6550 100644 --- a/bench/velox/optimized/DenseHll.ll +++ b/bench/velox/optimized/DenseHll.ll @@ -340,20 +340,20 @@ if.then11: ; preds = %if.end br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.else for.body.lr.ph.i: ; preds = %if.then11 - %wide.trip.count.i = zext nneg i16 %13 to i64 + %conv.i18 = zext nneg i16 %13 to i64 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.inc.i ] - %add.ptr2.i.i19 = getelementptr inbounds nuw i16, ptr %14, i64 %indvars.iv.i - %15 = load i16, ptr %add.ptr2.i.i19, align 2 + %add.ptr2.i.i20 = getelementptr inbounds nuw i16, ptr %14, i64 %indvars.iv.i + %15 = load i16, ptr %add.ptr2.i.i20, align 2 %conv3.i = zext i16 %15 to i32 %cmp4.i = icmp eq i32 %index, %conv3.i br i1 %cmp4.i, label %if.then16, label %for.inc.i for.inc.i: ; preds = %for.body.i %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 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i18 br i1 %exitcond.not.i, label %if.else, label %for.body.i, !llvm.loop !6 if.then16: ; preds = %for.body.i @@ -370,15 +370,15 @@ if.else: ; preds = %for.inc.i, %if.then %add.i = add nsw i64 %conv.i21, 1 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 56 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 64 - %17 = load ptr, ptr %_M_finish.i.i.i, align 8 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %17 to i64 + %18 = load ptr, ptr %_M_finish.i.i.i, align 8 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %18 to i64 %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %14 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 1 %cmp.i.i = icmp ugt i64 %add.i, %sub.ptr.div.i.i.i - br i1 %cmp.i.i, label %if.then.i.i24, label %if.else.i.i + br i1 %cmp.i.i, label %if.then.i.i25, label %if.else.i.i -if.then.i.i24: ; preds = %if.else +if.then.i.i25: ; preds = %if.else %overflowBuckets_.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %sub.i.i = sub nuw nsw i64 %add.i, %sub.ptr.div.i.i.i tail call void @_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(32) %overflowBuckets_.i, i64 noundef %sub.i.i) @@ -388,27 +388,27 @@ if.then.i.i24: ; preds = %if.else br label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i if.else.i.i: ; preds = %if.else - %cmp4.i.i22 = icmp ult i64 %add.i, %sub.ptr.div.i.i.i - br i1 %cmp4.i.i22, label %if.then5.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i + %cmp4.i.i23 = icmp ult i64 %add.i, %sub.ptr.div.i.i.i + br i1 %cmp4.i.i23, label %if.then5.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i if.then5.i.i: ; preds = %if.else.i.i %add.ptr6.i.i = getelementptr inbounds i16, ptr %14, i64 %add.i - %tobool.not.i.i.i = icmp eq ptr %17, %add.ptr6.i.i + %tobool.not.i.i.i = icmp eq ptr %18, %add.ptr6.i.i br i1 %tobool.not.i.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then5.i.i store ptr %add.ptr6.i.i, ptr %_M_finish.i.i.i, align 8 br label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i -_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i: ; preds = %if.then.i.i.i, %if.then5.i.i, %if.else.i.i, %if.then.i.i24 +_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i: ; preds = %if.then.i.i.i, %if.then5.i.i, %if.else.i.i, %if.then.i.i25 %add5.pre-phi.i = phi i64 [ %.pre19.i, %if.then.i.i24 ], [ %add.i, %if.else.i.i ], [ %add.i, %if.then5.i.i ], [ %add.i, %if.then.i.i.i ] %conv4.pre-phi.i = phi i64 [ %.pre18.i, %if.then.i.i24 ], [ %conv.i21, %if.else.i.i ], [ %conv.i21, %if.then5.i.i ], [ %conv.i21, %if.then.i.i.i ] %add.ptr.i.i1.i = getelementptr inbounds nuw i8, ptr %this, i64 88 %_M_finish.i.i2.i = getelementptr inbounds nuw i8, ptr %this, i64 96 - %18 = load ptr, ptr %_M_finish.i.i2.i, align 8 - %19 = load ptr, ptr %add.ptr.i.i1.i, align 8 - %sub.ptr.lhs.cast.i.i3.i = ptrtoint ptr %18 to i64 - %sub.ptr.rhs.cast.i.i4.i = ptrtoint ptr %19 to i64 + %19 = load ptr, ptr %_M_finish.i.i2.i, align 8 + %20 = load ptr, ptr %add.ptr.i.i1.i, align 8 + %sub.ptr.lhs.cast.i.i3.i = ptrtoint ptr %19 to i64 + %sub.ptr.rhs.cast.i.i4.i = ptrtoint ptr %20 to i64 %sub.ptr.sub.i.i5.i = sub i64 %sub.ptr.lhs.cast.i.i3.i, %sub.ptr.rhs.cast.i.i4.i %cmp.i6.i = icmp ugt i64 %add5.pre-phi.i, %sub.ptr.sub.i.i5.i br i1 %cmp.i6.i, label %if.then.i13.i, label %if.else.i7.i @@ -426,8 +426,8 @@ if.else.i7.i: ; preds = %_ZNSt6vectorItN8fac br i1 %cmp4.i8.i, label %if.then5.i9.i, label %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit if.then5.i9.i: ; preds = %if.else.i7.i - %add.ptr6.i10.i = getelementptr inbounds i8, ptr %19, i64 %add5.pre-phi.i - %tobool.not.i.i11.i = icmp eq ptr %18, %add.ptr6.i10.i + %add.ptr6.i10.i = getelementptr inbounds i8, ptr %20, i64 %add5.pre-phi.i + %tobool.not.i.i11.i = icmp eq ptr %19, %add.ptr6.i10.i br i1 %tobool.not.i.i11.i, label %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit, label %if.then.i.i12.i if.then.i.i12.i: ; preds = %if.then5.i9.i @@ -437,16 +437,16 @@ if.then.i.i12.i: ; preds = %if.then5.i9.i _ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit: ; preds = %if.then.i13.i, %if.else.i7.i, %if.then5.i9.i, %if.then.i.i12.i %conv10.pre-phi.i = phi i64 [ %.pre20.i, %if.then.i13.i ], [ %conv4.pre-phi.i, %if.else.i7.i ], [ %conv4.pre-phi.i, %if.then5.i9.i ], [ %conv4.pre-phi.i, %if.then.i.i12.i ] %conv7.i = trunc i32 %index to i16 - %20 = load ptr, ptr %add.ptr.i.i.i, align 8 - %add.ptr2.i.i23 = getelementptr inbounds i16, ptr %20, i64 %conv10.pre-phi.i - store i16 %conv7.i, ptr %add.ptr2.i.i23, align 2 - %21 = load i16, ptr %overflows_.i17, align 8 - %conv13.i = sext i16 %21 to i64 - %22 = load ptr, ptr %add.ptr.i.i1.i, align 8 - %add.ptr2.i16.i = getelementptr inbounds i8, ptr %22, i64 %conv13.i + %21 = load ptr, ptr %add.ptr.i.i.i, align 8 + %add.ptr2.i.i24 = getelementptr inbounds i16, ptr %21, i64 %conv10.pre-phi.i + store i16 %conv7.i, ptr %add.ptr2.i.i24, align 2 + %22 = load i16, ptr %overflows_.i17, align 8 + %conv13.i = sext i16 %22 to i64 + %23 = load ptr, ptr %add.ptr.i.i1.i, align 8 + %add.ptr2.i16.i = getelementptr inbounds i8, ptr %23, i64 %conv13.i store i8 %conv13, ptr %add.ptr2.i16.i, align 1 - %23 = load i16, ptr %overflows_.i17, align 8 - %inc.i = add i16 %23, 1 + %24 = load i16, ptr %overflows_.i17, align 8 + %inc.i = add i16 %24, 1 store i16 %inc.i, ptr %overflows_.i17, align 8 br label %if.end20 @@ -454,25 +454,25 @@ if.end20: ; preds = %if.then16, %_ZN8fac %delta.0 = phi i32 [ %sub, %if.end ], [ 15, %_ZN8facebook5velox6common3hll8DenseHll11addOverflowEia.exit ], [ 15, %if.then16 ] %conv21 = trunc nuw nsw i32 %delta.0 to i8 %shl.i = shl nuw i8 15, %conv.i.i - %24 = xor i8 %shl.i, -1 - %25 = load ptr, ptr %add.ptr.i.i, align 8 - %add.ptr2.i.i29 = getelementptr inbounds i8, ptr %25, i64 %conv.i - %26 = load i8, ptr %add.ptr2.i.i29, align 1 - %and4.i = and i8 %26, %24 - store i8 %and4.i, ptr %add.ptr2.i.i29, align 1 + %25 = xor i8 %shl.i, -1 + %26 = load ptr, ptr %add.ptr.i.i, align 8 + %add.ptr2.i.i30 = getelementptr inbounds i8, ptr %26, i64 %conv.i + %27 = load i8, ptr %add.ptr2.i.i30, align 1 + %and4.i = and i8 %27, %25 + store i8 %and4.i, ptr %add.ptr2.i.i30, align 1 %shl11.i = shl i8 %conv21, %conv.i.i - %27 = load ptr, ptr %add.ptr.i.i, align 8 - %add.ptr2.i9.i = getelementptr inbounds i8, ptr %27, i64 %conv.i - %28 = load i8, ptr %add.ptr2.i9.i, align 1 - %or5.i = or i8 %28, %shl11.i + %28 = load ptr, ptr %add.ptr.i.i, align 8 + %add.ptr2.i9.i = getelementptr inbounds i8, ptr %28, i64 %conv.i + %29 = load i8, ptr %add.ptr2.i9.i, align 1 + %or5.i = or i8 %29, %shl11.i store i8 %or5.i, ptr %add.ptr2.i9.i, align 1 %cmp23 = icmp eq i8 %and.i, 0 br i1 %cmp23, label %if.then24, label %if.end25 if.then24: ; preds = %if.end20 %baselineCount_ = getelementptr inbounds nuw i8, ptr %this, i64 4 - %29 = load i32, ptr %baselineCount_, align 4 - %dec = add nsw i32 %29, -1 + %30 = load i32, ptr %baselineCount_, align 4 + %dec = add nsw i32 %30, -1 store i32 %dec, ptr %baselineCount_, align 4 tail call void @_ZN8facebook5velox6common3hll8DenseHll22adjustBaselineIfNeededEv(ptr noundef nonnull align 8 dereferenceable(112) %this) br label %if.end25 @@ -1941,7 +1941,7 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %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 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i18 br i1 %exitcond.not.i, label %if.end36, label %for.body.i, !llvm.loop !6 _ZNK8facebook5velox6common3hll8DenseHll17findOverflowEntryEi.exit: ; preds = %for.body.i @@ -1966,23 +1966,23 @@ if.end36: ; preds = %for.inc.i, %if.then br i1 %cmp38, label %if.then39, label %if.end46 if.then39: ; preds = %if.end36 - br i1 %cmp4.i25, label %for.body.i28, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit + br i1 %cmp4.i25, label %for.body.i27, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit -for.cond.i: ; preds = %for.body.i28 - %indvars.iv.next.i30 = add nuw nsw i64 %indvars.iv.i29, 1 +for.cond.i: ; preds = %for.body.i27 + %indvars.iv.next.i30 = add nuw nsw i64 %indvars.iv.i28, 1 %exitcond.not.i31 = icmp eq i64 %indvars.iv.next.i30, %conv40 - br i1 %exitcond.not.i31, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit, label %for.body.i28, !llvm.loop !4 + br i1 %exitcond.not.i31, label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit, label %for.body.i27, !llvm.loop !4 -for.body.i28: ; preds = %if.then39, %for.cond.i - %indvars.iv.i29 = phi i64 [ %indvars.iv.next.i30, %for.cond.i ], [ 0, %if.then39 ] - %arrayidx.i = getelementptr inbounds nuw i16, ptr %otherOverflowBuckets, i64 %indvars.iv.i29 +for.body.i27: ; preds = %if.then39, %for.cond.i + %indvars.iv.i28 = phi i64 [ %indvars.iv.next.i30, %for.cond.i ], [ 0, %if.then39 ] + %arrayidx.i = getelementptr inbounds nuw i16, ptr %otherOverflowBuckets, i64 %indvars.iv.i28 %16 = load i16, ptr %arrayidx.i, align 2 - %conv.i = zext i16 %16 to i32 - %cmp1.i = icmp eq i32 %bucket.1133, %conv.i + %conv.i29 = zext i16 %16 to i32 + %cmp1.i = icmp eq i32 %bucket.1133, %conv.i29 br i1 %cmp1.i, label %if.then.i, label %for.cond.i -if.then.i: ; preds = %for.body.i28 - %arrayidx3.i = getelementptr inbounds nuw i8, ptr %otherOverflowValues, i64 %indvars.iv.i29 +if.then.i: ; preds = %for.body.i27 + %arrayidx3.i = getelementptr inbounds nuw i8, ptr %otherOverflowValues, i64 %indvars.iv.i28 %17 = load i8, ptr %arrayidx3.i, align 1 br label %_ZN8facebook5velox6common3hll12_GLOBAL__N_115getOverflowImplEiiPKtPKa.exit diff --git a/bench/verilator/optimized/V3OrderParallel.ll b/bench/verilator/optimized/V3OrderParallel.ll index cc2d962e288..497a29540b8 100644 --- a/bench/verilator/optimized/V3OrderParallel.ll +++ b/bench/verilator/optimized/V3OrderParallel.ll @@ -20977,9 +20977,9 @@ _ZN10LogicMTask19moveAllVerticesFromEPS_.exit: ; preds = %143, %148, %149 _ZN10LogicMTask19moveAllVerticesFromEPS_.exit._crit_edge: ; preds = %_ZN10LogicMTask19moveAllVerticesFromEPS_.exit %.pre = trunc i8 %.fca.1.extract40 to i1 - %.sroa.044.0.extract.trunc46200 = trunc i64 %.fca.0.extract39 to i32 + %.sroa.044.0.extract.trunc46189 = trunc i64 %.fca.0.extract39 to i32 %163 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 100 - store i32 %.sroa.044.0.extract.trunc46200, ptr %163, align 4, !tbaa !71 + store i32 %.sroa.044.0.extract.trunc46189, ptr %163, align 4, !tbaa !71 br i1 %.pre, label %214, label %216 164: ; preds = %_ZN10LogicMTask19moveAllVerticesFromEPS_.exit @@ -21226,13 +21226,13 @@ _ZL22partCheckCriticalPathsR7V3Graph.exit: ; preds = %.lr.ph.i, %249, %_Z %.not170 = icmp eq ptr %.sroa.0161.0169, null br i1 %.not170, label %._crit_edge, label %.lr.ph -256: ; preds = %.lr.ph +256: ; preds = %257 %257 = add nuw nsw i32 %.0114171, 1 %.sroa.0161.0 = load ptr, ptr %258, align 8, !tbaa !193 %.not = icmp eq ptr %.sroa.0161.0, null - br i1 %.not, label %._crit_edge, label %.lr.ph + br i1 %.not, label %._crit_edge, label %257 -.lr.ph: ; preds = %_ZL22partCheckCriticalPathsR7V3Graph.exit, %256 +257: ; preds = %_ZL22partCheckCriticalPathsR7V3Graph.exit, %256 %.sroa.0161.0172 = phi ptr [ %.sroa.0161.0, %256 ], [ %.sroa.0161.0169, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] %.0114171 = phi i32 [ %257, %256 ], [ 0, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] %258 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0172, i64 8 @@ -21252,13 +21252,13 @@ _ZL22partCheckCriticalPathsR7V3Graph.exit: ; preds = %.lr.ph.i, %249, %_Z %.not168175 = icmp eq ptr %.sroa.0155.0174, null br i1 %.not168175, label %._crit_edge180, label %.lr.ph179 -264: ; preds = %.lr.ph179 +264: ; preds = %267 %265 = add nuw nsw i32 %.1115176, 1 %.sroa.0155.0 = load ptr, ptr %266, align 8, !tbaa !193 %.not168 = icmp eq ptr %.sroa.0155.0, null - br i1 %.not168, label %._crit_edge180, label %.lr.ph179 + br i1 %.not168, label %._crit_edge180, label %267 -.lr.ph179: ; preds = %._crit_edge, %264 +267: ; preds = %._crit_edge, %264 %.sroa.0155.0177 = phi ptr [ %.sroa.0155.0, %264 ], [ %.sroa.0155.0174, %._crit_edge ] %.1115176 = phi i32 [ %265, %264 ], [ 0, %._crit_edge ] %266 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0177, i64 24 diff --git a/bench/wireshark/optimized/androiddump.ll b/bench/wireshark/optimized/androiddump.ll index ce833a95262..3933f61f07b 100644 --- a/bench/wireshark/optimized/androiddump.ll +++ b/bench/wireshark/optimized/androiddump.ll @@ -3693,7 +3693,7 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 9: ; preds = %4 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 763, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.111, ptr noundef %1) - br label %41 + br label %47 10: ; preds = %4 %sext = shl i64 %5, 32 @@ -3705,16 +3705,16 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 13: ; preds = %10 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 769, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.134, ptr noundef %1) %.not58 = icmp eq ptr %3, null - br i1 %.not58, label %41, label %14 + br i1 %.not58, label %47, label %14 14: ; preds = %13 store i64 0, ptr %3, align 8 - br label %41 + br label %47 15: ; preds = %.preheader %16 = add i64 %21, %.04762 %17 = icmp slt i64 %16, 4 - br i1 %17, label %.preheader, label %.lr.ph.preheader, !llvm.loop !60 + br i1 %17, label %.preheader, label %31, !llvm.loop !60 .preheader: ; preds = %10, %15 %.04762 = phi i64 [ %16, %15 ], [ 0, %10 ] @@ -3728,13 +3728,13 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 23: ; preds = %.preheader tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 780, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.112, ptr noundef %1) - br label %41 + br label %47 -.lr.ph.preheader: ; preds = %15 +31: ; preds = %15 %24 = load i32, ptr %2, align 1 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %31 +.lr.ph:; preds = %31, %31 %.14863 = phi i64 [ %33, %31 ], [ %16, %.lr.ph.preheader ] %25 = getelementptr i8, ptr %2, i64 %.14863 %26 = shl i64 %.14863, 32 @@ -3746,40 +3746,40 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 30: ; preds = %.lr.ph tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 794, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.114, ptr noundef %1) - br label %41 + br label %47 -31: ; preds = %.lr.ph +.lr.ph: ; preds = %.lr.ph %32 = icmp eq i64 %28, 0 %33 = add i64 %28, %.14863 - br i1 %32, label %._crit_edge, label %.lr.ph, !llvm.loop !61 + br i1 %32, label %split, label %.lr.ph, !llvm.loop !61 -._crit_edge: ; preds = %31 +split: ; preds = %.lr.ph %.not55 = icmp eq ptr %3, null - br i1 %.not55, label %36, label %34 + br i1 %.not55, label %42, label %40 -34: ; preds = %._crit_edge - %35 = add i64 %.14863, -4 - store i64 %35, ptr %3, align 8 - br label %36 +40: ; preds = %split + %41 = add i64 %.14863, -4 + store i64 %41, ptr %3, align 8 + br label %42 -36: ; preds = %34, %._crit_edge - %.not2 = icmp eq i32 %24, 1497451343 - br i1 %.not2, label %39, label %37 +42: ; preds = %40, %split + %.not4 = icmp eq i32 %24, 1497451343 + br i1 %.not4, label %45, label %43 -37: ; preds = %36 +43: ; preds = %42 tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 808, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.116, ptr noundef %1) - br i1 %.not55, label %41, label %38 + br i1 %.not55, label %47, label %44 -38: ; preds = %37 +44: ; preds = %43 store i64 0, ptr %3, align 8 - br label %41 + br label %47 -39: ; preds = %36 - %40 = getelementptr i8, ptr %2, i64 4 - br label %41 +45: ; preds = %42 + %46 = getelementptr i8, ptr %2, i64 4 + br label %47 -41: ; preds = %37, %38, %13, %14, %39, %30, %23, %9 - %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %30 ], [ %40, %39 ], [ null, %14 ], [ null, %13 ], [ null, %38 ], [ null, %37 ] +47: ; preds = %43, %44, %13, %14, %45, %30, %23, %9 + %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %30 ], [ %46, %39 ], [ null, %14 ], [ null, %13 ], [ null, %38 ], [ null, %37 ] ret ptr %.0 } diff --git a/bench/wolfssl/optimized/benchmark.ll b/bench/wolfssl/optimized/benchmark.ll index e664da350ae..88f0219671d 100644 --- a/bench/wolfssl/optimized/benchmark.ll +++ b/bench/wolfssl/optimized/benchmark.ll @@ -1648,7 +1648,7 @@ define internal fastcc void @bench_aescbc_internal(ptr noundef %0, i32 noundef r 14: ; preds = %.critedge %15 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.128, i32 noundef 4338, i32 noundef %13) - br label %112 + br label %111 16: ; preds = %.critedge %17 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 0) #17 @@ -1657,7 +1657,7 @@ define internal fastcc void @bench_aescbc_internal(ptr noundef %0, i32 noundef r 18: ; preds = %16 %19 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %17) - br label %112 + br label %111 20: ; preds = %16 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -1700,25 +1700,25 @@ bench_stats_start.exit: ; preds = %20 %.1 = phi i32 [ 0, %bench_stats_start.exit ], [ %.2.lcssa, %bench_stats_check.exit ] %46 = load i32, ptr @numBlocks, align 4, !tbaa !4 %47 = icmp sgt i32 %46, 0 - br i1 %47, label %.preheader83, label %._crit_edge + br i1 %47, label %.preheader84, label %._crit_edge -.preheader83: ; preds = %45, %bench_async_handle.exit - %.064107 = phi i32 [ %52, %bench_async_handle.exit ], [ 0, %45 ] +.preheader84: ; preds = %45, %bench_async_handle.exit + %.064108 = phi i32 [ %52, %bench_async_handle.exit ], [ 0, %45 ] %48 = load i32, ptr @bench_size, align 4, !tbaa !4 %49 = call i32 @wc_AesCbcEncrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %48) #17 %50 = icmp sgt i32 %49, -1 br i1 %50, label %bench_async_handle.exit, label %.thread -.thread: ; preds = %.preheader83 +.thread: ; preds = %.preheader84 %51 = load i32, ptr @bench_size, align 4, !tbaa !4 call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %.070, i32 noundef %51, double noundef %35, i32 noundef %49) - br label %112 + br label %111 -bench_async_handle.exit: ; preds = %.preheader83 - %52 = add nuw nsw i32 %.064107, 1 +bench_async_handle.exit: ; preds = %.preheader84 + %52 = add nuw nsw i32 %.064108, 1 %53 = load i32, ptr @numBlocks, align 4, !tbaa !4 %54 = icmp slt i32 %52, %53 - br i1 %54, label %.preheader83, label %._crit_edge, !llvm.loop !26 + br i1 %54, label %.preheader84, label %._crit_edge, !llvm.loop !26 ._crit_edge: ; preds = %bench_async_handle.exit, %45 %.064.lcssa = phi i32 [ 0, %45 ], [ %52, %bench_async_handle.exit ] @@ -1759,35 +1759,35 @@ bench_stats_check.exit: ; preds = %._crit_edge 75: ; preds = %72 call void @llvm.lifetime.start.p0(ptr nonnull %5) - %76 = call i32 @clock_gettime(i32 noundef 0, ptr noundef nonnull %5) #17 - %77 = icmp slt i32 %76, 0 - br i1 %77, label %80, label %bench_stats_start.exit44 + %73 = call i32 @clock_gettime(i32 noundef 0, ptr noundef nonnull %5) #17 + %74 = icmp slt i32 %73, 0 + br i1 %74, label %80, label %bench_stats_start.exit44 -78: ; preds = %72 +.preheader83: ; preds = %72 %79 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %74) br label %112 -80: ; preds = %75 +80:; preds = %75 %81 = tail call ptr @__errno_location() #18 %82 = load i32, ptr %81, align 4, !tbaa !4 - %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %82, ptr noundef nonnull @.str.80) + %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str..preheader83, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %82, ptr noundef nonnull @.str.80) %84 = load ptr, ptr @stdout, align 8, !tbaa !14 %85 = call i32 @fflush(ptr noundef %84) call void @_exit(i32 noundef 1) #19 unreachable bench_stats_start.exit44: ; preds = %75 - %86 = load i64, ptr %5, align 8, !tbaa !16 - %87 = sitofp i64 %86 to double - %88 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %89 = load i64, ptr %88, align 8, !tbaa !19 - %90 = sitofp i64 %89 to double - %91 = fdiv double %90, 1.000000e+09 - %92 = fadd double %91, %87 + %85 = load i64, ptr %5, align 8, !tbaa !16 + %86 = sitofp i64 %85 to double + %87 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %88 = load i64, ptr %87, align 8, !tbaa !19 + %89 = sitofp i64 %88 to double + %90 = fdiv double %89, 1.000000e+09 + %91 = fadd double %90, %86 call void @llvm.lifetime.end.p0(ptr nonnull %5) - %93 = call { i32, i32 } asm sideeffect "cpuid\0A\09rdtsc", "={ax},={dx},{ax},~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"(i32 0) #17, !srcloc !20 - %94 = extractvalue { i32, i32 } %93, 0 - %95 = extractvalue { i32, i32 } %93, 1 + %92 = call { i32, i32 } asm sideeffect "cpuid\0A\09rdtsc", "={ax},={dx},{ax},~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"(i32 0) #17, !srcloc !20 + %93 = extractvalue { i32, i32 } %92, 0 + %94 = extractvalue { i32, i32 } %92, 1 %96 = zext i32 %94 to i64 %97 = zext i32 %95 to i64 %98 = shl nuw i64 %97, 32 @@ -1795,14 +1795,14 @@ bench_stats_start.exit44: ; preds = %75 store i64 %99, ptr %43, align 8, !tbaa !21 br label %100 -100: ; preds = %._crit_edge111, %bench_stats_start.exit44 - %.272 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %109, %._crit_edge111 ] +100:; preds = %._crit_edge112, %bench_stats_start.exit44 + %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %109, %._crit_edge111 ] %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %.7.lcssa, %._crit_edge111 ] %101 = load i32, ptr @numBlocks, align 4, !tbaa !4 %102 = icmp sgt i32 %101, 0 br i1 %102, label %.preheader, label %._crit_edge111 -.preheader: ; preds = %100, %bench_async_handle.exit46 +.preheader: ; preds = %100, %bench_async_handle.exit46 %.266110 = phi i32 [ %106, %bench_async_handle.exit46 ], [ 0, %100 ] %103 = load i32, ptr @bench_size, align 4, !tbaa !4 %104 = call i32 @wc_AesCbcDecrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %103) #17 @@ -1810,27 +1810,27 @@ bench_stats_start.exit44: ; preds = %75 br i1 %105, label %bench_async_handle.exit46, label %bench_async_handle.exit46.thread bench_async_handle.exit46: ; preds = %.preheader - %106 = add nuw nsw i32 %.266110, 1 - %107 = load i32, ptr @numBlocks, align 4, !tbaa !4 - %108 = icmp slt i32 %106, %107 - br i1 %108, label %.preheader, label %._crit_edge111, !llvm.loop !29 + %105 = add nuw nsw i32 %.266110, 1 + %106 = load i32, ptr @numBlocks, align 4, !tbaa !4 + %107 = icmp slt i32 %105, %106 + br i1 %107, label %.preheader, label %._crit_edge112, !llvm.loop !29 -._crit_edge111: ; preds = %bench_async_handle.exit46, %100 - %.266.lcssa = phi i32 [ 0, %100 ], [ %106, %bench_async_handle.exit46 ] +._crit_edge112: ; preds = %bench_async_handle.exit46, %100 + %.266.lcssa = phi i32 [ 0, %100 ], [ %105, %bench_async_handle.exit46 ] %.7.lcssa = phi i32 [ %.6, %100 ], [ %104, %bench_async_handle.exit46 ] - %109 = add nsw i32 %.266.lcssa, %.272 - %110 = call fastcc i32 @bench_stats_check(double noundef %92) - %.not37 = icmp eq i32 %110, 0 + %108 = add nsw i32 %.266.lcssa, %.272 + %109 = call fastcc i32 @bench_stats_check(double noundef %91) + %.not37 = icmp eq i32 %109, 0 br i1 %.not37, label %bench_async_handle.exit46.thread, label %100, !llvm.loop !30 -bench_async_handle.exit46.thread: ; preds = %._crit_edge111, %.preheader - %.373 = phi i32 [ %.272, %.preheader ], [ %109, %._crit_edge111 ] +bench_async_handle.exit46.thread: ; preds = %._crit_edge112, %.preheader + %.373 = phi i32 [ %.272, %.preheader ], [ %108, %._crit_edge111 ] %.9 = phi i32 [ %104, %.preheader ], [ %.7.lcssa, %._crit_edge111 ] - %111 = load i32, ptr @bench_size, align 4, !tbaa !4 - call fastcc void @bench_stats_sym_finish(ptr noundef %4, i32 noundef %.373, i32 noundef %111, double noundef %92, i32 noundef %.9) - br label %112 + %110 = load i32, ptr @bench_size, align 4, !tbaa !4 + call fastcc void @bench_stats_sym_finish(ptr noundef %4, i32 noundef %.373, i32 noundef %110, double noundef %91, i32 noundef %.9) + br label %111 -112: ; preds = %14, %18, %78, %bench_async_handle.exit46.thread, %.thread +111: ; preds = %14, %18, %78, %bench_async_handle.exit46.thread, %.thread call void @wc_AesFree(ptr noundef nonnull %8) #17 call void @llvm.lifetime.end.p0(ptr nonnull %8) ret void @@ -5741,13 +5741,13 @@ define dso_local void @bench_rsa(i32 %0) local_unnamed_addr #0 { .preheader228.i: ; preds = %19 %25 = call ptr @wolfSSL_Malloc(i64 noundef 2048) #17 %26 = icmp eq ptr %25, null - br i1 %26, label %.split267.us.thread.i, label %29, !llvm.loop !127 + br i1 %26, label %.split269.us.thread.i, label %29, !llvm.loop !127 .thread215.i: ; preds = %19 %27 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.135, i32 noundef 8982) br label %bench_rsa_helper.exit -.split267.us.thread.i: ; preds = %.preheader228.i +.split269.us.thread.i: ; preds = %.preheader228.i %28 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.135, i32 noundef 8987) call void @wolfSSL_Free(ptr noundef nonnull %23) #17 br label %bench_rsa_helper.exit @@ -5798,7 +5798,7 @@ bench_stats_start.exit.i: ; preds = %30 br label %.preheader226.i .preheader226.i: ; preds = %bench_async_handle.exit.i, %55 - %.0180259.i = phi i32 [ 0, %55 ], [ %59, %bench_async_handle.exit.i ] + %.0180261.i = phi i32 [ 0, %55 ], [ %59, %bench_async_handle.exit.i ] %56 = call i32 @wc_RsaPublicEncrypt(ptr noundef nonnull %7, i32 noundef 25, ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %8, ptr noundef nonnull %10) #17 %57 = icmp sgt i32 %56, -1 br i1 %57, label %bench_async_handle.exit.i, label %.thread.i @@ -5806,10 +5806,10 @@ bench_stats_start.exit.i: ; preds = %30 .thread.i: ; preds = %.preheader226.i %58 = load ptr, ptr %22, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %58, i32 noundef %.0172.i, double noundef %45, i32 noundef %56) - br label %.split267.us.i + br label %.split269.us.i bench_async_handle.exit.i: ; preds = %.preheader226.i - %59 = add nuw nsw i32 %.0180259.i, 1 + %59 = add nuw nsw i32 %.0180261.i, 1 %exitcond.not.i = icmp eq i32 %59, 100 br i1 %exitcond.not.i, label %60, label %.preheader226.i, !llvm.loop !128 @@ -5882,15 +5882,15 @@ bench_stats_start.exit118.i: ; preds = %78 br label %.preheader223.i .preheader223.i: ; preds = %bench_async_handle.exit120.i, %102 - %.2182261.i = phi i32 [ 0, %102 ], [ %105, %bench_async_handle.exit120.i ] + %.2182263.i = phi i32 [ 0, %102 ], [ %105, %bench_async_handle.exit120.i ] %103 = call i32 @wc_RsaPrivateDecrypt(ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %25, i32 noundef 256, ptr noundef nonnull %8) #17 %104 = icmp sgt i32 %103, -1 br i1 %104, label %bench_async_handle.exit120.i, label %bench_async_handle.exit120.thread.i bench_async_handle.exit120.i: ; preds = %.preheader223.i - %105 = add nuw nsw i32 %.2182261.i, 1 - %exitcond289.not.i = icmp eq i32 %105, 100 - br i1 %exitcond289.not.i, label %106, label %.preheader223.i, !llvm.loop !130 + %105 = add nuw nsw i32 %.2182263.i, 1 + %exitcond291.not.i = icmp eq i32 %105, 100 + br i1 %exitcond291.not.i, label %106, label %.preheader223.i, !llvm.loop !130 106: ; preds = %bench_async_handle.exit120.i %107 = add nuw nsw i32 %.2174.i, 100 @@ -5903,7 +5903,7 @@ bench_async_handle.exit120.thread.i: ; preds = %106, %.preheader223 %109 = getelementptr inbounds nuw i8, ptr %22, i64 8 %110 = load ptr, ptr %109, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %110, i32 noundef %.3175.i, double noundef %94, i32 noundef %103) - br label %.split267.us.i + br label %.split269.us.i 111: ; preds = %29 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -5946,7 +5946,7 @@ bench_stats_start.exit121.i: ; preds = %111 br label %.preheader221.i .preheader221.i: ; preds = %bench_async_handle.exit123.i, %136 - %.4184263.i = phi i32 [ 0, %136 ], [ %141, %bench_async_handle.exit123.i ] + %.4184265.i = phi i32 [ 0, %136 ], [ %141, %bench_async_handle.exit123.i ] %137 = call i32 @wc_RsaSSL_Sign(ptr noundef nonnull %7, i32 noundef 25, ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %8, ptr noundef nonnull %10) #17 %138 = icmp sgt i32 %137, -1 br i1 %138, label %bench_async_handle.exit123.i, label %.thread203.i @@ -5955,12 +5955,12 @@ bench_stats_start.exit121.i: ; preds = %111 %139 = getelementptr inbounds nuw i8, ptr %22, i64 32 %140 = load ptr, ptr %139, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %140, i32 noundef %.4176.i, double noundef %126, i32 noundef %137) - br label %.split267.us.i + br label %.split269.us.i bench_async_handle.exit123.i: ; preds = %.preheader221.i - %141 = add nuw nsw i32 %.4184263.i, 1 - %exitcond290.not.i = icmp eq i32 %141, 100 - br i1 %exitcond290.not.i, label %142, label %.preheader221.i, !llvm.loop !132 + %141 = add nuw nsw i32 %.4184265.i, 1 + %exitcond292.not.i = icmp eq i32 %141, 100 + br i1 %exitcond292.not.i, label %142, label %.preheader221.i, !llvm.loop !132 142: ; preds = %bench_async_handle.exit123.i call void @llvm.lifetime.start.p0(ptr nonnull %2) @@ -6032,15 +6032,15 @@ bench_stats_start.exit124.i: ; preds = %160 br label %.preheader218.i .preheader218.i: ; preds = %bench_async_handle.exit126.i, %185 - %.6186265.i = phi i32 [ 0, %185 ], [ %188, %bench_async_handle.exit126.i ] + %.6186267.i = phi i32 [ 0, %185 ], [ %188, %bench_async_handle.exit126.i ] %186 = call i32 @wc_RsaSSL_Verify(ptr noundef nonnull %23, i32 noundef 256, ptr noundef nonnull %25, i32 noundef 256, ptr noundef nonnull %8) #17 %187 = icmp sgt i32 %186, -1 br i1 %187, label %bench_async_handle.exit126.i, label %bench_async_handle.exit126.thread.i bench_async_handle.exit126.i: ; preds = %.preheader218.i - %188 = add nuw nsw i32 %.6186265.i, 1 - %exitcond291.not.i = icmp eq i32 %188, 100 - br i1 %exitcond291.not.i, label %189, label %.preheader218.i, !llvm.loop !134 + %188 = add nuw nsw i32 %.6186267.i, 1 + %exitcond293.not.i = icmp eq i32 %188, 100 + br i1 %exitcond293.not.i, label %189, label %.preheader218.i, !llvm.loop !134 189: ; preds = %bench_async_handle.exit126.i %190 = add nuw nsw i32 %.6178.i, 100 @@ -6053,14 +6053,14 @@ bench_async_handle.exit126.thread.i: ; preds = %189, %.preheader218 %192 = getelementptr inbounds nuw i8, ptr %22, i64 40 %193 = load ptr, ptr %192, align 8, !tbaa !8 call fastcc void @bench_stats_asym_finish(ptr noundef nonnull @.str.136, i32 noundef 2048, ptr noundef %193, i32 noundef %.7179.i, double noundef %177, i32 noundef %186) - br label %.split267.us.i + br label %.split269.us.i -.split267.us.i: ; preds = %bench_async_handle.exit126.thread.i, %.thread203.i, %bench_async_handle.exit120.thread.i, %.thread.i +.split269.us.i: ; preds = %bench_async_handle.exit126.thread.i, %.thread203.i, %bench_async_handle.exit120.thread.i, %.thread.i call void @wolfSSL_Free(ptr noundef nonnull %23) #17 call void @wolfSSL_Free(ptr noundef nonnull %25) #17 br label %bench_rsa_helper.exit -bench_rsa_helper.exit: ; preds = %.thread215.i, %.split267.us.thread.i, %.split267.us.i +bench_rsa_helper.exit: ; preds = %.thread215.i, %.split269.us.thread.i, %.split269.us.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.loopexit diff --git a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll index cb3c70ef59a..28c0507485e 100644 --- a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll +++ b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll @@ -175739,7 +175739,7 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt store i64 %33, ptr %16, align 8, !noalias !45425 br label %34 -34: ; preds = %120, %30 +34: ; preds = %122, %30 %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %120 ], [ %31, %30 ] resume { ptr, i32 } %.pn @@ -175793,10 +175793,10 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt br i1 %45, label %53, label %52 52: ; preds = %42 - br i1 %brmerge1.not, label %54, label %82 + br i1 %brmerge1.not, label %54, label %84 53: ; preds = %42 - br i1 %brmerge1.not, label %70, label %82 + br i1 %brmerge1.not, label %70, label %84 54: ; preds = %52 %55 = getelementptr inbounds nuw i8, ptr %4, i64 2672 @@ -175840,23 +175840,23 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread: ; preds = %70, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" %.sroa.7.0.ph = phi float [ %.sroa.0.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %72, %70 ] %.sroa.9.0.ph = phi float [ %.sroa.6.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %74, %70 ] - %75 = bitcast float %.sroa.7.0.ph to i32 - %76 = bitcast float %.sroa.9.0.ph to i32 + %77 = bitcast float %.sroa.7.0.ph to i32 + %78 = bitcast float %.sroa.9.0.ph to i32 br label %.thread164 _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit: ; preds = %54 - %77 = bitcast i32 %.sroa.510.sroa.0.0.copyload131 to float - %78 = bitcast i32 %.sroa.510.sroa.0.0.copyload132 to float + %79 = bitcast i32 %.sroa.510.sroa.0.0.copyload131 to float + %80 = bitcast i32 %.sroa.510.sroa.0.0.copyload132 to float %trunc = trunc nuw i32 %.sroa.08.0.copyload to i1 br i1 %trunc, label %.thread164, label %.thread179.sink.split .thread164: ; preds = %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit - %79 = phi i32 [ %76, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload132, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %80 = phi i32 [ %75, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload131, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %.sroa.9.0153 = phi float [ %.sroa.9.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %78, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %.sroa.7.0151 = phi float [ %.sroa.7.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %77, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] - %81 = getelementptr inbounds nuw i8, ptr %4, i64 4080 - store float 0.000000e+00, ptr %81, align 8 + %81 = phi i32 [ %78, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload132, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %82 = phi i32 [ %77, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %.sroa.510.sroa.0.0.copyload131, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %.sroa.9.0153 = phi float [ %.sroa.9.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %80, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %.sroa.7.0151 = phi float [ %.sroa.7.0.ph, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread ], [ %79, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit ] + %83 = getelementptr inbounds nuw i8, ptr %4, i64 4080 + store float 0.000000e+00, ptr %83, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4084 store float 0.000000e+00, ptr %.sroa.4.0..sroa_idx, align 4 %.sroa.516.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4088 @@ -175864,82 +175864,82 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e %.sroa.617.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 4092 store float %.sroa.9.0153, ptr %.sroa.617.0..sroa_idx, align 4 store i64 0, ptr %5, align 8, !noalias !45439 - br label %83 + br label %85 -82: ; preds = %52, %53 +84: ; preds = %52, %53 store i64 0, ptr %5, align 8, !noalias !45446 %trunc70 = trunc nuw i32 %.sroa.08.0.copyload to i1 - br i1 %trunc70, label %83, label %.thread179 + br i1 %trunc70, label %85, label %.thread179 -83: ; preds = %82, %.thread164 - %.sroa.12.0170 = phi i32 [ %79, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %82 ] - %.sroa.6137.0169 = phi i32 [ %80, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %82 ] +85: ; preds = %84, %.thread164 + %.sroa.12.0170 = phi i32 [ %81, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %82 ] + %.sroa.6137.0169 = phi i32 [ %82, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %82 ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !45450 - %84 = getelementptr inbounds nuw i8, ptr %3, i64 4 - store i32 %.sroa.6137.0169, ptr %84, align 4, !noalias !45450 - %85 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 %.sroa.12.0170, ptr %85, align 4, !noalias !45450 + %86 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 %.sroa.6137.0169, ptr %86, align 4, !noalias !45450 + %87 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i32 %.sroa.12.0170, ptr %87, align 4, !noalias !45450 store i32 1, ptr %3, align 4, !noalias !45450 call void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePtr18set_size_and_scale17h3f6717d3c0cbc6ccE.llvm.6689388785225190856(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %0, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %3, i32 noundef 0, float undef) call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !45450 %.pr171 = load i64, ptr %5, align 8 - %86 = icmp eq i64 %.pr171, 0 - br i1 %86, label %.thread179, label %88 + %88 = icmp eq i64 %.pr171, 0 + br i1 %88, label %.thread179, label %90 .thread179.sink.split: ; preds = %38, %59, %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit store i64 0, ptr %5, align 8, !noalias !4 br label %.thread179 -.thread179: ; preds = %.thread179.sink.split, %82, %83 +.thread179: ; preds = %.thread179.sink.split, %84, %85 store i64 -1, ptr %5, align 8 - %87 = getelementptr inbounds nuw i8, ptr %4, i64 2680 - invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface13ack_configure17h9f07ed30af10763bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %87, i32 noundef %1) - to label %89 unwind label %120 + %89 = getelementptr inbounds nuw i8, ptr %4, i64 2680 + invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface13ack_configure17h9f07ed30af10763bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %1) + to label %89 unwind label %122 -88: ; preds = %83 +90: ; preds = %85 tail call void @_ZN4core4cell22panic_already_borrowed17h47d80d4a02d76176E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.880) #55 unreachable -89: ; preds = %.thread179 +91: ; preds = %.thread179 %.sroa.3127.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 3992 %.sroa.3127.0.copyload = load float, ptr %.sroa.3127.0..sroa_idx, align 8 %.sroa.4128.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 3996 %.sroa.4128.0.copyload = load float, ptr %.sroa.4128.0..sroa_idx, align 4 - %90 = getelementptr inbounds nuw i8, ptr %4, i64 2672 - %91 = load i32, ptr %90, align 8, !range !6848, !noundef !4 - %92 = getelementptr inbounds nuw i8, ptr %4, i64 2676 - %93 = load float, ptr %92, align 4 - %trunc71 = trunc nuw i32 %91 to i1 - %.sroa.061.0 = select i1 %trunc71, float %93, float 0.000000e+00 - %94 = getelementptr inbounds nuw i8, ptr %4, i64 4116 - %.sroa.020.0.copyload = load i32, ptr %94, align 4 - %95 = trunc i32 %.sroa.020.0.copyload to i1 - %96 = fadd float %.sroa.061.0, 0.000000e+00 - %97 = fsub float %.sroa.4128.0.copyload, %.sroa.061.0 - %.sroa.16.0 = select i1 %95, float %.sroa.4128.0.copyload, float %97 - %98 = and i32 %.sroa.020.0.copyload, 16777216 - %.not.i77 = icmp eq i32 %98, 0 - %99 = fsub float %.sroa.16.0, %.sroa.061.0 - %.sroa.16.1 = select i1 %.not.i77, float %99, float %.sroa.16.0 - %100 = and i32 %.sroa.020.0.copyload, 256 - %.not3.i = icmp eq i32 %100, 0 - %101 = fsub float %.sroa.3127.0.copyload, %.sroa.061.0 - %.sroa.10123.0 = select i1 %.not3.i, float %101, float %.sroa.3127.0.copyload - %102 = and i32 %.sroa.020.0.copyload, 65536 - %.not4.i = icmp eq i32 %102, 0 - %103 = fsub float %.sroa.10123.0, %.sroa.061.0 - %.sroa.10123.1 = select i1 %.not4.i, float %103, float %.sroa.10123.0 - %104 = tail call i32 @llvm.fptosi.sat.i32.f32(float %96) - %105 = select i1 %.not3.i, i32 %104, i32 0 - %106 = select i1 %95, i32 0, i32 %104 - %107 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.10123.1) - %108 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.16.1) - %..i.i.i = tail call noundef i32 @llvm.smax.i32(i32 %107, i32 1) - %..i2.i.i = tail call noundef i32 @llvm.smax.i32(i32 %108, i32 1) - invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface19set_window_geometry17hc2720b7099082ac1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %87, i32 noundef %105, i32 noundef %106, i32 noundef %..i.i.i, i32 noundef %..i2.i.i) - to label %109 unwind label %120 - -109: ; preds = %89 + %92 = getelementptr inbounds nuw i8, ptr %4, i64 2672 + %93 = load i32, ptr %92, align 8, !range !6848, !noundef !4 + %94 = getelementptr inbounds nuw i8, ptr %4, i64 2676 + %95 = load float, ptr %94, align 4 + %trunc71 = trunc nuw i32 %93 to i1 + %.sroa.061.0 = select i1 %trunc71, float %95, float 0.000000e+00 + %96 = getelementptr inbounds nuw i8, ptr %4, i64 4116 + %.sroa.020.0.copyload = load i32, ptr %96, align 4 + %97 = trunc i32 %.sroa.020.0.copyload to i1 + %98 = fadd float %.sroa.061.0, 0.000000e+00 + %99 = fsub float %.sroa.4128.0.copyload, %.sroa.061.0 + %.sroa.16.0 = select i1 %97, float %.sroa.4128.0.copyload, float %99 + %100 = and i32 %.sroa.020.0.copyload, 16777216 + %.not.i77 = icmp eq i32 %100, 0 + %101 = fsub float %.sroa.16.0, %.sroa.061.0 + %.sroa.16.1 = select i1 %.not.i77, float %101, float %.sroa.16.0 + %102 = and i32 %.sroa.020.0.copyload, 256 + %.not3.i = icmp eq i32 %102, 0 + %103 = fsub float %.sroa.3127.0.copyload, %.sroa.061.0 + %.sroa.10123.0 = select i1 %.not3.i, float %103, float %.sroa.3127.0.copyload + %104 = and i32 %.sroa.020.0.copyload, 65536 + %.not4.i = icmp eq i32 %104, 0 + %105 = fsub float %.sroa.10123.0, %.sroa.061.0 + %.sroa.10123.1 = select i1 %.not4.i, float %105, float %.sroa.10123.0 + %106 = tail call i32 @llvm.fptosi.sat.i32.f32(float %98) + %107 = select i1 %.not3.i, i32 %106, i32 0 + %108 = select i1 %97, i32 0, i32 %106 + %109 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.10123.1) + %110 = tail call noundef i32 @llvm.fptosi.sat.i32.f32(float %.sroa.16.1) + %..i.i.i = tail call noundef i32 @llvm.smax.i32(i32 %109, i32 1) + %..i2.i.i = tail call noundef i32 @llvm.smax.i32(i32 %110, i32 1) + invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface19set_window_geometry17hc2720b7099082ac1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %107, i32 noundef %108, i32 noundef %..i.i.i, i32 noundef %..i2.i.i) + to label %109 unwind label %122 + +115: ; preds = %91 %110 = getelementptr inbounds nuw i8, ptr %4, i64 4132 %111 = load i8, ptr %110, align 4, !range !232, !noundef !4 %112 = trunc nuw i8 %111 to i1 @@ -175951,23 +175951,23 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e store i64 %115, ptr %5, align 8, !noalias !45453 br label %116 -116: ; preds = %117, %113 +118: ; preds = %119, %113 ret void -117: ; preds = %109 +119: ; preds = %115 store i8 1, ptr %110, align 4 - %118 = load i64, ptr %5, align 8, !noalias !45460, !noundef !4 - %119 = add i64 %118, 1 - store i64 %119, ptr %5, align 8, !noalias !45460 + %120 = load i64, ptr %5, align 8, !noalias !45460, !noundef !4 + %121 = add i64 %120, 1 + store i64 %121, ptr %5, align 8, !noalias !45460 tail call void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePtr5frame17hc749f47bd235e760E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %0) - br label %116 + br label %118 -120: ; preds = %89, %.thread179 +122: ; preds = %91, %.thread179 %lpad.thr_comm = landingpad { ptr, i32 } cleanup - %121 = load i64, ptr %5, align 8, !noalias !45467, !noundef !4 - %122 = add i64 %121, 1 - store i64 %122, ptr %5, align 8, !noalias !45467 + %123 = load i64, ptr %5, align 8, !noalias !45467, !noundef !4 + %124 = add i64 %123, 1 + store i64 %124, ptr %5, align 8, !noalias !45467 br label %34 }