From 819592c6b36887452b32331fd3f7314b242dec9b Mon Sep 17 00:00:00 2001 From: Yingwei Zheng Date: Tue, 5 Mar 2024 21:46:36 +0800 Subject: [PATCH 1/2] pre-commit: test PR84016 PR Link: https://github.com/llvm/llvm-project/pull/84016 --- 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 e65287a7be9..6ce92942813 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/84016" # Please rebase manually # git fetch origin From 1468f7f1ba215f15c5d807c572285e79086dd2af Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Mar 2024 22:02:11 +0800 Subject: [PATCH 2/2] pre-commit: Update --- bench/diesel-rs/optimized/1d6yrclfdvavot4r.ll | 620 ++- bench/diesel-rs/optimized/1d8pgoqwu3bzfya4.ll | 620 ++- bench/diesel-rs/optimized/1hskzwx2vflsavf7.ll | 92 +- bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll | 653 ++- bench/diesel-rs/optimized/1zhqdyjorbzdhypm.ll | 655 ++- bench/diesel-rs/optimized/2sf6u3r7os1bcdld.ll | 773 ++-- bench/diesel-rs/optimized/3hbywg7swws1iy6v.ll | 655 ++- bench/diesel-rs/optimized/3iqa5s4rcitpn2nv.ll | 620 ++- bench/diesel-rs/optimized/3nv3xphjbq527f6u.ll | 1353 +++--- bench/diesel-rs/optimized/3nydn42x30kj4j9q.ll | 655 ++- bench/diesel-rs/optimized/3rjno8am3tsn5qrm.ll | 653 ++- bench/diesel-rs/optimized/46661qc4yjpbja0f.ll | 653 ++- bench/diesel-rs/optimized/gepqftqgym352s.ll | 620 ++- .../html5ever-rs/optimized/1mf2h4bh94yx6is.ll | 699 ++- bench/image-rs/optimized/2mngkegtim1o10y3.ll | 3891 ++++++++--------- .../influxdb-rs/optimized/17ptp6pnu4b90vr6.ll | 2552 +++++------ .../influxdb-rs/optimized/20e6y40qoje898dk.ll | 180 +- .../influxdb-rs/optimized/2du585cd6kvsz0m5.ll | 795 ++-- .../influxdb-rs/optimized/34vmrh0qyn6415sj.ll | 360 +- .../influxdb-rs/optimized/54bldmpi534adbqh.ll | 943 ++-- bench/regex-rs/optimized/1ri0nxve2ijarfwj.ll | 180 +- bench/regex-rs/optimized/4dth5ncaqumdqgby.ll | 628 ++- bench/tokio-rs/optimized/18r5vqnw0wlric57.ll | 120 +- bench/tokio-rs/optimized/58zica37k9qw0rn.ll | 476 +- 24 files changed, 8883 insertions(+), 10563 deletions(-) diff --git a/bench/diesel-rs/optimized/1d6yrclfdvavot4r.ll b/bench/diesel-rs/optimized/1d6yrclfdvavot4r.ll index 9d671f6411b..485ee9d0d16 100644 --- a/bench/diesel-rs/optimized/1d6yrclfdvavot4r.ll +++ b/bench/diesel-rs/optimized/1d6yrclfdvavot4r.ll @@ -261,46 +261,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !54, !noundef !5 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbc4a94e26cb72972E.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #28, !noalias !55 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbc4a94e26cb72972E.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #28, !noalias !55 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbc4a94e26cb72972E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbc4a94e26cb72972E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbc4a94e26cb72972E.exit": ; preds = %1, %5, %23 ret void } @@ -530,45 +516,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.22 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !5 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2238971936023531176.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.2238971936023531176.exit - %29 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #28 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2238971936023531176.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.2238971936023531176.exit + %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #28 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2238971936023531176.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2238971936023531176.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.2238971936023531176.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.2238971936023531176.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.2238971936023531176.exit, %19 ret void } @@ -997,45 +969,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h4825071 _ZN9hashbrown3raw13RawTableInner13drop_elements17h6380274134b9980fE.llvm.2238971936023531176.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc403fd616a91261bE.llvm.2238971936023531176.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !140) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h6380274134b9980fE.llvm.2238971936023531176.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !140 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h6380274134b9980fE.llvm.2238971936023531176.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !140 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h6380274134b9980fE.llvm.2238971936023531176.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h6380274134b9980fE.llvm.2238971936023531176.exit, %4 ret void } @@ -1104,45 +1062,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h9d67947 _ZN9hashbrown3raw13RawTableInner13drop_elements17h2910c3da1197764aE.llvm.2238971936023531176.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1f79f42fc773f46dE.llvm.2238971936023531176.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !161) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h2910c3da1197764aE.llvm.2238971936023531176.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !161 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h2910c3da1197764aE.llvm.2238971936023531176.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !161 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h2910c3da1197764aE.llvm.2238971936023531176.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17he0b08c7d24cfb141E.llvm.2238971936023531176.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h2910c3da1197764aE.llvm.2238971936023531176.exit, %4 ret void } @@ -1534,7 +1478,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -1662,11 +1606,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !242 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -1742,9 +1686,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !276 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.17224382189431947959"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !278, !noalias !279 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !217 br label %.thread52 @@ -1770,122 +1714,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !242 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !242 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !242 - call void @llvm.assume(i1 %133), !noalias !242 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !242 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !295 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !242 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !242 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !295 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !217 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !276 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !276 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !276 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !258 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !300 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !300 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !300 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !300 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !307, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !308 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !307, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !308 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !242 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !307 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !307 - %172 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !307 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !307 + %162 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !242 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !242 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17hcb985d4ced624ef9E", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr119drop_in_place$LT$$LP$diesel..pg..metadata_lookup..PgMetadataCacheKey$C$diesel..pg..backend..InnerPgTypeMetadata$RP$$GT$17h366cf4a4478c3a97E.llvm.2238971936023531176") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -1924,7 +1855,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -2052,11 +1983,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !345 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -2132,9 +2063,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !378 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.17224382189431947959"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !380, !noalias !381 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !321 br label %.thread52 @@ -2160,122 +2091,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 88) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !345 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !345 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !345 - call void @llvm.assume(i1 %133), !noalias !345 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !345 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !397 + %119 = mul i64 %.val1.i.i, 88 + %120 = add i64 %119, 103 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !345 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !345 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !397 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !321 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !378 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !378 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !378 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !360 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !402 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !402 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !402 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !402 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !409, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !410 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !409, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !410 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !345 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !409 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !409 - %172 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !409 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !409 + %162 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 88 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 88 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %175, ptr noundef nonnull align 1 dereferenceable(88) %173, i64 88, i1 false), !noalias !345 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %165, ptr noundef nonnull align 1 dereferenceable(88) %163, i64 88, i1 false), !noalias !345 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h2e444c19a71033a4E", i64 noundef 88, ptr noundef nonnull @"_ZN4core3ptr156drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..pg..backend..Pg$GT$$C$diesel..pg..connection..stmt..Statement$RP$$GT$17hf4828cf8b9af0ddaE.llvm.2238971936023531176") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hd51fb6ecfe1a2fe4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hcdf5d04760dd1725E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/1d8pgoqwu3bzfya4.ll b/bench/diesel-rs/optimized/1d8pgoqwu3bzfya4.ll index 3c8cc392c62..bf244129be7 100644 --- a/bench/diesel-rs/optimized/1d8pgoqwu3bzfya4.ll +++ b/bench/diesel-rs/optimized/1d8pgoqwu3bzfya4.ll @@ -261,46 +261,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !54, !noundef !5 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb80df3ce0a09fdedE.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #28, !noalias !55 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb80df3ce0a09fdedE.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #28, !noalias !55 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb80df3ce0a09fdedE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb80df3ce0a09fdedE.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb80df3ce0a09fdedE.exit": ; preds = %1, %5, %23 ret void } @@ -530,45 +516,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.27 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !5 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.279865716576117012.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.279865716576117012.exit - %29 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #28 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.279865716576117012.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.279865716576117012.exit + %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #28 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.279865716576117012.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.279865716576117012.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.279865716576117012.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.279865716576117012.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.279865716576117012.exit, %19 ret void } @@ -997,45 +969,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h5349245 _ZN9hashbrown3raw13RawTableInner13drop_elements17he8cb9ec4fb5feb37E.llvm.279865716576117012.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h961f52a0de32d934E.llvm.279865716576117012.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !140) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he8cb9ec4fb5feb37E.llvm.279865716576117012.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !140 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17he8cb9ec4fb5feb37E.llvm.279865716576117012.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !140 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he8cb9ec4fb5feb37E.llvm.279865716576117012.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17he8cb9ec4fb5feb37E.llvm.279865716576117012.exit, %4 ret void } @@ -1104,45 +1062,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h64d8367 _ZN9hashbrown3raw13RawTableInner13drop_elements17h739baa150a56a211E.llvm.279865716576117012.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0f3b91dadd26a470E.llvm.279865716576117012.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !161) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h739baa150a56a211E.llvm.279865716576117012.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !161 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h739baa150a56a211E.llvm.279865716576117012.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !161 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h739baa150a56a211E.llvm.279865716576117012.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h1d583507737a5f22E.llvm.279865716576117012.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h739baa150a56a211E.llvm.279865716576117012.exit, %4 ret void } @@ -1534,7 +1478,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -1662,11 +1606,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !242 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -1742,9 +1686,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !276 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.16034385991688127784"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !278, !noalias !279 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !217 br label %.thread52 @@ -1770,122 +1714,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 88) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !242 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !242 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !242 - call void @llvm.assume(i1 %133), !noalias !242 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !242 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !295 + %119 = mul i64 %.val1.i.i, 88 + %120 = add i64 %119, 103 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !242 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !242 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !295 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !217 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !276 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !276 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !276 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !258 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !300 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !300 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !300 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !300 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !307, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !308 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !307, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !308 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !242 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !307 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !307 - %172 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !307 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !307 + %162 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 88 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 88 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %175, ptr noundef nonnull align 1 dereferenceable(88) %173, i64 88, i1 false), !noalias !242 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %165, ptr noundef nonnull align 1 dereferenceable(88) %163, i64 88, i1 false), !noalias !242 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h38cb718f6719d103E", i64 noundef 88, ptr noundef nonnull @"_ZN4core3ptr156drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..pg..backend..Pg$GT$$C$diesel..pg..connection..stmt..Statement$RP$$GT$17hd4673df128035dc4E.llvm.279865716576117012") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -1924,7 +1855,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -2052,11 +1983,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !345 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -2132,9 +2063,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !378 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.16034385991688127784"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !380, !noalias !381 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !321 br label %.thread52 @@ -2160,122 +2091,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !345 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !345 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !345 - call void @llvm.assume(i1 %133), !noalias !345 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !345 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !397 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !345 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !345 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !397 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !321 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !378 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !378 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !378 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !360 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !402 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !402 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !402 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !402 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !409, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !410 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !409, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !410 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !345 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !409 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !409 - %172 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !409 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !409 + %162 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !345 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !345 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17ha94b859fd85e42edE", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr119drop_in_place$LT$$LP$diesel..pg..metadata_lookup..PgMetadataCacheKey$C$diesel..pg..backend..InnerPgTypeMetadata$RP$$GT$17hae78c26297aee723E.llvm.279865716576117012") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hfb4664c90894b3c9E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1fcd0c63dd0d5783E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/1hskzwx2vflsavf7.ll b/bench/diesel-rs/optimized/1hskzwx2vflsavf7.ll index 4605573ae91..07a2a14978a 100644 --- a/bench/diesel-rs/optimized/1hskzwx2vflsavf7.ll +++ b/bench/diesel-rs/optimized/1hskzwx2vflsavf7.ll @@ -130,34 +130,20 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h0f2d8eece5dfc4acE.l %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %26 = sub nsw i64 0, %17 - %27 = getelementptr inbounds i8, ptr %25, i64 %26 - %28 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %28) - tail call void @__rust_dealloc(ptr noundef nonnull %27, i64 noundef %20, i64 noundef %3) #12 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %17 = sub nsw i64 0, %11 + %18 = getelementptr inbounds i8, ptr %16, i64 %17 + tail call void @__rust_dealloc(ptr noundef nonnull %18, i64 noundef %13, i64 noundef %3) #12 ret void } @@ -171,42 +157,28 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17h9 %5 = getelementptr inbounds i8, ptr %0, i64 8 %6 = load i64, ptr %5, align 8, !noundef !4 %7 = icmp eq i64 %6, 0 - br i1 %7, label %32, label %8 + br i1 %7, label %22, label %8 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !15) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = load ptr, ptr %0, align 8, !alias.scope !15, !nonnull !4, !noundef !4 - %29 = sub nsw i64 0, %20 - %30 = getelementptr inbounds i8, ptr %28, i64 %29 - %31 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %31) - tail call void @__rust_dealloc(ptr noundef nonnull %30, i64 noundef %23, i64 noundef %3) #12, !noalias !15 - br label %32 - -32: ; preds = %4, %8 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = load ptr, ptr %0, align 8, !alias.scope !15, !nonnull !4, !noundef !4 + %20 = sub nsw i64 0, %14 + %21 = getelementptr inbounds i8, ptr %19, i64 %20 + tail call void @__rust_dealloc(ptr noundef nonnull %21, i64 noundef %16, i64 noundef %3) #12, !noalias !15 + br label %22 + +22: ; preds = %4, %8 ret void } diff --git a/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll b/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll index 6aa5ae69076..7015f52eaed 100644 --- a/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll +++ b/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll @@ -217,44 +217,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !33 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !33 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !33 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit": ; preds = %1, %6, %22 ret void } @@ -499,7 +487,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %171 + br i1 %.not.i, label %30, label %166 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -630,11 +618,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %159 - %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %159 ] - %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %159 ] - %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %159 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %159 ] +.preheader: ; preds = %.preheader.lr.ph, %154 + %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %154 ] + %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %154 ] + %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %154 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %154 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -702,9 +690,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %111 = xor <2 x i64> %109, %110 store <2 x i64> %111, ptr %8, align 16, !noalias !123 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.4308264632886301207"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %133 unwind label %84 + to label %128 unwind label %84 -.thread71.loopexit: ; preds = %159 +.thread71.loopexit: ; preds = %154 %.pre113 = load i64, ptr %13, align 8, !alias.scope !125, !noalias !126 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !70 br label %.thread71 @@ -730,162 +718,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %115, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", label %116 116: ; preds = %.thread71 - %117 = add i64 %.val3.i.i, 1 - %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 80) - %119 = extractvalue { i64, i1 } %118, 1 - %120 = xor i1 %119, true - call void @llvm.assume(i1 %120) - %121 = extractvalue { i64, i1 } %118, 0 - %122 = add i64 %.val3.i.i, 17 - %123 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %121, i64 %122) - %124 = extractvalue { i64, i1 } %123, 0 - %125 = extractvalue { i64, i1 } %123, 1 - %126 = icmp ult i64 %124, 9223372036854775793 - %127 = xor i1 %125, true - call void @llvm.assume(i1 %127) - call void @llvm.assume(i1 %126) - %128 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %128) - %129 = icmp eq i64 %124, 0 - br i1 %129, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", label %130 - -130: ; preds = %116 - %131 = sub nsw i64 0, %121 - %132 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %131 - call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %124, i64 noundef 16) #19, !noalias !139 + %117 = mul i64 %.val3.i.i, 80 + %118 = add i64 %117, 95 + %119 = and i64 %118, -16 + %120 = add i64 %.val3.i.i, 17 + %121 = add nuw i64 %120, %119 + %122 = icmp ult i64 %121, 9223372036854775793 + call void @llvm.assume(i1 %122) + %123 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %123) + %124 = icmp eq i64 %121, 0 + br i1 %124, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", label %125 + +125: ; preds = %116 + %126 = sub nsw i64 0, %119 + %127 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %126 + call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %121, i64 noundef 16) #19, !noalias !139 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit": ; preds = %.thread71, %116, %130 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit": ; preds = %.thread71, %116, %125 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !70 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit -133: ; preds = %.noexc7 - %134 = load <4 x i64>, ptr %8, align 16, !noalias !123 - %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) +128: ; preds = %.noexc7 + %129 = load <4 x i64>, ptr %8, align 16, !noalias !123 + %130 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %129) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !123 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !113 - %136 = and i64 %65, %135 - %137 = getelementptr inbounds i8, ptr %69, i64 %136 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %137, align 1, !noalias !140 - %138 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %139 = bitcast <16 x i1> %138 to i16 - %.not12.i.i = icmp eq i16 %139, 0 + %131 = and i64 %65, %130 + %132 = getelementptr inbounds i8, ptr %69, i64 %131 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %132, align 1, !noalias !140 + %133 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %134 = bitcast <16 x i1> %133 to i16 + %.not12.i.i = icmp eq i16 %134, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] - %.sroa.7.013.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] - %140 = add i64 %.sroa.7.013.i.i, 16 - %141 = add i64 %140, %.sroa.0.014.i.i - %142 = and i64 %141, %65 - %143 = getelementptr inbounds i8, ptr %69, i64 %142 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %143, align 1, !noalias !140 - %144 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %145 = bitcast <16 x i1> %144 to i16 - %.not.i.i = icmp eq i16 %145, 0 +.lr.ph.i.i: ; preds = %128, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ %131, %128 ] + %.sroa.7.013.i.i = phi i64 [ %135, %.lr.ph.i.i ], [ 0, %128 ] + %135 = add i64 %.sroa.7.013.i.i, 16 + %136 = add i64 %135, %.sroa.0.014.i.i + %137 = and i64 %136, %65 + %138 = getelementptr inbounds i8, ptr %69, i64 %137 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %138, align 1, !noalias !140 + %139 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %140 = bitcast <16 x i1> %139 to i16 + %.not.i.i = icmp eq i16 %140, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 - %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] - %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 - %147 = zext nneg i16 %146 to i64 - %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 - %149 = and i64 %148, %65 - %150 = getelementptr inbounds i8, ptr %69, i64 %149 - %151 = load i8, ptr %150, align 1, !noalias !147, !noundef !5 - %152 = icmp sgt i8 %151, -1 - br i1 %152, label %153, label %159 - -153: ; preds = %._crit_edge.i.i - %154 = load <16 x i8>, ptr %69, align 16, !noalias !148 - %155 = icmp slt <16 x i8> %154, zeroinitializer - %156 = bitcast <16 x i1> %155 to i16 - %.not.i.i.i = icmp ne i16 %156, 0 - %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !39 - %158 = zext nneg i16 %157 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %128 + %.sroa.0.0.lcssa.i.i = phi i64 [ %131, %128 ], [ %137, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %134, %128 ], [ %140, %.lr.ph.i.i ] + %141 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 + %142 = zext nneg i16 %141 to i64 + %143 = add i64 %.sroa.0.0.lcssa.i.i, %142 + %144 = and i64 %143, %65 + %145 = getelementptr inbounds i8, ptr %69, i64 %144 + %146 = load i8, ptr %145, align 1, !noalias !147, !noundef !5 + %147 = icmp sgt i8 %146, -1 + br i1 %147, label %148, label %154 + +148: ; preds = %._crit_edge.i.i + %149 = load <16 x i8>, ptr %69, align 16, !noalias !148 + %150 = icmp slt <16 x i8> %149, zeroinitializer + %151 = bitcast <16 x i1> %150 to i16 + %.not.i.i.i = icmp ne i16 %151, 0 + %152 = call i16 @llvm.cttz.i16(i16 %151, i1 true), !range !39 + %153 = zext nneg i16 %152 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %159 - -159: ; preds = %153, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] - %160 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 - %161 = lshr i64 %135, 57 - %162 = trunc i64 %161 to i8 - %163 = add i64 %.0.i.i.i9, -16 - %164 = and i64 %163, %65 - store i8 %162, ptr %160, align 1, !noalias !147 - %gep = getelementptr i8, ptr %invariant.gep, i64 %164 - store i8 %162, ptr %gep, align 1, !noalias !147 - %165 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 + br label %154 + +154: ; preds = %148, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %153, %148 ], [ %144, %._crit_edge.i.i ] + %155 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 + %156 = lshr i64 %130, 57 + %157 = trunc i64 %156 to i8 + %158 = add i64 %.0.i.i.i9, -16 + %159 = and i64 %158, %65 + store i8 %157, ptr %155, align 1, !noalias !147 + %gep = getelementptr i8, ptr %invariant.gep, i64 %159 + store i8 %157, ptr %gep, align 1, !noalias !147 + %160 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %97, -80 - %166 = getelementptr i8, ptr %165, i64 %.neg.i.i - %167 = getelementptr i8, ptr %166, i64 -80 - %168 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 + %161 = getelementptr i8, ptr %160, i64 %.neg.i.i + %162 = getelementptr i8, ptr %161, i64 -80 + %163 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -80 - %169 = getelementptr i8, ptr %168, i64 %.neg28.i.i - %170 = getelementptr i8, ptr %169, i64 -80 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %170, ptr noundef nonnull align 1 dereferenceable(80) %167, i64 80, i1 false) + %164 = getelementptr i8, ptr %163, i64 %.neg28.i.i + %165 = getelementptr i8, ptr %164, i64 -80 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %165, ptr noundef nonnull align 1 dereferenceable(80) %162, i64 80, i1 false) %.not = icmp eq i64 %98, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %196, %84 - %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %197, %196 ] +common.resume: ; preds = %191, %84 + %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %192, %191 ] resume { ptr, i32 } %common.resume.op -171: ; preds = %22 +166: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !151) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !151 - %172 = lshr i64 %26, 4 - %173 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %173, 0 - %174 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %172, %174 + %167 = lshr i64 %26, 4 + %168 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %168, 0 + %169 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %167, %169 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %171 - %175 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %175) - br label %180 - -._crit_edge.i.i12: ; preds = %180, %171 - %176 = icmp ult i64 %26, 16 - %177 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %177) - %178 = getelementptr inbounds i8, ptr %7, i64 8 - %179 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %176, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -180: ; preds = %180, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %182, %180 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %181, %180 ] - %181 = add nsw i64 %.sroa.5.05.i.i, -1 - %182 = add i64 %.sroa.01.06.i.i, 16 - %183 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %184 = load <16 x i8>, ptr %183, align 16, !noalias !154 - %.lobit.i.i.i = ashr <16 x i8> %184, - %185 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %186 = or <2 x i64> %185, - store <2 x i64> %186, ptr %183, align 16, !noalias !157 - %.not.not.i.i = icmp eq i64 %181, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %180 +.lr.ph.i.i11: ; preds = %166 + %170 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %170) + br label %175 + +._crit_edge.i.i12: ; preds = %175, %166 + %171 = icmp ult i64 %26, 16 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + %173 = getelementptr inbounds i8, ptr %7, i64 8 + %174 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %171, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +175: ; preds = %175, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %177, %175 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %176, %175 ] + %176 = add nsw i64 %.sroa.5.05.i.i, -1 + %177 = add i64 %.sroa.01.06.i.i, 16 + %178 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %179 = load <16 x i8>, ptr %178, align 16, !noalias !154 + %.lobit.i.i.i = ashr <16 x i8> %179, + %180 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %181 = or <2 x i64> %180, + store <2 x i64> %181, ptr %178, align 16, !noalias !157 + %.not.not.i.i = icmp eq i64 %176, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %175 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %187 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %187, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 + %182 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %182, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hb32ea4b5b1d56ea7E.llvm.10237324351089278644", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hb32ea4b5b1d56ea7E.llvm.10237324351089278644", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %188 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %188, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 + %183 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %183, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hb32ea4b5b1d56ea7E.llvm.10237324351089278644", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hb32ea4b5b1d56ea7E.llvm.10237324351089278644", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -894,229 +875,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %189 = getelementptr inbounds i8, ptr %6, i64 56 - %190 = getelementptr inbounds i8, ptr %5, i64 24 - %191 = load <2 x i64>, ptr %2, align 8 - %192 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> zeroinitializer - %193 = xor <2 x i64> %192, - %194 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> - %195 = xor <2 x i64> %194, - br label %198 - -196: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i - %197 = landingpad { ptr, i32 } + %184 = getelementptr inbounds i8, ptr %6, i64 56 + %185 = getelementptr inbounds i8, ptr %5, i64 24 + %186 = load <2 x i64>, ptr %2, align 8 + %187 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> zeroinitializer + %188 = xor <2 x i64> %187, + %189 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> + %190 = xor <2 x i64> %189, + br label %193 + +191: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i + %192 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae121b299f12bf23E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %288 - -198: ; preds = %287, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %199, %287 ] - %199 = add nuw i64 %.sroa.02.012.i, 1 - %200 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %201 = getelementptr inbounds i8, ptr %200, i64 %.sroa.02.012.i - %202 = load i8, ptr %201, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %202, -128 - br i1 %.not.i13, label %203, label %287 - -203: ; preds = %198 + to label %common.resume unwind label %283 + +193: ; preds = %282, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %194, %282 ] + %194 = add nuw i64 %.sroa.02.012.i, 1 + %195 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %196 = getelementptr inbounds i8, ptr %195, i64 %.sroa.02.012.i + %197 = load i8, ptr %196, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %197, -128 + br i1 %.not.i13, label %198, label %282 + +198: ; preds = %193 %.neg.i = mul i64 %.sroa.02.012.i, -80 - %204 = getelementptr i8, ptr %200, i64 %.neg.i - %205 = getelementptr i8, ptr %204, i64 -80 - %206 = sub nsw i64 0, %.sroa.02.012.i + %199 = getelementptr i8, ptr %195, i64 %.neg.i + %200 = getelementptr i8, ptr %199, i64 -80 + %201 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i _ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !160, !noalias !163 br label %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i -_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i, %203 - %207 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i ], [ %200, %203 ] +_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i, %198 + %202 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i ], [ %195, %198 ] call void @llvm.experimental.noalias.scope.decl(metadata !165) - %208 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %207, i64 %206 - %209 = getelementptr inbounds i8, ptr %208, i64 -80 + %203 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %202, i64 %201 + %204 = getelementptr inbounds i8, ptr %203, i64 -80 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !166 - store <2 x i64> %193, ptr %6, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %195, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %191, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %188, ptr %6, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %190, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %186, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !172, !noalias !175 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17haf4d3635fb2ea517E.llvm.4308264632886301207"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %209, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %196 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17haf4d3635fb2ea517E.llvm.4308264632886301207"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %204, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %191 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !177) call void @llvm.experimental.noalias.scope.decl(metadata !180) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !166 - %210 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 - %211 = shl i64 %210, 56 - %212 = load i64, ptr %189, align 8, !alias.scope !184, !noalias !166, !noundef !5 - %213 = or i64 %211, %212 - %214 = load i64, ptr %190, align 8, !noalias !183, !noundef !5 - %215 = xor i64 %214, %213 - store i64 %215, ptr %190, align 8, !noalias !183 + %205 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 + %206 = shl i64 %205, 56 + %207 = load i64, ptr %184, align 8, !alias.scope !184, !noalias !166, !noundef !5 + %208 = or i64 %206, %207 + %209 = load i64, ptr %185, align 8, !noalias !183, !noundef !5 + %210 = xor i64 %209, %208 + store i64 %210, ptr %185, align 8, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.4308264632886301207"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %196 + to label %.noexc18.i unwind label %191 .noexc18.i: ; preds = %.noexc.i16 - %216 = load <2 x i64>, ptr %5, align 16, !noalias !183 - %217 = insertelement <2 x i64> , i64 %213, i64 0 - %218 = xor <2 x i64> %216, %217 - store <2 x i64> %218, ptr %5, align 16, !noalias !183 + %211 = load <2 x i64>, ptr %5, align 16, !noalias !183 + %212 = insertelement <2 x i64> , i64 %208, i64 0 + %213 = xor <2 x i64> %211, %212 + store <2 x i64> %213, ptr %5, align 16, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.4308264632886301207"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %219 unwind label %196 + to label %214 unwind label %191 -219: ; preds = %.noexc18.i - %220 = load <4 x i64>, ptr %5, align 16, !noalias !183 - %221 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %220) +214: ; preds = %.noexc18.i + %215 = load <4 x i64>, ptr %5, align 16, !noalias !183 + %216 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %215) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !166 - %222 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %223 = and i64 %222, %221 - %224 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %225 = getelementptr inbounds i8, ptr %224, i64 %223 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %225, align 1, !noalias !185 - %226 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %227 = bitcast <16 x i1> %226 to i16 - %.not12.i.i18 = icmp eq i16 %227, 0 + %217 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %218 = and i64 %217, %216 + %219 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %220 = getelementptr inbounds i8, ptr %219, i64 %218 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %220, align 1, !noalias !185 + %221 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %222 = bitcast <16 x i1> %221 to i16 + %.not12.i.i18 = icmp eq i16 %222, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %219, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %230, %.lr.ph.i21.i ], [ %223, %219 ] - %.sroa.7.013.i.i25 = phi i64 [ %228, %.lr.ph.i21.i ], [ 0, %219 ] - %228 = add i64 %.sroa.7.013.i.i25, 16 - %229 = add i64 %228, %.sroa.0.014.i.i24 - %230 = and i64 %229, %222 - %231 = getelementptr inbounds i8, ptr %224, i64 %230 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %231, align 1, !noalias !185 - %232 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %233 = bitcast <16 x i1> %232 to i16 - %.not.i.i27 = icmp eq i16 %233, 0 +.lr.ph.i21.i: ; preds = %214, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %225, %.lr.ph.i21.i ], [ %218, %214 ] + %.sroa.7.013.i.i25 = phi i64 [ %223, %.lr.ph.i21.i ], [ 0, %214 ] + %223 = add i64 %.sroa.7.013.i.i25, 16 + %224 = add i64 %223, %.sroa.0.014.i.i24 + %225 = and i64 %224, %217 + %226 = getelementptr inbounds i8, ptr %219, i64 %225 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %226, align 1, !noalias !185 + %227 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %228 = bitcast <16 x i1> %227 to i16 + %.not.i.i27 = icmp eq i16 %228, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %219 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %223, %219 ], [ %230, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %227, %219 ], [ %233, %.lr.ph.i21.i ] - %234 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 - %235 = zext nneg i16 %234 to i64 - %236 = add i64 %.sroa.0.0.lcssa.i.i19, %235 - %237 = and i64 %236, %222 - %238 = getelementptr inbounds i8, ptr %224, i64 %237 - %239 = load i8, ptr %238, align 1, !noalias !190, !noundef !5 - %240 = icmp sgt i8 %239, -1 - br i1 %240, label %241, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i - -241: ; preds = %._crit_edge.i20.i - %242 = load <16 x i8>, ptr %224, align 16, !noalias !191 - %243 = icmp slt <16 x i8> %242, zeroinitializer - %244 = bitcast <16 x i1> %243 to i16 - %.not.i.i.i23 = icmp ne i16 %244, 0 - %245 = call i16 @llvm.cttz.i16(i16 %244, i1 true), !range !39 - %246 = zext nneg i16 %245 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %214 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %218, %214 ], [ %225, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %222, %214 ], [ %228, %.lr.ph.i21.i ] + %229 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 + %230 = zext nneg i16 %229 to i64 + %231 = add i64 %.sroa.0.0.lcssa.i.i19, %230 + %232 = and i64 %231, %217 + %233 = getelementptr inbounds i8, ptr %219, i64 %232 + %234 = load i8, ptr %233, align 1, !noalias !190, !noundef !5 + %235 = icmp sgt i8 %234, -1 + br i1 %235, label %236, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i + +236: ; preds = %._crit_edge.i20.i + %237 = load <16 x i8>, ptr %219, align 16, !noalias !191 + %238 = icmp slt <16 x i8> %237, zeroinitializer + %239 = bitcast <16 x i1> %238 to i16 + %.not.i.i.i23 = icmp ne i16 %239, 0 + %240 = call i16 @llvm.cttz.i16(i16 %239, i1 true), !range !39 + %241 = zext nneg i16 %240 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i: ; preds = %241, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %246, %241 ], [ %237, %._crit_edge.i20.i ] - %247 = sub i64 %.sroa.02.012.i, %223 - %248 = sub i64 %.0.i.i.i21, %223 - %249 = xor i64 %248, %247 - %.unshifted.i = and i64 %249, %222 - %250 = icmp ult i64 %.unshifted.i, 16 - br i1 %250, label %264, label %251 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i: ; preds = %236, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %241, %236 ], [ %232, %._crit_edge.i20.i ] + %242 = sub i64 %.sroa.02.012.i, %218 + %243 = sub i64 %.0.i.i.i21, %218 + %244 = xor i64 %243, %242 + %.unshifted.i = and i64 %244, %217 + %245 = icmp ult i64 %.unshifted.i, 16 + br i1 %245, label %259, label %246 -251: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i +246: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -80 - %252 = getelementptr i8, ptr %224, i64 %.neg16.i - %253 = getelementptr i8, ptr %252, i64 -80 - %254 = getelementptr inbounds i8, ptr %224, i64 %.0.i.i.i21 - %255 = load i8, ptr %254, align 1, !noundef !5 - %256 = lshr i64 %221, 57 - %257 = trunc i64 %256 to i8 - %258 = add i64 %.0.i.i.i21, -16 - %259 = and i64 %258, %222 - store i8 %257, ptr %254, align 1 - %260 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %261 = getelementptr i8, ptr %260, i64 %259 - %262 = getelementptr i8, ptr %261, i64 16 - store i8 %257, ptr %262, align 1 - %263 = icmp eq i8 %255, -1 - br i1 %263, label %278, label %.preheader.i - -264: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i - %265 = lshr i64 %221, 57 - %266 = trunc i64 %265 to i8 - %267 = add i64 %.sroa.02.012.i, -16 - %268 = and i64 %222, %267 - %269 = getelementptr inbounds i8, ptr %224, i64 %.sroa.02.012.i - store i8 %266, ptr %269, align 1 - %270 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %271 = getelementptr i8, ptr %270, i64 %268 - %272 = getelementptr i8, ptr %271, i64 16 - store i8 %266, ptr %272, align 1 - br label %287 - -.preheader.i: ; preds = %251, %.preheader.i - %.0910.i.i = phi i64 [ %277, %.preheader.i ], [ 0, %251 ] - %273 = getelementptr inbounds i8, ptr %205, i64 %.0910.i.i - %274 = getelementptr inbounds i8, ptr %253, i64 %.0910.i.i - %275 = load i8, ptr %273, align 1 - %276 = load i8, ptr %274, align 1 - store i8 %276, ptr %273, align 1 - store i8 %275, ptr %274, align 1 - %277 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %277, 80 + %247 = getelementptr i8, ptr %219, i64 %.neg16.i + %248 = getelementptr i8, ptr %247, i64 -80 + %249 = getelementptr inbounds i8, ptr %219, i64 %.0.i.i.i21 + %250 = load i8, ptr %249, align 1, !noundef !5 + %251 = lshr i64 %216, 57 + %252 = trunc i64 %251 to i8 + %253 = add i64 %.0.i.i.i21, -16 + %254 = and i64 %253, %217 + store i8 %252, ptr %249, align 1 + %255 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %256 = getelementptr i8, ptr %255, i64 %254 + %257 = getelementptr i8, ptr %256, i64 16 + store i8 %252, ptr %257, align 1 + %258 = icmp eq i8 %250, -1 + br i1 %258, label %273, label %.preheader.i + +259: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10237324351089278644.exit.i + %260 = lshr i64 %216, 57 + %261 = trunc i64 %260 to i8 + %262 = add i64 %.sroa.02.012.i, -16 + %263 = and i64 %217, %262 + %264 = getelementptr inbounds i8, ptr %219, i64 %.sroa.02.012.i + store i8 %261, ptr %264, align 1 + %265 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %266 = getelementptr i8, ptr %265, i64 %263 + %267 = getelementptr i8, ptr %266, i64 16 + store i8 %261, ptr %267, align 1 + br label %282 + +.preheader.i: ; preds = %246, %.preheader.i + %.0910.i.i = phi i64 [ %272, %.preheader.i ], [ 0, %246 ] + %268 = getelementptr inbounds i8, ptr %200, i64 %.0910.i.i + %269 = getelementptr inbounds i8, ptr %248, i64 %.0910.i.i + %270 = load i8, ptr %268, align 1 + %271 = load i8, ptr %269, align 1 + store i8 %271, ptr %268, align 1 + store i8 %270, ptr %269, align 1 + %272 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %272, 80 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17ha4784058f1b0d5a0E.exit.loopexit.i, label %.preheader.i -278: ; preds = %251 - %279 = add i64 %.sroa.02.012.i, -16 - %280 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %281 = and i64 %280, %279 - %282 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %283 = getelementptr inbounds i8, ptr %282, i64 %.sroa.02.012.i - store i8 -1, ptr %283, align 1 - %284 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %285 = getelementptr i8, ptr %284, i64 %281 - %286 = getelementptr i8, ptr %285, i64 16 - store i8 -1, ptr %286, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %253, ptr noundef nonnull align 1 dereferenceable(80) %205, i64 80, i1 false) - br label %287 - -287: ; preds = %278, %264, %198 +273: ; preds = %246 + %274 = add i64 %.sroa.02.012.i, -16 + %275 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %276 = and i64 %275, %274 + %277 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %278 = getelementptr inbounds i8, ptr %277, i64 %.sroa.02.012.i + store i8 -1, ptr %278, align 1 + %279 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %280 = getelementptr i8, ptr %279, i64 %276 + %281 = getelementptr i8, ptr %280, i64 16 + store i8 -1, ptr %281, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %248, ptr noundef nonnull align 1 dereferenceable(80) %200, i64 80, i1 false) + br label %282 + +282: ; preds = %273, %259, %193 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %198 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %193 -288: ; preds = %196 - %289 = landingpad { ptr, i32 } +283: ; preds = %191 + %284 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %287 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %282 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !151 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %290 = lshr i64 %.pre23.i, 3 - %291 = mul nuw i64 %290, 7 - %292 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %292, i64 %.pre22.i.fr, i64 %291 + %285 = lshr i64 %.pre23.i, 3 + %286 = mul nuw i64 %285, 7 + %287 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %287, i64 %.pre22.i.fr, i64 %286 %.pre = load i64, ptr %13, align 8, !alias.scope !151 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %293 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %294 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %295 = getelementptr inbounds i8, ptr %0, i64 16 - %296 = sub i64 %294, %293 - store i64 %296, ptr %295, align 8, !alias.scope !151 + %288 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %289 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %290 = getelementptr inbounds i8, ptr %0, i64 16 + %291 = sub i64 %289, %288 + store i64 %291, ptr %290, align 8, !alias.scope !151 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !151 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit: ; preds = %83, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %83 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %83 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] - %297 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %298 = insertvalue { i64, i64 } %297, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %298 + %292 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %293 = insertvalue { i64, i64 } %292, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %293 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/1zhqdyjorbzdhypm.ll b/bench/diesel-rs/optimized/1zhqdyjorbzdhypm.ll index b3a84bf18d4..8240bf3f3e6 100644 --- a/bench/diesel-rs/optimized/1zhqdyjorbzdhypm.ll +++ b/bench/diesel-rs/optimized/1zhqdyjorbzdhypm.ll @@ -187,44 +187,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !25 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha59f3ed971e745b4E.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !25 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha59f3ed971e745b4E.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !25 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha59f3ed971e745b4E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha59f3ed971e745b4E.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha59f3ed971e745b4E.exit": ; preds = %1, %6, %22 ret void } @@ -469,7 +457,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %178 + br i1 %.not.i, label %30, label %168 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -602,11 +590,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %166 ] - %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %166 ] - %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %166 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %156 ] + %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %156 ] + %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %156 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %156 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -674,9 +662,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %8, align 16, !noalias !115 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.14418932532550506065"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %140 unwind label %86 + to label %130 unwind label %86 -.thread71.loopexit: ; preds = %166 +.thread71.loopexit: ; preds = %156 %.pre113 = load i64, ptr %13, align 8, !alias.scope !117, !noalias !118 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !62 br label %.thread71 @@ -702,168 +690,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit", label %118 118: ; preds = %.thread71 - %119 = add i64 %.val3.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122) - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126) - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val3.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134) - call void @llvm.assume(i1 %133) - %135 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %135) - %136 = icmp eq i64 %131, 0 - br i1 %136, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit", label %137 - -137: ; preds = %118 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #19, !noalias !131 + %119 = mul i64 %.val3.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val3.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124) + %125 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %125) + %126 = icmp eq i64 %123, 0 + br i1 %126, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit", label %127 + +127: ; preds = %118 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #19, !noalias !131 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit": ; preds = %.thread71, %118, %137 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit": ; preds = %.thread71, %118, %127 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !62 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h3440bc095bb882bfE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %8, align 16, !noalias !115 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %8, align 16, !noalias !115 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !115 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !105 - %143 = and i64 %67, %142 - %144 = getelementptr inbounds i8, ptr %71, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !132 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %67, %132 + %134 = getelementptr inbounds i8, ptr %71, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !132 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %67 - %150 = getelementptr inbounds i8, ptr %71, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !132 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %67 + %140 = getelementptr inbounds i8, ptr %71, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !132 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %67 - %157 = getelementptr inbounds i8, ptr %71, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !139, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %71, align 16, !noalias !140 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !31 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %67 + %147 = getelementptr inbounds i8, ptr %71, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !139, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %71, align 16, !noalias !140 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !31 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %67 - store i8 %169, ptr %167, align 1, !noalias !139 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !139 - %172 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %67 + store i8 %159, ptr %157, align 1, !noalias !139 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !139 + %162 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %99, -56 - %173 = getelementptr i8, ptr %172, i64 %.neg.i.i - %174 = getelementptr i8, ptr %173, i64 -56 - %175 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 + %163 = getelementptr i8, ptr %162, i64 %.neg.i.i + %164 = getelementptr i8, ptr %163, i64 -56 + %165 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -56 - %176 = getelementptr i8, ptr %175, i64 %.neg28.i.i - %177 = getelementptr i8, ptr %176, i64 -56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %177, ptr noundef nonnull align 1 dereferenceable(56) %174, i64 56, i1 false) + %166 = getelementptr i8, ptr %165, i64 %.neg28.i.i + %167 = getelementptr i8, ptr %166, i64 -56 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %167, ptr noundef nonnull align 1 dereferenceable(56) %164, i64 56, i1 false) %.not = icmp eq i64 %100, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %203, %86 - %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %204, %203 ] +common.resume: ; preds = %193, %86 + %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %194, %193 ] resume { ptr, i32 } %common.resume.op -178: ; preds = %22 +168: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !143) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !143 - %179 = lshr i64 %26, 4 - %180 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %180, 0 - %181 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %179, %181 + %169 = lshr i64 %26, 4 + %170 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %170, 0 + %171 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %169, %171 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %178 - %182 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %182) - br label %187 - -._crit_edge.i.i12: ; preds = %187, %178 - %183 = icmp ult i64 %26, 16 - %184 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds i8, ptr %7, i64 8 - %186 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %183, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -187: ; preds = %187, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %189, %187 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %188, %187 ] - %188 = add nsw i64 %.sroa.5.05.i.i, -1 - %189 = add i64 %.sroa.01.06.i.i, 16 - %190 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %191 = load <16 x i8>, ptr %190, align 16, !noalias !146 - %.lobit.i.i.i = ashr <16 x i8> %191, - %192 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %193 = or <2 x i64> %192, - store <2 x i64> %193, ptr %190, align 16, !noalias !149 - %.not.not.i.i = icmp eq i64 %188, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %187 +.lr.ph.i.i11: ; preds = %168 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + br label %177 + +._crit_edge.i.i12: ; preds = %177, %168 + %173 = icmp ult i64 %26, 16 + %174 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %174) + %175 = getelementptr inbounds i8, ptr %7, i64 8 + %176 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %173, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +177: ; preds = %177, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %179, %177 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %178, %177 ] + %178 = add nsw i64 %.sroa.5.05.i.i, -1 + %179 = add i64 %.sroa.01.06.i.i, 16 + %180 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %181 = load <16 x i8>, ptr %180, align 16, !noalias !146 + %.lobit.i.i.i = ashr <16 x i8> %181, + %182 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %183 = or <2 x i64> %182, + store <2 x i64> %183, ptr %180, align 16, !noalias !149 + %.not.not.i.i = icmp eq i64 %178, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %177 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %194 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %194, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 + %184 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %184, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17h81b1fb495f3e05fbE.llvm.13963191703262297798", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17h81b1fb495f3e05fbE.llvm.13963191703262297798", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %195 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %195, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 + %185 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %185, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17h81b1fb495f3e05fbE.llvm.13963191703262297798", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17h81b1fb495f3e05fbE.llvm.13963191703262297798", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -872,229 +847,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %196 = getelementptr inbounds i8, ptr %6, i64 56 - %197 = getelementptr inbounds i8, ptr %5, i64 24 - %198 = load <2 x i64>, ptr %2, align 8 - %199 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> zeroinitializer - %200 = xor <2 x i64> %199, - %201 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> - %202 = xor <2 x i64> %201, - br label %205 - -203: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i - %204 = landingpad { ptr, i32 } + %186 = getelementptr inbounds i8, ptr %6, i64 56 + %187 = getelementptr inbounds i8, ptr %5, i64 24 + %188 = load <2 x i64>, ptr %2, align 8 + %189 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> zeroinitializer + %190 = xor <2 x i64> %189, + %191 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> + %192 = xor <2 x i64> %191, + br label %195 + +193: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i + %194 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha67bab16b452a446E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %295 - -205: ; preds = %294, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %206, %294 ] - %206 = add nuw i64 %.sroa.02.012.i, 1 - %207 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %208 = getelementptr inbounds i8, ptr %207, i64 %.sroa.02.012.i - %209 = load i8, ptr %208, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %209, -128 - br i1 %.not.i13, label %210, label %294 - -210: ; preds = %205 + to label %common.resume unwind label %285 + +195: ; preds = %284, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %196, %284 ] + %196 = add nuw i64 %.sroa.02.012.i, 1 + %197 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %198 = getelementptr inbounds i8, ptr %197, i64 %.sroa.02.012.i + %199 = load i8, ptr %198, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %199, -128 + br i1 %.not.i13, label %200, label %284 + +200: ; preds = %195 %.neg.i = mul i64 %.sroa.02.012.i, -56 - %211 = getelementptr i8, ptr %207, i64 %.neg.i - %212 = getelementptr i8, ptr %211, i64 -56 - %213 = sub nsw i64 0, %.sroa.02.012.i + %201 = getelementptr i8, ptr %197, i64 %.neg.i + %202 = getelementptr i8, ptr %201, i64 -56 + %203 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i _ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !152, !noalias !155 br label %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i -_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i, %210 - %214 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i ], [ %207, %210 ] +_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i, %200 + %204 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i ], [ %197, %200 ] call void @llvm.experimental.noalias.scope.decl(metadata !157) - %215 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %214, i64 %213 - %216 = getelementptr inbounds i8, ptr %215, i64 -56 + %205 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %204, i64 %203 + %206 = getelementptr inbounds i8, ptr %205, i64 -56 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !158 - store <2 x i64> %200, ptr %6, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %202, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %198, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %190, ptr %6, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %192, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %188, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !164, !noalias !167 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17he56c388fb47362f2E.llvm.14418932532550506065"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %216, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %203 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17he56c388fb47362f2E.llvm.14418932532550506065"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %206, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %193 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !169) call void @llvm.experimental.noalias.scope.decl(metadata !172) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !158 - %217 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 - %218 = shl i64 %217, 56 - %219 = load i64, ptr %196, align 8, !alias.scope !176, !noalias !158, !noundef !5 - %220 = or i64 %218, %219 - %221 = load i64, ptr %197, align 8, !noalias !175, !noundef !5 - %222 = xor i64 %221, %220 - store i64 %222, ptr %197, align 8, !noalias !175 + %207 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 + %208 = shl i64 %207, 56 + %209 = load i64, ptr %186, align 8, !alias.scope !176, !noalias !158, !noundef !5 + %210 = or i64 %208, %209 + %211 = load i64, ptr %187, align 8, !noalias !175, !noundef !5 + %212 = xor i64 %211, %210 + store i64 %212, ptr %187, align 8, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.14418932532550506065"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %203 + to label %.noexc18.i unwind label %193 .noexc18.i: ; preds = %.noexc.i16 - %223 = load <2 x i64>, ptr %5, align 16, !noalias !175 - %224 = insertelement <2 x i64> , i64 %220, i64 0 - %225 = xor <2 x i64> %223, %224 - store <2 x i64> %225, ptr %5, align 16, !noalias !175 + %213 = load <2 x i64>, ptr %5, align 16, !noalias !175 + %214 = insertelement <2 x i64> , i64 %210, i64 0 + %215 = xor <2 x i64> %213, %214 + store <2 x i64> %215, ptr %5, align 16, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.14418932532550506065"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %226 unwind label %203 + to label %216 unwind label %193 -226: ; preds = %.noexc18.i - %227 = load <4 x i64>, ptr %5, align 16, !noalias !175 - %228 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %227) +216: ; preds = %.noexc18.i + %217 = load <4 x i64>, ptr %5, align 16, !noalias !175 + %218 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %217) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !158 - %229 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %230 = and i64 %229, %228 - %231 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %232 = getelementptr inbounds i8, ptr %231, i64 %230 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %232, align 1, !noalias !177 - %233 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %234 = bitcast <16 x i1> %233 to i16 - %.not12.i.i18 = icmp eq i16 %234, 0 + %219 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %220 = and i64 %219, %218 + %221 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %222 = getelementptr inbounds i8, ptr %221, i64 %220 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %222, align 1, !noalias !177 + %223 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %224 = bitcast <16 x i1> %223 to i16 + %.not12.i.i18 = icmp eq i16 %224, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %226, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %237, %.lr.ph.i21.i ], [ %230, %226 ] - %.sroa.7.013.i.i25 = phi i64 [ %235, %.lr.ph.i21.i ], [ 0, %226 ] - %235 = add i64 %.sroa.7.013.i.i25, 16 - %236 = add i64 %235, %.sroa.0.014.i.i24 - %237 = and i64 %236, %229 - %238 = getelementptr inbounds i8, ptr %231, i64 %237 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %238, align 1, !noalias !177 - %239 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %240 = bitcast <16 x i1> %239 to i16 - %.not.i.i27 = icmp eq i16 %240, 0 +.lr.ph.i21.i: ; preds = %216, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %227, %.lr.ph.i21.i ], [ %220, %216 ] + %.sroa.7.013.i.i25 = phi i64 [ %225, %.lr.ph.i21.i ], [ 0, %216 ] + %225 = add i64 %.sroa.7.013.i.i25, 16 + %226 = add i64 %225, %.sroa.0.014.i.i24 + %227 = and i64 %226, %219 + %228 = getelementptr inbounds i8, ptr %221, i64 %227 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %228, align 1, !noalias !177 + %229 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %230 = bitcast <16 x i1> %229 to i16 + %.not.i.i27 = icmp eq i16 %230, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %226 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %230, %226 ], [ %237, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %234, %226 ], [ %240, %.lr.ph.i21.i ] - %241 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 - %242 = zext nneg i16 %241 to i64 - %243 = add i64 %.sroa.0.0.lcssa.i.i19, %242 - %244 = and i64 %243, %229 - %245 = getelementptr inbounds i8, ptr %231, i64 %244 - %246 = load i8, ptr %245, align 1, !noalias !182, !noundef !5 - %247 = icmp sgt i8 %246, -1 - br i1 %247, label %248, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i - -248: ; preds = %._crit_edge.i20.i - %249 = load <16 x i8>, ptr %231, align 16, !noalias !183 - %250 = icmp slt <16 x i8> %249, zeroinitializer - %251 = bitcast <16 x i1> %250 to i16 - %.not.i.i.i23 = icmp ne i16 %251, 0 - %252 = call i16 @llvm.cttz.i16(i16 %251, i1 true), !range !31 - %253 = zext nneg i16 %252 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %216 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %220, %216 ], [ %227, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %224, %216 ], [ %230, %.lr.ph.i21.i ] + %231 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 + %232 = zext nneg i16 %231 to i64 + %233 = add i64 %.sroa.0.0.lcssa.i.i19, %232 + %234 = and i64 %233, %219 + %235 = getelementptr inbounds i8, ptr %221, i64 %234 + %236 = load i8, ptr %235, align 1, !noalias !182, !noundef !5 + %237 = icmp sgt i8 %236, -1 + br i1 %237, label %238, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i + +238: ; preds = %._crit_edge.i20.i + %239 = load <16 x i8>, ptr %221, align 16, !noalias !183 + %240 = icmp slt <16 x i8> %239, zeroinitializer + %241 = bitcast <16 x i1> %240 to i16 + %.not.i.i.i23 = icmp ne i16 %241, 0 + %242 = call i16 @llvm.cttz.i16(i16 %241, i1 true), !range !31 + %243 = zext nneg i16 %242 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i: ; preds = %248, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %253, %248 ], [ %244, %._crit_edge.i20.i ] - %254 = sub i64 %.sroa.02.012.i, %230 - %255 = sub i64 %.0.i.i.i21, %230 - %256 = xor i64 %255, %254 - %.unshifted.i = and i64 %256, %229 - %257 = icmp ult i64 %.unshifted.i, 16 - br i1 %257, label %271, label %258 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i: ; preds = %238, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %243, %238 ], [ %234, %._crit_edge.i20.i ] + %244 = sub i64 %.sroa.02.012.i, %220 + %245 = sub i64 %.0.i.i.i21, %220 + %246 = xor i64 %245, %244 + %.unshifted.i = and i64 %246, %219 + %247 = icmp ult i64 %.unshifted.i, 16 + br i1 %247, label %261, label %248 -258: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i +248: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -56 - %259 = getelementptr i8, ptr %231, i64 %.neg16.i - %260 = getelementptr i8, ptr %259, i64 -56 - %261 = getelementptr inbounds i8, ptr %231, i64 %.0.i.i.i21 - %262 = load i8, ptr %261, align 1, !noundef !5 - %263 = lshr i64 %228, 57 - %264 = trunc i64 %263 to i8 - %265 = add i64 %.0.i.i.i21, -16 - %266 = and i64 %265, %229 - store i8 %264, ptr %261, align 1 + %249 = getelementptr i8, ptr %221, i64 %.neg16.i + %250 = getelementptr i8, ptr %249, i64 -56 + %251 = getelementptr inbounds i8, ptr %221, i64 %.0.i.i.i21 + %252 = load i8, ptr %251, align 1, !noundef !5 + %253 = lshr i64 %218, 57 + %254 = trunc i64 %253 to i8 + %255 = add i64 %.0.i.i.i21, -16 + %256 = and i64 %255, %219 + store i8 %254, ptr %251, align 1 + %257 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %258 = getelementptr i8, ptr %257, i64 %256 + %259 = getelementptr i8, ptr %258, i64 16 + store i8 %254, ptr %259, align 1 + %260 = icmp eq i8 %252, -1 + br i1 %260, label %275, label %.preheader.i + +261: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i + %262 = lshr i64 %218, 57 + %263 = trunc i64 %262 to i8 + %264 = add i64 %.sroa.02.012.i, -16 + %265 = and i64 %219, %264 + %266 = getelementptr inbounds i8, ptr %221, i64 %.sroa.02.012.i + store i8 %263, ptr %266, align 1 %267 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %268 = getelementptr i8, ptr %267, i64 %266 + %268 = getelementptr i8, ptr %267, i64 %265 %269 = getelementptr i8, ptr %268, i64 16 - store i8 %264, ptr %269, align 1 - %270 = icmp eq i8 %262, -1 - br i1 %270, label %285, label %.preheader.i - -271: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13963191703262297798.exit.i - %272 = lshr i64 %228, 57 - %273 = trunc i64 %272 to i8 - %274 = add i64 %.sroa.02.012.i, -16 - %275 = and i64 %229, %274 - %276 = getelementptr inbounds i8, ptr %231, i64 %.sroa.02.012.i - store i8 %273, ptr %276, align 1 - %277 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %278 = getelementptr i8, ptr %277, i64 %275 - %279 = getelementptr i8, ptr %278, i64 16 - store i8 %273, ptr %279, align 1 - br label %294 - -.preheader.i: ; preds = %258, %.preheader.i - %.0910.i.i = phi i64 [ %284, %.preheader.i ], [ 0, %258 ] - %280 = getelementptr inbounds i8, ptr %212, i64 %.0910.i.i - %281 = getelementptr inbounds i8, ptr %260, i64 %.0910.i.i - %282 = load i8, ptr %280, align 1 - %283 = load i8, ptr %281, align 1 - store i8 %283, ptr %280, align 1 - store i8 %282, ptr %281, align 1 - %284 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %284, 56 + store i8 %263, ptr %269, align 1 + br label %284 + +.preheader.i: ; preds = %248, %.preheader.i + %.0910.i.i = phi i64 [ %274, %.preheader.i ], [ 0, %248 ] + %270 = getelementptr inbounds i8, ptr %202, i64 %.0910.i.i + %271 = getelementptr inbounds i8, ptr %250, i64 %.0910.i.i + %272 = load i8, ptr %270, align 1 + %273 = load i8, ptr %271, align 1 + store i8 %273, ptr %270, align 1 + store i8 %272, ptr %271, align 1 + %274 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %274, 56 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17hbca439ffaef94659E.exit.loopexit.i, label %.preheader.i -285: ; preds = %258 - %286 = add i64 %.sroa.02.012.i, -16 - %287 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %288 = and i64 %287, %286 - %289 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %290 = getelementptr inbounds i8, ptr %289, i64 %.sroa.02.012.i - store i8 -1, ptr %290, align 1 - %291 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %292 = getelementptr i8, ptr %291, i64 %288 - %293 = getelementptr i8, ptr %292, i64 16 - store i8 -1, ptr %293, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %260, ptr noundef nonnull align 1 dereferenceable(56) %212, i64 56, i1 false) - br label %294 - -294: ; preds = %285, %271, %205 +275: ; preds = %248 + %276 = add i64 %.sroa.02.012.i, -16 + %277 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %278 = and i64 %277, %276 + %279 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %280 = getelementptr inbounds i8, ptr %279, i64 %.sroa.02.012.i + store i8 -1, ptr %280, align 1 + %281 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %282 = getelementptr i8, ptr %281, i64 %278 + %283 = getelementptr i8, ptr %282, i64 16 + store i8 -1, ptr %283, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %250, ptr noundef nonnull align 1 dereferenceable(56) %202, i64 56, i1 false) + br label %284 + +284: ; preds = %275, %261, %195 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %205 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %195 -295: ; preds = %203 - %296 = landingpad { ptr, i32 } +285: ; preds = %193 + %286 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %294 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %284 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !143 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %297 = lshr i64 %.pre23.i, 3 - %298 = mul nuw i64 %297, 7 - %299 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %299, i64 %.pre22.i.fr, i64 %298 + %287 = lshr i64 %.pre23.i, 3 + %288 = mul nuw i64 %287, 7 + %289 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %289, i64 %.pre22.i.fr, i64 %288 %.pre = load i64, ptr %13, align 8, !alias.scope !143 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %300 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %301 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %302 = getelementptr inbounds i8, ptr %0, i64 16 - %303 = sub i64 %301, %300 - store i64 %303, ptr %302, align 8, !alias.scope !143 + %290 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %291 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %292 = getelementptr inbounds i8, ptr %0, i64 16 + %293 = sub i64 %291, %290 + store i64 %293, ptr %292, align 8, !alias.scope !143 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !143 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h3440bc095bb882bfE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h3440bc095bb882bfE.exit: ; preds = %85, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %85 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he7c6a8ea69c26ba1E.exit" ] - %304 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %305 = insertvalue { i64, i64 } %304, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %305 + %294 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %295 = insertvalue { i64, i64 } %294, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %295 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/2sf6u3r7os1bcdld.ll b/bench/diesel-rs/optimized/2sf6u3r7os1bcdld.ll index 138dc7e377b..2480c3325e3 100644 --- a/bench/diesel-rs/optimized/2sf6u3r7os1bcdld.ll +++ b/bench/diesel-rs/optimized/2sf6u3r7os1bcdld.ll @@ -100,46 +100,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !14, !noundef !7 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef2c85c04748a8edE.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #23, !noalias !15 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef2c85c04748a8edE.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #23, !noalias !15 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef2c85c04748a8edE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef2c85c04748a8edE.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hef2c85c04748a8edE.exit": ; preds = %1, %5, %23 ret void } @@ -313,45 +299,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.89 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8967928131548380058.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.8967928131548380058.exit - %29 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #23 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8967928131548380058.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.8967928131548380058.exit + %20 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #23 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8967928131548380058.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8967928131548380058.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.8967928131548380058.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8967928131548380058.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.8967928131548380058.exit, %19 ret void } @@ -479,45 +451,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h2de09e9 _ZN9hashbrown3raw13RawTableInner13drop_elements17h00f934e7a65bb228E.llvm.8967928131548380058.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h00ee94d4f7e2f6b8E.llvm.8967928131548380058.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !61) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h91de908755395a18E.llvm.8967928131548380058.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00f934e7a65bb228E.llvm.8967928131548380058.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !61, !nonnull !7, !noundef !7 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #23, !noalias !61 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h91de908755395a18E.llvm.8967928131548380058.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00f934e7a65bb228E.llvm.8967928131548380058.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !61, !nonnull !7, !noundef !7 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #23, !noalias !61 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h91de908755395a18E.llvm.8967928131548380058.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h91de908755395a18E.llvm.8967928131548380058.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00f934e7a65bb228E.llvm.8967928131548380058.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h91de908755395a18E.llvm.8967928131548380058.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00f934e7a65bb228E.llvm.8967928131548380058.exit, %4 ret void } @@ -631,7 +589,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %178 + br i1 %.not.i, label %30, label %168 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -764,11 +722,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #24 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1339.098 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %166 ] - %.sroa.937.097 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %166 ] - %.sroa.034.096 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.034.1.lcssa, %166 ] - %.sroa.535.095 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.535.1.lcssa, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1339.098 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %156 ] + %.sroa.937.097 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %156 ] + %.sroa.034.096 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.034.1.lcssa, %156 ] + %.sroa.535.095 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.535.1.lcssa, %156 ] %.not.not.i89 = icmp eq i16 %.sroa.1339.098, 0 br i1 %.not.not.i89, label %.noexc2, label %._crit_edge @@ -837,9 +795,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %8, align 16, !noalias !144 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.3164647497840028417"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %140 unwind label %86 + to label %130 unwind label %86 -.thread72.loopexit: ; preds = %166 +.thread72.loopexit: ; preds = %156 %.pre110 = load i64, ptr %13, align 8, !alias.scope !146, !noalias !147 %.pre111 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !81 br label %.thread72 @@ -865,169 +823,156 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit", label %118 118: ; preds = %.thread72 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 264) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122) - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126) - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134) - call void @llvm.assume(i1 %133) - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137) - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #23, !noalias !161 + %119 = mul i64 %.val1.i.i, 264 + %120 = add i64 %119, 279 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124) + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127) + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #23, !noalias !161 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit": ; preds = %.thread72, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit": ; preds = %.thread72, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !81 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h38a99bf644eff0abE.exit -140: ; preds = %.noexc8 - %141 = load <4 x i64>, ptr %8, align 16, !noalias !144 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc8 + %131 = load <4 x i64>, ptr %8, align 16, !noalias !144 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !144 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !134 %.sroa.617.0..sroa_idx.i.i.val3 = load i64, ptr %.sroa.617.i.i.sroa.4.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noundef !7 - %143 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %142 - %144 = getelementptr inbounds i8, ptr %71, i64 %143 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %144, align 1, !noalias !166 - %145 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not6.i.i = icmp eq i16 %146, 0 + %133 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %132 + %134 = getelementptr inbounds i8, ptr %71, i64 %133 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %134, align 1, !noalias !166 + %135 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not6.i.i = icmp eq i16 %136, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.07.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.07.i.i, 16 - %148 = add i64 %147, %.sroa.0.08.i.i - %149 = and i64 %148, %.sroa.617.0..sroa_idx.i.i.val3 - %150 = getelementptr inbounds i8, ptr %71, i64 %149 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %150, align 1, !noalias !166 - %151 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.08.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.07.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.07.i.i, 16 + %138 = add i64 %137, %.sroa.0.08.i.i + %139 = and i64 %138, %.sroa.617.0..sroa_idx.i.i.val3 + %140 = getelementptr inbounds i8, ptr %71, i64 %139 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %140, align 1, !noalias !166 + %141 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !27 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %.sroa.617.0..sroa_idx.i.i.val3 - %157 = getelementptr inbounds i8, ptr %71, i64 %156 - %158 = load i8, ptr %157, align 1, !noundef !7 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %71, align 16, !noalias !169 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !27 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !27 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %.sroa.617.0..sroa_idx.i.i.val3 + %147 = getelementptr inbounds i8, ptr %71, i64 %146 + %148 = load i8, ptr %147, align 1, !noundef !7 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %71, align 16, !noalias !169 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !27 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i10 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i10 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i10, -16 - %171 = and i64 %170, %.sroa.617.0..sroa_idx.i.i.val3 - store i8 %169, ptr %167, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1 - %172 = load ptr, ptr %0, align 8, !alias.scope !146, !noalias !147, !nonnull !7, !noundef !7 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i10 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i10 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i10, -16 + %161 = and i64 %160, %.sroa.617.0..sroa_idx.i.i.val3 + store i8 %159, ptr %157, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1 + %162 = load ptr, ptr %0, align 8, !alias.scope !146, !noalias !147, !nonnull !7, !noundef !7 %.neg.i.i = mul i64 %99, -264 - %173 = getelementptr i8, ptr %172, i64 %.neg.i.i - %174 = getelementptr i8, ptr %173, i64 -264 - %175 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !81, !nonnull !7, !noundef !7 + %163 = getelementptr i8, ptr %162, i64 %.neg.i.i + %164 = getelementptr i8, ptr %163, i64 -264 + %165 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !81, !nonnull !7, !noundef !7 %.neg28.i.i = mul i64 %.0.i.i.i10, -264 - %176 = getelementptr i8, ptr %175, i64 %.neg28.i.i - %177 = getelementptr i8, ptr %176, i64 -264 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(264) %177, ptr noundef nonnull align 1 dereferenceable(264) %174, i64 264, i1 false) + %166 = getelementptr i8, ptr %165, i64 %.neg28.i.i + %167 = getelementptr i8, ptr %166, i64 -264 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(264) %167, ptr noundef nonnull align 1 dereferenceable(264) %164, i64 264, i1 false) %.not = icmp eq i64 %100, 0 br i1 %.not, label %.thread72.loopexit, label %.preheader -common.resume: ; preds = %203, %86 - %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %204, %203 ] +common.resume: ; preds = %193, %86 + %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %194, %193 ] resume { ptr, i32 } %common.resume.op -178: ; preds = %22 +168: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !172) %.val18.i = load ptr, ptr %0, align 8, !alias.scope !172 - %179 = lshr i64 %26, 4 - %180 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %180, 0 - %181 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %179, %181 + %169 = lshr i64 %26, 4 + %170 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %170, 0 + %171 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %169, %171 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %178 - %182 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %182) - br label %187 - -._crit_edge.i.i12: ; preds = %187, %178 - %183 = icmp ult i64 %26, 16 - %184 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds i8, ptr %7, i64 8 - %186 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %183, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -187: ; preds = %187, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %189, %187 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %188, %187 ] - %188 = add nsw i64 %.sroa.5.05.i.i, -1 - %189 = add i64 %.sroa.01.06.i.i, 16 - %190 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i - %191 = load <16 x i8>, ptr %190, align 16, !noalias !175 - %.lobit.i.i.i = ashr <16 x i8> %191, - %192 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %193 = or <2 x i64> %192, - store <2 x i64> %193, ptr %190, align 16, !noalias !178 - %.not.not.i.i = icmp eq i64 %188, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %187 +.lr.ph.i.i11: ; preds = %168 + %172 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %172) + br label %177 + +._crit_edge.i.i12: ; preds = %177, %168 + %173 = icmp ult i64 %26, 16 + %174 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %174) + %175 = getelementptr inbounds i8, ptr %7, i64 8 + %176 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %173, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +177: ; preds = %177, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %179, %177 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %178, %177 ] + %178 = add nsw i64 %.sroa.5.05.i.i, -1 + %179 = add i64 %.sroa.01.06.i.i, 16 + %180 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i + %181 = load <16 x i8>, ptr %180, align 16, !noalias !175 + %.lobit.i.i.i = ashr <16 x i8> %181, + %182 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %183 = or <2 x i64> %182, + store <2 x i64> %183, ptr %180, align 16, !noalias !178 + %.not.not.i.i = icmp eq i64 %178, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %177 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %194 = getelementptr inbounds i8, ptr %.val18.i, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %194, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !172 + %184 = getelementptr inbounds i8, ptr %.val18.i, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %184, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !172 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !172 - store ptr @"_ZN4core3ptr125drop_in_place$LT$$LP$$RF$proc_macro2..Ident$C$dsl_auto_type..auto_type..local_variables_map..LetStatementInferredType$RP$$GT$17hf3ac284ba6870c3bE.llvm.8967928131548380058", ptr %185, align 8, !noalias !172 - store i64 264, ptr %186, align 8, !noalias !172 + store ptr @"_ZN4core3ptr125drop_in_place$LT$$LP$$RF$proc_macro2..Ident$C$dsl_auto_type..auto_type..local_variables_map..LetStatementInferredType$RP$$GT$17hf3ac284ba6870c3bE.llvm.8967928131548380058", ptr %175, align 8, !noalias !172 + store i64 264, ptr %176, align 8, !noalias !172 store ptr %0, ptr %7, align 8, !noalias !172 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %195 = getelementptr inbounds i8, ptr %.val18.i, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %195, ptr nonnull align 1 %.val18.i, i64 %26, i1 false), !noalias !172 + %185 = getelementptr inbounds i8, ptr %.val18.i, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %185, ptr nonnull align 1 %.val18.i, i64 %26, i1 false), !noalias !172 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !172 - store ptr @"_ZN4core3ptr125drop_in_place$LT$$LP$$RF$proc_macro2..Ident$C$dsl_auto_type..auto_type..local_variables_map..LetStatementInferredType$RP$$GT$17hf3ac284ba6870c3bE.llvm.8967928131548380058", ptr %185, align 8, !noalias !172 - store i64 264, ptr %186, align 8, !noalias !172 + store ptr @"_ZN4core3ptr125drop_in_place$LT$$LP$$RF$proc_macro2..Ident$C$dsl_auto_type..auto_type..local_variables_map..LetStatementInferredType$RP$$GT$17hf3ac284ba6870c3bE.llvm.8967928131548380058", ptr %175, align 8, !noalias !172 + store i64 264, ptr %176, align 8, !noalias !172 store ptr %0, ptr %7, align 8, !noalias !172 %.not11.i = icmp eq i64 %26, 0 br i1 %.not11.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -1036,230 +981,230 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %196 = getelementptr inbounds i8, ptr %6, i64 56 - %197 = getelementptr inbounds i8, ptr %5, i64 24 - %198 = load <2 x i64>, ptr %2, align 8 - %199 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> zeroinitializer - %200 = xor <2 x i64> %199, - %201 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> - %202 = xor <2 x i64> %201, - br label %205 - -203: ; preds = %.noexc20.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i - %204 = landingpad { ptr, i32 } + %186 = getelementptr inbounds i8, ptr %6, i64 56 + %187 = getelementptr inbounds i8, ptr %5, i64 24 + %188 = load <2 x i64>, ptr %2, align 8 + %189 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> zeroinitializer + %190 = xor <2 x i64> %189, + %191 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> + %192 = xor <2 x i64> %191, + br label %195 + +193: ; preds = %.noexc20.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i + %194 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h9be38c75df6cf1f3E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #24 - to label %common.resume unwind label %293 - -205: ; preds = %292, %.lr.ph.i - %.sroa.02.010.i = phi i64 [ 0, %.lr.ph.i ], [ %206, %292 ] - %206 = add nuw i64 %.sroa.02.010.i, 1 - %207 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 - %208 = getelementptr inbounds i8, ptr %207, i64 %.sroa.02.010.i - %209 = load i8, ptr %208, align 1, !noundef !7 - %.not.i13 = icmp eq i8 %209, -128 - br i1 %.not.i13, label %210, label %292 - -210: ; preds = %205 + to label %common.resume unwind label %283 + +195: ; preds = %282, %.lr.ph.i + %.sroa.02.010.i = phi i64 [ 0, %.lr.ph.i ], [ %196, %282 ] + %196 = add nuw i64 %.sroa.02.010.i, 1 + %197 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 + %198 = getelementptr inbounds i8, ptr %197, i64 %.sroa.02.010.i + %199 = load i8, ptr %198, align 1, !noundef !7 + %.not.i13 = icmp eq i8 %199, -128 + br i1 %.not.i13, label %200, label %282 + +200: ; preds = %195 %.neg.i = mul i64 %.sroa.02.010.i, -264 - %211 = getelementptr i8, ptr %207, i64 %.neg.i - %212 = getelementptr i8, ptr %211, i64 -264 - %213 = sub nsw i64 0, %.sroa.02.010.i + %201 = getelementptr i8, ptr %197, i64 %.neg.i + %202 = getelementptr i8, ptr %201, i64 -264 + %203 = sub nsw i64 0, %.sroa.02.010.i br label %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i _ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i: ; preds = %.preheader.i %.pre.i23 = load ptr, ptr %0, align 8, !alias.scope !181, !noalias !184 br label %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i -_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i, %210 - %214 = phi ptr [ %.pre.i23, %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i ], [ %207, %210 ] +_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i, %200 + %204 = phi ptr [ %.pre.i23, %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i ], [ %197, %200 ] call void @llvm.experimental.noalias.scope.decl(metadata !186) - %215 = getelementptr inbounds { ptr, { { i64, [28 x i64] }, { { i64, ptr }, i64 } } }, ptr %214, i64 %213 - %216 = getelementptr inbounds i8, ptr %215, i64 -264 - %.val4.i.i = load ptr, ptr %216, align 8, !alias.scope !187, !noalias !192, !nonnull !7, !align !132, !noundef !7 + %205 = getelementptr inbounds { ptr, { { i64, [28 x i64] }, { { i64, ptr }, i64 } } }, ptr %204, i64 %203 + %206 = getelementptr inbounds i8, ptr %205, i64 -264 + %.val4.i.i = load ptr, ptr %206, align 8, !alias.scope !187, !noalias !192, !nonnull !7, !align !132, !noundef !7 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !198 - store <2 x i64> %200, ptr %6, align 16, !alias.scope !202, !noalias !205 - store <2 x i64> %202, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !202, !noalias !205 - store <2 x i64> %198, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !202, !noalias !205 + store <2 x i64> %190, ptr %6, align 16, !alias.scope !202, !noalias !205 + store <2 x i64> %192, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !202, !noalias !205 + store <2 x i64> %188, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !202, !noalias !205 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !202, !noalias !205 invoke void @"_ZN55_$LT$proc_macro2..Ident$u20$as$u20$core..hash..Hash$GT$4hash17h4f2df37a25c622a6E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.val4.i.i, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %203 + to label %.noexc.i16 unwind label %193 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !207) call void @llvm.experimental.noalias.scope.decl(metadata !210) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !213 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !198 - %217 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !214, !noalias !198, !noundef !7 - %218 = shl i64 %217, 56 - %219 = load i64, ptr %196, align 8, !alias.scope !214, !noalias !198, !noundef !7 - %220 = or i64 %218, %219 - %221 = load i64, ptr %197, align 8, !noalias !213, !noundef !7 - %222 = xor i64 %221, %220 - store i64 %222, ptr %197, align 8, !noalias !213 + %207 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !214, !noalias !198, !noundef !7 + %208 = shl i64 %207, 56 + %209 = load i64, ptr %186, align 8, !alias.scope !214, !noalias !198, !noundef !7 + %210 = or i64 %208, %209 + %211 = load i64, ptr %187, align 8, !noalias !213, !noundef !7 + %212 = xor i64 %211, %210 + store i64 %212, ptr %187, align 8, !noalias !213 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.3164647497840028417"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc20.i unwind label %203 + to label %.noexc20.i unwind label %193 .noexc20.i: ; preds = %.noexc.i16 - %223 = load <2 x i64>, ptr %5, align 16, !noalias !213 - %224 = insertelement <2 x i64> , i64 %220, i64 0 - %225 = xor <2 x i64> %223, %224 - store <2 x i64> %225, ptr %5, align 16, !noalias !213 + %213 = load <2 x i64>, ptr %5, align 16, !noalias !213 + %214 = insertelement <2 x i64> , i64 %210, i64 0 + %215 = xor <2 x i64> %213, %214 + store <2 x i64> %215, ptr %5, align 16, !noalias !213 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.3164647497840028417"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %226 unwind label %203 + to label %216 unwind label %193 -226: ; preds = %.noexc20.i - %227 = load <4 x i64>, ptr %5, align 16, !noalias !213 - %228 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %227) +216: ; preds = %.noexc20.i + %217 = load <4 x i64>, ptr %5, align 16, !noalias !213 + %218 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %217) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !213 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !198 %.val.i17 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 %.val17.i = load i64, ptr %23, align 8, !alias.scope !172, !noundef !7 - %229 = and i64 %.val17.i, %228 - %230 = getelementptr inbounds i8, ptr %.val.i17, i64 %229 - %.0.copyload.i45.i.i18 = load <16 x i8>, ptr %230, align 1, !noalias !215 - %231 = icmp slt <16 x i8> %.0.copyload.i45.i.i18, zeroinitializer - %232 = bitcast <16 x i1> %231 to i16 - %.not6.i.i19 = icmp eq i16 %232, 0 + %219 = and i64 %.val17.i, %218 + %220 = getelementptr inbounds i8, ptr %.val.i17, i64 %219 + %.0.copyload.i45.i.i18 = load <16 x i8>, ptr %220, align 1, !noalias !215 + %221 = icmp slt <16 x i8> %.0.copyload.i45.i.i18, zeroinitializer + %222 = bitcast <16 x i1> %221 to i16 + %.not6.i.i19 = icmp eq i16 %222, 0 br i1 %.not6.i.i19, label %.lr.ph.i23.i, label %._crit_edge.i22.i -.lr.ph.i23.i: ; preds = %226, %.lr.ph.i23.i - %.sroa.0.08.i.i25 = phi i64 [ %235, %.lr.ph.i23.i ], [ %229, %226 ] - %.sroa.7.07.i.i26 = phi i64 [ %233, %.lr.ph.i23.i ], [ 0, %226 ] - %233 = add i64 %.sroa.7.07.i.i26, 16 - %234 = add i64 %233, %.sroa.0.08.i.i25 - %235 = and i64 %234, %.val17.i - %236 = getelementptr inbounds i8, ptr %.val.i17, i64 %235 - %.0.copyload.i4.i.i27 = load <16 x i8>, ptr %236, align 1, !noalias !215 - %237 = icmp slt <16 x i8> %.0.copyload.i4.i.i27, zeroinitializer - %238 = bitcast <16 x i1> %237 to i16 - %.not.i.i28 = icmp eq i16 %238, 0 +.lr.ph.i23.i: ; preds = %216, %.lr.ph.i23.i + %.sroa.0.08.i.i25 = phi i64 [ %225, %.lr.ph.i23.i ], [ %219, %216 ] + %.sroa.7.07.i.i26 = phi i64 [ %223, %.lr.ph.i23.i ], [ 0, %216 ] + %223 = add i64 %.sroa.7.07.i.i26, 16 + %224 = add i64 %223, %.sroa.0.08.i.i25 + %225 = and i64 %224, %.val17.i + %226 = getelementptr inbounds i8, ptr %.val.i17, i64 %225 + %.0.copyload.i4.i.i27 = load <16 x i8>, ptr %226, align 1, !noalias !215 + %227 = icmp slt <16 x i8> %.0.copyload.i4.i.i27, zeroinitializer + %228 = bitcast <16 x i1> %227 to i16 + %.not.i.i28 = icmp eq i16 %228, 0 br i1 %.not.i.i28, label %.lr.ph.i23.i, label %._crit_edge.i22.i -._crit_edge.i22.i: ; preds = %.lr.ph.i23.i, %226 - %.sroa.0.0.lcssa.i.i20 = phi i64 [ %229, %226 ], [ %235, %.lr.ph.i23.i ] - %.lcssa.i.i21 = phi i16 [ %232, %226 ], [ %238, %.lr.ph.i23.i ] - %239 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i21, i1 true), !range !27 - %240 = zext nneg i16 %239 to i64 - %241 = add i64 %.sroa.0.0.lcssa.i.i20, %240 - %242 = and i64 %241, %.val17.i - %243 = getelementptr inbounds i8, ptr %.val.i17, i64 %242 - %244 = load i8, ptr %243, align 1, !noundef !7 - %245 = icmp sgt i8 %244, -1 - br i1 %245, label %246, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i - -246: ; preds = %._crit_edge.i22.i - %247 = load <16 x i8>, ptr %.val.i17, align 16, !noalias !218 - %248 = icmp slt <16 x i8> %247, zeroinitializer - %249 = bitcast <16 x i1> %248 to i16 - %.not.i.i.i24 = icmp ne i16 %249, 0 - %250 = call i16 @llvm.cttz.i16(i16 %249, i1 true), !range !27 - %251 = zext nneg i16 %250 to i64 +._crit_edge.i22.i: ; preds = %.lr.ph.i23.i, %216 + %.sroa.0.0.lcssa.i.i20 = phi i64 [ %219, %216 ], [ %225, %.lr.ph.i23.i ] + %.lcssa.i.i21 = phi i16 [ %222, %216 ], [ %228, %.lr.ph.i23.i ] + %229 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i21, i1 true), !range !27 + %230 = zext nneg i16 %229 to i64 + %231 = add i64 %.sroa.0.0.lcssa.i.i20, %230 + %232 = and i64 %231, %.val17.i + %233 = getelementptr inbounds i8, ptr %.val.i17, i64 %232 + %234 = load i8, ptr %233, align 1, !noundef !7 + %235 = icmp sgt i8 %234, -1 + br i1 %235, label %236, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i + +236: ; preds = %._crit_edge.i22.i + %237 = load <16 x i8>, ptr %.val.i17, align 16, !noalias !218 + %238 = icmp slt <16 x i8> %237, zeroinitializer + %239 = bitcast <16 x i1> %238 to i16 + %.not.i.i.i24 = icmp ne i16 %239, 0 + %240 = call i16 @llvm.cttz.i16(i16 %239, i1 true), !range !27 + %241 = zext nneg i16 %240 to i64 call void @llvm.assume(i1 %.not.i.i.i24) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i: ; preds = %246, %._crit_edge.i22.i - %.0.i.i.i22 = phi i64 [ %251, %246 ], [ %242, %._crit_edge.i22.i ] - %252 = sub i64 %.sroa.02.010.i, %229 - %253 = sub i64 %.0.i.i.i22, %229 - %254 = xor i64 %253, %252 - %.unshifted.i = and i64 %254, %.val17.i - %255 = icmp ult i64 %.unshifted.i, 16 - br i1 %255, label %269, label %256 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i: ; preds = %236, %._crit_edge.i22.i + %.0.i.i.i22 = phi i64 [ %241, %236 ], [ %232, %._crit_edge.i22.i ] + %242 = sub i64 %.sroa.02.010.i, %219 + %243 = sub i64 %.0.i.i.i22, %219 + %244 = xor i64 %243, %242 + %.unshifted.i = and i64 %244, %.val17.i + %245 = icmp ult i64 %.unshifted.i, 16 + br i1 %245, label %259, label %246 -256: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i +246: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i %.neg16.i = mul i64 %.0.i.i.i22, -264 - %257 = getelementptr i8, ptr %.val.i17, i64 %.neg16.i - %258 = getelementptr i8, ptr %257, i64 -264 - %259 = getelementptr inbounds i8, ptr %.val.i17, i64 %.0.i.i.i22 - %260 = load i8, ptr %259, align 1, !noundef !7 - %261 = lshr i64 %228, 57 - %262 = trunc i64 %261 to i8 - %263 = add i64 %.0.i.i.i22, -16 - %264 = and i64 %263, %.val17.i - store i8 %262, ptr %259, align 1 + %247 = getelementptr i8, ptr %.val.i17, i64 %.neg16.i + %248 = getelementptr i8, ptr %247, i64 -264 + %249 = getelementptr inbounds i8, ptr %.val.i17, i64 %.0.i.i.i22 + %250 = load i8, ptr %249, align 1, !noundef !7 + %251 = lshr i64 %218, 57 + %252 = trunc i64 %251 to i8 + %253 = add i64 %.0.i.i.i22, -16 + %254 = and i64 %253, %.val17.i + store i8 %252, ptr %249, align 1 + %255 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 + %256 = getelementptr i8, ptr %255, i64 %254 + %257 = getelementptr i8, ptr %256, i64 16 + store i8 %252, ptr %257, align 1 + %258 = icmp eq i8 %250, -1 + br i1 %258, label %273, label %.preheader.i + +259: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i + %260 = lshr i64 %218, 57 + %261 = trunc i64 %260 to i8 + %262 = add i64 %.sroa.02.010.i, -16 + %263 = and i64 %.val17.i, %262 + %264 = getelementptr inbounds i8, ptr %.val.i17, i64 %.sroa.02.010.i + store i8 %261, ptr %264, align 1 %265 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 - %266 = getelementptr i8, ptr %265, i64 %264 + %266 = getelementptr i8, ptr %265, i64 %263 %267 = getelementptr i8, ptr %266, i64 16 - store i8 %262, ptr %267, align 1 - %268 = icmp eq i8 %260, -1 - br i1 %268, label %283, label %.preheader.i - -269: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i - %270 = lshr i64 %228, 57 - %271 = trunc i64 %270 to i8 - %272 = add i64 %.sroa.02.010.i, -16 - %273 = and i64 %.val17.i, %272 - %274 = getelementptr inbounds i8, ptr %.val.i17, i64 %.sroa.02.010.i - store i8 %271, ptr %274, align 1 - %275 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 - %276 = getelementptr i8, ptr %275, i64 %273 - %277 = getelementptr i8, ptr %276, i64 16 - store i8 %271, ptr %277, align 1 - br label %292 - -.preheader.i: ; preds = %256, %.preheader.i - %.0910.i.i = phi i64 [ %282, %.preheader.i ], [ 0, %256 ] - %278 = getelementptr inbounds i8, ptr %212, i64 %.0910.i.i - %279 = getelementptr inbounds i8, ptr %258, i64 %.0910.i.i - %280 = load i8, ptr %278, align 1 - %281 = load i8, ptr %279, align 1 - store i8 %281, ptr %278, align 1 - store i8 %280, ptr %279, align 1 - %282 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %282, 264 + store i8 %261, ptr %267, align 1 + br label %282 + +.preheader.i: ; preds = %246, %.preheader.i + %.0910.i.i = phi i64 [ %272, %.preheader.i ], [ 0, %246 ] + %268 = getelementptr inbounds i8, ptr %202, i64 %.0910.i.i + %269 = getelementptr inbounds i8, ptr %248, i64 %.0910.i.i + %270 = load i8, ptr %268, align 1 + %271 = load i8, ptr %269, align 1 + store i8 %271, ptr %268, align 1 + store i8 %270, ptr %269, align 1 + %272 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %272, 264 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17he2658217dc998ef0E.exit.loopexit.i, label %.preheader.i -283: ; preds = %256 - %284 = add i64 %.sroa.02.010.i, -16 - %285 = load i64, ptr %23, align 8, !alias.scope !172, !noundef !7 - %286 = and i64 %285, %284 - %287 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 - %288 = getelementptr inbounds i8, ptr %287, i64 %.sroa.02.010.i - store i8 -1, ptr %288, align 1 - %289 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 - %290 = getelementptr i8, ptr %289, i64 %286 - %291 = getelementptr i8, ptr %290, i64 16 - store i8 -1, ptr %291, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(264) %258, ptr noundef nonnull align 1 dereferenceable(264) %212, i64 264, i1 false) - br label %292 - -292: ; preds = %283, %269, %205 +273: ; preds = %246 + %274 = add i64 %.sroa.02.010.i, -16 + %275 = load i64, ptr %23, align 8, !alias.scope !172, !noundef !7 + %276 = and i64 %275, %274 + %277 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 + %278 = getelementptr inbounds i8, ptr %277, i64 %.sroa.02.010.i + store i8 -1, ptr %278, align 1 + %279 = load ptr, ptr %0, align 8, !alias.scope !172, !nonnull !7, !noundef !7 + %280 = getelementptr i8, ptr %279, i64 %276 + %281 = getelementptr i8, ptr %280, i64 16 + store i8 -1, ptr %281, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(264) %248, ptr noundef nonnull align 1 dereferenceable(264) %202, i64 264, i1 false) + br label %282 + +282: ; preds = %273, %259, %195 %exitcond.not.i = icmp eq i64 %.sroa.02.010.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %205 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %195 -293: ; preds = %203 - %294 = landingpad { ptr, i32 } +283: ; preds = %193 + %284 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %292 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %282 %.pre18.i = load i64, ptr %23, align 8, !alias.scope !172 %.pre18.i.fr = freeze i64 %.pre18.i %.pre19.i = add i64 %.pre18.i.fr, 1 - %295 = lshr i64 %.pre19.i, 3 - %296 = mul nuw i64 %295, 7 - %297 = icmp ult i64 %.pre18.i.fr, 8 - %spec.select = select i1 %297, i64 %.pre18.i.fr, i64 %296 + %285 = lshr i64 %.pre19.i, 3 + %286 = mul nuw i64 %285, 7 + %287 = icmp ult i64 %.pre18.i.fr, 8 + %spec.select = select i1 %287, i64 %.pre18.i.fr, i64 %286 %.pre = load i64, ptr %13, align 8, !alias.scope !172 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %298 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %299 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %300 = getelementptr inbounds i8, ptr %0, i64 16 - %301 = sub i64 %299, %298 - store i64 %301, ptr %300, align 8, !alias.scope !172 + %288 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %289 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %290 = getelementptr inbounds i8, ptr %0, i64 16 + %291 = sub i64 %289, %288 + store i64 %291, ptr %290, align 8, !alias.scope !172 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !172 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h38a99bf644eff0abE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h38a99bf644eff0abE.exit: ; preds = %85, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.056.ph, %85 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.058.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h4216eb1d7bacb1a7E.exit" ] - %302 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %303 = insertvalue { i64, i64 } %302, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %303 + %292 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %293 = insertvalue { i64, i64 } %292, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %293 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/3hbywg7swws1iy6v.ll b/bench/diesel-rs/optimized/3hbywg7swws1iy6v.ll index 3c52a64a2ec..0d983236896 100644 --- a/bench/diesel-rs/optimized/3hbywg7swws1iy6v.ll +++ b/bench/diesel-rs/optimized/3hbywg7swws1iy6v.ll @@ -187,44 +187,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !25 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h64cd5b926882ce16E.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !25 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h64cd5b926882ce16E.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !25 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h64cd5b926882ce16E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h64cd5b926882ce16E.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h64cd5b926882ce16E.exit": ; preds = %1, %6, %22 ret void } @@ -469,7 +457,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %178 + br i1 %.not.i, label %30, label %168 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -602,11 +590,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %166 ] - %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %166 ] - %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %166 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %156 ] + %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %156 ] + %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %156 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %156 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -674,9 +662,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %8, align 16, !noalias !115 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.10579021853255947595"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %140 unwind label %86 + to label %130 unwind label %86 -.thread71.loopexit: ; preds = %166 +.thread71.loopexit: ; preds = %156 %.pre113 = load i64, ptr %13, align 8, !alias.scope !117, !noalias !118 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !62 br label %.thread71 @@ -702,168 +690,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit", label %118 118: ; preds = %.thread71 - %119 = add i64 %.val3.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122) - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126) - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val3.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134) - call void @llvm.assume(i1 %133) - %135 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %135) - %136 = icmp eq i64 %131, 0 - br i1 %136, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit", label %137 - -137: ; preds = %118 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #19, !noalias !131 + %119 = mul i64 %.val3.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val3.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124) + %125 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %125) + %126 = icmp eq i64 %123, 0 + br i1 %126, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit", label %127 + +127: ; preds = %118 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #19, !noalias !131 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit": ; preds = %.thread71, %118, %137 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit": ; preds = %.thread71, %118, %127 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !62 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17habb852d6673c8d8bE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %8, align 16, !noalias !115 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %8, align 16, !noalias !115 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !115 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !105 - %143 = and i64 %67, %142 - %144 = getelementptr inbounds i8, ptr %71, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !132 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %67, %132 + %134 = getelementptr inbounds i8, ptr %71, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !132 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %67 - %150 = getelementptr inbounds i8, ptr %71, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !132 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %67 + %140 = getelementptr inbounds i8, ptr %71, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !132 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %67 - %157 = getelementptr inbounds i8, ptr %71, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !139, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %71, align 16, !noalias !140 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !31 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %67 + %147 = getelementptr inbounds i8, ptr %71, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !139, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %71, align 16, !noalias !140 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !31 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %67 - store i8 %169, ptr %167, align 1, !noalias !139 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !139 - %172 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %67 + store i8 %159, ptr %157, align 1, !noalias !139 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !139 + %162 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %99, -56 - %173 = getelementptr i8, ptr %172, i64 %.neg.i.i - %174 = getelementptr i8, ptr %173, i64 -56 - %175 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 + %163 = getelementptr i8, ptr %162, i64 %.neg.i.i + %164 = getelementptr i8, ptr %163, i64 -56 + %165 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -56 - %176 = getelementptr i8, ptr %175, i64 %.neg28.i.i - %177 = getelementptr i8, ptr %176, i64 -56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %177, ptr noundef nonnull align 1 dereferenceable(56) %174, i64 56, i1 false) + %166 = getelementptr i8, ptr %165, i64 %.neg28.i.i + %167 = getelementptr i8, ptr %166, i64 -56 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %167, ptr noundef nonnull align 1 dereferenceable(56) %164, i64 56, i1 false) %.not = icmp eq i64 %100, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %203, %86 - %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %204, %203 ] +common.resume: ; preds = %193, %86 + %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %194, %193 ] resume { ptr, i32 } %common.resume.op -178: ; preds = %22 +168: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !143) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !143 - %179 = lshr i64 %26, 4 - %180 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %180, 0 - %181 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %179, %181 + %169 = lshr i64 %26, 4 + %170 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %170, 0 + %171 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %169, %171 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %178 - %182 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %182) - br label %187 - -._crit_edge.i.i12: ; preds = %187, %178 - %183 = icmp ult i64 %26, 16 - %184 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds i8, ptr %7, i64 8 - %186 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %183, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -187: ; preds = %187, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %189, %187 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %188, %187 ] - %188 = add nsw i64 %.sroa.5.05.i.i, -1 - %189 = add i64 %.sroa.01.06.i.i, 16 - %190 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %191 = load <16 x i8>, ptr %190, align 16, !noalias !146 - %.lobit.i.i.i = ashr <16 x i8> %191, - %192 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %193 = or <2 x i64> %192, - store <2 x i64> %193, ptr %190, align 16, !noalias !149 - %.not.not.i.i = icmp eq i64 %188, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %187 +.lr.ph.i.i11: ; preds = %168 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + br label %177 + +._crit_edge.i.i12: ; preds = %177, %168 + %173 = icmp ult i64 %26, 16 + %174 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %174) + %175 = getelementptr inbounds i8, ptr %7, i64 8 + %176 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %173, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +177: ; preds = %177, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %179, %177 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %178, %177 ] + %178 = add nsw i64 %.sroa.5.05.i.i, -1 + %179 = add i64 %.sroa.01.06.i.i, 16 + %180 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %181 = load <16 x i8>, ptr %180, align 16, !noalias !146 + %.lobit.i.i.i = ashr <16 x i8> %181, + %182 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %183 = or <2 x i64> %182, + store <2 x i64> %183, ptr %180, align 16, !noalias !149 + %.not.not.i.i = icmp eq i64 %178, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %177 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %194 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %194, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 + %184 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %184, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hcbb996368a51c365E.llvm.8739912655473484750", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hcbb996368a51c365E.llvm.8739912655473484750", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %195 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %195, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 + %185 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %185, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hcbb996368a51c365E.llvm.8739912655473484750", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hcbb996368a51c365E.llvm.8739912655473484750", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -872,229 +847,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %196 = getelementptr inbounds i8, ptr %6, i64 56 - %197 = getelementptr inbounds i8, ptr %5, i64 24 - %198 = load <2 x i64>, ptr %2, align 8 - %199 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> zeroinitializer - %200 = xor <2 x i64> %199, - %201 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> - %202 = xor <2 x i64> %201, - br label %205 - -203: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i - %204 = landingpad { ptr, i32 } + %186 = getelementptr inbounds i8, ptr %6, i64 56 + %187 = getelementptr inbounds i8, ptr %5, i64 24 + %188 = load <2 x i64>, ptr %2, align 8 + %189 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> zeroinitializer + %190 = xor <2 x i64> %189, + %191 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> + %192 = xor <2 x i64> %191, + br label %195 + +193: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i + %194 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hf8702821be37f7d7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %295 - -205: ; preds = %294, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %206, %294 ] - %206 = add nuw i64 %.sroa.02.012.i, 1 - %207 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %208 = getelementptr inbounds i8, ptr %207, i64 %.sroa.02.012.i - %209 = load i8, ptr %208, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %209, -128 - br i1 %.not.i13, label %210, label %294 - -210: ; preds = %205 + to label %common.resume unwind label %285 + +195: ; preds = %284, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %196, %284 ] + %196 = add nuw i64 %.sroa.02.012.i, 1 + %197 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %198 = getelementptr inbounds i8, ptr %197, i64 %.sroa.02.012.i + %199 = load i8, ptr %198, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %199, -128 + br i1 %.not.i13, label %200, label %284 + +200: ; preds = %195 %.neg.i = mul i64 %.sroa.02.012.i, -56 - %211 = getelementptr i8, ptr %207, i64 %.neg.i - %212 = getelementptr i8, ptr %211, i64 -56 - %213 = sub nsw i64 0, %.sroa.02.012.i + %201 = getelementptr i8, ptr %197, i64 %.neg.i + %202 = getelementptr i8, ptr %201, i64 -56 + %203 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i _ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !152, !noalias !155 br label %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i -_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i, %210 - %214 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i ], [ %207, %210 ] +_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i, %200 + %204 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i ], [ %197, %200 ] call void @llvm.experimental.noalias.scope.decl(metadata !157) - %215 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %214, i64 %213 - %216 = getelementptr inbounds i8, ptr %215, i64 -56 + %205 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %204, i64 %203 + %206 = getelementptr inbounds i8, ptr %205, i64 -56 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !158 - store <2 x i64> %200, ptr %6, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %202, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %198, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %190, ptr %6, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %192, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %188, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !164, !noalias !167 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h7de5eb63dd1ad570E.llvm.10579021853255947595"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %216, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %203 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h7de5eb63dd1ad570E.llvm.10579021853255947595"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %206, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %193 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !169) call void @llvm.experimental.noalias.scope.decl(metadata !172) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !158 - %217 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 - %218 = shl i64 %217, 56 - %219 = load i64, ptr %196, align 8, !alias.scope !176, !noalias !158, !noundef !5 - %220 = or i64 %218, %219 - %221 = load i64, ptr %197, align 8, !noalias !175, !noundef !5 - %222 = xor i64 %221, %220 - store i64 %222, ptr %197, align 8, !noalias !175 + %207 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 + %208 = shl i64 %207, 56 + %209 = load i64, ptr %186, align 8, !alias.scope !176, !noalias !158, !noundef !5 + %210 = or i64 %208, %209 + %211 = load i64, ptr %187, align 8, !noalias !175, !noundef !5 + %212 = xor i64 %211, %210 + store i64 %212, ptr %187, align 8, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.10579021853255947595"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %203 + to label %.noexc18.i unwind label %193 .noexc18.i: ; preds = %.noexc.i16 - %223 = load <2 x i64>, ptr %5, align 16, !noalias !175 - %224 = insertelement <2 x i64> , i64 %220, i64 0 - %225 = xor <2 x i64> %223, %224 - store <2 x i64> %225, ptr %5, align 16, !noalias !175 + %213 = load <2 x i64>, ptr %5, align 16, !noalias !175 + %214 = insertelement <2 x i64> , i64 %210, i64 0 + %215 = xor <2 x i64> %213, %214 + store <2 x i64> %215, ptr %5, align 16, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.10579021853255947595"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %226 unwind label %203 + to label %216 unwind label %193 -226: ; preds = %.noexc18.i - %227 = load <4 x i64>, ptr %5, align 16, !noalias !175 - %228 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %227) +216: ; preds = %.noexc18.i + %217 = load <4 x i64>, ptr %5, align 16, !noalias !175 + %218 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %217) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !158 - %229 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %230 = and i64 %229, %228 - %231 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %232 = getelementptr inbounds i8, ptr %231, i64 %230 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %232, align 1, !noalias !177 - %233 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %234 = bitcast <16 x i1> %233 to i16 - %.not12.i.i18 = icmp eq i16 %234, 0 + %219 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %220 = and i64 %219, %218 + %221 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %222 = getelementptr inbounds i8, ptr %221, i64 %220 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %222, align 1, !noalias !177 + %223 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %224 = bitcast <16 x i1> %223 to i16 + %.not12.i.i18 = icmp eq i16 %224, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %226, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %237, %.lr.ph.i21.i ], [ %230, %226 ] - %.sroa.7.013.i.i25 = phi i64 [ %235, %.lr.ph.i21.i ], [ 0, %226 ] - %235 = add i64 %.sroa.7.013.i.i25, 16 - %236 = add i64 %235, %.sroa.0.014.i.i24 - %237 = and i64 %236, %229 - %238 = getelementptr inbounds i8, ptr %231, i64 %237 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %238, align 1, !noalias !177 - %239 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %240 = bitcast <16 x i1> %239 to i16 - %.not.i.i27 = icmp eq i16 %240, 0 +.lr.ph.i21.i: ; preds = %216, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %227, %.lr.ph.i21.i ], [ %220, %216 ] + %.sroa.7.013.i.i25 = phi i64 [ %225, %.lr.ph.i21.i ], [ 0, %216 ] + %225 = add i64 %.sroa.7.013.i.i25, 16 + %226 = add i64 %225, %.sroa.0.014.i.i24 + %227 = and i64 %226, %219 + %228 = getelementptr inbounds i8, ptr %221, i64 %227 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %228, align 1, !noalias !177 + %229 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %230 = bitcast <16 x i1> %229 to i16 + %.not.i.i27 = icmp eq i16 %230, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %226 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %230, %226 ], [ %237, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %234, %226 ], [ %240, %.lr.ph.i21.i ] - %241 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 - %242 = zext nneg i16 %241 to i64 - %243 = add i64 %.sroa.0.0.lcssa.i.i19, %242 - %244 = and i64 %243, %229 - %245 = getelementptr inbounds i8, ptr %231, i64 %244 - %246 = load i8, ptr %245, align 1, !noalias !182, !noundef !5 - %247 = icmp sgt i8 %246, -1 - br i1 %247, label %248, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i - -248: ; preds = %._crit_edge.i20.i - %249 = load <16 x i8>, ptr %231, align 16, !noalias !183 - %250 = icmp slt <16 x i8> %249, zeroinitializer - %251 = bitcast <16 x i1> %250 to i16 - %.not.i.i.i23 = icmp ne i16 %251, 0 - %252 = call i16 @llvm.cttz.i16(i16 %251, i1 true), !range !31 - %253 = zext nneg i16 %252 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %216 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %220, %216 ], [ %227, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %224, %216 ], [ %230, %.lr.ph.i21.i ] + %231 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 + %232 = zext nneg i16 %231 to i64 + %233 = add i64 %.sroa.0.0.lcssa.i.i19, %232 + %234 = and i64 %233, %219 + %235 = getelementptr inbounds i8, ptr %221, i64 %234 + %236 = load i8, ptr %235, align 1, !noalias !182, !noundef !5 + %237 = icmp sgt i8 %236, -1 + br i1 %237, label %238, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i + +238: ; preds = %._crit_edge.i20.i + %239 = load <16 x i8>, ptr %221, align 16, !noalias !183 + %240 = icmp slt <16 x i8> %239, zeroinitializer + %241 = bitcast <16 x i1> %240 to i16 + %.not.i.i.i23 = icmp ne i16 %241, 0 + %242 = call i16 @llvm.cttz.i16(i16 %241, i1 true), !range !31 + %243 = zext nneg i16 %242 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i: ; preds = %248, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %253, %248 ], [ %244, %._crit_edge.i20.i ] - %254 = sub i64 %.sroa.02.012.i, %230 - %255 = sub i64 %.0.i.i.i21, %230 - %256 = xor i64 %255, %254 - %.unshifted.i = and i64 %256, %229 - %257 = icmp ult i64 %.unshifted.i, 16 - br i1 %257, label %271, label %258 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i: ; preds = %238, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %243, %238 ], [ %234, %._crit_edge.i20.i ] + %244 = sub i64 %.sroa.02.012.i, %220 + %245 = sub i64 %.0.i.i.i21, %220 + %246 = xor i64 %245, %244 + %.unshifted.i = and i64 %246, %219 + %247 = icmp ult i64 %.unshifted.i, 16 + br i1 %247, label %261, label %248 -258: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i +248: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -56 - %259 = getelementptr i8, ptr %231, i64 %.neg16.i - %260 = getelementptr i8, ptr %259, i64 -56 - %261 = getelementptr inbounds i8, ptr %231, i64 %.0.i.i.i21 - %262 = load i8, ptr %261, align 1, !noundef !5 - %263 = lshr i64 %228, 57 - %264 = trunc i64 %263 to i8 - %265 = add i64 %.0.i.i.i21, -16 - %266 = and i64 %265, %229 - store i8 %264, ptr %261, align 1 + %249 = getelementptr i8, ptr %221, i64 %.neg16.i + %250 = getelementptr i8, ptr %249, i64 -56 + %251 = getelementptr inbounds i8, ptr %221, i64 %.0.i.i.i21 + %252 = load i8, ptr %251, align 1, !noundef !5 + %253 = lshr i64 %218, 57 + %254 = trunc i64 %253 to i8 + %255 = add i64 %.0.i.i.i21, -16 + %256 = and i64 %255, %219 + store i8 %254, ptr %251, align 1 + %257 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %258 = getelementptr i8, ptr %257, i64 %256 + %259 = getelementptr i8, ptr %258, i64 16 + store i8 %254, ptr %259, align 1 + %260 = icmp eq i8 %252, -1 + br i1 %260, label %275, label %.preheader.i + +261: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i + %262 = lshr i64 %218, 57 + %263 = trunc i64 %262 to i8 + %264 = add i64 %.sroa.02.012.i, -16 + %265 = and i64 %219, %264 + %266 = getelementptr inbounds i8, ptr %221, i64 %.sroa.02.012.i + store i8 %263, ptr %266, align 1 %267 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %268 = getelementptr i8, ptr %267, i64 %266 + %268 = getelementptr i8, ptr %267, i64 %265 %269 = getelementptr i8, ptr %268, i64 16 - store i8 %264, ptr %269, align 1 - %270 = icmp eq i8 %262, -1 - br i1 %270, label %285, label %.preheader.i - -271: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8739912655473484750.exit.i - %272 = lshr i64 %228, 57 - %273 = trunc i64 %272 to i8 - %274 = add i64 %.sroa.02.012.i, -16 - %275 = and i64 %229, %274 - %276 = getelementptr inbounds i8, ptr %231, i64 %.sroa.02.012.i - store i8 %273, ptr %276, align 1 - %277 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %278 = getelementptr i8, ptr %277, i64 %275 - %279 = getelementptr i8, ptr %278, i64 16 - store i8 %273, ptr %279, align 1 - br label %294 - -.preheader.i: ; preds = %258, %.preheader.i - %.0910.i.i = phi i64 [ %284, %.preheader.i ], [ 0, %258 ] - %280 = getelementptr inbounds i8, ptr %212, i64 %.0910.i.i - %281 = getelementptr inbounds i8, ptr %260, i64 %.0910.i.i - %282 = load i8, ptr %280, align 1 - %283 = load i8, ptr %281, align 1 - store i8 %283, ptr %280, align 1 - store i8 %282, ptr %281, align 1 - %284 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %284, 56 + store i8 %263, ptr %269, align 1 + br label %284 + +.preheader.i: ; preds = %248, %.preheader.i + %.0910.i.i = phi i64 [ %274, %.preheader.i ], [ 0, %248 ] + %270 = getelementptr inbounds i8, ptr %202, i64 %.0910.i.i + %271 = getelementptr inbounds i8, ptr %250, i64 %.0910.i.i + %272 = load i8, ptr %270, align 1 + %273 = load i8, ptr %271, align 1 + store i8 %273, ptr %270, align 1 + store i8 %272, ptr %271, align 1 + %274 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %274, 56 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17h206bfeb858c83581E.exit.loopexit.i, label %.preheader.i -285: ; preds = %258 - %286 = add i64 %.sroa.02.012.i, -16 - %287 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %288 = and i64 %287, %286 - %289 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %290 = getelementptr inbounds i8, ptr %289, i64 %.sroa.02.012.i - store i8 -1, ptr %290, align 1 - %291 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %292 = getelementptr i8, ptr %291, i64 %288 - %293 = getelementptr i8, ptr %292, i64 16 - store i8 -1, ptr %293, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %260, ptr noundef nonnull align 1 dereferenceable(56) %212, i64 56, i1 false) - br label %294 - -294: ; preds = %285, %271, %205 +275: ; preds = %248 + %276 = add i64 %.sroa.02.012.i, -16 + %277 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %278 = and i64 %277, %276 + %279 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %280 = getelementptr inbounds i8, ptr %279, i64 %.sroa.02.012.i + store i8 -1, ptr %280, align 1 + %281 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %282 = getelementptr i8, ptr %281, i64 %278 + %283 = getelementptr i8, ptr %282, i64 16 + store i8 -1, ptr %283, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %250, ptr noundef nonnull align 1 dereferenceable(56) %202, i64 56, i1 false) + br label %284 + +284: ; preds = %275, %261, %195 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %205 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %195 -295: ; preds = %203 - %296 = landingpad { ptr, i32 } +285: ; preds = %193 + %286 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %294 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %284 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !143 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %297 = lshr i64 %.pre23.i, 3 - %298 = mul nuw i64 %297, 7 - %299 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %299, i64 %.pre22.i.fr, i64 %298 + %287 = lshr i64 %.pre23.i, 3 + %288 = mul nuw i64 %287, 7 + %289 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %289, i64 %.pre22.i.fr, i64 %288 %.pre = load i64, ptr %13, align 8, !alias.scope !143 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %300 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %301 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %302 = getelementptr inbounds i8, ptr %0, i64 16 - %303 = sub i64 %301, %300 - store i64 %303, ptr %302, align 8, !alias.scope !143 + %290 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %291 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %292 = getelementptr inbounds i8, ptr %0, i64 16 + %293 = sub i64 %291, %290 + store i64 %293, ptr %292, align 8, !alias.scope !143 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !143 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17habb852d6673c8d8bE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17habb852d6673c8d8bE.exit: ; preds = %85, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %85 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he75727a280704b1cE.exit" ] - %304 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %305 = insertvalue { i64, i64 } %304, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %305 + %294 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %295 = insertvalue { i64, i64 } %294, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %295 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/3iqa5s4rcitpn2nv.ll b/bench/diesel-rs/optimized/3iqa5s4rcitpn2nv.ll index 6ddf9a1fdc3..2b92e85f2ac 100644 --- a/bench/diesel-rs/optimized/3iqa5s4rcitpn2nv.ll +++ b/bench/diesel-rs/optimized/3iqa5s4rcitpn2nv.ll @@ -261,46 +261,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !54, !noundef !5 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd11d5676184a0b08E.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #28, !noalias !55 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd11d5676184a0b08E.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #28, !noalias !55 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd11d5676184a0b08E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd11d5676184a0b08E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd11d5676184a0b08E.exit": ; preds = %1, %5, %23 ret void } @@ -530,45 +516,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.59 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !5 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5907985477053911651.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.5907985477053911651.exit - %29 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #28 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5907985477053911651.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.5907985477053911651.exit + %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #28 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5907985477053911651.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5907985477053911651.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.5907985477053911651.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.5907985477053911651.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.5907985477053911651.exit, %19 ret void } @@ -997,45 +969,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h86c9a12 _ZN9hashbrown3raw13RawTableInner13drop_elements17hfea5863e37aa8aafE.llvm.5907985477053911651.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h304901bb756b1d12E.llvm.5907985477053911651.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !140) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfea5863e37aa8aafE.llvm.5907985477053911651.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !140 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfea5863e37aa8aafE.llvm.5907985477053911651.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !140 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfea5863e37aa8aafE.llvm.5907985477053911651.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfea5863e37aa8aafE.llvm.5907985477053911651.exit, %4 ret void } @@ -1104,45 +1062,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17ha7907ba _ZN9hashbrown3raw13RawTableInner13drop_elements17h1b2bd3f557e66095E.llvm.5907985477053911651.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hba0dd52ee6e6e966E.llvm.5907985477053911651.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !161) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1b2bd3f557e66095E.llvm.5907985477053911651.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !161 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1b2bd3f557e66095E.llvm.5907985477053911651.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !161 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1b2bd3f557e66095E.llvm.5907985477053911651.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17haf53208c44cf3949E.llvm.5907985477053911651.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1b2bd3f557e66095E.llvm.5907985477053911651.exit, %4 ret void } @@ -1534,7 +1478,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -1662,11 +1606,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !242 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -1742,9 +1686,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !276 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.15230849155374873684"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !278, !noalias !279 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !217 br label %.thread52 @@ -1770,122 +1714,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 88) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !242 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !242 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !242 - call void @llvm.assume(i1 %133), !noalias !242 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !242 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !295 + %119 = mul i64 %.val1.i.i, 88 + %120 = add i64 %119, 103 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !242 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !242 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !295 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !217 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !276 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !276 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !276 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !258 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !300 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !300 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !300 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !300 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !307, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !308 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !307, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !308 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !242 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !307 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !307 - %172 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !307 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !307 + %162 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 88 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 88 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %175, ptr noundef nonnull align 1 dereferenceable(88) %173, i64 88, i1 false), !noalias !242 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %165, ptr noundef nonnull align 1 dereferenceable(88) %163, i64 88, i1 false), !noalias !242 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h17a56fd67c1395bcE", i64 noundef 88, ptr noundef nonnull @"_ZN4core3ptr156drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..pg..backend..Pg$GT$$C$diesel..pg..connection..stmt..Statement$RP$$GT$17h18fe206aa9484e42E.llvm.5907985477053911651") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -1924,7 +1855,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -2052,11 +1983,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !345 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -2132,9 +2063,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !378 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.15230849155374873684"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !380, !noalias !381 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !321 br label %.thread52 @@ -2160,122 +2091,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !345 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !345 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !345 - call void @llvm.assume(i1 %133), !noalias !345 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !345 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !397 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !345 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !345 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !397 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !321 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !378 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !378 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !378 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !360 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !402 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !402 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !402 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !402 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !409, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !410 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !409, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !410 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !345 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !409 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !409 - %172 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !409 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !409 + %162 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !345 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !345 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h8857fd4a901e6642E", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr119drop_in_place$LT$$LP$diesel..pg..metadata_lookup..PgMetadataCacheKey$C$diesel..pg..backend..InnerPgTypeMetadata$RP$$GT$17h8f66f74d3dff243bE.llvm.5907985477053911651") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h29f5f7425bacb4f4E.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5ac7a0352983982E.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/3nv3xphjbq527f6u.ll b/bench/diesel-rs/optimized/3nv3xphjbq527f6u.ll index 1ef7d933a4f..c741c7670d4 100644 --- a/bench/diesel-rs/optimized/3nv3xphjbq527f6u.ll +++ b/bench/diesel-rs/optimized/3nv3xphjbq527f6u.ll @@ -890,46 +890,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !182, !noundef !4 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b1ded924e6cb543E.exit", label %32 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b1ded924e6cb543E.exit", label %23 -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #44, !noalias !183 +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #44, !noalias !183 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b1ded924e6cb543E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b1ded924e6cb543E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b1ded924e6cb543E.exit": ; preds = %1, %5, %23 ret void } @@ -2146,45 +2132,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.11 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.11693277841074805610.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.11693277841074805610.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #44 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.11693277841074805610.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.11693277841074805610.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #44 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.11693277841074805610.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.11693277841074805610.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.11693277841074805610.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.11693277841074805610.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.11693277841074805610.exit, %19 ret void } @@ -2811,45 +2783,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h83790c2 _ZN9hashbrown3raw13RawTableInner13drop_elements17ha066aa551d017e2eE.llvm.11693277841074805610.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9a62c9268098d355E.llvm.11693277841074805610.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !429) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17ha066aa551d017e2eE.llvm.11693277841074805610.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !429, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #44, !noalias !429 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17ha066aa551d017e2eE.llvm.11693277841074805610.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !429, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #44, !noalias !429 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17ha066aa551d017e2eE.llvm.11693277841074805610.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17ha066aa551d017e2eE.llvm.11693277841074805610.exit, %4 ret void } @@ -2918,45 +2876,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hb25b520 _ZN9hashbrown3raw13RawTableInner13drop_elements17h1f9c2df60c0f7583E.llvm.11693277841074805610.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3847002b10945f4fE.llvm.11693277841074805610.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !450) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1f9c2df60c0f7583E.llvm.11693277841074805610.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !450, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #44, !noalias !450 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1f9c2df60c0f7583E.llvm.11693277841074805610.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !450, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #44, !noalias !450 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1f9c2df60c0f7583E.llvm.11693277841074805610.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1f9c2df60c0f7583E.llvm.11693277841074805610.exit, %4 ret void } @@ -3025,45 +2969,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hbd4931d _ZN9hashbrown3raw13RawTableInner13drop_elements17h7897e4ba87895462E.llvm.11693277841074805610.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hee90fb0ea4c7d262E.llvm.11693277841074805610.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !471) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7897e4ba87895462E.llvm.11693277841074805610.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !471, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #44, !noalias !471 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7897e4ba87895462E.llvm.11693277841074805610.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !471, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #44, !noalias !471 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7897e4ba87895462E.llvm.11693277841074805610.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7897e4ba87895462E.llvm.11693277841074805610.exit, %4 ret void } @@ -3132,45 +3062,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd719456 _ZN9hashbrown3raw13RawTableInner13drop_elements17h7f93d1cff2dd53faE.llvm.11693277841074805610.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h32470e0e7e6a221cE.llvm.11693277841074805610.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !492) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7f93d1cff2dd53faE.llvm.11693277841074805610.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !492, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #44, !noalias !492 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7f93d1cff2dd53faE.llvm.11693277841074805610.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !492, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #44, !noalias !492 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7f93d1cff2dd53faE.llvm.11693277841074805610.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7f93d1cff2dd53faE.llvm.11693277841074805610.exit, %4 ret void } @@ -3260,45 +3176,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hdc1b351 _ZN9hashbrown3raw13RawTableInner13drop_elements17hf9641b40548ff5e5E.llvm.11693277841074805610.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17hd064cb537a7e3ab9E.llvm.11693277841074805610.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !513) %42 = add i64 %6, 1 - %43 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %42) - %44 = extractvalue { i64, i1 } %43, 1 - %45 = xor i1 %44, true - tail call void @llvm.assume(i1 %45) - %46 = extractvalue { i64, i1 } %43, 0 - %47 = add i64 %3, -1 - %48 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %46, i64 %47) - %49 = extractvalue { i64, i1 } %48, 1 - %50 = xor i1 %49, true - tail call void @llvm.assume(i1 %50) - %51 = extractvalue { i64, i1 } %48, 0 - %52 = sub i64 0, %3 - %53 = and i64 %51, %52 - %54 = add i64 %6, 17 - %55 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %53, i64 %54) - %56 = extractvalue { i64, i1 } %55, 0 - %57 = extractvalue { i64, i1 } %55, 1 - %58 = sub nuw i64 -9223372036854775808, %3 - %59 = icmp ule i64 %56, %58 - %60 = xor i1 %57, true - tail call void @llvm.assume(i1 %60) - tail call void @llvm.assume(i1 %59) - %61 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %61) - %62 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %62) - %63 = icmp eq i64 %56, 0 - br i1 %63, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %64 - -64: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hf9641b40548ff5e5E.llvm.11693277841074805610.exit - %65 = load ptr, ptr %0, align 8, !alias.scope !513, !nonnull !4, !noundef !4 - %66 = sub nsw i64 0, %53 - %67 = getelementptr inbounds i8, ptr %65, i64 %66 - %68 = icmp sgt i64 %47, -1 - tail call void @llvm.assume(i1 %68) - tail call void @__rust_dealloc(ptr noundef nonnull %67, i64 noundef %56, i64 noundef %3) #44, !noalias !513 + %43 = mul nuw i64 %42, %2 + %44 = add i64 %3, -1 + %45 = add nuw i64 %44, %43 + %46 = sub i64 0, %3 + %47 = and i64 %45, %46 + %48 = add i64 %6, 17 + %49 = add nuw i64 %48, %47 + %50 = sub nuw i64 -9223372036854775808, %3 + %51 = icmp ule i64 %49, %50 + tail call void @llvm.assume(i1 %51) + %52 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %52) + %53 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %53) + %54 = icmp eq i64 %49, 0 + br i1 %54, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit, label %55 + +55: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hf9641b40548ff5e5E.llvm.11693277841074805610.exit + %56 = load ptr, ptr %0, align 8, !alias.scope !513, !nonnull !4, !noundef !4 + %57 = sub nsw i64 0, %47 + %58 = getelementptr inbounds i8, ptr %56, i64 %57 + tail call void @__rust_dealloc(ptr noundef nonnull %58, i64 noundef %49, i64 noundef %3) #44, !noalias !513 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %64, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hf9641b40548ff5e5E.llvm.11693277841074805610.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h03876b51313b0ee5E.llvm.11693277841074805610.exit: ; preds = %55, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hf9641b40548ff5e5E.llvm.11693277841074805610.exit, %4 ret void } @@ -4099,7 +4001,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -4227,11 +4129,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #45, !noalias !643 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -4307,9 +4209,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !676 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.11731155751478127742"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !678, !noalias !679 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !618 br label %.thread52 @@ -4335,122 +4237,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 88) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !643 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !643 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !643 - call void @llvm.assume(i1 %133), !noalias !643 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !643 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #44, !noalias !695 + %119 = mul i64 %.val1.i.i, 88 + %120 = add i64 %119, 103 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !643 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !643 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #44, !noalias !695 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !618 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !676 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !676 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !676 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !658 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !700 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !700 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !700 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !700 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !707, !noundef !4 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !708 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !284 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !707, !noundef !4 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !708 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !284 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !643 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !707 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !707 - %172 = load ptr, ptr %0, align 8, !alias.scope !678, !noalias !679, !nonnull !4, !noundef !4 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !707 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !707 + %162 = load ptr, ptr %0, align 8, !alias.scope !678, !noalias !679, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 88 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !618, !nonnull !4, !noundef !4 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !618, !nonnull !4, !noundef !4 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 88 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %175, ptr noundef nonnull align 1 dereferenceable(88) %173, i64 88, i1 false), !noalias !643 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %165, ptr noundef nonnull align 1 dereferenceable(88) %163, i64 88, i1 false), !noalias !643 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h1ee230766e7bc612E", i64 noundef 88, ptr noundef nonnull @"_ZN4core3ptr156drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..pg..backend..Pg$GT$$C$diesel..pg..connection..stmt..Statement$RP$$GT$17h43913ccb30979f8bE.llvm.11693277841074805610") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -4489,7 +4378,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %169 + br i1 %.not.i, label %29, label %164 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -4615,11 +4504,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #45, !noalias !745 resume { ptr, i32 } %79 -.preheader: ; preds = %.preheader.lr.ph, %159 - %.sroa.1319.069 = phi i16 [ %74, %.preheader.lr.ph ], [ %88, %159 ] - %.sroa.014.068 = phi ptr [ %70, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %159 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %159 ] - %.sroa.917.066 = phi i64 [ %69, %.preheader.lr.ph ], [ %92, %159 ] +.preheader: ; preds = %.preheader.lr.ph, %154 + %.sroa.1319.069 = phi i16 [ %74, %.preheader.lr.ph ], [ %88, %154 ] + %.sroa.014.068 = phi ptr [ %70, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %154 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %154 ] + %.sroa.917.066 = phi i64 [ %69, %.preheader.lr.ph ], [ %92, %154 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -4695,9 +4584,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %111 = xor <2 x i64> %109, %110 store <2 x i64> %111, ptr %5, align 16, !noalias !778 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.11731155751478127742"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %133 unwind label %78 + to label %128 unwind label %78 -.thread52.loopexit: ; preds = %159 +.thread52.loopexit: ; preds = %154 %.pre = load i64, ptr %12, align 8, !alias.scope !780, !noalias !781 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !721 br label %.thread52 @@ -4723,116 +4612,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %115, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %116 116: ; preds = %.thread52 - %117 = add i64 %.val1.i.i, 1 - %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 80) - %119 = extractvalue { i64, i1 } %118, 1 - %120 = xor i1 %119, true - call void @llvm.assume(i1 %120), !noalias !745 - %121 = extractvalue { i64, i1 } %118, 0 - %122 = add i64 %.val1.i.i, 17 - %123 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %121, i64 %122) - %124 = extractvalue { i64, i1 } %123, 0 - %125 = extractvalue { i64, i1 } %123, 1 - %126 = icmp ult i64 %124, 9223372036854775793 - %127 = xor i1 %125, true - call void @llvm.assume(i1 %127), !noalias !745 - call void @llvm.assume(i1 %126), !noalias !745 - %128 = icmp eq i64 %124, 0 - br i1 %128, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %129 - -129: ; preds = %116 - %130 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %130), !noalias !745 - %131 = sub nsw i64 0, %121 - %132 = getelementptr inbounds i8, ptr %.val.i.i, i64 %131 - call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %124, i64 noundef 16) #44, !noalias !797 + %117 = mul i64 %.val1.i.i, 80 + %118 = add i64 %117, 95 + %119 = and i64 %118, -16 + %120 = add i64 %.val1.i.i, 17 + %121 = add nuw i64 %120, %119 + %122 = icmp ult i64 %121, 9223372036854775793 + call void @llvm.assume(i1 %122), !noalias !745 + %123 = icmp eq i64 %121, 0 + br i1 %123, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %124 + +124: ; preds = %116 + %125 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %125), !noalias !745 + %126 = sub nsw i64 0, %119 + %127 = getelementptr inbounds i8, ptr %.val.i.i, i64 %126 + call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %121, i64 noundef 16) #44, !noalias !797 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %116, %129 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %116, %124 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !721 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -133: ; preds = %.noexc7 - %134 = load <4 x i64>, ptr %5, align 16, !noalias !778 - %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) +128: ; preds = %.noexc7 + %129 = load <4 x i64>, ptr %5, align 16, !noalias !778 + %130 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %129) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !778 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !760 - %136 = and i64 %64, %135 - %137 = getelementptr inbounds i8, ptr %68, i64 %136 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %137, align 1, !noalias !802 - %138 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %139 = bitcast <16 x i1> %138 to i16 - %.not12.i.i = icmp eq i16 %139, 0 + %131 = and i64 %64, %130 + %132 = getelementptr inbounds i8, ptr %68, i64 %131 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %132, align 1, !noalias !802 + %133 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %134 = bitcast <16 x i1> %133 to i16 + %.not12.i.i = icmp eq i16 %134, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] - %.sroa.7.013.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] - %140 = add i64 %.sroa.7.013.i.i, 16 - %141 = add i64 %140, %.sroa.0.014.i.i - %142 = and i64 %141, %64 - %143 = getelementptr inbounds i8, ptr %68, i64 %142 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %143, align 1, !noalias !802 - %144 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %145 = bitcast <16 x i1> %144 to i16 - %.not.i.i = icmp eq i16 %145, 0 +.lr.ph.i.i: ; preds = %128, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ %131, %128 ] + %.sroa.7.013.i.i = phi i64 [ %135, %.lr.ph.i.i ], [ 0, %128 ] + %135 = add i64 %.sroa.7.013.i.i, 16 + %136 = add i64 %135, %.sroa.0.014.i.i + %137 = and i64 %136, %64 + %138 = getelementptr inbounds i8, ptr %68, i64 %137 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %138, align 1, !noalias !802 + %139 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %140 = bitcast <16 x i1> %139 to i16 + %.not.i.i = icmp eq i16 %140, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 - %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] - %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 - %147 = zext nneg i16 %146 to i64 - %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 - %149 = and i64 %148, %64 - %150 = getelementptr inbounds i8, ptr %68, i64 %149 - %151 = load i8, ptr %150, align 1, !noalias !809, !noundef !4 - %152 = icmp sgt i8 %151, -1 - br i1 %152, label %153, label %159 - -153: ; preds = %._crit_edge.i.i - %154 = load <16 x i8>, ptr %68, align 16, !noalias !810 - %155 = icmp slt <16 x i8> %154, zeroinitializer - %156 = bitcast <16 x i1> %155 to i16 - %.not.i.i.i = icmp ne i16 %156, 0 - %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !284 - %158 = zext nneg i16 %157 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %128 + %.sroa.0.0.lcssa.i.i = phi i64 [ %131, %128 ], [ %137, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %134, %128 ], [ %140, %.lr.ph.i.i ] + %141 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 + %142 = zext nneg i16 %141 to i64 + %143 = add i64 %.sroa.0.0.lcssa.i.i, %142 + %144 = and i64 %143, %64 + %145 = getelementptr inbounds i8, ptr %68, i64 %144 + %146 = load i8, ptr %145, align 1, !noalias !809, !noundef !4 + %147 = icmp sgt i8 %146, -1 + br i1 %147, label %148, label %154 + +148: ; preds = %._crit_edge.i.i + %149 = load <16 x i8>, ptr %68, align 16, !noalias !810 + %150 = icmp slt <16 x i8> %149, zeroinitializer + %151 = bitcast <16 x i1> %150 to i16 + %.not.i.i.i = icmp ne i16 %151, 0 + %152 = call i16 @llvm.cttz.i16(i16 %151, i1 true), !range !284 + %153 = zext nneg i16 %152 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !745 - br label %159 - -159: ; preds = %153, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] - %160 = getelementptr inbounds i8, ptr %68, i64 %.0.i.i.i9 - %161 = lshr i64 %135, 57 - %162 = trunc i64 %161 to i8 - %163 = add i64 %.0.i.i.i9, -16 - %164 = and i64 %163, %64 - store i8 %162, ptr %160, align 1, !noalias !809 - %gep = getelementptr i8, ptr %invariant.gep, i64 %164 - store i8 %162, ptr %gep, align 1, !noalias !809 - %165 = load ptr, ptr %0, align 8, !alias.scope !780, !noalias !781, !nonnull !4, !noundef !4 + br label %154 + +154: ; preds = %148, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %153, %148 ], [ %144, %._crit_edge.i.i ] + %155 = getelementptr inbounds i8, ptr %68, i64 %.0.i.i.i9 + %156 = lshr i64 %130, 57 + %157 = trunc i64 %156 to i8 + %158 = add i64 %.0.i.i.i9, -16 + %159 = and i64 %158, %64 + store i8 %157, ptr %155, align 1, !noalias !809 + %gep = getelementptr i8, ptr %invariant.gep, i64 %159 + store i8 %157, ptr %gep, align 1, !noalias !809 + %160 = load ptr, ptr %0, align 8, !alias.scope !780, !noalias !781, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %91, -1 %.neg28.i.i = mul i64 %.neg.i.i, 80 - %166 = getelementptr inbounds i8, ptr %165, i64 %.neg28.i.i - %167 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !721, !nonnull !4, !noundef !4 + %161 = getelementptr inbounds i8, ptr %160, i64 %.neg28.i.i + %162 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !721, !nonnull !4, !noundef !4 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 80 - %168 = getelementptr inbounds i8, ptr %167, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %168, ptr noundef nonnull align 1 dereferenceable(80) %166, i64 80, i1 false), !noalias !745 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %163, ptr noundef nonnull align 1 dereferenceable(80) %161, i64 80, i1 false), !noalias !745 %.not = icmp eq i64 %92, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -169: ; preds = %21 +164: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17had68fa0a8a407121E", i64 noundef 80, ptr noundef nonnull @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17h993359eb531e105aE.llvm.11693277841074805610") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %77, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %169 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %169 ], [ %.sroa.9.036.ph, %77 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %169 ], [ %.sroa.5.038.ph, %77 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %170 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %171 = insertvalue { i64, i64 } %170, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %77, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %164 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %164 ], [ %.sroa.9.036.ph, %77 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %164 ], [ %.sroa.5.038.ph, %77 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %165 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %166 = insertvalue { i64, i64 } %165, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %171 + ret { i64, i64 } %166 } ; Function Attrs: cold nonlazybind uwtable @@ -4871,7 +4753,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -4999,11 +4881,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #45, !noalias !847 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -5079,9 +4961,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !880 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.11731155751478127742"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !882, !noalias !883 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !823 br label %.thread52 @@ -5107,122 +4989,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !847 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !847 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !847 - call void @llvm.assume(i1 %133), !noalias !847 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !847 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #44, !noalias !899 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !847 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !847 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #44, !noalias !899 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !823 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !880 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !880 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !880 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !862 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !904 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !904 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !904 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !904 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !911, !noundef !4 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !912 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !284 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !911, !noundef !4 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !912 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !284 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !847 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !911 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !911 - %172 = load ptr, ptr %0, align 8, !alias.scope !882, !noalias !883, !nonnull !4, !noundef !4 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !911 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !911 + %162 = load ptr, ptr %0, align 8, !alias.scope !882, !noalias !883, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !823, !nonnull !4, !noundef !4 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !823, !nonnull !4, !noundef !4 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !847 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !847 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h1bc63a103cd861b8E", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr119drop_in_place$LT$$LP$diesel..pg..metadata_lookup..PgMetadataCacheKey$C$diesel..pg..backend..InnerPgTypeMetadata$RP$$GT$17he6d1b5fc71bc930aE.llvm.11693277841074805610") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -5262,7 +5131,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %171 + br i1 %.not.i, label %30, label %166 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -5388,11 +5257,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #45, !noalias !949 resume { ptr, i32 } %80 -.preheader: ; preds = %.preheader.lr.ph, %161 - %.sroa.1320.070 = phi i16 [ %75, %.preheader.lr.ph ], [ %89, %161 ] - %.sroa.015.069 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.015.1.lcssa, %161 ] - %.sroa.516.068 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.516.1.lcssa, %161 ] - %.sroa.918.067 = phi i64 [ %70, %.preheader.lr.ph ], [ %93, %161 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1320.070 = phi i16 [ %75, %.preheader.lr.ph ], [ %89, %156 ] + %.sroa.015.069 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.015.1.lcssa, %156 ] + %.sroa.516.068 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.516.1.lcssa, %156 ] + %.sroa.918.067 = phi i64 [ %70, %.preheader.lr.ph ], [ %93, %156 ] %.not.not.i61 = icmp eq i16 %.sroa.1320.070, 0 br i1 %.not.not.i61, label %.noexc2, label %._crit_edge @@ -5478,9 +5347,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !1001 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.11731155751478127742"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %135 unwind label %79 + to label %130 unwind label %79 -.thread53.loopexit: ; preds = %161 +.thread53.loopexit: ; preds = %156 %.pre = load i64, ptr %13, align 8, !alias.scope !1003, !noalias !1004 %.pre75 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !925 br label %.thread53 @@ -5506,116 +5375,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %118 118: ; preds = %.thread53 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 48) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !949 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = add i64 %.val1.i.i, 17 - %125 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 %124) - %126 = extractvalue { i64, i1 } %125, 0 - %127 = extractvalue { i64, i1 } %125, 1 - %128 = icmp ult i64 %126, 9223372036854775793 - %129 = xor i1 %127, true - call void @llvm.assume(i1 %129), !noalias !949 - call void @llvm.assume(i1 %128), !noalias !949 - %130 = icmp eq i64 %126, 0 - br i1 %130, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %131 - -131: ; preds = %118 - %132 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %132), !noalias !949 - %133 = sub nsw i64 0, %123 - %134 = getelementptr inbounds i8, ptr %.val.i.i, i64 %133 - call void @__rust_dealloc(ptr noundef nonnull %134, i64 noundef %126, i64 noundef 16) #44, !noalias !1020 + %119 = mul i64 %.val1.i.i, 48 + %120 = add i64 %119, 63 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !949 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !949 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #44, !noalias !1020 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread53, %118, %131 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread53, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9), !noalias !925 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -135: ; preds = %.noexc8 - %136 = load <4 x i64>, ptr %5, align 16, !noalias !1001 - %137 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %136) +130: ; preds = %.noexc8 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !1001 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !1001 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7), !noalias !975 - %138 = and i64 %65, %137 - %139 = getelementptr inbounds i8, ptr %69, i64 %138 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %139, align 1, !noalias !1025 - %140 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %141 = bitcast <16 x i1> %140 to i16 - %.not12.i.i = icmp eq i16 %141, 0 + %133 = and i64 %65, %132 + %134 = getelementptr inbounds i8, ptr %69, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !1025 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %135, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %144, %.lr.ph.i.i ], [ %138, %135 ] - %.sroa.7.013.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ 0, %135 ] - %142 = add i64 %.sroa.7.013.i.i, 16 - %143 = add i64 %142, %.sroa.0.014.i.i - %144 = and i64 %143, %65 - %145 = getelementptr inbounds i8, ptr %69, i64 %144 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %145, align 1, !noalias !1025 - %146 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %147 = bitcast <16 x i1> %146 to i16 - %.not.i.i = icmp eq i16 %147, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %65 + %140 = getelementptr inbounds i8, ptr %69, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !1025 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %135 - %.sroa.0.0.lcssa.i.i = phi i64 [ %138, %135 ], [ %144, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %141, %135 ], [ %147, %.lr.ph.i.i ] - %148 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 - %149 = zext nneg i16 %148 to i64 - %150 = add i64 %.sroa.0.0.lcssa.i.i, %149 - %151 = and i64 %150, %65 - %152 = getelementptr inbounds i8, ptr %69, i64 %151 - %153 = load i8, ptr %152, align 1, !noalias !1032, !noundef !4 - %154 = icmp sgt i8 %153, -1 - br i1 %154, label %155, label %161 - -155: ; preds = %._crit_edge.i.i - %156 = load <16 x i8>, ptr %69, align 16, !noalias !1033 - %157 = icmp slt <16 x i8> %156, zeroinitializer - %158 = bitcast <16 x i1> %157 to i16 - %.not.i.i.i = icmp ne i16 %158, 0 - %159 = call i16 @llvm.cttz.i16(i16 %158, i1 true), !range !284 - %160 = zext nneg i16 %159 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %65 + %147 = getelementptr inbounds i8, ptr %69, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !1032, !noundef !4 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %69, align 16, !noalias !1033 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !284 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !949 - br label %161 - -161: ; preds = %155, %._crit_edge.i.i - %.0.i.i.i10 = phi i64 [ %160, %155 ], [ %151, %._crit_edge.i.i ] - %162 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i10 - %163 = lshr i64 %137, 57 - %164 = trunc i64 %163 to i8 - %165 = add i64 %.0.i.i.i10, -16 - %166 = and i64 %165, %65 - store i8 %164, ptr %162, align 1, !noalias !1032 - %gep = getelementptr i8, ptr %invariant.gep, i64 %166 - store i8 %164, ptr %gep, align 1, !noalias !1032 - %167 = load ptr, ptr %0, align 8, !alias.scope !1003, !noalias !1004, !nonnull !4, !noundef !4 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i10 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i10 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i10, -16 + %161 = and i64 %160, %65 + store i8 %159, ptr %157, align 1, !noalias !1032 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !1032 + %162 = load ptr, ptr %0, align 8, !alias.scope !1003, !noalias !1004, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %92, -1 %.neg28.i.i = mul i64 %.neg.i.i, 48 - %168 = getelementptr inbounds i8, ptr %167, i64 %.neg28.i.i - %169 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !925, !nonnull !4, !noundef !4 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !925, !nonnull !4, !noundef !4 %.neg29.i.i = xor i64 %.0.i.i.i10, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 48 - %170 = getelementptr inbounds i8, ptr %169, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %170, ptr noundef nonnull align 1 dereferenceable(48) %168, i64 48, i1 false), !noalias !949 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %165, ptr noundef nonnull align 1 dereferenceable(48) %163, i64 48, i1 false), !noalias !949 %.not = icmp eq i64 %93, 0 br i1 %.not, label %.thread53.loopexit, label %.preheader -171: ; preds = %22 +166: ; preds = %22 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %10, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17ha66d4472b1227b77E", i64 noundef 48, ptr noundef nonnull @"_ZN4core3ptr74drop_in_place$LT$$LP$alloc..string..String$C$alloc..string..String$RP$$GT$17hc6f81ba74182056eE.llvm.11693277841074805610") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %78, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %18, %171 - %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %171 ], [ %.sroa.9.037.ph, %78 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %171 ], [ %.sroa.5.039.ph, %78 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %172 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %173 = insertvalue { i64, i64 } %172, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %78, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %18, %166 + %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %166 ], [ %.sroa.9.037.ph, %78 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %166 ], [ %.sroa.5.039.ph, %78 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) - ret { i64, i64 } %173 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -5654,7 +5516,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -5782,11 +5644,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #45, !noalias !1070 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -5862,9 +5724,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !1103 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.11731155751478127742"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !1105, !noalias !1106 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !1046 br label %.thread52 @@ -5890,122 +5752,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !1070 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !1070 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !1070 - call void @llvm.assume(i1 %133), !noalias !1070 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !1070 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #44, !noalias !1122 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !1070 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !1070 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #44, !noalias !1122 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !1046 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !1103 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !1103 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !1103 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !1085 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !1127 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !1127 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !1127 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !1127 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !1134, !noundef !4 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !1135 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !284 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !284 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !1134, !noundef !4 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !1135 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !284 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !1070 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !1134 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !1134 - %172 = load ptr, ptr %0, align 8, !alias.scope !1105, !noalias !1106, !nonnull !4, !noundef !4 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !1134 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !1134 + %162 = load ptr, ptr %0, align 8, !alias.scope !1105, !noalias !1106, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !1046, !nonnull !4, !noundef !4 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !1046, !nonnull !4, !noundef !4 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !1070 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !1070 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h2ddd73dbd6a63937E", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17h72723a9b9719b44aE.llvm.11693277841074805610") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h4f1a2359df6bf02bE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c054ab7d155b61cE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/3nydn42x30kj4j9q.ll b/bench/diesel-rs/optimized/3nydn42x30kj4j9q.ll index 761e9863370..db688dafc00 100644 --- a/bench/diesel-rs/optimized/3nydn42x30kj4j9q.ll +++ b/bench/diesel-rs/optimized/3nydn42x30kj4j9q.ll @@ -187,44 +187,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !25 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51edf957ecb89a8aE.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !25 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51edf957ecb89a8aE.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !25 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51edf957ecb89a8aE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51edf957ecb89a8aE.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h51edf957ecb89a8aE.exit": ; preds = %1, %6, %22 ret void } @@ -469,7 +457,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %178 + br i1 %.not.i, label %30, label %168 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -602,11 +590,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %166 ] - %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %166 ] - %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %166 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1338.099 = phi i16 [ %77, %.preheader.lr.ph ], [ %96, %156 ] + %.sroa.936.098 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %156 ] + %.sroa.033.097 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %156 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %156 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -674,9 +662,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %8, align 16, !noalias !115 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.15584254048225761708"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %140 unwind label %86 + to label %130 unwind label %86 -.thread71.loopexit: ; preds = %166 +.thread71.loopexit: ; preds = %156 %.pre113 = load i64, ptr %13, align 8, !alias.scope !117, !noalias !118 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !62 br label %.thread71 @@ -702,168 +690,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit", label %118 118: ; preds = %.thread71 - %119 = add i64 %.val3.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122) - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126) - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val3.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134) - call void @llvm.assume(i1 %133) - %135 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %135) - %136 = icmp eq i64 %131, 0 - br i1 %136, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit", label %137 - -137: ; preds = %118 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #19, !noalias !131 + %119 = mul i64 %.val3.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val3.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124) + %125 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %125) + %126 = icmp eq i64 %123, 0 + br i1 %126, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit", label %127 + +127: ; preds = %118 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #19, !noalias !131 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit": ; preds = %.thread71, %118, %137 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit": ; preds = %.thread71, %118, %127 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !62 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hf61217a1aab6988eE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %8, align 16, !noalias !115 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %8, align 16, !noalias !115 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !115 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !105 - %143 = and i64 %67, %142 - %144 = getelementptr inbounds i8, ptr %71, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !132 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %67, %132 + %134 = getelementptr inbounds i8, ptr %71, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !132 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %67 - %150 = getelementptr inbounds i8, ptr %71, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !132 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %67 + %140 = getelementptr inbounds i8, ptr %71, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !132 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %67 - %157 = getelementptr inbounds i8, ptr %71, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !139, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %71, align 16, !noalias !140 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !31 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !31 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %67 + %147 = getelementptr inbounds i8, ptr %71, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !139, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %71, align 16, !noalias !140 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !31 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %67 - store i8 %169, ptr %167, align 1, !noalias !139 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !139 - %172 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %67 + store i8 %159, ptr %157, align 1, !noalias !139 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !139 + %162 = load ptr, ptr %0, align 8, !alias.scope !117, !noalias !118, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %99, -56 - %173 = getelementptr i8, ptr %172, i64 %.neg.i.i - %174 = getelementptr i8, ptr %173, i64 -56 - %175 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 + %163 = getelementptr i8, ptr %162, i64 %.neg.i.i + %164 = getelementptr i8, ptr %163, i64 -56 + %165 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !62, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -56 - %176 = getelementptr i8, ptr %175, i64 %.neg28.i.i - %177 = getelementptr i8, ptr %176, i64 -56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %177, ptr noundef nonnull align 1 dereferenceable(56) %174, i64 56, i1 false) + %166 = getelementptr i8, ptr %165, i64 %.neg28.i.i + %167 = getelementptr i8, ptr %166, i64 -56 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %167, ptr noundef nonnull align 1 dereferenceable(56) %164, i64 56, i1 false) %.not = icmp eq i64 %100, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %203, %86 - %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %204, %203 ] +common.resume: ; preds = %193, %86 + %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %194, %193 ] resume { ptr, i32 } %common.resume.op -178: ; preds = %22 +168: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !143) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !143 - %179 = lshr i64 %26, 4 - %180 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %180, 0 - %181 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %179, %181 + %169 = lshr i64 %26, 4 + %170 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %170, 0 + %171 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %169, %171 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %178 - %182 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %182) - br label %187 - -._crit_edge.i.i12: ; preds = %187, %178 - %183 = icmp ult i64 %26, 16 - %184 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %184) - %185 = getelementptr inbounds i8, ptr %7, i64 8 - %186 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %183, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -187: ; preds = %187, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %189, %187 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %188, %187 ] - %188 = add nsw i64 %.sroa.5.05.i.i, -1 - %189 = add i64 %.sroa.01.06.i.i, 16 - %190 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %191 = load <16 x i8>, ptr %190, align 16, !noalias !146 - %.lobit.i.i.i = ashr <16 x i8> %191, - %192 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %193 = or <2 x i64> %192, - store <2 x i64> %193, ptr %190, align 16, !noalias !149 - %.not.not.i.i = icmp eq i64 %188, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %187 +.lr.ph.i.i11: ; preds = %168 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + br label %177 + +._crit_edge.i.i12: ; preds = %177, %168 + %173 = icmp ult i64 %26, 16 + %174 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %174) + %175 = getelementptr inbounds i8, ptr %7, i64 8 + %176 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %173, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +177: ; preds = %177, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %179, %177 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %178, %177 ] + %178 = add nsw i64 %.sroa.5.05.i.i, -1 + %179 = add i64 %.sroa.01.06.i.i, 16 + %180 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %181 = load <16 x i8>, ptr %180, align 16, !noalias !146 + %.lobit.i.i.i = ashr <16 x i8> %181, + %182 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %183 = or <2 x i64> %182, + store <2 x i64> %183, ptr %180, align 16, !noalias !149 + %.not.not.i.i = icmp eq i64 %178, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %177 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %194 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %194, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 + %184 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %184, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hee621108f61f657cE.llvm.8758801517866644712", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hee621108f61f657cE.llvm.8758801517866644712", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %195 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %195, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 + %185 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %185, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !143 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !143 - store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hee621108f61f657cE.llvm.8758801517866644712", ptr %185, align 8, !noalias !143 - store i64 56, ptr %186, align 8, !noalias !143 + store ptr @"_ZN4core3ptr168drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..sqlite..backend..Sqlite$GT$$C$diesel..sqlite..connection..stmt..Statement$RP$$GT$17hee621108f61f657cE.llvm.8758801517866644712", ptr %175, align 8, !noalias !143 + store i64 56, ptr %176, align 8, !noalias !143 store ptr %0, ptr %7, align 8, !noalias !143 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -872,229 +847,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %196 = getelementptr inbounds i8, ptr %6, i64 56 - %197 = getelementptr inbounds i8, ptr %5, i64 24 - %198 = load <2 x i64>, ptr %2, align 8 - %199 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> zeroinitializer - %200 = xor <2 x i64> %199, - %201 = shufflevector <2 x i64> %198, <2 x i64> poison, <2 x i32> - %202 = xor <2 x i64> %201, - br label %205 - -203: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i - %204 = landingpad { ptr, i32 } + %186 = getelementptr inbounds i8, ptr %6, i64 56 + %187 = getelementptr inbounds i8, ptr %5, i64 24 + %188 = load <2 x i64>, ptr %2, align 8 + %189 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> zeroinitializer + %190 = xor <2 x i64> %189, + %191 = shufflevector <2 x i64> %188, <2 x i64> poison, <2 x i32> + %192 = xor <2 x i64> %191, + br label %195 + +193: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i + %194 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5972763eb09fed4dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %295 - -205: ; preds = %294, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %206, %294 ] - %206 = add nuw i64 %.sroa.02.012.i, 1 - %207 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %208 = getelementptr inbounds i8, ptr %207, i64 %.sroa.02.012.i - %209 = load i8, ptr %208, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %209, -128 - br i1 %.not.i13, label %210, label %294 - -210: ; preds = %205 + to label %common.resume unwind label %285 + +195: ; preds = %284, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %196, %284 ] + %196 = add nuw i64 %.sroa.02.012.i, 1 + %197 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %198 = getelementptr inbounds i8, ptr %197, i64 %.sroa.02.012.i + %199 = load i8, ptr %198, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %199, -128 + br i1 %.not.i13, label %200, label %284 + +200: ; preds = %195 %.neg.i = mul i64 %.sroa.02.012.i, -56 - %211 = getelementptr i8, ptr %207, i64 %.neg.i - %212 = getelementptr i8, ptr %211, i64 -56 - %213 = sub nsw i64 0, %.sroa.02.012.i + %201 = getelementptr i8, ptr %197, i64 %.neg.i + %202 = getelementptr i8, ptr %201, i64 -56 + %203 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i _ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !152, !noalias !155 br label %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i -_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i, %210 - %214 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i ], [ %207, %210 ] +_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i, %200 + %204 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i ], [ %197, %200 ] call void @llvm.experimental.noalias.scope.decl(metadata !157) - %215 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %214, i64 %213 - %216 = getelementptr inbounds i8, ptr %215, i64 -56 + %205 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %204, i64 %203 + %206 = getelementptr inbounds i8, ptr %205, i64 -56 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !158 - store <2 x i64> %200, ptr %6, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %202, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 - store <2 x i64> %198, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %190, ptr %6, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %192, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 + store <2 x i64> %188, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !164, !noalias !167 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !164, !noalias !167 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17hba6d6431d3ed2a9fE.llvm.15584254048225761708"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %216, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %203 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17hba6d6431d3ed2a9fE.llvm.15584254048225761708"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %206, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %193 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !169) call void @llvm.experimental.noalias.scope.decl(metadata !172) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !158 - %217 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 - %218 = shl i64 %217, 56 - %219 = load i64, ptr %196, align 8, !alias.scope !176, !noalias !158, !noundef !5 - %220 = or i64 %218, %219 - %221 = load i64, ptr %197, align 8, !noalias !175, !noundef !5 - %222 = xor i64 %221, %220 - store i64 %222, ptr %197, align 8, !noalias !175 + %207 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !176, !noalias !158, !noundef !5 + %208 = shl i64 %207, 56 + %209 = load i64, ptr %186, align 8, !alias.scope !176, !noalias !158, !noundef !5 + %210 = or i64 %208, %209 + %211 = load i64, ptr %187, align 8, !noalias !175, !noundef !5 + %212 = xor i64 %211, %210 + store i64 %212, ptr %187, align 8, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.15584254048225761708"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %203 + to label %.noexc18.i unwind label %193 .noexc18.i: ; preds = %.noexc.i16 - %223 = load <2 x i64>, ptr %5, align 16, !noalias !175 - %224 = insertelement <2 x i64> , i64 %220, i64 0 - %225 = xor <2 x i64> %223, %224 - store <2 x i64> %225, ptr %5, align 16, !noalias !175 + %213 = load <2 x i64>, ptr %5, align 16, !noalias !175 + %214 = insertelement <2 x i64> , i64 %210, i64 0 + %215 = xor <2 x i64> %213, %214 + store <2 x i64> %215, ptr %5, align 16, !noalias !175 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.15584254048225761708"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %226 unwind label %203 + to label %216 unwind label %193 -226: ; preds = %.noexc18.i - %227 = load <4 x i64>, ptr %5, align 16, !noalias !175 - %228 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %227) +216: ; preds = %.noexc18.i + %217 = load <4 x i64>, ptr %5, align 16, !noalias !175 + %218 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %217) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !175 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !158 - %229 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %230 = and i64 %229, %228 - %231 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %232 = getelementptr inbounds i8, ptr %231, i64 %230 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %232, align 1, !noalias !177 - %233 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %234 = bitcast <16 x i1> %233 to i16 - %.not12.i.i18 = icmp eq i16 %234, 0 + %219 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %220 = and i64 %219, %218 + %221 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %222 = getelementptr inbounds i8, ptr %221, i64 %220 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %222, align 1, !noalias !177 + %223 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %224 = bitcast <16 x i1> %223 to i16 + %.not12.i.i18 = icmp eq i16 %224, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %226, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %237, %.lr.ph.i21.i ], [ %230, %226 ] - %.sroa.7.013.i.i25 = phi i64 [ %235, %.lr.ph.i21.i ], [ 0, %226 ] - %235 = add i64 %.sroa.7.013.i.i25, 16 - %236 = add i64 %235, %.sroa.0.014.i.i24 - %237 = and i64 %236, %229 - %238 = getelementptr inbounds i8, ptr %231, i64 %237 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %238, align 1, !noalias !177 - %239 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %240 = bitcast <16 x i1> %239 to i16 - %.not.i.i27 = icmp eq i16 %240, 0 +.lr.ph.i21.i: ; preds = %216, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %227, %.lr.ph.i21.i ], [ %220, %216 ] + %.sroa.7.013.i.i25 = phi i64 [ %225, %.lr.ph.i21.i ], [ 0, %216 ] + %225 = add i64 %.sroa.7.013.i.i25, 16 + %226 = add i64 %225, %.sroa.0.014.i.i24 + %227 = and i64 %226, %219 + %228 = getelementptr inbounds i8, ptr %221, i64 %227 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %228, align 1, !noalias !177 + %229 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %230 = bitcast <16 x i1> %229 to i16 + %.not.i.i27 = icmp eq i16 %230, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %226 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %230, %226 ], [ %237, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %234, %226 ], [ %240, %.lr.ph.i21.i ] - %241 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 - %242 = zext nneg i16 %241 to i64 - %243 = add i64 %.sroa.0.0.lcssa.i.i19, %242 - %244 = and i64 %243, %229 - %245 = getelementptr inbounds i8, ptr %231, i64 %244 - %246 = load i8, ptr %245, align 1, !noalias !182, !noundef !5 - %247 = icmp sgt i8 %246, -1 - br i1 %247, label %248, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i - -248: ; preds = %._crit_edge.i20.i - %249 = load <16 x i8>, ptr %231, align 16, !noalias !183 - %250 = icmp slt <16 x i8> %249, zeroinitializer - %251 = bitcast <16 x i1> %250 to i16 - %.not.i.i.i23 = icmp ne i16 %251, 0 - %252 = call i16 @llvm.cttz.i16(i16 %251, i1 true), !range !31 - %253 = zext nneg i16 %252 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %216 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %220, %216 ], [ %227, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %224, %216 ], [ %230, %.lr.ph.i21.i ] + %231 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !31 + %232 = zext nneg i16 %231 to i64 + %233 = add i64 %.sroa.0.0.lcssa.i.i19, %232 + %234 = and i64 %233, %219 + %235 = getelementptr inbounds i8, ptr %221, i64 %234 + %236 = load i8, ptr %235, align 1, !noalias !182, !noundef !5 + %237 = icmp sgt i8 %236, -1 + br i1 %237, label %238, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i + +238: ; preds = %._crit_edge.i20.i + %239 = load <16 x i8>, ptr %221, align 16, !noalias !183 + %240 = icmp slt <16 x i8> %239, zeroinitializer + %241 = bitcast <16 x i1> %240 to i16 + %.not.i.i.i23 = icmp ne i16 %241, 0 + %242 = call i16 @llvm.cttz.i16(i16 %241, i1 true), !range !31 + %243 = zext nneg i16 %242 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i: ; preds = %248, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %253, %248 ], [ %244, %._crit_edge.i20.i ] - %254 = sub i64 %.sroa.02.012.i, %230 - %255 = sub i64 %.0.i.i.i21, %230 - %256 = xor i64 %255, %254 - %.unshifted.i = and i64 %256, %229 - %257 = icmp ult i64 %.unshifted.i, 16 - br i1 %257, label %271, label %258 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i: ; preds = %238, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %243, %238 ], [ %234, %._crit_edge.i20.i ] + %244 = sub i64 %.sroa.02.012.i, %220 + %245 = sub i64 %.0.i.i.i21, %220 + %246 = xor i64 %245, %244 + %.unshifted.i = and i64 %246, %219 + %247 = icmp ult i64 %.unshifted.i, 16 + br i1 %247, label %261, label %248 -258: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i +248: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -56 - %259 = getelementptr i8, ptr %231, i64 %.neg16.i - %260 = getelementptr i8, ptr %259, i64 -56 - %261 = getelementptr inbounds i8, ptr %231, i64 %.0.i.i.i21 - %262 = load i8, ptr %261, align 1, !noundef !5 - %263 = lshr i64 %228, 57 - %264 = trunc i64 %263 to i8 - %265 = add i64 %.0.i.i.i21, -16 - %266 = and i64 %265, %229 - store i8 %264, ptr %261, align 1 + %249 = getelementptr i8, ptr %221, i64 %.neg16.i + %250 = getelementptr i8, ptr %249, i64 -56 + %251 = getelementptr inbounds i8, ptr %221, i64 %.0.i.i.i21 + %252 = load i8, ptr %251, align 1, !noundef !5 + %253 = lshr i64 %218, 57 + %254 = trunc i64 %253 to i8 + %255 = add i64 %.0.i.i.i21, -16 + %256 = and i64 %255, %219 + store i8 %254, ptr %251, align 1 + %257 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %258 = getelementptr i8, ptr %257, i64 %256 + %259 = getelementptr i8, ptr %258, i64 16 + store i8 %254, ptr %259, align 1 + %260 = icmp eq i8 %252, -1 + br i1 %260, label %275, label %.preheader.i + +261: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i + %262 = lshr i64 %218, 57 + %263 = trunc i64 %262 to i8 + %264 = add i64 %.sroa.02.012.i, -16 + %265 = and i64 %219, %264 + %266 = getelementptr inbounds i8, ptr %221, i64 %.sroa.02.012.i + store i8 %263, ptr %266, align 1 %267 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %268 = getelementptr i8, ptr %267, i64 %266 + %268 = getelementptr i8, ptr %267, i64 %265 %269 = getelementptr i8, ptr %268, i64 16 - store i8 %264, ptr %269, align 1 - %270 = icmp eq i8 %262, -1 - br i1 %270, label %285, label %.preheader.i - -271: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.8758801517866644712.exit.i - %272 = lshr i64 %228, 57 - %273 = trunc i64 %272 to i8 - %274 = add i64 %.sroa.02.012.i, -16 - %275 = and i64 %229, %274 - %276 = getelementptr inbounds i8, ptr %231, i64 %.sroa.02.012.i - store i8 %273, ptr %276, align 1 - %277 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %278 = getelementptr i8, ptr %277, i64 %275 - %279 = getelementptr i8, ptr %278, i64 16 - store i8 %273, ptr %279, align 1 - br label %294 - -.preheader.i: ; preds = %258, %.preheader.i - %.0910.i.i = phi i64 [ %284, %.preheader.i ], [ 0, %258 ] - %280 = getelementptr inbounds i8, ptr %212, i64 %.0910.i.i - %281 = getelementptr inbounds i8, ptr %260, i64 %.0910.i.i - %282 = load i8, ptr %280, align 1 - %283 = load i8, ptr %281, align 1 - store i8 %283, ptr %280, align 1 - store i8 %282, ptr %281, align 1 - %284 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %284, 56 + store i8 %263, ptr %269, align 1 + br label %284 + +.preheader.i: ; preds = %248, %.preheader.i + %.0910.i.i = phi i64 [ %274, %.preheader.i ], [ 0, %248 ] + %270 = getelementptr inbounds i8, ptr %202, i64 %.0910.i.i + %271 = getelementptr inbounds i8, ptr %250, i64 %.0910.i.i + %272 = load i8, ptr %270, align 1 + %273 = load i8, ptr %271, align 1 + store i8 %273, ptr %270, align 1 + store i8 %272, ptr %271, align 1 + %274 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %274, 56 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17hb96c0365d28a74afE.exit.loopexit.i, label %.preheader.i -285: ; preds = %258 - %286 = add i64 %.sroa.02.012.i, -16 - %287 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 - %288 = and i64 %287, %286 - %289 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %290 = getelementptr inbounds i8, ptr %289, i64 %.sroa.02.012.i - store i8 -1, ptr %290, align 1 - %291 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 - %292 = getelementptr i8, ptr %291, i64 %288 - %293 = getelementptr i8, ptr %292, i64 16 - store i8 -1, ptr %293, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %260, ptr noundef nonnull align 1 dereferenceable(56) %212, i64 56, i1 false) - br label %294 - -294: ; preds = %285, %271, %205 +275: ; preds = %248 + %276 = add i64 %.sroa.02.012.i, -16 + %277 = load i64, ptr %23, align 8, !alias.scope !143, !noundef !5 + %278 = and i64 %277, %276 + %279 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %280 = getelementptr inbounds i8, ptr %279, i64 %.sroa.02.012.i + store i8 -1, ptr %280, align 1 + %281 = load ptr, ptr %0, align 8, !alias.scope !143, !nonnull !5, !noundef !5 + %282 = getelementptr i8, ptr %281, i64 %278 + %283 = getelementptr i8, ptr %282, i64 16 + store i8 -1, ptr %283, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %250, ptr noundef nonnull align 1 dereferenceable(56) %202, i64 56, i1 false) + br label %284 + +284: ; preds = %275, %261, %195 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %205 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %195 -295: ; preds = %203 - %296 = landingpad { ptr, i32 } +285: ; preds = %193 + %286 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %294 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %284 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !143 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %297 = lshr i64 %.pre23.i, 3 - %298 = mul nuw i64 %297, 7 - %299 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %299, i64 %.pre22.i.fr, i64 %298 + %287 = lshr i64 %.pre23.i, 3 + %288 = mul nuw i64 %287, 7 + %289 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %289, i64 %.pre22.i.fr, i64 %288 %.pre = load i64, ptr %13, align 8, !alias.scope !143 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %300 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %301 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %302 = getelementptr inbounds i8, ptr %0, i64 16 - %303 = sub i64 %301, %300 - store i64 %303, ptr %302, align 8, !alias.scope !143 + %290 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %291 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %292 = getelementptr inbounds i8, ptr %0, i64 16 + %293 = sub i64 %291, %290 + store i64 %293, ptr %292, align 8, !alias.scope !143 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !143 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hf61217a1aab6988eE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hf61217a1aab6988eE.exit: ; preds = %85, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %85 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h77391f649ef07bf9E.exit" ] - %304 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %305 = insertvalue { i64, i64 } %304, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %305 + %294 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %295 = insertvalue { i64, i64 } %294, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %295 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/3rjno8am3tsn5qrm.ll b/bench/diesel-rs/optimized/3rjno8am3tsn5qrm.ll index e2047cc35ed..2d8ba88fe52 100644 --- a/bench/diesel-rs/optimized/3rjno8am3tsn5qrm.ll +++ b/bench/diesel-rs/optimized/3rjno8am3tsn5qrm.ll @@ -217,44 +217,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !33 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7df2875bdf929bcbE.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !33 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7df2875bdf929bcbE.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !33 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7df2875bdf929bcbE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7df2875bdf929bcbE.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7df2875bdf929bcbE.exit": ; preds = %1, %6, %22 ret void } @@ -499,7 +487,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %171 + br i1 %.not.i, label %30, label %166 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -630,11 +618,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %159 - %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %159 ] - %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %159 ] - %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %159 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %159 ] +.preheader: ; preds = %.preheader.lr.ph, %154 + %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %154 ] + %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %154 ] + %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %154 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %154 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -702,9 +690,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %111 = xor <2 x i64> %109, %110 store <2 x i64> %111, ptr %8, align 16, !noalias !123 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.3818221720845173907"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %133 unwind label %84 + to label %128 unwind label %84 -.thread71.loopexit: ; preds = %159 +.thread71.loopexit: ; preds = %154 %.pre113 = load i64, ptr %13, align 8, !alias.scope !125, !noalias !126 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !70 br label %.thread71 @@ -730,162 +718,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %115, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit", label %116 116: ; preds = %.thread71 - %117 = add i64 %.val3.i.i, 1 - %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 80) - %119 = extractvalue { i64, i1 } %118, 1 - %120 = xor i1 %119, true - call void @llvm.assume(i1 %120) - %121 = extractvalue { i64, i1 } %118, 0 - %122 = add i64 %.val3.i.i, 17 - %123 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %121, i64 %122) - %124 = extractvalue { i64, i1 } %123, 0 - %125 = extractvalue { i64, i1 } %123, 1 - %126 = icmp ult i64 %124, 9223372036854775793 - %127 = xor i1 %125, true - call void @llvm.assume(i1 %127) - call void @llvm.assume(i1 %126) - %128 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %128) - %129 = icmp eq i64 %124, 0 - br i1 %129, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit", label %130 - -130: ; preds = %116 - %131 = sub nsw i64 0, %121 - %132 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %131 - call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %124, i64 noundef 16) #19, !noalias !139 + %117 = mul i64 %.val3.i.i, 80 + %118 = add i64 %117, 95 + %119 = and i64 %118, -16 + %120 = add i64 %.val3.i.i, 17 + %121 = add nuw i64 %120, %119 + %122 = icmp ult i64 %121, 9223372036854775793 + call void @llvm.assume(i1 %122) + %123 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %123) + %124 = icmp eq i64 %121, 0 + br i1 %124, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit", label %125 + +125: ; preds = %116 + %126 = sub nsw i64 0, %119 + %127 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %126 + call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %121, i64 noundef 16) #19, !noalias !139 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit": ; preds = %.thread71, %116, %130 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit": ; preds = %.thread71, %116, %125 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !70 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h041af3a146b29a8bE.exit -133: ; preds = %.noexc7 - %134 = load <4 x i64>, ptr %8, align 16, !noalias !123 - %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) +128: ; preds = %.noexc7 + %129 = load <4 x i64>, ptr %8, align 16, !noalias !123 + %130 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %129) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !123 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !113 - %136 = and i64 %65, %135 - %137 = getelementptr inbounds i8, ptr %69, i64 %136 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %137, align 1, !noalias !140 - %138 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %139 = bitcast <16 x i1> %138 to i16 - %.not12.i.i = icmp eq i16 %139, 0 + %131 = and i64 %65, %130 + %132 = getelementptr inbounds i8, ptr %69, i64 %131 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %132, align 1, !noalias !140 + %133 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %134 = bitcast <16 x i1> %133 to i16 + %.not12.i.i = icmp eq i16 %134, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] - %.sroa.7.013.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] - %140 = add i64 %.sroa.7.013.i.i, 16 - %141 = add i64 %140, %.sroa.0.014.i.i - %142 = and i64 %141, %65 - %143 = getelementptr inbounds i8, ptr %69, i64 %142 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %143, align 1, !noalias !140 - %144 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %145 = bitcast <16 x i1> %144 to i16 - %.not.i.i = icmp eq i16 %145, 0 +.lr.ph.i.i: ; preds = %128, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ %131, %128 ] + %.sroa.7.013.i.i = phi i64 [ %135, %.lr.ph.i.i ], [ 0, %128 ] + %135 = add i64 %.sroa.7.013.i.i, 16 + %136 = add i64 %135, %.sroa.0.014.i.i + %137 = and i64 %136, %65 + %138 = getelementptr inbounds i8, ptr %69, i64 %137 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %138, align 1, !noalias !140 + %139 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %140 = bitcast <16 x i1> %139 to i16 + %.not.i.i = icmp eq i16 %140, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 - %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] - %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 - %147 = zext nneg i16 %146 to i64 - %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 - %149 = and i64 %148, %65 - %150 = getelementptr inbounds i8, ptr %69, i64 %149 - %151 = load i8, ptr %150, align 1, !noalias !147, !noundef !5 - %152 = icmp sgt i8 %151, -1 - br i1 %152, label %153, label %159 - -153: ; preds = %._crit_edge.i.i - %154 = load <16 x i8>, ptr %69, align 16, !noalias !148 - %155 = icmp slt <16 x i8> %154, zeroinitializer - %156 = bitcast <16 x i1> %155 to i16 - %.not.i.i.i = icmp ne i16 %156, 0 - %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !39 - %158 = zext nneg i16 %157 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %128 + %.sroa.0.0.lcssa.i.i = phi i64 [ %131, %128 ], [ %137, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %134, %128 ], [ %140, %.lr.ph.i.i ] + %141 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 + %142 = zext nneg i16 %141 to i64 + %143 = add i64 %.sroa.0.0.lcssa.i.i, %142 + %144 = and i64 %143, %65 + %145 = getelementptr inbounds i8, ptr %69, i64 %144 + %146 = load i8, ptr %145, align 1, !noalias !147, !noundef !5 + %147 = icmp sgt i8 %146, -1 + br i1 %147, label %148, label %154 + +148: ; preds = %._crit_edge.i.i + %149 = load <16 x i8>, ptr %69, align 16, !noalias !148 + %150 = icmp slt <16 x i8> %149, zeroinitializer + %151 = bitcast <16 x i1> %150 to i16 + %.not.i.i.i = icmp ne i16 %151, 0 + %152 = call i16 @llvm.cttz.i16(i16 %151, i1 true), !range !39 + %153 = zext nneg i16 %152 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %159 - -159: ; preds = %153, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] - %160 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 - %161 = lshr i64 %135, 57 - %162 = trunc i64 %161 to i8 - %163 = add i64 %.0.i.i.i9, -16 - %164 = and i64 %163, %65 - store i8 %162, ptr %160, align 1, !noalias !147 - %gep = getelementptr i8, ptr %invariant.gep, i64 %164 - store i8 %162, ptr %gep, align 1, !noalias !147 - %165 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 + br label %154 + +154: ; preds = %148, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %153, %148 ], [ %144, %._crit_edge.i.i ] + %155 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 + %156 = lshr i64 %130, 57 + %157 = trunc i64 %156 to i8 + %158 = add i64 %.0.i.i.i9, -16 + %159 = and i64 %158, %65 + store i8 %157, ptr %155, align 1, !noalias !147 + %gep = getelementptr i8, ptr %invariant.gep, i64 %159 + store i8 %157, ptr %gep, align 1, !noalias !147 + %160 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %97, -80 - %166 = getelementptr i8, ptr %165, i64 %.neg.i.i - %167 = getelementptr i8, ptr %166, i64 -80 - %168 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 + %161 = getelementptr i8, ptr %160, i64 %.neg.i.i + %162 = getelementptr i8, ptr %161, i64 -80 + %163 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -80 - %169 = getelementptr i8, ptr %168, i64 %.neg28.i.i - %170 = getelementptr i8, ptr %169, i64 -80 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %170, ptr noundef nonnull align 1 dereferenceable(80) %167, i64 80, i1 false) + %164 = getelementptr i8, ptr %163, i64 %.neg28.i.i + %165 = getelementptr i8, ptr %164, i64 -80 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %165, ptr noundef nonnull align 1 dereferenceable(80) %162, i64 80, i1 false) %.not = icmp eq i64 %98, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %196, %84 - %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %197, %196 ] +common.resume: ; preds = %191, %84 + %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %192, %191 ] resume { ptr, i32 } %common.resume.op -171: ; preds = %22 +166: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !151) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !151 - %172 = lshr i64 %26, 4 - %173 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %173, 0 - %174 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %172, %174 + %167 = lshr i64 %26, 4 + %168 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %168, 0 + %169 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %167, %169 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %171 - %175 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %175) - br label %180 - -._crit_edge.i.i12: ; preds = %180, %171 - %176 = icmp ult i64 %26, 16 - %177 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %177) - %178 = getelementptr inbounds i8, ptr %7, i64 8 - %179 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %176, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -180: ; preds = %180, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %182, %180 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %181, %180 ] - %181 = add nsw i64 %.sroa.5.05.i.i, -1 - %182 = add i64 %.sroa.01.06.i.i, 16 - %183 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %184 = load <16 x i8>, ptr %183, align 16, !noalias !154 - %.lobit.i.i.i = ashr <16 x i8> %184, - %185 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %186 = or <2 x i64> %185, - store <2 x i64> %186, ptr %183, align 16, !noalias !157 - %.not.not.i.i = icmp eq i64 %181, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %180 +.lr.ph.i.i11: ; preds = %166 + %170 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %170) + br label %175 + +._crit_edge.i.i12: ; preds = %175, %166 + %171 = icmp ult i64 %26, 16 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + %173 = getelementptr inbounds i8, ptr %7, i64 8 + %174 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %171, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +175: ; preds = %175, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %177, %175 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %176, %175 ] + %176 = add nsw i64 %.sroa.5.05.i.i, -1 + %177 = add i64 %.sroa.01.06.i.i, 16 + %178 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %179 = load <16 x i8>, ptr %178, align 16, !noalias !154 + %.lobit.i.i.i = ashr <16 x i8> %179, + %180 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %181 = or <2 x i64> %180, + store <2 x i64> %181, ptr %178, align 16, !noalias !157 + %.not.not.i.i = icmp eq i64 %176, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %175 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %187 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %187, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 + %182 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %182, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17h94f020505884450eE.llvm.10619471719848361220", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17h94f020505884450eE.llvm.10619471719848361220", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %188 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %188, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 + %183 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %183, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17h94f020505884450eE.llvm.10619471719848361220", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17h94f020505884450eE.llvm.10619471719848361220", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -894,229 +875,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %189 = getelementptr inbounds i8, ptr %6, i64 56 - %190 = getelementptr inbounds i8, ptr %5, i64 24 - %191 = load <2 x i64>, ptr %2, align 8 - %192 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> zeroinitializer - %193 = xor <2 x i64> %192, - %194 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> - %195 = xor <2 x i64> %194, - br label %198 - -196: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i - %197 = landingpad { ptr, i32 } + %184 = getelementptr inbounds i8, ptr %6, i64 56 + %185 = getelementptr inbounds i8, ptr %5, i64 24 + %186 = load <2 x i64>, ptr %2, align 8 + %187 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> zeroinitializer + %188 = xor <2 x i64> %187, + %189 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> + %190 = xor <2 x i64> %189, + br label %193 + +191: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i + %192 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3c6ff38c5ccd1e18E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %288 - -198: ; preds = %287, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %199, %287 ] - %199 = add nuw i64 %.sroa.02.012.i, 1 - %200 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %201 = getelementptr inbounds i8, ptr %200, i64 %.sroa.02.012.i - %202 = load i8, ptr %201, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %202, -128 - br i1 %.not.i13, label %203, label %287 - -203: ; preds = %198 + to label %common.resume unwind label %283 + +193: ; preds = %282, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %194, %282 ] + %194 = add nuw i64 %.sroa.02.012.i, 1 + %195 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %196 = getelementptr inbounds i8, ptr %195, i64 %.sroa.02.012.i + %197 = load i8, ptr %196, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %197, -128 + br i1 %.not.i13, label %198, label %282 + +198: ; preds = %193 %.neg.i = mul i64 %.sroa.02.012.i, -80 - %204 = getelementptr i8, ptr %200, i64 %.neg.i - %205 = getelementptr i8, ptr %204, i64 -80 - %206 = sub nsw i64 0, %.sroa.02.012.i + %199 = getelementptr i8, ptr %195, i64 %.neg.i + %200 = getelementptr i8, ptr %199, i64 -80 + %201 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i _ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !160, !noalias !163 br label %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i -_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i, %203 - %207 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i ], [ %200, %203 ] +_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i, %198 + %202 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i ], [ %195, %198 ] call void @llvm.experimental.noalias.scope.decl(metadata !165) - %208 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %207, i64 %206 - %209 = getelementptr inbounds i8, ptr %208, i64 -80 + %203 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %202, i64 %201 + %204 = getelementptr inbounds i8, ptr %203, i64 -80 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !166 - store <2 x i64> %193, ptr %6, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %195, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %191, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %188, ptr %6, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %190, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %186, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !172, !noalias !175 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h56e10284a0a3a387E.llvm.3818221720845173907"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %209, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %196 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h56e10284a0a3a387E.llvm.3818221720845173907"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %204, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %191 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !177) call void @llvm.experimental.noalias.scope.decl(metadata !180) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !166 - %210 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 - %211 = shl i64 %210, 56 - %212 = load i64, ptr %189, align 8, !alias.scope !184, !noalias !166, !noundef !5 - %213 = or i64 %211, %212 - %214 = load i64, ptr %190, align 8, !noalias !183, !noundef !5 - %215 = xor i64 %214, %213 - store i64 %215, ptr %190, align 8, !noalias !183 + %205 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 + %206 = shl i64 %205, 56 + %207 = load i64, ptr %184, align 8, !alias.scope !184, !noalias !166, !noundef !5 + %208 = or i64 %206, %207 + %209 = load i64, ptr %185, align 8, !noalias !183, !noundef !5 + %210 = xor i64 %209, %208 + store i64 %210, ptr %185, align 8, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.3818221720845173907"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %196 + to label %.noexc18.i unwind label %191 .noexc18.i: ; preds = %.noexc.i16 - %216 = load <2 x i64>, ptr %5, align 16, !noalias !183 - %217 = insertelement <2 x i64> , i64 %213, i64 0 - %218 = xor <2 x i64> %216, %217 - store <2 x i64> %218, ptr %5, align 16, !noalias !183 + %211 = load <2 x i64>, ptr %5, align 16, !noalias !183 + %212 = insertelement <2 x i64> , i64 %208, i64 0 + %213 = xor <2 x i64> %211, %212 + store <2 x i64> %213, ptr %5, align 16, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.3818221720845173907"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %219 unwind label %196 + to label %214 unwind label %191 -219: ; preds = %.noexc18.i - %220 = load <4 x i64>, ptr %5, align 16, !noalias !183 - %221 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %220) +214: ; preds = %.noexc18.i + %215 = load <4 x i64>, ptr %5, align 16, !noalias !183 + %216 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %215) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !166 - %222 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %223 = and i64 %222, %221 - %224 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %225 = getelementptr inbounds i8, ptr %224, i64 %223 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %225, align 1, !noalias !185 - %226 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %227 = bitcast <16 x i1> %226 to i16 - %.not12.i.i18 = icmp eq i16 %227, 0 + %217 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %218 = and i64 %217, %216 + %219 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %220 = getelementptr inbounds i8, ptr %219, i64 %218 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %220, align 1, !noalias !185 + %221 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %222 = bitcast <16 x i1> %221 to i16 + %.not12.i.i18 = icmp eq i16 %222, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %219, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %230, %.lr.ph.i21.i ], [ %223, %219 ] - %.sroa.7.013.i.i25 = phi i64 [ %228, %.lr.ph.i21.i ], [ 0, %219 ] - %228 = add i64 %.sroa.7.013.i.i25, 16 - %229 = add i64 %228, %.sroa.0.014.i.i24 - %230 = and i64 %229, %222 - %231 = getelementptr inbounds i8, ptr %224, i64 %230 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %231, align 1, !noalias !185 - %232 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %233 = bitcast <16 x i1> %232 to i16 - %.not.i.i27 = icmp eq i16 %233, 0 +.lr.ph.i21.i: ; preds = %214, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %225, %.lr.ph.i21.i ], [ %218, %214 ] + %.sroa.7.013.i.i25 = phi i64 [ %223, %.lr.ph.i21.i ], [ 0, %214 ] + %223 = add i64 %.sroa.7.013.i.i25, 16 + %224 = add i64 %223, %.sroa.0.014.i.i24 + %225 = and i64 %224, %217 + %226 = getelementptr inbounds i8, ptr %219, i64 %225 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %226, align 1, !noalias !185 + %227 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %228 = bitcast <16 x i1> %227 to i16 + %.not.i.i27 = icmp eq i16 %228, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %219 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %223, %219 ], [ %230, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %227, %219 ], [ %233, %.lr.ph.i21.i ] - %234 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 - %235 = zext nneg i16 %234 to i64 - %236 = add i64 %.sroa.0.0.lcssa.i.i19, %235 - %237 = and i64 %236, %222 - %238 = getelementptr inbounds i8, ptr %224, i64 %237 - %239 = load i8, ptr %238, align 1, !noalias !190, !noundef !5 - %240 = icmp sgt i8 %239, -1 - br i1 %240, label %241, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i - -241: ; preds = %._crit_edge.i20.i - %242 = load <16 x i8>, ptr %224, align 16, !noalias !191 - %243 = icmp slt <16 x i8> %242, zeroinitializer - %244 = bitcast <16 x i1> %243 to i16 - %.not.i.i.i23 = icmp ne i16 %244, 0 - %245 = call i16 @llvm.cttz.i16(i16 %244, i1 true), !range !39 - %246 = zext nneg i16 %245 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %214 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %218, %214 ], [ %225, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %222, %214 ], [ %228, %.lr.ph.i21.i ] + %229 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 + %230 = zext nneg i16 %229 to i64 + %231 = add i64 %.sroa.0.0.lcssa.i.i19, %230 + %232 = and i64 %231, %217 + %233 = getelementptr inbounds i8, ptr %219, i64 %232 + %234 = load i8, ptr %233, align 1, !noalias !190, !noundef !5 + %235 = icmp sgt i8 %234, -1 + br i1 %235, label %236, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i + +236: ; preds = %._crit_edge.i20.i + %237 = load <16 x i8>, ptr %219, align 16, !noalias !191 + %238 = icmp slt <16 x i8> %237, zeroinitializer + %239 = bitcast <16 x i1> %238 to i16 + %.not.i.i.i23 = icmp ne i16 %239, 0 + %240 = call i16 @llvm.cttz.i16(i16 %239, i1 true), !range !39 + %241 = zext nneg i16 %240 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i: ; preds = %241, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %246, %241 ], [ %237, %._crit_edge.i20.i ] - %247 = sub i64 %.sroa.02.012.i, %223 - %248 = sub i64 %.0.i.i.i21, %223 - %249 = xor i64 %248, %247 - %.unshifted.i = and i64 %249, %222 - %250 = icmp ult i64 %.unshifted.i, 16 - br i1 %250, label %264, label %251 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i: ; preds = %236, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %241, %236 ], [ %232, %._crit_edge.i20.i ] + %242 = sub i64 %.sroa.02.012.i, %218 + %243 = sub i64 %.0.i.i.i21, %218 + %244 = xor i64 %243, %242 + %.unshifted.i = and i64 %244, %217 + %245 = icmp ult i64 %.unshifted.i, 16 + br i1 %245, label %259, label %246 -251: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i +246: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -80 - %252 = getelementptr i8, ptr %224, i64 %.neg16.i - %253 = getelementptr i8, ptr %252, i64 -80 - %254 = getelementptr inbounds i8, ptr %224, i64 %.0.i.i.i21 - %255 = load i8, ptr %254, align 1, !noundef !5 - %256 = lshr i64 %221, 57 - %257 = trunc i64 %256 to i8 - %258 = add i64 %.0.i.i.i21, -16 - %259 = and i64 %258, %222 - store i8 %257, ptr %254, align 1 - %260 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %261 = getelementptr i8, ptr %260, i64 %259 - %262 = getelementptr i8, ptr %261, i64 16 - store i8 %257, ptr %262, align 1 - %263 = icmp eq i8 %255, -1 - br i1 %263, label %278, label %.preheader.i - -264: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i - %265 = lshr i64 %221, 57 - %266 = trunc i64 %265 to i8 - %267 = add i64 %.sroa.02.012.i, -16 - %268 = and i64 %222, %267 - %269 = getelementptr inbounds i8, ptr %224, i64 %.sroa.02.012.i - store i8 %266, ptr %269, align 1 - %270 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %271 = getelementptr i8, ptr %270, i64 %268 - %272 = getelementptr i8, ptr %271, i64 16 - store i8 %266, ptr %272, align 1 - br label %287 - -.preheader.i: ; preds = %251, %.preheader.i - %.0910.i.i = phi i64 [ %277, %.preheader.i ], [ 0, %251 ] - %273 = getelementptr inbounds i8, ptr %205, i64 %.0910.i.i - %274 = getelementptr inbounds i8, ptr %253, i64 %.0910.i.i - %275 = load i8, ptr %273, align 1 - %276 = load i8, ptr %274, align 1 - store i8 %276, ptr %273, align 1 - store i8 %275, ptr %274, align 1 - %277 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %277, 80 + %247 = getelementptr i8, ptr %219, i64 %.neg16.i + %248 = getelementptr i8, ptr %247, i64 -80 + %249 = getelementptr inbounds i8, ptr %219, i64 %.0.i.i.i21 + %250 = load i8, ptr %249, align 1, !noundef !5 + %251 = lshr i64 %216, 57 + %252 = trunc i64 %251 to i8 + %253 = add i64 %.0.i.i.i21, -16 + %254 = and i64 %253, %217 + store i8 %252, ptr %249, align 1 + %255 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %256 = getelementptr i8, ptr %255, i64 %254 + %257 = getelementptr i8, ptr %256, i64 16 + store i8 %252, ptr %257, align 1 + %258 = icmp eq i8 %250, -1 + br i1 %258, label %273, label %.preheader.i + +259: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.10619471719848361220.exit.i + %260 = lshr i64 %216, 57 + %261 = trunc i64 %260 to i8 + %262 = add i64 %.sroa.02.012.i, -16 + %263 = and i64 %217, %262 + %264 = getelementptr inbounds i8, ptr %219, i64 %.sroa.02.012.i + store i8 %261, ptr %264, align 1 + %265 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %266 = getelementptr i8, ptr %265, i64 %263 + %267 = getelementptr i8, ptr %266, i64 16 + store i8 %261, ptr %267, align 1 + br label %282 + +.preheader.i: ; preds = %246, %.preheader.i + %.0910.i.i = phi i64 [ %272, %.preheader.i ], [ 0, %246 ] + %268 = getelementptr inbounds i8, ptr %200, i64 %.0910.i.i + %269 = getelementptr inbounds i8, ptr %248, i64 %.0910.i.i + %270 = load i8, ptr %268, align 1 + %271 = load i8, ptr %269, align 1 + store i8 %271, ptr %268, align 1 + store i8 %270, ptr %269, align 1 + %272 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %272, 80 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17hed11feac4af4255aE.exit.loopexit.i, label %.preheader.i -278: ; preds = %251 - %279 = add i64 %.sroa.02.012.i, -16 - %280 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %281 = and i64 %280, %279 - %282 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %283 = getelementptr inbounds i8, ptr %282, i64 %.sroa.02.012.i - store i8 -1, ptr %283, align 1 - %284 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %285 = getelementptr i8, ptr %284, i64 %281 - %286 = getelementptr i8, ptr %285, i64 16 - store i8 -1, ptr %286, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %253, ptr noundef nonnull align 1 dereferenceable(80) %205, i64 80, i1 false) - br label %287 - -287: ; preds = %278, %264, %198 +273: ; preds = %246 + %274 = add i64 %.sroa.02.012.i, -16 + %275 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %276 = and i64 %275, %274 + %277 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %278 = getelementptr inbounds i8, ptr %277, i64 %.sroa.02.012.i + store i8 -1, ptr %278, align 1 + %279 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %280 = getelementptr i8, ptr %279, i64 %276 + %281 = getelementptr i8, ptr %280, i64 16 + store i8 -1, ptr %281, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %248, ptr noundef nonnull align 1 dereferenceable(80) %200, i64 80, i1 false) + br label %282 + +282: ; preds = %273, %259, %193 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %198 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %193 -288: ; preds = %196 - %289 = landingpad { ptr, i32 } +283: ; preds = %191 + %284 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %287 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %282 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !151 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %290 = lshr i64 %.pre23.i, 3 - %291 = mul nuw i64 %290, 7 - %292 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %292, i64 %.pre22.i.fr, i64 %291 + %285 = lshr i64 %.pre23.i, 3 + %286 = mul nuw i64 %285, 7 + %287 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %287, i64 %.pre22.i.fr, i64 %286 %.pre = load i64, ptr %13, align 8, !alias.scope !151 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %293 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %294 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %295 = getelementptr inbounds i8, ptr %0, i64 16 - %296 = sub i64 %294, %293 - store i64 %296, ptr %295, align 8, !alias.scope !151 + %288 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %289 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %290 = getelementptr inbounds i8, ptr %0, i64 16 + %291 = sub i64 %289, %288 + store i64 %291, ptr %290, align 8, !alias.scope !151 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !151 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h041af3a146b29a8bE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h041af3a146b29a8bE.exit: ; preds = %83, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %83 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %83 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hae56c44e54d0df24E.exit" ] - %297 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %298 = insertvalue { i64, i64 } %297, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %298 + %292 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %293 = insertvalue { i64, i64 } %292, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %293 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/46661qc4yjpbja0f.ll b/bench/diesel-rs/optimized/46661qc4yjpbja0f.ll index a7807162b94..519e10908a9 100644 --- a/bench/diesel-rs/optimized/46661qc4yjpbja0f.ll +++ b/bench/diesel-rs/optimized/46661qc4yjpbja0f.ll @@ -217,44 +217,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %7 = getelementptr inbounds i8, ptr %0, i64 8 %.val.i = load i64, ptr %7, align 8, !alias.scope !33 %8 = add i64 %.val3.i, 1 - %9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.val.i, i64 %8) - %10 = extractvalue { i64, i1 } %9, 1 - %11 = xor i1 %10, true - tail call void @llvm.assume(i1 %11) - %12 = extractvalue { i64, i1 } %9, 0 - %13 = add i64 %.val1.i, -1 - %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %13) - %15 = extractvalue { i64, i1 } %14, 1 - %16 = xor i1 %15, true - tail call void @llvm.assume(i1 %16) - %17 = extractvalue { i64, i1 } %14, 0 - %18 = sub i64 0, %.val1.i - %19 = and i64 %17, %18 - %20 = add i64 %.val3.i, 17 - %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 - %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true - tail call void @llvm.assume(i1 %26) - tail call void @llvm.assume(i1 %25) - %27 = icmp ult i64 %.val1.i, -9223372036854775807 - tail call void @llvm.assume(i1 %27) - %28 = icmp ne i64 %.val1.i, 0 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.val2.i, null - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 - br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17habc12c5641495a19E.exit", label %31 - -31: ; preds = %6 - %32 = sub nsw i64 0, %19 - %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !33 + %9 = mul nuw i64 %.val.i, %8 + %10 = add i64 %.val1.i, -1 + %11 = add nuw i64 %10, %9 + %12 = sub i64 0, %.val1.i + %13 = and i64 %11, %12 + %14 = add i64 %.val3.i, 17 + %15 = add nuw i64 %14, %13 + %16 = sub nuw i64 -9223372036854775808, %.val1.i + %17 = icmp ule i64 %15, %16 + tail call void @llvm.assume(i1 %17) + %18 = icmp ult i64 %.val1.i, -9223372036854775807 + tail call void @llvm.assume(i1 %18) + %19 = icmp ne i64 %.val1.i, 0 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne ptr %.val2.i, null + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %15, 0 + br i1 %21, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17habc12c5641495a19E.exit", label %22 + +22: ; preds = %6 + %23 = sub nsw i64 0, %13 + %24 = getelementptr inbounds i8, ptr %.val2.i, i64 %23 + tail call void @__rust_dealloc(ptr noundef nonnull %24, i64 noundef %15, i64 noundef %.val1.i) #19, !noalias !33 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17habc12c5641495a19E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17habc12c5641495a19E.exit": ; preds = %1, %6, %31 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17habc12c5641495a19E.exit": ; preds = %1, %6, %22 ret void } @@ -499,7 +487,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %171 + br i1 %.not.i, label %30, label %166 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -630,11 +618,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #17 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %159 - %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %159 ] - %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %159 ] - %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %159 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %159 ] +.preheader: ; preds = %.preheader.lr.ph, %154 + %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %154 ] + %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %154 ] + %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %154 ] + %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %154 ] %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 br i1 %.not.not.i90, label %.noexc2, label %._crit_edge @@ -702,9 +690,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %111 = xor <2 x i64> %109, %110 store <2 x i64> %111, ptr %8, align 16, !noalias !123 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.8737466266532557522"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) - to label %133 unwind label %84 + to label %128 unwind label %84 -.thread71.loopexit: ; preds = %159 +.thread71.loopexit: ; preds = %154 %.pre113 = load i64, ptr %13, align 8, !alias.scope !125, !noalias !126 %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !70 br label %.thread71 @@ -730,162 +718,155 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %115, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit", label %116 116: ; preds = %.thread71 - %117 = add i64 %.val3.i.i, 1 - %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 80) - %119 = extractvalue { i64, i1 } %118, 1 - %120 = xor i1 %119, true - call void @llvm.assume(i1 %120) - %121 = extractvalue { i64, i1 } %118, 0 - %122 = add i64 %.val3.i.i, 17 - %123 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %121, i64 %122) - %124 = extractvalue { i64, i1 } %123, 0 - %125 = extractvalue { i64, i1 } %123, 1 - %126 = icmp ult i64 %124, 9223372036854775793 - %127 = xor i1 %125, true - call void @llvm.assume(i1 %127) - call void @llvm.assume(i1 %126) - %128 = icmp ne ptr %.val2.i.i, null - call void @llvm.assume(i1 %128) - %129 = icmp eq i64 %124, 0 - br i1 %129, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit", label %130 - -130: ; preds = %116 - %131 = sub nsw i64 0, %121 - %132 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %131 - call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %124, i64 noundef 16) #19, !noalias !139 + %117 = mul i64 %.val3.i.i, 80 + %118 = add i64 %117, 95 + %119 = and i64 %118, -16 + %120 = add i64 %.val3.i.i, 17 + %121 = add nuw i64 %120, %119 + %122 = icmp ult i64 %121, 9223372036854775793 + call void @llvm.assume(i1 %122) + %123 = icmp ne ptr %.val2.i.i, null + call void @llvm.assume(i1 %123) + %124 = icmp eq i64 %121, 0 + br i1 %124, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit", label %125 + +125: ; preds = %116 + %126 = sub nsw i64 0, %119 + %127 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %126 + call void @__rust_dealloc(ptr noundef nonnull %127, i64 noundef %121, i64 noundef 16) #19, !noalias !139 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit": ; preds = %.thread71, %116, %130 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit": ; preds = %.thread71, %116, %125 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !70 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h2e51d8e62ed31302E.exit -133: ; preds = %.noexc7 - %134 = load <4 x i64>, ptr %8, align 16, !noalias !123 - %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) +128: ; preds = %.noexc7 + %129 = load <4 x i64>, ptr %8, align 16, !noalias !123 + %130 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %129) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !123 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !113 - %136 = and i64 %65, %135 - %137 = getelementptr inbounds i8, ptr %69, i64 %136 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %137, align 1, !noalias !140 - %138 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %139 = bitcast <16 x i1> %138 to i16 - %.not12.i.i = icmp eq i16 %139, 0 + %131 = and i64 %65, %130 + %132 = getelementptr inbounds i8, ptr %69, i64 %131 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %132, align 1, !noalias !140 + %133 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %134 = bitcast <16 x i1> %133 to i16 + %.not12.i.i = icmp eq i16 %134, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] - %.sroa.7.013.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] - %140 = add i64 %.sroa.7.013.i.i, 16 - %141 = add i64 %140, %.sroa.0.014.i.i - %142 = and i64 %141, %65 - %143 = getelementptr inbounds i8, ptr %69, i64 %142 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %143, align 1, !noalias !140 - %144 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %145 = bitcast <16 x i1> %144 to i16 - %.not.i.i = icmp eq i16 %145, 0 +.lr.ph.i.i: ; preds = %128, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ %131, %128 ] + %.sroa.7.013.i.i = phi i64 [ %135, %.lr.ph.i.i ], [ 0, %128 ] + %135 = add i64 %.sroa.7.013.i.i, 16 + %136 = add i64 %135, %.sroa.0.014.i.i + %137 = and i64 %136, %65 + %138 = getelementptr inbounds i8, ptr %69, i64 %137 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %138, align 1, !noalias !140 + %139 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %140 = bitcast <16 x i1> %139 to i16 + %.not.i.i = icmp eq i16 %140, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 - %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] - %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 - %147 = zext nneg i16 %146 to i64 - %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 - %149 = and i64 %148, %65 - %150 = getelementptr inbounds i8, ptr %69, i64 %149 - %151 = load i8, ptr %150, align 1, !noalias !147, !noundef !5 - %152 = icmp sgt i8 %151, -1 - br i1 %152, label %153, label %159 - -153: ; preds = %._crit_edge.i.i - %154 = load <16 x i8>, ptr %69, align 16, !noalias !148 - %155 = icmp slt <16 x i8> %154, zeroinitializer - %156 = bitcast <16 x i1> %155 to i16 - %.not.i.i.i = icmp ne i16 %156, 0 - %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !39 - %158 = zext nneg i16 %157 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %128 + %.sroa.0.0.lcssa.i.i = phi i64 [ %131, %128 ], [ %137, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %134, %128 ], [ %140, %.lr.ph.i.i ] + %141 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !39 + %142 = zext nneg i16 %141 to i64 + %143 = add i64 %.sroa.0.0.lcssa.i.i, %142 + %144 = and i64 %143, %65 + %145 = getelementptr inbounds i8, ptr %69, i64 %144 + %146 = load i8, ptr %145, align 1, !noalias !147, !noundef !5 + %147 = icmp sgt i8 %146, -1 + br i1 %147, label %148, label %154 + +148: ; preds = %._crit_edge.i.i + %149 = load <16 x i8>, ptr %69, align 16, !noalias !148 + %150 = icmp slt <16 x i8> %149, zeroinitializer + %151 = bitcast <16 x i1> %150 to i16 + %.not.i.i.i = icmp ne i16 %151, 0 + %152 = call i16 @llvm.cttz.i16(i16 %151, i1 true), !range !39 + %153 = zext nneg i16 %152 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %159 - -159: ; preds = %153, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] - %160 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 - %161 = lshr i64 %135, 57 - %162 = trunc i64 %161 to i8 - %163 = add i64 %.0.i.i.i9, -16 - %164 = and i64 %163, %65 - store i8 %162, ptr %160, align 1, !noalias !147 - %gep = getelementptr i8, ptr %invariant.gep, i64 %164 - store i8 %162, ptr %gep, align 1, !noalias !147 - %165 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 + br label %154 + +154: ; preds = %148, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %153, %148 ], [ %144, %._crit_edge.i.i ] + %155 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i9 + %156 = lshr i64 %130, 57 + %157 = trunc i64 %156 to i8 + %158 = add i64 %.0.i.i.i9, -16 + %159 = and i64 %158, %65 + store i8 %157, ptr %155, align 1, !noalias !147 + %gep = getelementptr i8, ptr %invariant.gep, i64 %159 + store i8 %157, ptr %gep, align 1, !noalias !147 + %160 = load ptr, ptr %0, align 8, !alias.scope !125, !noalias !126, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %97, -80 - %166 = getelementptr i8, ptr %165, i64 %.neg.i.i - %167 = getelementptr i8, ptr %166, i64 -80 - %168 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 + %161 = getelementptr i8, ptr %160, i64 %.neg.i.i + %162 = getelementptr i8, ptr %161, i64 -80 + %163 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !70, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i9, -80 - %169 = getelementptr i8, ptr %168, i64 %.neg28.i.i - %170 = getelementptr i8, ptr %169, i64 -80 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %170, ptr noundef nonnull align 1 dereferenceable(80) %167, i64 80, i1 false) + %164 = getelementptr i8, ptr %163, i64 %.neg28.i.i + %165 = getelementptr i8, ptr %164, i64 -80 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %165, ptr noundef nonnull align 1 dereferenceable(80) %162, i64 80, i1 false) %.not = icmp eq i64 %98, 0 br i1 %.not, label %.thread71.loopexit, label %.preheader -common.resume: ; preds = %196, %84 - %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %197, %196 ] +common.resume: ; preds = %191, %84 + %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %192, %191 ] resume { ptr, i32 } %common.resume.op -171: ; preds = %22 +166: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !151) %.val.i10 = load ptr, ptr %0, align 8, !alias.scope !151 - %172 = lshr i64 %26, 4 - %173 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %173, 0 - %174 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %172, %174 + %167 = lshr i64 %26, 4 + %168 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %168, 0 + %169 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %167, %169 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i12, label %.lr.ph.i.i11 -.lr.ph.i.i11: ; preds = %171 - %175 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %175) - br label %180 - -._crit_edge.i.i12: ; preds = %180, %171 - %176 = icmp ult i64 %26, 16 - %177 = icmp ne ptr %.val.i10, null - tail call void @llvm.assume(i1 %177) - %178 = getelementptr inbounds i8, ptr %7, i64 8 - %179 = getelementptr inbounds i8, ptr %7, i64 16 - br i1 %176, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -180: ; preds = %180, %.lr.ph.i.i11 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %182, %180 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %181, %180 ] - %181 = add nsw i64 %.sroa.5.05.i.i, -1 - %182 = add i64 %.sroa.01.06.i.i, 16 - %183 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i - %184 = load <16 x i8>, ptr %183, align 16, !noalias !154 - %.lobit.i.i.i = ashr <16 x i8> %184, - %185 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %186 = or <2 x i64> %185, - store <2 x i64> %186, ptr %183, align 16, !noalias !157 - %.not.not.i.i = icmp eq i64 %181, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %180 +.lr.ph.i.i11: ; preds = %166 + %170 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %170) + br label %175 + +._crit_edge.i.i12: ; preds = %175, %166 + %171 = icmp ult i64 %26, 16 + %172 = icmp ne ptr %.val.i10, null + tail call void @llvm.assume(i1 %172) + %173 = getelementptr inbounds i8, ptr %7, i64 8 + %174 = getelementptr inbounds i8, ptr %7, i64 16 + br i1 %171, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +175: ; preds = %175, %.lr.ph.i.i11 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i11 ], [ %177, %175 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i11 ], [ %176, %175 ] + %176 = add nsw i64 %.sroa.5.05.i.i, -1 + %177 = add i64 %.sroa.01.06.i.i, 16 + %178 = getelementptr inbounds i8, ptr %.val.i10, i64 %.sroa.01.06.i.i + %179 = load <16 x i8>, ptr %178, align 16, !noalias !154 + %.lobit.i.i.i = ashr <16 x i8> %179, + %180 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %181 = or <2 x i64> %180, + store <2 x i64> %181, ptr %178, align 16, !noalias !157 + %.not.not.i.i = icmp eq i64 %176, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i12, label %175 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i12 - %187 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %187, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 + %182 = getelementptr inbounds i8, ptr %.val.i10, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %182, ptr noundef nonnull align 1 dereferenceable(16) %.val.i10, i64 16, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hdf65a69935bf644cE.llvm.13220740530255529420", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hdf65a69935bf644cE.llvm.13220740530255529420", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i12 - %188 = getelementptr inbounds i8, ptr %.val.i10, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %188, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 + %183 = getelementptr inbounds i8, ptr %.val.i10, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %183, ptr nonnull align 1 %.val.i10, i64 %26, i1 false), !noalias !151 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !151 - store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hdf65a69935bf644cE.llvm.13220740530255529420", ptr %178, align 8, !noalias !151 - store i64 80, ptr %179, align 8, !noalias !151 + store ptr @"_ZN4core3ptr165drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..mysql..backend..Mysql$GT$$C$diesel..mysql..connection..stmt..Statement$RP$$GT$17hdf65a69935bf644cE.llvm.13220740530255529420", ptr %173, align 8, !noalias !151 + store i64 80, ptr %174, align 8, !noalias !151 store ptr %0, ptr %7, align 8, !noalias !151 %.not13.i = icmp eq i64 %26, 0 br i1 %.not13.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i @@ -894,229 +875,229 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 16 %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i = getelementptr inbounds i8, ptr %6, i64 48 - %189 = getelementptr inbounds i8, ptr %6, i64 56 - %190 = getelementptr inbounds i8, ptr %5, i64 24 - %191 = load <2 x i64>, ptr %2, align 8 - %192 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> zeroinitializer - %193 = xor <2 x i64> %192, - %194 = shufflevector <2 x i64> %191, <2 x i64> poison, <2 x i32> - %195 = xor <2 x i64> %194, - br label %198 - -196: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i - %197 = landingpad { ptr, i32 } + %184 = getelementptr inbounds i8, ptr %6, i64 56 + %185 = getelementptr inbounds i8, ptr %5, i64 24 + %186 = load <2 x i64>, ptr %2, align 8 + %187 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> zeroinitializer + %188 = xor <2 x i64> %187, + %189 = shufflevector <2 x i64> %186, <2 x i64> poison, <2 x i32> + %190 = xor <2 x i64> %189, + br label %193 + +191: ; preds = %.noexc18.i, %.noexc.i16, %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i + %192 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h6c168f9a0431104dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #17 - to label %common.resume unwind label %288 - -198: ; preds = %287, %.lr.ph.i - %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %199, %287 ] - %199 = add nuw i64 %.sroa.02.012.i, 1 - %200 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %201 = getelementptr inbounds i8, ptr %200, i64 %.sroa.02.012.i - %202 = load i8, ptr %201, align 1, !noundef !5 - %.not.i13 = icmp eq i8 %202, -128 - br i1 %.not.i13, label %203, label %287 - -203: ; preds = %198 + to label %common.resume unwind label %283 + +193: ; preds = %282, %.lr.ph.i + %.sroa.02.012.i = phi i64 [ 0, %.lr.ph.i ], [ %194, %282 ] + %194 = add nuw i64 %.sroa.02.012.i, 1 + %195 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %196 = getelementptr inbounds i8, ptr %195, i64 %.sroa.02.012.i + %197 = load i8, ptr %196, align 1, !noundef !5 + %.not.i13 = icmp eq i8 %197, -128 + br i1 %.not.i13, label %198, label %282 + +198: ; preds = %193 %.neg.i = mul i64 %.sroa.02.012.i, -80 - %204 = getelementptr i8, ptr %200, i64 %.neg.i - %205 = getelementptr i8, ptr %204, i64 -80 - %206 = sub nsw i64 0, %.sroa.02.012.i + %199 = getelementptr i8, ptr %195, i64 %.neg.i + %200 = getelementptr i8, ptr %199, i64 -80 + %201 = sub nsw i64 0, %.sroa.02.012.i br label %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i _ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i: ; preds = %.preheader.i %.pre.i22 = load ptr, ptr %0, align 8, !alias.scope !160, !noalias !163 br label %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i -_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i, %203 - %207 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i ], [ %200, %203 ] +_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i, %198 + %202 = phi ptr [ %.pre.i22, %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i ], [ %195, %198 ] call void @llvm.experimental.noalias.scope.decl(metadata !165) - %208 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %207, i64 %206 - %209 = getelementptr inbounds i8, ptr %208, i64 -80 + %203 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %202, i64 %201 + %204 = getelementptr inbounds i8, ptr %203, i64 -80 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %6), !noalias !166 - store <2 x i64> %193, ptr %6, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %195, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 - store <2 x i64> %191, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %188, ptr %6, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %190, ptr %.sroa.0.sroa.5.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 + store <2 x i64> %186, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !172, !noalias !175 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, i8 0, i64 24, i1 false), !alias.scope !172, !noalias !175 - invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h2eacf168ffc93d66E.llvm.8737466266532557522"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %209, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) - to label %.noexc.i16 unwind label %196 + invoke void @"_ZN101_$LT$diesel..connection..statement_cache..StatementCacheKey$LT$DB$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h2eacf168ffc93d66E.llvm.8737466266532557522"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %204, ptr noalias noundef nonnull align 8 dereferenceable(72) %6) + to label %.noexc.i16 unwind label %191 .noexc.i16: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.i call void @llvm.experimental.noalias.scope.decl(metadata !177) call void @llvm.experimental.noalias.scope.decl(metadata !180) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 16 dereferenceable(32) %6, i64 32, i1 false), !noalias !166 - %210 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 - %211 = shl i64 %210, 56 - %212 = load i64, ptr %189, align 8, !alias.scope !184, !noalias !166, !noundef !5 - %213 = or i64 %211, %212 - %214 = load i64, ptr %190, align 8, !noalias !183, !noundef !5 - %215 = xor i64 %214, %213 - store i64 %215, ptr %190, align 8, !noalias !183 + %205 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i.i, align 16, !alias.scope !184, !noalias !166, !noundef !5 + %206 = shl i64 %205, 56 + %207 = load i64, ptr %184, align 8, !alias.scope !184, !noalias !166, !noundef !5 + %208 = or i64 %206, %207 + %209 = load i64, ptr %185, align 8, !noalias !183, !noundef !5 + %210 = xor i64 %209, %208 + store i64 %210, ptr %185, align 8, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17hee01b87a181defc8E.llvm.8737466266532557522"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc18.i unwind label %196 + to label %.noexc18.i unwind label %191 .noexc18.i: ; preds = %.noexc.i16 - %216 = load <2 x i64>, ptr %5, align 16, !noalias !183 - %217 = insertelement <2 x i64> , i64 %213, i64 0 - %218 = xor <2 x i64> %216, %217 - store <2 x i64> %218, ptr %5, align 16, !noalias !183 + %211 = load <2 x i64>, ptr %5, align 16, !noalias !183 + %212 = insertelement <2 x i64> , i64 %208, i64 0 + %213 = xor <2 x i64> %211, %212 + store <2 x i64> %213, ptr %5, align 16, !noalias !183 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.8737466266532557522"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %219 unwind label %196 + to label %214 unwind label %191 -219: ; preds = %.noexc18.i - %220 = load <4 x i64>, ptr %5, align 16, !noalias !183 - %221 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %220) +214: ; preds = %.noexc18.i + %215 = load <4 x i64>, ptr %5, align 16, !noalias !183 + %216 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %215) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !183 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !166 - %222 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %223 = and i64 %222, %221 - %224 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %225 = getelementptr inbounds i8, ptr %224, i64 %223 - %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %225, align 1, !noalias !185 - %226 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer - %227 = bitcast <16 x i1> %226 to i16 - %.not12.i.i18 = icmp eq i16 %227, 0 + %217 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %218 = and i64 %217, %216 + %219 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %220 = getelementptr inbounds i8, ptr %219, i64 %218 + %.0.copyload.i911.i.i17 = load <16 x i8>, ptr %220, align 1, !noalias !185 + %221 = icmp slt <16 x i8> %.0.copyload.i911.i.i17, zeroinitializer + %222 = bitcast <16 x i1> %221 to i16 + %.not12.i.i18 = icmp eq i16 %222, 0 br i1 %.not12.i.i18, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %219, %.lr.ph.i21.i - %.sroa.0.014.i.i24 = phi i64 [ %230, %.lr.ph.i21.i ], [ %223, %219 ] - %.sroa.7.013.i.i25 = phi i64 [ %228, %.lr.ph.i21.i ], [ 0, %219 ] - %228 = add i64 %.sroa.7.013.i.i25, 16 - %229 = add i64 %228, %.sroa.0.014.i.i24 - %230 = and i64 %229, %222 - %231 = getelementptr inbounds i8, ptr %224, i64 %230 - %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %231, align 1, !noalias !185 - %232 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer - %233 = bitcast <16 x i1> %232 to i16 - %.not.i.i27 = icmp eq i16 %233, 0 +.lr.ph.i21.i: ; preds = %214, %.lr.ph.i21.i + %.sroa.0.014.i.i24 = phi i64 [ %225, %.lr.ph.i21.i ], [ %218, %214 ] + %.sroa.7.013.i.i25 = phi i64 [ %223, %.lr.ph.i21.i ], [ 0, %214 ] + %223 = add i64 %.sroa.7.013.i.i25, 16 + %224 = add i64 %223, %.sroa.0.014.i.i24 + %225 = and i64 %224, %217 + %226 = getelementptr inbounds i8, ptr %219, i64 %225 + %.0.copyload.i9.i.i26 = load <16 x i8>, ptr %226, align 1, !noalias !185 + %227 = icmp slt <16 x i8> %.0.copyload.i9.i.i26, zeroinitializer + %228 = bitcast <16 x i1> %227 to i16 + %.not.i.i27 = icmp eq i16 %228, 0 br i1 %.not.i.i27, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %219 - %.sroa.0.0.lcssa.i.i19 = phi i64 [ %223, %219 ], [ %230, %.lr.ph.i21.i ] - %.lcssa.i.i20 = phi i16 [ %227, %219 ], [ %233, %.lr.ph.i21.i ] - %234 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 - %235 = zext nneg i16 %234 to i64 - %236 = add i64 %.sroa.0.0.lcssa.i.i19, %235 - %237 = and i64 %236, %222 - %238 = getelementptr inbounds i8, ptr %224, i64 %237 - %239 = load i8, ptr %238, align 1, !noalias !190, !noundef !5 - %240 = icmp sgt i8 %239, -1 - br i1 %240, label %241, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i - -241: ; preds = %._crit_edge.i20.i - %242 = load <16 x i8>, ptr %224, align 16, !noalias !191 - %243 = icmp slt <16 x i8> %242, zeroinitializer - %244 = bitcast <16 x i1> %243 to i16 - %.not.i.i.i23 = icmp ne i16 %244, 0 - %245 = call i16 @llvm.cttz.i16(i16 %244, i1 true), !range !39 - %246 = zext nneg i16 %245 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %214 + %.sroa.0.0.lcssa.i.i19 = phi i64 [ %218, %214 ], [ %225, %.lr.ph.i21.i ] + %.lcssa.i.i20 = phi i16 [ %222, %214 ], [ %228, %.lr.ph.i21.i ] + %229 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i20, i1 true), !range !39 + %230 = zext nneg i16 %229 to i64 + %231 = add i64 %.sroa.0.0.lcssa.i.i19, %230 + %232 = and i64 %231, %217 + %233 = getelementptr inbounds i8, ptr %219, i64 %232 + %234 = load i8, ptr %233, align 1, !noalias !190, !noundef !5 + %235 = icmp sgt i8 %234, -1 + br i1 %235, label %236, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i + +236: ; preds = %._crit_edge.i20.i + %237 = load <16 x i8>, ptr %219, align 16, !noalias !191 + %238 = icmp slt <16 x i8> %237, zeroinitializer + %239 = bitcast <16 x i1> %238 to i16 + %.not.i.i.i23 = icmp ne i16 %239, 0 + %240 = call i16 @llvm.cttz.i16(i16 %239, i1 true), !range !39 + %241 = zext nneg i16 %240 to i64 call void @llvm.assume(i1 %.not.i.i.i23) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i: ; preds = %241, %._crit_edge.i20.i - %.0.i.i.i21 = phi i64 [ %246, %241 ], [ %237, %._crit_edge.i20.i ] - %247 = sub i64 %.sroa.02.012.i, %223 - %248 = sub i64 %.0.i.i.i21, %223 - %249 = xor i64 %248, %247 - %.unshifted.i = and i64 %249, %222 - %250 = icmp ult i64 %.unshifted.i, 16 - br i1 %250, label %264, label %251 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i: ; preds = %236, %._crit_edge.i20.i + %.0.i.i.i21 = phi i64 [ %241, %236 ], [ %232, %._crit_edge.i20.i ] + %242 = sub i64 %.sroa.02.012.i, %218 + %243 = sub i64 %.0.i.i.i21, %218 + %244 = xor i64 %243, %242 + %.unshifted.i = and i64 %244, %217 + %245 = icmp ult i64 %.unshifted.i, 16 + br i1 %245, label %259, label %246 -251: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i +246: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i %.neg16.i = mul i64 %.0.i.i.i21, -80 - %252 = getelementptr i8, ptr %224, i64 %.neg16.i - %253 = getelementptr i8, ptr %252, i64 -80 - %254 = getelementptr inbounds i8, ptr %224, i64 %.0.i.i.i21 - %255 = load i8, ptr %254, align 1, !noundef !5 - %256 = lshr i64 %221, 57 - %257 = trunc i64 %256 to i8 - %258 = add i64 %.0.i.i.i21, -16 - %259 = and i64 %258, %222 - store i8 %257, ptr %254, align 1 - %260 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %261 = getelementptr i8, ptr %260, i64 %259 - %262 = getelementptr i8, ptr %261, i64 16 - store i8 %257, ptr %262, align 1 - %263 = icmp eq i8 %255, -1 - br i1 %263, label %278, label %.preheader.i - -264: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i - %265 = lshr i64 %221, 57 - %266 = trunc i64 %265 to i8 - %267 = add i64 %.sroa.02.012.i, -16 - %268 = and i64 %222, %267 - %269 = getelementptr inbounds i8, ptr %224, i64 %.sroa.02.012.i - store i8 %266, ptr %269, align 1 - %270 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %271 = getelementptr i8, ptr %270, i64 %268 - %272 = getelementptr i8, ptr %271, i64 16 - store i8 %266, ptr %272, align 1 - br label %287 - -.preheader.i: ; preds = %251, %.preheader.i - %.0910.i.i = phi i64 [ %277, %.preheader.i ], [ 0, %251 ] - %273 = getelementptr inbounds i8, ptr %205, i64 %.0910.i.i - %274 = getelementptr inbounds i8, ptr %253, i64 %.0910.i.i - %275 = load i8, ptr %273, align 1 - %276 = load i8, ptr %274, align 1 - store i8 %276, ptr %273, align 1 - store i8 %275, ptr %274, align 1 - %277 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %277, 80 + %247 = getelementptr i8, ptr %219, i64 %.neg16.i + %248 = getelementptr i8, ptr %247, i64 -80 + %249 = getelementptr inbounds i8, ptr %219, i64 %.0.i.i.i21 + %250 = load i8, ptr %249, align 1, !noundef !5 + %251 = lshr i64 %216, 57 + %252 = trunc i64 %251 to i8 + %253 = add i64 %.0.i.i.i21, -16 + %254 = and i64 %253, %217 + store i8 %252, ptr %249, align 1 + %255 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %256 = getelementptr i8, ptr %255, i64 %254 + %257 = getelementptr i8, ptr %256, i64 16 + store i8 %252, ptr %257, align 1 + %258 = icmp eq i8 %250, -1 + br i1 %258, label %273, label %.preheader.i + +259: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.llvm.13220740530255529420.exit.i + %260 = lshr i64 %216, 57 + %261 = trunc i64 %260 to i8 + %262 = add i64 %.sroa.02.012.i, -16 + %263 = and i64 %217, %262 + %264 = getelementptr inbounds i8, ptr %219, i64 %.sroa.02.012.i + store i8 %261, ptr %264, align 1 + %265 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %266 = getelementptr i8, ptr %265, i64 %263 + %267 = getelementptr i8, ptr %266, i64 16 + store i8 %261, ptr %267, align 1 + br label %282 + +.preheader.i: ; preds = %246, %.preheader.i + %.0910.i.i = phi i64 [ %272, %.preheader.i ], [ 0, %246 ] + %268 = getelementptr inbounds i8, ptr %200, i64 %.0910.i.i + %269 = getelementptr inbounds i8, ptr %248, i64 %.0910.i.i + %270 = load i8, ptr %268, align 1 + %271 = load i8, ptr %269, align 1 + store i8 %271, ptr %268, align 1 + store i8 %270, ptr %269, align 1 + %272 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %272, 80 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17h91a32ea81d5e9c0bE.exit.loopexit.i, label %.preheader.i -278: ; preds = %251 - %279 = add i64 %.sroa.02.012.i, -16 - %280 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 - %281 = and i64 %280, %279 - %282 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %283 = getelementptr inbounds i8, ptr %282, i64 %.sroa.02.012.i - store i8 -1, ptr %283, align 1 - %284 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 - %285 = getelementptr i8, ptr %284, i64 %281 - %286 = getelementptr i8, ptr %285, i64 16 - store i8 -1, ptr %286, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %253, ptr noundef nonnull align 1 dereferenceable(80) %205, i64 80, i1 false) - br label %287 - -287: ; preds = %278, %264, %198 +273: ; preds = %246 + %274 = add i64 %.sroa.02.012.i, -16 + %275 = load i64, ptr %23, align 8, !alias.scope !151, !noundef !5 + %276 = and i64 %275, %274 + %277 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %278 = getelementptr inbounds i8, ptr %277, i64 %.sroa.02.012.i + store i8 -1, ptr %278, align 1 + %279 = load ptr, ptr %0, align 8, !alias.scope !151, !nonnull !5, !noundef !5 + %280 = getelementptr i8, ptr %279, i64 %276 + %281 = getelementptr i8, ptr %280, i64 16 + store i8 -1, ptr %281, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %248, ptr noundef nonnull align 1 dereferenceable(80) %200, i64 80, i1 false) + br label %282 + +282: ; preds = %273, %259, %193 %exitcond.not.i = icmp eq i64 %.sroa.02.012.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %198 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %193 -288: ; preds = %196 - %289 = landingpad { ptr, i32 } +283: ; preds = %191 + %284 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #18 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %287 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %282 %.pre22.i = load i64, ptr %23, align 8, !alias.scope !151 %.pre22.i.fr = freeze i64 %.pre22.i %.pre23.i = add i64 %.pre22.i.fr, 1 - %290 = lshr i64 %.pre23.i, 3 - %291 = mul nuw i64 %290, 7 - %292 = icmp ult i64 %.pre22.i.fr, 8 - %spec.select = select i1 %292, i64 %.pre22.i.fr, i64 %291 + %285 = lshr i64 %.pre23.i, 3 + %286 = mul nuw i64 %285, 7 + %287 = icmp ult i64 %.pre22.i.fr, 8 + %spec.select = select i1 %287, i64 %.pre22.i.fr, i64 %286 %.pre = load i64, ptr %13, align 8, !alias.scope !151 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %293 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %294 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %295 = getelementptr inbounds i8, ptr %0, i64 16 - %296 = sub i64 %294, %293 - store i64 %296, ptr %295, align 8, !alias.scope !151 + %288 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %289 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %290 = getelementptr inbounds i8, ptr %0, i64 16 + %291 = sub i64 %289, %288 + store i64 %291, ptr %290, align 8, !alias.scope !151 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !151 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h2e51d8e62ed31302E.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h2e51d8e62ed31302E.exit: ; preds = %83, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %83 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %83 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2c4a395b10a47a73E.exit" ] - %297 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %298 = insertvalue { i64, i64 } %297, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %298 + %292 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %293 = insertvalue { i64, i64 } %292, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %293 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/gepqftqgym352s.ll b/bench/diesel-rs/optimized/gepqftqgym352s.ll index 5464af00ab9..f7e1ce6d729 100644 --- a/bench/diesel-rs/optimized/gepqftqgym352s.ll +++ b/bench/diesel-rs/optimized/gepqftqgym352s.ll @@ -261,46 +261,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !54, !noundef !5 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h84a7ba3b25b0c378E.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #28, !noalias !55 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h84a7ba3b25b0c378E.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #28, !noalias !55 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h84a7ba3b25b0c378E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h84a7ba3b25b0c378E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h84a7ba3b25b0c378E.exit": ; preds = %1, %5, %23 ret void } @@ -530,45 +516,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !5 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.1377018117913393442.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.1377018117913393442.exit - %29 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #28 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.1377018117913393442.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.1377018117913393442.exit + %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #28 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.1377018117913393442.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.1377018117913393442.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.1377018117913393442.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.1377018117913393442.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.1377018117913393442.exit, %19 ret void } @@ -997,45 +969,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h8f98e02 _ZN9hashbrown3raw13RawTableInner13drop_elements17h00b19b24c54f0e57E.llvm.1377018117913393442.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6c3f0347f81da187E.llvm.1377018117913393442.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !140) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00b19b24c54f0e57E.llvm.1377018117913393442.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !140 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00b19b24c54f0e57E.llvm.1377018117913393442.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !140, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !140 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00b19b24c54f0e57E.llvm.1377018117913393442.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h00b19b24c54f0e57E.llvm.1377018117913393442.exit, %4 ret void } @@ -1104,45 +1062,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hfb22205 _ZN9hashbrown3raw13RawTableInner13drop_elements17h579f9f755b9e823fE.llvm.1377018117913393442.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2aca1c4fccd22b38E.llvm.1377018117913393442.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !161) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h579f9f755b9e823fE.llvm.1377018117913393442.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #28, !noalias !161 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h579f9f755b9e823fE.llvm.1377018117913393442.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !161, !nonnull !5, !noundef !5 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #28, !noalias !161 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h579f9f755b9e823fE.llvm.1377018117913393442.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h8c9e1fa9a9816b9bE.llvm.1377018117913393442.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h579f9f755b9e823fE.llvm.1377018117913393442.exit, %4 ret void } @@ -1534,7 +1478,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -1662,11 +1606,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !242 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -1742,9 +1686,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !276 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.8794480458802181418"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !278, !noalias !279 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !217 br label %.thread52 @@ -1770,122 +1714,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 88) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !242 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !242 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !242 - call void @llvm.assume(i1 %133), !noalias !242 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !242 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !295 + %119 = mul i64 %.val1.i.i, 88 + %120 = add i64 %119, 103 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !242 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !242 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !295 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !217 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !276 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !276 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !276 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !258 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !300 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !300 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !300 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !300 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !307, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !308 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !307, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !308 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !242 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !307 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !307 - %172 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !307 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !307 + %162 = load ptr, ptr %0, align 8, !alias.scope !278, !noalias !279, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 88 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !217, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 88 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %175, ptr noundef nonnull align 1 dereferenceable(88) %173, i64 88, i1 false), !noalias !242 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(88) %165, ptr noundef nonnull align 1 dereferenceable(88) %163, i64 88, i1 false), !noalias !242 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17hf18bf36b1a26b0b3E", i64 noundef 88, ptr noundef nonnull @"_ZN4core3ptr156drop_in_place$LT$$LP$diesel..connection..statement_cache..StatementCacheKey$LT$diesel..pg..backend..Pg$GT$$C$diesel..pg..connection..stmt..Statement$RP$$GT$17h5d38d25e93cec2acE.llvm.1377018117913393442") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: cold nonlazybind uwtable @@ -1924,7 +1855,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %24, i64 %23, i64 %27 %28 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %15, %28 - br i1 %.not.i, label %29, label %176 + br i1 %.not.i, label %29, label %166 29: ; preds = %21 %30 = add nuw i64 %.0.i, 1 @@ -2052,11 +1983,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %8) #26, !noalias !345 resume { ptr, i32 } %81 -.preheader: ; preds = %.preheader.lr.ph, %166 - %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %166 ] - %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %166 ] - %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %166 ] - %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %166 ] +.preheader: ; preds = %.preheader.lr.ph, %156 + %.sroa.1319.069 = phi i16 [ %76, %.preheader.lr.ph ], [ %90, %156 ] + %.sroa.014.068 = phi ptr [ %72, %.preheader.lr.ph ], [ %.sroa.014.1.lcssa, %156 ] + %.sroa.515.067 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.515.1.lcssa, %156 ] + %.sroa.917.066 = phi i64 [ %71, %.preheader.lr.ph ], [ %94, %156 ] %.not.not.i60 = icmp eq i16 %.sroa.1319.069, 0 br i1 %.not.not.i60, label %.noexc2, label %._crit_edge @@ -2132,9 +2063,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %113 = xor <2 x i64> %111, %112 store <2 x i64> %113, ptr %5, align 16, !noalias !378 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.8794480458802181418"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %140 unwind label %80 + to label %130 unwind label %80 -.thread52.loopexit: ; preds = %166 +.thread52.loopexit: ; preds = %156 %.pre = load i64, ptr %12, align 8, !alias.scope !380, !noalias !381 %.pre74 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !321 br label %.thread52 @@ -2160,122 +2091,109 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %117, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %118 118: ; preds = %.thread52 - %119 = add i64 %.val1.i.i, 1 - %120 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %119, i64 56) - %121 = extractvalue { i64, i1 } %120, 1 - %122 = xor i1 %121, true - call void @llvm.assume(i1 %122), !noalias !345 - %123 = extractvalue { i64, i1 } %120, 0 - %124 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %123, i64 15) - %125 = extractvalue { i64, i1 } %124, 1 - %126 = xor i1 %125, true - call void @llvm.assume(i1 %126), !noalias !345 - %127 = extractvalue { i64, i1 } %124, 0 - %128 = and i64 %127, -16 - %129 = add i64 %.val1.i.i, 17 - %130 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %128, i64 %129) - %131 = extractvalue { i64, i1 } %130, 0 - %132 = extractvalue { i64, i1 } %130, 1 - %133 = icmp ult i64 %131, 9223372036854775793 - %134 = xor i1 %132, true - call void @llvm.assume(i1 %134), !noalias !345 - call void @llvm.assume(i1 %133), !noalias !345 - %135 = icmp eq i64 %131, 0 - br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %136 - -136: ; preds = %118 - %137 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %137), !noalias !345 - %138 = sub nsw i64 0, %128 - %139 = getelementptr inbounds i8, ptr %.val.i.i, i64 %138 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %131, i64 noundef 16) #28, !noalias !397 + %119 = mul i64 %.val1.i.i, 56 + %120 = add i64 %119, 71 + %121 = and i64 %120, -16 + %122 = add i64 %.val1.i.i, 17 + %123 = add nuw i64 %122, %121 + %124 = icmp ult i64 %123, 9223372036854775793 + call void @llvm.assume(i1 %124), !noalias !345 + %125 = icmp eq i64 %123, 0 + br i1 %125, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", label %126 + +126: ; preds = %118 + %127 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %127), !noalias !345 + %128 = sub nsw i64 0, %121 + %129 = getelementptr inbounds i8, ptr %.val.i.i, i64 %128 + call void @__rust_dealloc(ptr noundef nonnull %129, i64 noundef %123, i64 noundef 16) #28, !noalias !397 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit": ; preds = %.thread52, %118, %136 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit": ; preds = %.thread52, %118, %126 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8), !noalias !321 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit -140: ; preds = %.noexc7 - %141 = load <4 x i64>, ptr %5, align 16, !noalias !378 - %142 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %141) +130: ; preds = %.noexc7 + %131 = load <4 x i64>, ptr %5, align 16, !noalias !378 + %132 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %131) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !378 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %6), !noalias !360 - %143 = and i64 %66, %142 - %144 = getelementptr inbounds i8, ptr %70, i64 %143 - %.0.copyload.i911.i.i = load <16 x i8>, ptr %144, align 1, !noalias !402 - %145 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer - %146 = bitcast <16 x i1> %145 to i16 - %.not12.i.i = icmp eq i16 %146, 0 + %133 = and i64 %66, %132 + %134 = getelementptr inbounds i8, ptr %70, i64 %133 + %.0.copyload.i911.i.i = load <16 x i8>, ptr %134, align 1, !noalias !402 + %135 = icmp slt <16 x i8> %.0.copyload.i911.i.i, zeroinitializer + %136 = bitcast <16 x i1> %135 to i16 + %.not12.i.i = icmp eq i16 %136, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %140, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %149, %.lr.ph.i.i ], [ %143, %140 ] - %.sroa.7.013.i.i = phi i64 [ %147, %.lr.ph.i.i ], [ 0, %140 ] - %147 = add i64 %.sroa.7.013.i.i, 16 - %148 = add i64 %147, %.sroa.0.014.i.i - %149 = and i64 %148, %66 - %150 = getelementptr inbounds i8, ptr %70, i64 %149 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %150, align 1, !noalias !402 - %151 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %152 = bitcast <16 x i1> %151 to i16 - %.not.i.i = icmp eq i16 %152, 0 +.lr.ph.i.i: ; preds = %130, %.lr.ph.i.i + %.sroa.0.014.i.i = phi i64 [ %139, %.lr.ph.i.i ], [ %133, %130 ] + %.sroa.7.013.i.i = phi i64 [ %137, %.lr.ph.i.i ], [ 0, %130 ] + %137 = add i64 %.sroa.7.013.i.i, 16 + %138 = add i64 %137, %.sroa.0.014.i.i + %139 = and i64 %138, %66 + %140 = getelementptr inbounds i8, ptr %70, i64 %139 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %140, align 1, !noalias !402 + %141 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %142 = bitcast <16 x i1> %141 to i16 + %.not.i.i = icmp eq i16 %142, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %140 - %.sroa.0.0.lcssa.i.i = phi i64 [ %143, %140 ], [ %149, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %146, %140 ], [ %152, %.lr.ph.i.i ] - %153 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %154 = zext nneg i16 %153 to i64 - %155 = add i64 %.sroa.0.0.lcssa.i.i, %154 - %156 = and i64 %155, %66 - %157 = getelementptr inbounds i8, ptr %70, i64 %156 - %158 = load i8, ptr %157, align 1, !noalias !409, !noundef !5 - %159 = icmp sgt i8 %158, -1 - br i1 %159, label %160, label %166 - -160: ; preds = %._crit_edge.i.i - %161 = load <16 x i8>, ptr %70, align 16, !noalias !410 - %162 = icmp slt <16 x i8> %161, zeroinitializer - %163 = bitcast <16 x i1> %162 to i16 - %.not.i.i.i = icmp ne i16 %163, 0 - %164 = call i16 @llvm.cttz.i16(i16 %163, i1 true), !range !67 - %165 = zext nneg i16 %164 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %130 + %.sroa.0.0.lcssa.i.i = phi i64 [ %133, %130 ], [ %139, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %136, %130 ], [ %142, %.lr.ph.i.i ] + %143 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %144 = zext nneg i16 %143 to i64 + %145 = add i64 %.sroa.0.0.lcssa.i.i, %144 + %146 = and i64 %145, %66 + %147 = getelementptr inbounds i8, ptr %70, i64 %146 + %148 = load i8, ptr %147, align 1, !noalias !409, !noundef !5 + %149 = icmp sgt i8 %148, -1 + br i1 %149, label %150, label %156 + +150: ; preds = %._crit_edge.i.i + %151 = load <16 x i8>, ptr %70, align 16, !noalias !410 + %152 = icmp slt <16 x i8> %151, zeroinitializer + %153 = bitcast <16 x i1> %152 to i16 + %.not.i.i.i = icmp ne i16 %153, 0 + %154 = call i16 @llvm.cttz.i16(i16 %153, i1 true), !range !67 + %155 = zext nneg i16 %154 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !345 - br label %166 - -166: ; preds = %160, %._crit_edge.i.i - %.0.i.i.i9 = phi i64 [ %165, %160 ], [ %156, %._crit_edge.i.i ] - %167 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 - %168 = lshr i64 %142, 57 - %169 = trunc i64 %168 to i8 - %170 = add i64 %.0.i.i.i9, -16 - %171 = and i64 %170, %66 - store i8 %169, ptr %167, align 1, !noalias !409 - %gep = getelementptr i8, ptr %invariant.gep, i64 %171 - store i8 %169, ptr %gep, align 1, !noalias !409 - %172 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 + br label %156 + +156: ; preds = %150, %._crit_edge.i.i + %.0.i.i.i9 = phi i64 [ %155, %150 ], [ %146, %._crit_edge.i.i ] + %157 = getelementptr inbounds i8, ptr %70, i64 %.0.i.i.i9 + %158 = lshr i64 %132, 57 + %159 = trunc i64 %158 to i8 + %160 = add i64 %.0.i.i.i9, -16 + %161 = and i64 %160, %66 + store i8 %159, ptr %157, align 1, !noalias !409 + %gep = getelementptr i8, ptr %invariant.gep, i64 %161 + store i8 %159, ptr %gep, align 1, !noalias !409 + %162 = load ptr, ptr %0, align 8, !alias.scope !380, !noalias !381, !nonnull !5, !noundef !5 %.neg.i.i = xor i64 %93, -1 %.neg28.i.i = mul i64 %.neg.i.i, 56 - %173 = getelementptr inbounds i8, ptr %172, i64 %.neg28.i.i - %174 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 + %163 = getelementptr inbounds i8, ptr %162, i64 %.neg28.i.i + %164 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !321, !nonnull !5, !noundef !5 %.neg29.i.i = xor i64 %.0.i.i.i9, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 56 - %175 = getelementptr inbounds i8, ptr %174, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %175, ptr noundef nonnull align 1 dereferenceable(56) %173, i64 56, i1 false), !noalias !345 + %165 = getelementptr inbounds i8, ptr %164, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(56) %165, ptr noundef nonnull align 1 dereferenceable(56) %163, i64 56, i1 false), !noalias !345 %.not = icmp eq i64 %94, 0 br i1 %.not, label %.thread52.loopexit, label %.preheader -176: ; preds = %21 +166: ; preds = %21 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %9, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h0cc20ca0bd3b29dcE", i64 noundef 56, ptr noundef nonnull @"_ZN4core3ptr119drop_in_place$LT$$LP$diesel..pg..metadata_lookup..PgMetadataCacheKey$C$diesel..pg..backend..InnerPgTypeMetadata$RP$$GT$17hb8165366e54b8974E.llvm.1377018117913393442") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", %17, %176 - %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %176 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] - %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %176 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] - %177 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %178 = insertvalue { i64, i64 } %177, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17ha62b80cb9462cb7dE.exit: ; preds = %79, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit", %17, %166 + %.sroa.4.0.i = phi i64 [ %20, %17 ], [ undef, %166 ], [ %.sroa.9.036.ph, %79 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] + %.sroa.0.0.i = phi i64 [ %19, %17 ], [ -9223372036854775807, %166 ], [ %.sroa.5.038.ph, %79 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h548f1dd0fcdba99aE.exit" ] + %167 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %168 = insertvalue { i64, i64 } %167, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) - ret { i64, i64 } %178 + ret { i64, i64 } %168 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/html5ever-rs/optimized/1mf2h4bh94yx6is.ll b/bench/html5ever-rs/optimized/1mf2h4bh94yx6is.ll index 187fad4480e..9beccbea076 100644 --- a/bench/html5ever-rs/optimized/1mf2h4bh94yx6is.ll +++ b/bench/html5ever-rs/optimized/1mf2h4bh94yx6is.ll @@ -93,46 +93,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !14, !noundef !7 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a34ecd65466d9f8E.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #23, !noalias !15 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a34ecd65466d9f8E.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #23, !noalias !15 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a34ecd65466d9f8E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a34ecd65466d9f8E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a34ecd65466d9f8E.exit": ; preds = %1, %5, %23 ret void } @@ -312,45 +298,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15648212929638076209.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15648212929638076209.exit - %29 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #23 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15648212929638076209.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15648212929638076209.exit + %20 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #23 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15648212929638076209.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15648212929638076209.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15648212929638076209.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15648212929638076209.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15648212929638076209.exit, %19 ret void } @@ -478,45 +450,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h003716c _ZN9hashbrown3raw13RawTableInner13drop_elements17h9a7dad854109ca6cE.llvm.15648212929638076209.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0cd81ade0385a49fE.llvm.15648212929638076209.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !61) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h824b177808607011E.llvm.15648212929638076209.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a7dad854109ca6cE.llvm.15648212929638076209.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !61, !nonnull !7, !noundef !7 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #23, !noalias !61 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h824b177808607011E.llvm.15648212929638076209.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a7dad854109ca6cE.llvm.15648212929638076209.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !61, !nonnull !7, !noundef !7 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #23, !noalias !61 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h824b177808607011E.llvm.15648212929638076209.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h824b177808607011E.llvm.15648212929638076209.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a7dad854109ca6cE.llvm.15648212929638076209.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h824b177808607011E.llvm.15648212929638076209.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a7dad854109ca6cE.llvm.15648212929638076209.exit, %4 ret void } @@ -626,7 +584,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %21, i64 %20, i64 %24 %25 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %12, %25 - br i1 %.not.i, label %26, label %156 + br i1 %.not.i, label %26, label %146 26: ; preds = %18 %27 = add nuw i64 %.0.i, 1 @@ -749,11 +707,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %7) #24 br label %common.resume -.preheader: ; preds = %.preheader.preheader, %144 - %.sroa.1336.095 = phi i16 [ %85, %144 ], [ %73, %.preheader.preheader ] - %.sroa.934.094 = phi i64 [ %89, %144 ], [ %68, %.preheader.preheader ] - %.sroa.031.093 = phi ptr [ %.sroa.031.1.lcssa, %144 ], [ %69, %.preheader.preheader ] - %.sroa.532.092 = phi i64 [ %.sroa.532.1.lcssa, %144 ], [ 0, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %134 + %.sroa.1336.095 = phi i16 [ %85, %134 ], [ %73, %.preheader.preheader ] + %.sroa.934.094 = phi i64 [ %89, %134 ], [ %68, %.preheader.preheader ] + %.sroa.031.093 = phi ptr [ %.sroa.031.1.lcssa, %134 ], [ %69, %.preheader.preheader ] + %.sroa.532.092 = phi i64 [ %.sroa.532.1.lcssa, %134 ], [ 0, %.preheader.preheader ] %.not.not.i86 = icmp eq i16 %.sroa.1336.095, 0 br i1 %.not.not.i86, label %.noexc2, label %._crit_edge @@ -791,7 +749,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %94 = invoke noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h25a8e61dd0f73f6cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %93) to label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" unwind label %75 -.thread69.loopexit: ; preds = %144 +.thread69.loopexit: ; preds = %134 %.pre107 = load i64, ptr %9, align 8, !alias.scope !113, !noalias !114 %.pre108 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !81 br label %.thread69 @@ -817,156 +775,143 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %98, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit", label %99 99: ; preds = %.thread69 - %100 = add i64 %.val1.i.i, 1 - %101 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %100, i64 24) - %102 = extractvalue { i64, i1 } %101, 1 - %103 = xor i1 %102, true - tail call void @llvm.assume(i1 %103) - %104 = extractvalue { i64, i1 } %101, 0 - %105 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %104, i64 15) - %106 = extractvalue { i64, i1 } %105, 1 - %107 = xor i1 %106, true - tail call void @llvm.assume(i1 %107) - %108 = extractvalue { i64, i1 } %105, 0 - %109 = and i64 %108, -16 - %110 = add i64 %.val1.i.i, 17 - %111 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %109, i64 %110) - %112 = extractvalue { i64, i1 } %111, 0 - %113 = extractvalue { i64, i1 } %111, 1 - %114 = icmp ult i64 %112, 9223372036854775793 - %115 = xor i1 %113, true - tail call void @llvm.assume(i1 %115) - tail call void @llvm.assume(i1 %114) - %116 = icmp eq i64 %112, 0 - br i1 %116, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit", label %117 - -117: ; preds = %99 - %118 = icmp ne ptr %.val.i.i, null - tail call void @llvm.assume(i1 %118) - %119 = sub nsw i64 0, %109 - %120 = getelementptr inbounds i8, ptr %.val.i.i, i64 %119 - tail call void @__rust_dealloc(ptr noundef nonnull %120, i64 noundef %112, i64 noundef 16) #23, !noalias !128 + %100 = mul i64 %.val1.i.i, 24 + %101 = add i64 %100, 39 + %102 = and i64 %101, -16 + %103 = add i64 %.val1.i.i, 17 + %104 = add nuw i64 %103, %102 + %105 = icmp ult i64 %104, 9223372036854775793 + tail call void @llvm.assume(i1 %105) + %106 = icmp eq i64 %104, 0 + br i1 %106, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit", label %107 + +107: ; preds = %99 + %108 = icmp ne ptr %.val.i.i, null + tail call void @llvm.assume(i1 %108) + %109 = sub nsw i64 0, %102 + %110 = getelementptr inbounds i8, ptr %.val.i.i, i64 %109 + tail call void @__rust_dealloc(ptr noundef nonnull %110, i64 noundef %104, i64 noundef 16) #23, !noalias !128 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit": ; preds = %.thread69, %99, %117 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit": ; preds = %.thread69, %99, %107 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7), !noalias !81 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852a4cd86cdebbbeE.exit "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit": ; preds = %._crit_edge %.sroa.617.0..sroa_idx.i.i.val3 = load i64, ptr %.sroa.617.i.i.sroa.4.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noundef !7 - %121 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %94 - %122 = getelementptr inbounds i8, ptr %67, i64 %121 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %122, align 1, !noalias !133 - %123 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %124 = bitcast <16 x i1> %123 to i16 - %.not6.i.i = icmp eq i16 %124, 0 + %111 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %94 + %112 = getelementptr inbounds i8, ptr %67, i64 %111 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %112, align 1, !noalias !133 + %113 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %114 = bitcast <16 x i1> %113 to i16 + %.not6.i.i = icmp eq i16 %114, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i .lr.ph.i.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit", %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %127, %.lr.ph.i.i ], [ %121, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ] - %.sroa.7.07.i.i = phi i64 [ %125, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ] - %125 = add i64 %.sroa.7.07.i.i, 16 - %126 = add i64 %125, %.sroa.0.08.i.i - %127 = and i64 %126, %.sroa.617.0..sroa_idx.i.i.val3 - %128 = getelementptr inbounds i8, ptr %67, i64 %127 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %128, align 1, !noalias !133 - %129 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %130 = bitcast <16 x i1> %129 to i16 - %.not.i.i = icmp eq i16 %130, 0 + %.sroa.0.08.i.i = phi i64 [ %117, %.lr.ph.i.i ], [ %111, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ] + %.sroa.7.07.i.i = phi i64 [ %115, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ] + %115 = add i64 %.sroa.7.07.i.i, 16 + %116 = add i64 %115, %.sroa.0.08.i.i + %117 = and i64 %116, %.sroa.617.0..sroa_idx.i.i.val3 + %118 = getelementptr inbounds i8, ptr %67, i64 %117 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %118, align 1, !noalias !133 + %119 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %120 = bitcast <16 x i1> %119 to i16 + %.not.i.i = icmp eq i16 %120, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" - %.sroa.0.0.lcssa.i.i = phi i64 [ %121, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ], [ %127, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %124, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ], [ %130, %.lr.ph.i.i ] - %131 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !27 - %132 = zext nneg i16 %131 to i64 - %133 = add i64 %.sroa.0.0.lcssa.i.i, %132 - %134 = and i64 %133, %.sroa.617.0..sroa_idx.i.i.val3 - %135 = getelementptr inbounds i8, ptr %67, i64 %134 - %136 = load i8, ptr %135, align 1, !noundef !7 - %137 = icmp sgt i8 %136, -1 - br i1 %137, label %138, label %144 - -138: ; preds = %._crit_edge.i.i - %139 = load <16 x i8>, ptr %67, align 16, !noalias !136 - %140 = icmp slt <16 x i8> %139, zeroinitializer - %141 = bitcast <16 x i1> %140 to i16 - %.not.i.i.i = icmp ne i16 %141, 0 - %142 = tail call i16 @llvm.cttz.i16(i16 %141, i1 true), !range !27 - %143 = zext nneg i16 %142 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %111, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ], [ %117, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %114, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit" ], [ %120, %.lr.ph.i.i ] + %121 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !27 + %122 = zext nneg i16 %121 to i64 + %123 = add i64 %.sroa.0.0.lcssa.i.i, %122 + %124 = and i64 %123, %.sroa.617.0..sroa_idx.i.i.val3 + %125 = getelementptr inbounds i8, ptr %67, i64 %124 + %126 = load i8, ptr %125, align 1, !noundef !7 + %127 = icmp sgt i8 %126, -1 + br i1 %127, label %128, label %134 + +128: ; preds = %._crit_edge.i.i + %129 = load <16 x i8>, ptr %67, align 16, !noalias !136 + %130 = icmp slt <16 x i8> %129, zeroinitializer + %131 = bitcast <16 x i1> %130 to i16 + %.not.i.i.i = icmp ne i16 %131, 0 + %132 = tail call i16 @llvm.cttz.i16(i16 %131, i1 true), !range !27 + %133 = zext nneg i16 %132 to i64 tail call void @llvm.assume(i1 %.not.i.i.i) - br label %144 - -144: ; preds = %138, %._crit_edge.i.i - %.0.i.i.i8 = phi i64 [ %143, %138 ], [ %134, %._crit_edge.i.i ] - %145 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i8 - %146 = lshr i64 %94, 57 - %147 = trunc i64 %146 to i8 - %148 = add i64 %.0.i.i.i8, -16 - %149 = and i64 %148, %.sroa.617.0..sroa_idx.i.i.val3 - store i8 %147, ptr %145, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %149 - store i8 %147, ptr %gep, align 1 - %150 = load ptr, ptr %0, align 8, !alias.scope !113, !noalias !114, !nonnull !7, !noundef !7 + br label %134 + +134: ; preds = %128, %._crit_edge.i.i + %.0.i.i.i8 = phi i64 [ %133, %128 ], [ %124, %._crit_edge.i.i ] + %135 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i8 + %136 = lshr i64 %94, 57 + %137 = trunc i64 %136 to i8 + %138 = add i64 %.0.i.i.i8, -16 + %139 = and i64 %138, %.sroa.617.0..sroa_idx.i.i.val3 + store i8 %137, ptr %135, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %139 + store i8 %137, ptr %gep, align 1 + %140 = load ptr, ptr %0, align 8, !alias.scope !113, !noalias !114, !nonnull !7, !noundef !7 %.neg.i.i = mul i64 %88, -24 - %151 = getelementptr i8, ptr %150, i64 %.neg.i.i - %152 = getelementptr i8, ptr %151, i64 -24 - %153 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !81, !nonnull !7, !noundef !7 + %141 = getelementptr i8, ptr %140, i64 %.neg.i.i + %142 = getelementptr i8, ptr %141, i64 -24 + %143 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !81, !nonnull !7, !noundef !7 %.neg28.i.i = mul i64 %.0.i.i.i8, -24 - %154 = getelementptr i8, ptr %153, i64 %.neg28.i.i - %155 = getelementptr i8, ptr %154, i64 -24 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %155, ptr noundef nonnull align 1 dereferenceable(24) %152, i64 24, i1 false) + %144 = getelementptr i8, ptr %143, i64 %.neg28.i.i + %145 = getelementptr i8, ptr %144, i64 -24 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %145, ptr noundef nonnull align 1 dereferenceable(24) %142, i64 24, i1 false) %.not = icmp eq i64 %89, 0 br i1 %.not, label %.thread69.loopexit, label %.preheader -common.resume: ; preds = %174, %75 - %common.resume.op = phi { ptr, i32 } [ %76, %75 ], [ %175, %174 ] +common.resume: ; preds = %164, %75 + %common.resume.op = phi { ptr, i32 } [ %76, %75 ], [ %165, %164 ] resume { ptr, i32 } %common.resume.op -156: ; preds = %18 +146: ; preds = %18 tail call void @llvm.experimental.noalias.scope.decl(metadata !139) %.val18.i = load ptr, ptr %0, align 8, !alias.scope !139 - %157 = lshr i64 %22, 4 - %158 = and i64 %22, 15 - %.not.i.i.i.i.i = icmp ne i64 %158, 0 - %159 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %157, %159 + %147 = lshr i64 %22, 4 + %148 = and i64 %22, 15 + %.not.i.i.i.i.i = icmp ne i64 %148, 0 + %149 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %147, %149 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i10, label %.lr.ph.i.i9 -.lr.ph.i.i9: ; preds = %156 - %160 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %160) - br label %165 - -._crit_edge.i.i10: ; preds = %165, %156 - %161 = icmp ult i64 %22, 16 - %162 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %162) - %163 = getelementptr inbounds i8, ptr %5, i64 8 - %164 = getelementptr inbounds i8, ptr %5, i64 16 - br i1 %161, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i - -165: ; preds = %165, %.lr.ph.i.i9 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i9 ], [ %167, %165 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i9 ], [ %166, %165 ] - %166 = add nsw i64 %.sroa.5.05.i.i, -1 - %167 = add i64 %.sroa.01.06.i.i, 16 - %168 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i - %169 = load <16 x i8>, ptr %168, align 16, !noalias !142 - %.lobit.i.i.i = ashr <16 x i8> %169, - %170 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %171 = or <2 x i64> %170, - store <2 x i64> %171, ptr %168, align 16, !noalias !145 - %.not.not.i.i = icmp eq i64 %166, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i10, label %165 +.lr.ph.i.i9: ; preds = %146 + %150 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %150) + br label %155 + +._crit_edge.i.i10: ; preds = %155, %146 + %151 = icmp ult i64 %22, 16 + %152 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %152) + %153 = getelementptr inbounds i8, ptr %5, i64 8 + %154 = getelementptr inbounds i8, ptr %5, i64 16 + br i1 %151, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i + +155: ; preds = %155, %.lr.ph.i.i9 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i9 ], [ %157, %155 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i9 ], [ %156, %155 ] + %156 = add nsw i64 %.sroa.5.05.i.i, -1 + %157 = add i64 %.sroa.01.06.i.i, 16 + %158 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i + %159 = load <16 x i8>, ptr %158, align 16, !noalias !142 + %.lobit.i.i.i = ashr <16 x i8> %159, + %160 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %161 = or <2 x i64> %160, + store <2 x i64> %161, ptr %158, align 16, !noalias !145 + %.not.not.i.i = icmp eq i64 %156, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i10, label %155 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.thread.i: ; preds = %._crit_edge.i.i10 - %172 = getelementptr inbounds i8, ptr %.val18.i, i64 %22 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %172, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !139 + %162 = getelementptr inbounds i8, ptr %.val18.i, i64 %22 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %162, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !139 - store ptr @"_ZN4core3ptr72drop_in_place$LT$$LP$markup5ever..interface..QualName$C$$LP$$RP$$RP$$GT$17h65a7d17256c551fbE.llvm.15648212929638076209", ptr %163, align 8, !noalias !139 - store i64 24, ptr %164, align 8, !noalias !139 + store ptr @"_ZN4core3ptr72drop_in_place$LT$$LP$markup5ever..interface..QualName$C$$LP$$RP$$RP$$GT$17h65a7d17256c551fbE.llvm.15648212929638076209", ptr %153, align 8, !noalias !139 + store i64 24, ptr %154, align 8, !noalias !139 store ptr %0, ptr %5, align 8, !noalias !139 br label %.lr.ph.i.preheader @@ -974,196 +919,196 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.ex br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i: ; preds = %._crit_edge.i.i10 - %173 = getelementptr inbounds i8, ptr %.val18.i, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %173, ptr nonnull align 1 %.val18.i, i64 %22, i1 false), !noalias !139 + %163 = getelementptr inbounds i8, ptr %.val18.i, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %163, ptr nonnull align 1 %.val18.i, i64 %22, i1 false), !noalias !139 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !139 - store ptr @"_ZN4core3ptr72drop_in_place$LT$$LP$markup5ever..interface..QualName$C$$LP$$RP$$RP$$GT$17h65a7d17256c551fbE.llvm.15648212929638076209", ptr %163, align 8, !noalias !139 - store i64 24, ptr %164, align 8, !noalias !139 + store ptr @"_ZN4core3ptr72drop_in_place$LT$$LP$markup5ever..interface..QualName$C$$LP$$RP$$RP$$GT$17h65a7d17256c551fbE.llvm.15648212929638076209", ptr %153, align 8, !noalias !139 + store i64 24, ptr %154, align 8, !noalias !139 store ptr %0, ptr %5, align 8, !noalias !139 %.not11.i = icmp eq i64 %22, 0 br i1 %.not11.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread, label %.lr.ph.i.preheader -174: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i - %175 = landingpad { ptr, i32 } +164: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i + %165 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hbbfc958adfc9147fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #24 - to label %common.resume unwind label %252 - -.lr.ph.i: ; preds = %.lr.ph.i.preheader, %251 - %.sroa.02.010.i = phi i64 [ %176, %251 ], [ 0, %.lr.ph.i.preheader ] - %176 = add nuw i64 %.sroa.02.010.i, 1 - %177 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 - %178 = getelementptr inbounds i8, ptr %177, i64 %.sroa.02.010.i - %179 = load i8, ptr %178, align 1, !noundef !7 - %.not.i11 = icmp eq i8 %179, -128 - br i1 %.not.i11, label %180, label %251 - -180: ; preds = %.lr.ph.i + to label %common.resume unwind label %242 + +.lr.ph.i: ; preds = %.lr.ph.i.preheader, %241 + %.sroa.02.010.i = phi i64 [ %166, %241 ], [ 0, %.lr.ph.i.preheader ] + %166 = add nuw i64 %.sroa.02.010.i, 1 + %167 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 + %168 = getelementptr inbounds i8, ptr %167, i64 %.sroa.02.010.i + %169 = load i8, ptr %168, align 1, !noundef !7 + %.not.i11 = icmp eq i8 %169, -128 + br i1 %.not.i11, label %170, label %241 + +170: ; preds = %.lr.ph.i %.neg.i = mul i64 %.sroa.02.010.i, -24 - %181 = getelementptr i8, ptr %177, i64 %.neg.i - %182 = getelementptr i8, ptr %181, i64 -24 - %183 = sub nsw i64 0, %.sroa.02.010.i + %171 = getelementptr i8, ptr %167, i64 %.neg.i + %172 = getelementptr i8, ptr %171, i64 -24 + %173 = sub nsw i64 0, %.sroa.02.010.i br label %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i _ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i: ; preds = %.preheader.i %.pre.i20 = load ptr, ptr %0, align 8, !alias.scope !148, !noalias !151 br label %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i -_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i, %180 - %184 = phi ptr [ %.pre.i20, %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i ], [ %177, %180 ] - %185 = getelementptr inbounds { { i64, i64, i64 }, {} }, ptr %184, i64 %183 - %186 = getelementptr inbounds i8, ptr %185, i64 -24 - %187 = invoke noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h25a8e61dd0f73f6cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %186) - to label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" unwind label %174 +_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i, %170 + %174 = phi ptr [ %.pre.i20, %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i ], [ %167, %170 ] + %175 = getelementptr inbounds { { i64, i64, i64 }, {} }, ptr %174, i64 %173 + %176 = getelementptr inbounds i8, ptr %175, i64 -24 + %177 = invoke noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h25a8e61dd0f73f6cE(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %176) + to label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" unwind label %164 "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i": ; preds = %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.i %.val.i14 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 %.val17.i = load i64, ptr %19, align 8, !alias.scope !139, !noundef !7 - %188 = and i64 %.val17.i, %187 - %189 = getelementptr inbounds i8, ptr %.val.i14, i64 %188 - %.0.copyload.i45.i.i15 = load <16 x i8>, ptr %189, align 1, !noalias !153 - %190 = icmp slt <16 x i8> %.0.copyload.i45.i.i15, zeroinitializer - %191 = bitcast <16 x i1> %190 to i16 - %.not6.i.i16 = icmp eq i16 %191, 0 + %178 = and i64 %.val17.i, %177 + %179 = getelementptr inbounds i8, ptr %.val.i14, i64 %178 + %.0.copyload.i45.i.i15 = load <16 x i8>, ptr %179, align 1, !noalias !153 + %180 = icmp slt <16 x i8> %.0.copyload.i45.i.i15, zeroinitializer + %181 = bitcast <16 x i1> %180 to i16 + %.not6.i.i16 = icmp eq i16 %181, 0 br i1 %.not6.i.i16, label %.lr.ph.i21.i, label %._crit_edge.i20.i .lr.ph.i21.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i", %.lr.ph.i21.i - %.sroa.0.08.i.i22 = phi i64 [ %194, %.lr.ph.i21.i ], [ %188, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ] - %.sroa.7.07.i.i23 = phi i64 [ %192, %.lr.ph.i21.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ] - %192 = add i64 %.sroa.7.07.i.i23, 16 - %193 = add i64 %192, %.sroa.0.08.i.i22 - %194 = and i64 %193, %.val17.i - %195 = getelementptr inbounds i8, ptr %.val.i14, i64 %194 - %.0.copyload.i4.i.i24 = load <16 x i8>, ptr %195, align 1, !noalias !153 - %196 = icmp slt <16 x i8> %.0.copyload.i4.i.i24, zeroinitializer - %197 = bitcast <16 x i1> %196 to i16 - %.not.i.i25 = icmp eq i16 %197, 0 + %.sroa.0.08.i.i22 = phi i64 [ %184, %.lr.ph.i21.i ], [ %178, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ] + %.sroa.7.07.i.i23 = phi i64 [ %182, %.lr.ph.i21.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ] + %182 = add i64 %.sroa.7.07.i.i23, 16 + %183 = add i64 %182, %.sroa.0.08.i.i22 + %184 = and i64 %183, %.val17.i + %185 = getelementptr inbounds i8, ptr %.val.i14, i64 %184 + %.0.copyload.i4.i.i24 = load <16 x i8>, ptr %185, align 1, !noalias !153 + %186 = icmp slt <16 x i8> %.0.copyload.i4.i.i24, zeroinitializer + %187 = bitcast <16 x i1> %186 to i16 + %.not.i.i25 = icmp eq i16 %187, 0 br i1 %.not.i.i25, label %.lr.ph.i21.i, label %._crit_edge.i20.i ._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" - %.sroa.0.0.lcssa.i.i17 = phi i64 [ %188, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ], [ %194, %.lr.ph.i21.i ] - %.lcssa.i.i18 = phi i16 [ %191, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ], [ %197, %.lr.ph.i21.i ] - %198 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i18, i1 true), !range !27 - %199 = zext nneg i16 %198 to i64 - %200 = add i64 %.sroa.0.0.lcssa.i.i17, %199 - %201 = and i64 %200, %.val17.i - %202 = getelementptr inbounds i8, ptr %.val.i14, i64 %201 - %203 = load i8, ptr %202, align 1, !noundef !7 - %204 = icmp sgt i8 %203, -1 - br i1 %204, label %205, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i - -205: ; preds = %._crit_edge.i20.i - %206 = load <16 x i8>, ptr %.val.i14, align 16, !noalias !156 - %207 = icmp slt <16 x i8> %206, zeroinitializer - %208 = bitcast <16 x i1> %207 to i16 - %.not.i.i.i21 = icmp ne i16 %208, 0 - %209 = tail call i16 @llvm.cttz.i16(i16 %208, i1 true), !range !27 - %210 = zext nneg i16 %209 to i64 + %.sroa.0.0.lcssa.i.i17 = phi i64 [ %178, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ], [ %184, %.lr.ph.i21.i ] + %.lcssa.i.i18 = phi i16 [ %181, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4b9498579da9eea6E.exit.i" ], [ %187, %.lr.ph.i21.i ] + %188 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i18, i1 true), !range !27 + %189 = zext nneg i16 %188 to i64 + %190 = add i64 %.sroa.0.0.lcssa.i.i17, %189 + %191 = and i64 %190, %.val17.i + %192 = getelementptr inbounds i8, ptr %.val.i14, i64 %191 + %193 = load i8, ptr %192, align 1, !noundef !7 + %194 = icmp sgt i8 %193, -1 + br i1 %194, label %195, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i + +195: ; preds = %._crit_edge.i20.i + %196 = load <16 x i8>, ptr %.val.i14, align 16, !noalias !156 + %197 = icmp slt <16 x i8> %196, zeroinitializer + %198 = bitcast <16 x i1> %197 to i16 + %.not.i.i.i21 = icmp ne i16 %198, 0 + %199 = tail call i16 @llvm.cttz.i16(i16 %198, i1 true), !range !27 + %200 = zext nneg i16 %199 to i64 tail call void @llvm.assume(i1 %.not.i.i.i21) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i: ; preds = %205, %._crit_edge.i20.i - %.0.i.i.i19 = phi i64 [ %210, %205 ], [ %201, %._crit_edge.i20.i ] - %211 = sub i64 %.sroa.02.010.i, %188 - %212 = sub i64 %.0.i.i.i19, %188 - %213 = xor i64 %212, %211 - %.unshifted.i = and i64 %213, %.val17.i - %214 = icmp ult i64 %.unshifted.i, 16 - br i1 %214, label %228, label %215 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i: ; preds = %195, %._crit_edge.i20.i + %.0.i.i.i19 = phi i64 [ %200, %195 ], [ %191, %._crit_edge.i20.i ] + %201 = sub i64 %.sroa.02.010.i, %178 + %202 = sub i64 %.0.i.i.i19, %178 + %203 = xor i64 %202, %201 + %.unshifted.i = and i64 %203, %.val17.i + %204 = icmp ult i64 %.unshifted.i, 16 + br i1 %204, label %218, label %205 -215: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i +205: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i %.neg16.i = mul i64 %.0.i.i.i19, -24 - %216 = getelementptr i8, ptr %.val.i14, i64 %.neg16.i - %217 = getelementptr i8, ptr %216, i64 -24 - %218 = getelementptr inbounds i8, ptr %.val.i14, i64 %.0.i.i.i19 - %219 = load i8, ptr %218, align 1, !noundef !7 - %220 = lshr i64 %187, 57 - %221 = trunc i64 %220 to i8 - %222 = add i64 %.0.i.i.i19, -16 - %223 = and i64 %222, %.val17.i - store i8 %221, ptr %218, align 1 + %206 = getelementptr i8, ptr %.val.i14, i64 %.neg16.i + %207 = getelementptr i8, ptr %206, i64 -24 + %208 = getelementptr inbounds i8, ptr %.val.i14, i64 %.0.i.i.i19 + %209 = load i8, ptr %208, align 1, !noundef !7 + %210 = lshr i64 %177, 57 + %211 = trunc i64 %210 to i8 + %212 = add i64 %.0.i.i.i19, -16 + %213 = and i64 %212, %.val17.i + store i8 %211, ptr %208, align 1 + %214 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 + %215 = getelementptr i8, ptr %214, i64 %213 + %216 = getelementptr i8, ptr %215, i64 16 + store i8 %211, ptr %216, align 1 + %217 = icmp eq i8 %209, -1 + br i1 %217, label %232, label %.preheader.i + +218: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i + %219 = lshr i64 %177, 57 + %220 = trunc i64 %219 to i8 + %221 = add i64 %.sroa.02.010.i, -16 + %222 = and i64 %.val17.i, %221 + %223 = getelementptr inbounds i8, ptr %.val.i14, i64 %.sroa.02.010.i + store i8 %220, ptr %223, align 1 %224 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 - %225 = getelementptr i8, ptr %224, i64 %223 + %225 = getelementptr i8, ptr %224, i64 %222 %226 = getelementptr i8, ptr %225, i64 16 - store i8 %221, ptr %226, align 1 - %227 = icmp eq i8 %219, -1 - br i1 %227, label %242, label %.preheader.i - -228: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h936d2cdcb480a581E.exit.i - %229 = lshr i64 %187, 57 - %230 = trunc i64 %229 to i8 - %231 = add i64 %.sroa.02.010.i, -16 - %232 = and i64 %.val17.i, %231 - %233 = getelementptr inbounds i8, ptr %.val.i14, i64 %.sroa.02.010.i - store i8 %230, ptr %233, align 1 - %234 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 - %235 = getelementptr i8, ptr %234, i64 %232 - %236 = getelementptr i8, ptr %235, i64 16 - store i8 %230, ptr %236, align 1 - br label %251 - -.preheader.i: ; preds = %215, %.preheader.i - %.0910.i.i = phi i64 [ %241, %.preheader.i ], [ 0, %215 ] - %237 = getelementptr inbounds i8, ptr %182, i64 %.0910.i.i - %238 = getelementptr inbounds i8, ptr %217, i64 %.0910.i.i - %239 = load i8, ptr %237, align 1 - %240 = load i8, ptr %238, align 1 - store i8 %240, ptr %237, align 1 - store i8 %239, ptr %238, align 1 - %241 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %241, 24 + store i8 %220, ptr %226, align 1 + br label %241 + +.preheader.i: ; preds = %205, %.preheader.i + %.0910.i.i = phi i64 [ %231, %.preheader.i ], [ 0, %205 ] + %227 = getelementptr inbounds i8, ptr %172, i64 %.0910.i.i + %228 = getelementptr inbounds i8, ptr %207, i64 %.0910.i.i + %229 = load i8, ptr %227, align 1 + %230 = load i8, ptr %228, align 1 + store i8 %230, ptr %227, align 1 + store i8 %229, ptr %228, align 1 + %231 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %231, 24 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17h2c06dedf466b3d6eE.exit.loopexit.i, label %.preheader.i -242: ; preds = %215 - %243 = add i64 %.sroa.02.010.i, -16 - %244 = load i64, ptr %19, align 8, !alias.scope !139, !noundef !7 - %245 = and i64 %244, %243 - %246 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 - %247 = getelementptr inbounds i8, ptr %246, i64 %.sroa.02.010.i - store i8 -1, ptr %247, align 1 - %248 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 - %249 = getelementptr i8, ptr %248, i64 %245 - %250 = getelementptr i8, ptr %249, i64 16 - store i8 -1, ptr %250, align 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %217, ptr noundef nonnull align 1 dereferenceable(24) %182, i64 24, i1 false) - br label %251 - -251: ; preds = %242, %228, %.lr.ph.i +232: ; preds = %205 + %233 = add i64 %.sroa.02.010.i, -16 + %234 = load i64, ptr %19, align 8, !alias.scope !139, !noundef !7 + %235 = and i64 %234, %233 + %236 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 + %237 = getelementptr inbounds i8, ptr %236, i64 %.sroa.02.010.i + store i8 -1, ptr %237, align 1 + %238 = load ptr, ptr %0, align 8, !alias.scope !139, !nonnull !7, !noundef !7 + %239 = getelementptr i8, ptr %238, i64 %235 + %240 = getelementptr i8, ptr %239, i64 16 + store i8 -1, ptr %240, align 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %207, ptr noundef nonnull align 1 dereferenceable(24) %172, i64 24, i1 false) + br label %241 + +241: ; preds = %232, %218, %.lr.ph.i %exitcond.not.i = icmp eq i64 %.sroa.02.010.i, %20 br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, label %.lr.ph.i -252: ; preds = %174 - %253 = landingpad { ptr, i32 } +242: ; preds = %164 + %243 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %251 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit: ; preds = %241 %.pre18.i = load i64, ptr %19, align 8, !alias.scope !139 %.pre18.i.fr = freeze i64 %.pre18.i %.pre19.i = add i64 %.pre18.i.fr, 1 - %254 = lshr i64 %.pre19.i, 3 - %255 = mul nuw i64 %254, 7 - %256 = icmp ult i64 %.pre18.i.fr, 8 - %spec.select = select i1 %256, i64 %.pre18.i.fr, i64 %255 + %244 = lshr i64 %.pre19.i, 3 + %245 = mul nuw i64 %244, 7 + %246 = icmp ult i64 %.pre18.i.fr, 8 + %spec.select = select i1 %246, i64 %.pre18.i.fr, i64 %245 %.pre = load i64, ptr %9, align 8, !alias.scope !139 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i - %257 = phi i64 [ %10, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %258 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] - %259 = getelementptr inbounds i8, ptr %0, i64 16 - %260 = sub i64 %258, %257 - store i64 %260, ptr %259, align 8, !alias.scope !139 + %247 = phi i64 [ %10, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %248 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17h17c5779ca74bbe5fE.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit ] + %249 = getelementptr inbounds i8, ptr %0, i64 16 + %250 = sub i64 %248, %247 + store i64 %250, ptr %249, align 8, !alias.scope !139 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !139 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852a4cd86cdebbbeE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852a4cd86cdebbbeE.exit: ; preds = %74, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit", %14, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread %.sroa.4.0.i = phi i64 [ %17, %14 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.053.ph, %74 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit" ] %.sroa.0.0.i = phi i64 [ %16, %14 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.055.ph, %74 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17he437ab504fde7372E.exit" ] - %261 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %262 = insertvalue { i64, i64 } %261, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %262 + %251 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %252 = insertvalue { i64, i64 } %251, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %252 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/image-rs/optimized/2mngkegtim1o10y3.ll b/bench/image-rs/optimized/2mngkegtim1o10y3.ll index 563f77f5b42..afb236f1d0d 100644 --- a/bench/image-rs/optimized/2mngkegtim1o10y3.ll +++ b/bench/image-rs/optimized/2mngkegtim1o10y3.ll @@ -2204,7 +2204,7 @@ define internal fastcc void @_ZN3exr4meta6header6Header4read17h5c25d6e72fcedd82E invoke void @"_ZN77_$LT$exr..meta..header..LayerAttributes$u20$as$u20$core..default..Default$GT$7default17h2df77917b194f966E"(ptr noalias nocapture noundef nonnull sret({ { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [4 x i64] }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, [7 x i32] }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, { i32, i32 }, { float, float }, { i32, [2 x i32] }, { i32, [2 x i32] }, { i32, [16 x i32] }, { i32, [16 x i32] }, { i32, [2 x i32] }, float, i8, [7 x i8] }) align 8 dereferenceable(848) %72) to label %76 unwind label %74 -74: ; preds = %2782, %3 +74: ; preds = %2772, %3 %75 = landingpad { ptr, i32 } cleanup br label %.thread @@ -2218,7 +2218,7 @@ define internal fastcc void @_ZN3exr4meta6header6Header4read17h5c25d6e72fcedd82E 77: ; preds = %2507, %79, %76 %78 = landingpad { ptr, i32 } cleanup - br label %2817 + br label %2797 79: ; preds = %76 invoke void @_ZN3exr4meta6header15ImageAttributes3new17h7b492660a5fc6ff6E(ptr noalias nocapture noundef nonnull sret({ { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, { { i64, i64 }, { i32, i32 } }, float, { i32, [8 x i32] }, { i8, [17 x i8] }, [6 x i8] }) align 8 dereferenceable(136) %71, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %70) @@ -6267,7 +6267,7 @@ _ZN3exr4meta12sequence_end8has_come17h1adf49bead00c814E.exit.thread: ; preds = % invoke void @"_ZN4core3ptr57drop_in_place$LT$exr..meta..attribute..AttributeValue$GT$17h4410941565360b61E.llvm.15361875792781664197"(ptr noalias noundef nonnull align 8 dereferenceable(352) %85) #48 to label %.thread114 unwind label %2387 -2387: ; preds = %2843, %2502, %2839, %2837, %2835, %2833, %2831, %2829, %2827, %2825, %2823, %2821, %2819, %2817, %.thread91, %2816, %2815, %2814, %.body, %2813, %2812, %2811, %2810, %2809, %2808, %2551, %2503, %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit795", %2495, %.thread458, %2410, %.thread450, %2392, %2386 +2387: ; preds = %2823, %2502, %2819, %2817, %2815, %2813, %2811, %2809, %2807, %2805, %2803, %2801, %2799, %2797, %.thread91, %2796, %2795, %2794, %.body, %2793, %2792, %2791, %2790, %2789, %2788, %2541, %2503, %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit795", %2495, %.thread458, %2410, %.thread450, %2392, %2386 %2388 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 @@ -6967,7 +6967,7 @@ _ZN3exr4meta9attribute15TileDescription8validate17h645fa9baebcaab05E.exit: ; pre %2504 = getelementptr inbounds i8, ptr %71, i64 8 %2505 = load i64, ptr %2504, align 8, !alias.scope !462, !noundef !4 %2506 = icmp eq i64 %2505, 0 - br i1 %2506, label %2529, label %2507 + br i1 %2506, label %2519, label %2507 2507: ; preds = %.thread465 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %71) @@ -6975,854 +6975,828 @@ _ZN3exr4meta9attribute15TileDescription8validate17h645fa9baebcaab05E.exit: ; pre .noexc796: ; preds = %2507 call void @llvm.experimental.noalias.scope.decl(metadata !463) - %2508 = add i64 %2505, 1 - %2509 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2508, i64 392) - %2510 = extractvalue { i64, i1 } %2509, 1 - %2511 = xor i1 %2510, true - call void @llvm.assume(i1 %2511) - %2512 = extractvalue { i64, i1 } %2509, 0 - %2513 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2512, i64 15) - %2514 = extractvalue { i64, i1 } %2513, 1 - %2515 = xor i1 %2514, true - call void @llvm.assume(i1 %2515) - %2516 = extractvalue { i64, i1 } %2513, 0 - %2517 = and i64 %2516, -16 - %2518 = add i64 %2505, 17 - %2519 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2517, i64 %2518) - %2520 = extractvalue { i64, i1 } %2519, 0 - %2521 = extractvalue { i64, i1 } %2519, 1 - %2522 = icmp ult i64 %2520, 9223372036854775793 - %2523 = xor i1 %2521, true - call void @llvm.assume(i1 %2523) - call void @llvm.assume(i1 %2522) - %2524 = icmp eq i64 %2520, 0 - br i1 %2524, label %2529, label %2525 - -2525: ; preds = %.noexc796 - %2526 = load ptr, ptr %71, align 8, !alias.scope !466, !nonnull !4, !noundef !4 - %2527 = sub nsw i64 0, %2517 - %2528 = getelementptr inbounds i8, ptr %2526, i64 %2527 - call void @__rust_dealloc(ptr noundef nonnull %2528, i64 noundef %2520, i64 noundef 16) #50, !noalias !466 - br label %2529 - -2529: ; preds = %.thread465, %.noexc796, %2525 + %2508 = mul i64 %2505, 392 + %2509 = add i64 %2508, 407 + %2510 = and i64 %2509, -16 + %2511 = add i64 %2505, 17 + %2512 = add nuw i64 %2511, %2510 + %2513 = icmp ult i64 %2512, 9223372036854775793 + call void @llvm.assume(i1 %2513) + %2514 = icmp eq i64 %2512, 0 + br i1 %2514, label %2519, label %2515 + +2515: ; preds = %.noexc796 + %2516 = load ptr, ptr %71, align 8, !alias.scope !466, !nonnull !4, !noundef !4 + %2517 = sub nsw i64 0, %2510 + %2518 = getelementptr inbounds i8, ptr %2516, i64 %2517 + call void @__rust_dealloc(ptr noundef nonnull %2518, i64 noundef %2512, i64 noundef 16) #50, !noalias !466 + br label %2519 + +2519: ; preds = %.thread465, %.noexc796, %2515 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %71) call void @llvm.experimental.noalias.scope.decl(metadata !467) - %2530 = load i8, ptr %138, align 8, !range !399, !alias.scope !467, !noundef !4 - %2531 = icmp eq i8 %2530, 2 - br i1 %2531, label %2553, label %2532 + %2520 = load i8, ptr %138, align 8, !range !399, !alias.scope !467, !noundef !4 + %2521 = icmp eq i8 %2520, 2 + br i1 %2521, label %2543, label %2522 -2532: ; preds = %2529 +2522: ; preds = %2519 call void @llvm.experimental.noalias.scope.decl(metadata !470) call void @llvm.experimental.noalias.scope.decl(metadata !473) call void @llvm.experimental.noalias.scope.decl(metadata !476) - %2533 = getelementptr inbounds i8, ptr %72, i64 272 - %2534 = load i64, ptr %2533, align 8, !alias.scope !479, !noundef !4 - %2535 = icmp ugt i64 %2534, 24 - br i1 %2535, label %2537, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i": ; preds = %2532 - %2536 = icmp eq i8 %2530, 0 - call void @llvm.assume(i1 %2536) - br label %2553 - -2537: ; preds = %2532 - %2538 = icmp ne i8 %2530, 0 - call void @llvm.assume(i1 %2538) - %2539 = getelementptr inbounds i8, ptr %72, i64 256 - %2540 = load ptr, ptr %2539, align 8, !alias.scope !479, !nonnull !4, !noundef !4 - %2541 = getelementptr inbounds i8, ptr %72, i64 248 - %2542 = load i64, ptr %2541, align 8, !alias.scope !479, !noundef !4 + %2523 = getelementptr inbounds i8, ptr %72, i64 272 + %2524 = load i64, ptr %2523, align 8, !alias.scope !479, !noundef !4 + %2525 = icmp ugt i64 %2524, 24 + br i1 %2525, label %2527, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i": ; preds = %2522 + %2526 = icmp eq i8 %2520, 0 + call void @llvm.assume(i1 %2526) + br label %2543 + +2527: ; preds = %2522 + %2528 = icmp ne i8 %2520, 0 + call void @llvm.assume(i1 %2528) + %2529 = getelementptr inbounds i8, ptr %72, i64 256 + %2530 = load ptr, ptr %2529, align 8, !alias.scope !479, !nonnull !4, !noundef !4 + %2531 = getelementptr inbounds i8, ptr %72, i64 248 + %2532 = load i64, ptr %2531, align 8, !alias.scope !479, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23), !noalias !479 - store i64 %2534, ptr %23, align 8, !noalias !479 - %2543 = getelementptr inbounds i8, ptr %23, i64 8 - store ptr %2540, ptr %2543, align 8, !noalias !479 - %2544 = getelementptr inbounds i8, ptr %23, i64 16 - store i64 %2542, ptr %2544, align 8, !noalias !479 + store i64 %2524, ptr %23, align 8, !noalias !479 + %2533 = getelementptr inbounds i8, ptr %23, i64 8 + store ptr %2530, ptr %2533, align 8, !noalias !479 + %2534 = getelementptr inbounds i8, ptr %23, i64 16 + store i64 %2532, ptr %2534, align 8, !noalias !479 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22), !noalias !480 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc797 unwind label %2551 - -.noexc797: ; preds = %2537 - %2545 = getelementptr inbounds i8, ptr %22, i64 8 - %2546 = load i64, ptr %2545, align 8, !range !125, !noalias !480, !noundef !4 - %.not.i.i.i.i.i.i.i = icmp eq i64 %2546, 0 - br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i", label %2547 - -2547: ; preds = %.noexc797 - %2548 = load ptr, ptr %22, align 8, !noalias !480, !nonnull !4, !noundef !4 - %2549 = getelementptr inbounds i8, ptr %22, i64 16 - %2550 = load i64, ptr %2549, align 8, !noalias !480, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2544, ptr noundef nonnull %2548, i64 noundef %2546, i64 noundef %2550) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" unwind label %2551 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i": ; preds = %2547, %.noexc797 + to label %.noexc797 unwind label %2541 + +.noexc797: ; preds = %2527 + %2535 = getelementptr inbounds i8, ptr %22, i64 8 + %2536 = load i64, ptr %2535, align 8, !range !125, !noalias !480, !noundef !4 + %.not.i.i.i.i.i.i.i = icmp eq i64 %2536, 0 + br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i", label %2537 + +2537: ; preds = %.noexc797 + %2538 = load ptr, ptr %22, align 8, !noalias !480, !nonnull !4, !noundef !4 + %2539 = getelementptr inbounds i8, ptr %22, i64 16 + %2540 = load i64, ptr %2539, align 8, !noalias !480, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2534, ptr noundef nonnull %2538, i64 noundef %2536, i64 noundef %2540) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" unwind label %2541 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i": ; preds = %2537, %.noexc797 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22), !noalias !480 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !479 - br label %2553 + br label %2543 -2551: ; preds = %2547, %2537 - %2552 = landingpad { ptr, i32 } +2541: ; preds = %2537, %2527 + %2542 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %105) #48 - to label %2808 unwind label %2387 + to label %2788 unwind label %2387 -2553: ; preds = %2529, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" +2543: ; preds = %2519, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" call void @llvm.experimental.noalias.scope.decl(metadata !487) - %2554 = load i8, ptr %105, align 8, !range !399, !alias.scope !487, !noundef !4 - %2555 = icmp eq i8 %2554, 2 - br i1 %2555, label %2577, label %2556 + %2544 = load i8, ptr %105, align 8, !range !399, !alias.scope !487, !noundef !4 + %2545 = icmp eq i8 %2544, 2 + br i1 %2545, label %2567, label %2546 -2556: ; preds = %2553 +2546: ; preds = %2543 call void @llvm.experimental.noalias.scope.decl(metadata !490) call void @llvm.experimental.noalias.scope.decl(metadata !493) call void @llvm.experimental.noalias.scope.decl(metadata !496) - %2557 = getelementptr inbounds i8, ptr %72, i64 312 - %2558 = load i64, ptr %2557, align 8, !alias.scope !499, !noundef !4 - %2559 = icmp ugt i64 %2558, 24 - br i1 %2559, label %2561, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799": ; preds = %2556 - %2560 = icmp eq i8 %2554, 0 - call void @llvm.assume(i1 %2560) - br label %2577 - -2561: ; preds = %2556 - %2562 = icmp ne i8 %2554, 0 - call void @llvm.assume(i1 %2562) - %2563 = getelementptr inbounds i8, ptr %72, i64 296 - %2564 = load ptr, ptr %2563, align 8, !alias.scope !499, !nonnull !4, !noundef !4 - %2565 = getelementptr inbounds i8, ptr %72, i64 288 - %2566 = load i64, ptr %2565, align 8, !alias.scope !499, !noundef !4 + %2547 = getelementptr inbounds i8, ptr %72, i64 312 + %2548 = load i64, ptr %2547, align 8, !alias.scope !499, !noundef !4 + %2549 = icmp ugt i64 %2548, 24 + br i1 %2549, label %2551, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799": ; preds = %2546 + %2550 = icmp eq i8 %2544, 0 + call void @llvm.assume(i1 %2550) + br label %2567 + +2551: ; preds = %2546 + %2552 = icmp ne i8 %2544, 0 + call void @llvm.assume(i1 %2552) + %2553 = getelementptr inbounds i8, ptr %72, i64 296 + %2554 = load ptr, ptr %2553, align 8, !alias.scope !499, !nonnull !4, !noundef !4 + %2555 = getelementptr inbounds i8, ptr %72, i64 288 + %2556 = load i64, ptr %2555, align 8, !alias.scope !499, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21), !noalias !499 - store i64 %2558, ptr %21, align 8, !noalias !499 - %2567 = getelementptr inbounds i8, ptr %21, i64 8 - store ptr %2564, ptr %2567, align 8, !noalias !499 - %2568 = getelementptr inbounds i8, ptr %21, i64 16 - store i64 %2566, ptr %2568, align 8, !noalias !499 + store i64 %2548, ptr %21, align 8, !noalias !499 + %2557 = getelementptr inbounds i8, ptr %21, i64 8 + store ptr %2554, ptr %2557, align 8, !noalias !499 + %2558 = getelementptr inbounds i8, ptr %21, i64 16 + store i64 %2556, ptr %2558, align 8, !noalias !499 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20), !noalias !500 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %21) - to label %.noexc802 unwind label %2575 - -.noexc802: ; preds = %2561 - %2569 = getelementptr inbounds i8, ptr %20, i64 8 - %2570 = load i64, ptr %2569, align 8, !range !125, !noalias !500, !noundef !4 - %.not.i.i.i.i.i.i.i800 = icmp eq i64 %2570, 0 - br i1 %.not.i.i.i.i.i.i.i800, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801", label %2571 - -2571: ; preds = %.noexc802 - %2572 = load ptr, ptr %20, align 8, !noalias !500, !nonnull !4, !noundef !4 - %2573 = getelementptr inbounds i8, ptr %20, i64 16 - %2574 = load i64, ptr %2573, align 8, !noalias !500, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2568, ptr noundef nonnull %2572, i64 noundef %2570, i64 noundef %2574) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" unwind label %2575 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801": ; preds = %2571, %.noexc802 + to label %.noexc802 unwind label %2565 + +.noexc802: ; preds = %2551 + %2559 = getelementptr inbounds i8, ptr %20, i64 8 + %2560 = load i64, ptr %2559, align 8, !range !125, !noalias !500, !noundef !4 + %.not.i.i.i.i.i.i.i800 = icmp eq i64 %2560, 0 + br i1 %.not.i.i.i.i.i.i.i800, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801", label %2561 + +2561: ; preds = %.noexc802 + %2562 = load ptr, ptr %20, align 8, !noalias !500, !nonnull !4, !noundef !4 + %2563 = getelementptr inbounds i8, ptr %20, i64 16 + %2564 = load i64, ptr %2563, align 8, !noalias !500, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2558, ptr noundef nonnull %2562, i64 noundef %2560, i64 noundef %2564) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" unwind label %2565 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801": ; preds = %2561, %.noexc802 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20), !noalias !500 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21), !noalias !499 - br label %2577 + br label %2567 -2575: ; preds = %2571, %2561 - %2576 = landingpad { ptr, i32 } +2565: ; preds = %2561, %2551 + %2566 = landingpad { ptr, i32 } cleanup - br label %2808 + br label %2788 -2577: ; preds = %2553, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" +2567: ; preds = %2543, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" call void @llvm.experimental.noalias.scope.decl(metadata !507) - %2578 = load i8, ptr %97, align 8, !range !399, !alias.scope !507, !noundef !4 - %2579 = icmp eq i8 %2578, 2 - br i1 %2579, label %2601, label %2580 + %2568 = load i8, ptr %97, align 8, !range !399, !alias.scope !507, !noundef !4 + %2569 = icmp eq i8 %2568, 2 + br i1 %2569, label %2591, label %2570 -2580: ; preds = %2577 +2570: ; preds = %2567 call void @llvm.experimental.noalias.scope.decl(metadata !510) call void @llvm.experimental.noalias.scope.decl(metadata !513) call void @llvm.experimental.noalias.scope.decl(metadata !516) - %2581 = getelementptr inbounds i8, ptr %72, i64 352 - %2582 = load i64, ptr %2581, align 8, !alias.scope !519, !noundef !4 - %2583 = icmp ugt i64 %2582, 24 - br i1 %2583, label %2585, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805": ; preds = %2580 - %2584 = icmp eq i8 %2578, 0 - call void @llvm.assume(i1 %2584) - br label %2601 - -2585: ; preds = %2580 - %2586 = icmp ne i8 %2578, 0 - call void @llvm.assume(i1 %2586) - %2587 = getelementptr inbounds i8, ptr %72, i64 336 - %2588 = load ptr, ptr %2587, align 8, !alias.scope !519, !nonnull !4, !noundef !4 - %2589 = getelementptr inbounds i8, ptr %72, i64 328 - %2590 = load i64, ptr %2589, align 8, !alias.scope !519, !noundef !4 + %2571 = getelementptr inbounds i8, ptr %72, i64 352 + %2572 = load i64, ptr %2571, align 8, !alias.scope !519, !noundef !4 + %2573 = icmp ugt i64 %2572, 24 + br i1 %2573, label %2575, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805": ; preds = %2570 + %2574 = icmp eq i8 %2568, 0 + call void @llvm.assume(i1 %2574) + br label %2591 + +2575: ; preds = %2570 + %2576 = icmp ne i8 %2568, 0 + call void @llvm.assume(i1 %2576) + %2577 = getelementptr inbounds i8, ptr %72, i64 336 + %2578 = load ptr, ptr %2577, align 8, !alias.scope !519, !nonnull !4, !noundef !4 + %2579 = getelementptr inbounds i8, ptr %72, i64 328 + %2580 = load i64, ptr %2579, align 8, !alias.scope !519, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19), !noalias !519 - store i64 %2582, ptr %19, align 8, !noalias !519 - %2591 = getelementptr inbounds i8, ptr %19, i64 8 - store ptr %2588, ptr %2591, align 8, !noalias !519 - %2592 = getelementptr inbounds i8, ptr %19, i64 16 - store i64 %2590, ptr %2592, align 8, !noalias !519 + store i64 %2572, ptr %19, align 8, !noalias !519 + %2581 = getelementptr inbounds i8, ptr %19, i64 8 + store ptr %2578, ptr %2581, align 8, !noalias !519 + %2582 = getelementptr inbounds i8, ptr %19, i64 16 + store i64 %2580, ptr %2582, align 8, !noalias !519 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18), !noalias !520 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %19) - to label %.noexc808 unwind label %2599 - -.noexc808: ; preds = %2585 - %2593 = getelementptr inbounds i8, ptr %18, i64 8 - %2594 = load i64, ptr %2593, align 8, !range !125, !noalias !520, !noundef !4 - %.not.i.i.i.i.i.i.i806 = icmp eq i64 %2594, 0 - br i1 %.not.i.i.i.i.i.i.i806, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807", label %2595 - -2595: ; preds = %.noexc808 - %2596 = load ptr, ptr %18, align 8, !noalias !520, !nonnull !4, !noundef !4 - %2597 = getelementptr inbounds i8, ptr %18, i64 16 - %2598 = load i64, ptr %2597, align 8, !noalias !520, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2592, ptr noundef nonnull %2596, i64 noundef %2594, i64 noundef %2598) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" unwind label %2599 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807": ; preds = %2595, %.noexc808 + to label %.noexc808 unwind label %2589 + +.noexc808: ; preds = %2575 + %2583 = getelementptr inbounds i8, ptr %18, i64 8 + %2584 = load i64, ptr %2583, align 8, !range !125, !noalias !520, !noundef !4 + %.not.i.i.i.i.i.i.i806 = icmp eq i64 %2584, 0 + br i1 %.not.i.i.i.i.i.i.i806, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807", label %2585 + +2585: ; preds = %.noexc808 + %2586 = load ptr, ptr %18, align 8, !noalias !520, !nonnull !4, !noundef !4 + %2587 = getelementptr inbounds i8, ptr %18, i64 16 + %2588 = load i64, ptr %2587, align 8, !noalias !520, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2582, ptr noundef nonnull %2586, i64 noundef %2584, i64 noundef %2588) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" unwind label %2589 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807": ; preds = %2585, %.noexc808 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18), !noalias !520 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19), !noalias !519 - br label %2601 + br label %2591 -2599: ; preds = %2595, %2585 - %2600 = landingpad { ptr, i32 } +2589: ; preds = %2585, %2575 + %2590 = landingpad { ptr, i32 } cleanup - br label %2809 + br label %2789 -2601: ; preds = %2577, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" +2591: ; preds = %2567, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" call void @llvm.experimental.noalias.scope.decl(metadata !527) - %2602 = load i8, ptr %134, align 8, !range !399, !alias.scope !527, !noundef !4 - %2603 = icmp eq i8 %2602, 2 - br i1 %2603, label %2625, label %2604 + %2592 = load i8, ptr %134, align 8, !range !399, !alias.scope !527, !noundef !4 + %2593 = icmp eq i8 %2592, 2 + br i1 %2593, label %2615, label %2594 -2604: ; preds = %2601 +2594: ; preds = %2591 call void @llvm.experimental.noalias.scope.decl(metadata !530) call void @llvm.experimental.noalias.scope.decl(metadata !533) call void @llvm.experimental.noalias.scope.decl(metadata !536) - %2605 = getelementptr inbounds i8, ptr %72, i64 392 - %2606 = load i64, ptr %2605, align 8, !alias.scope !539, !noundef !4 - %2607 = icmp ugt i64 %2606, 24 - br i1 %2607, label %2609, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811": ; preds = %2604 - %2608 = icmp eq i8 %2602, 0 - call void @llvm.assume(i1 %2608) - br label %2625 - -2609: ; preds = %2604 - %2610 = icmp ne i8 %2602, 0 - call void @llvm.assume(i1 %2610) - %2611 = getelementptr inbounds i8, ptr %72, i64 376 - %2612 = load ptr, ptr %2611, align 8, !alias.scope !539, !nonnull !4, !noundef !4 - %2613 = getelementptr inbounds i8, ptr %72, i64 368 - %2614 = load i64, ptr %2613, align 8, !alias.scope !539, !noundef !4 + %2595 = getelementptr inbounds i8, ptr %72, i64 392 + %2596 = load i64, ptr %2595, align 8, !alias.scope !539, !noundef !4 + %2597 = icmp ugt i64 %2596, 24 + br i1 %2597, label %2599, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811": ; preds = %2594 + %2598 = icmp eq i8 %2592, 0 + call void @llvm.assume(i1 %2598) + br label %2615 + +2599: ; preds = %2594 + %2600 = icmp ne i8 %2592, 0 + call void @llvm.assume(i1 %2600) + %2601 = getelementptr inbounds i8, ptr %72, i64 376 + %2602 = load ptr, ptr %2601, align 8, !alias.scope !539, !nonnull !4, !noundef !4 + %2603 = getelementptr inbounds i8, ptr %72, i64 368 + %2604 = load i64, ptr %2603, align 8, !alias.scope !539, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17), !noalias !539 - store i64 %2606, ptr %17, align 8, !noalias !539 - %2615 = getelementptr inbounds i8, ptr %17, i64 8 - store ptr %2612, ptr %2615, align 8, !noalias !539 - %2616 = getelementptr inbounds i8, ptr %17, i64 16 - store i64 %2614, ptr %2616, align 8, !noalias !539 + store i64 %2596, ptr %17, align 8, !noalias !539 + %2605 = getelementptr inbounds i8, ptr %17, i64 8 + store ptr %2602, ptr %2605, align 8, !noalias !539 + %2606 = getelementptr inbounds i8, ptr %17, i64 16 + store i64 %2604, ptr %2606, align 8, !noalias !539 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16), !noalias !540 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %17) - to label %.noexc814 unwind label %2623 - -.noexc814: ; preds = %2609 - %2617 = getelementptr inbounds i8, ptr %16, i64 8 - %2618 = load i64, ptr %2617, align 8, !range !125, !noalias !540, !noundef !4 - %.not.i.i.i.i.i.i.i812 = icmp eq i64 %2618, 0 - br i1 %.not.i.i.i.i.i.i.i812, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813", label %2619 - -2619: ; preds = %.noexc814 - %2620 = load ptr, ptr %16, align 8, !noalias !540, !nonnull !4, !noundef !4 - %2621 = getelementptr inbounds i8, ptr %16, i64 16 - %2622 = load i64, ptr %2621, align 8, !noalias !540, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2616, ptr noundef nonnull %2620, i64 noundef %2618, i64 noundef %2622) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" unwind label %2623 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813": ; preds = %2619, %.noexc814 + to label %.noexc814 unwind label %2613 + +.noexc814: ; preds = %2599 + %2607 = getelementptr inbounds i8, ptr %16, i64 8 + %2608 = load i64, ptr %2607, align 8, !range !125, !noalias !540, !noundef !4 + %.not.i.i.i.i.i.i.i812 = icmp eq i64 %2608, 0 + br i1 %.not.i.i.i.i.i.i.i812, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813", label %2609 + +2609: ; preds = %.noexc814 + %2610 = load ptr, ptr %16, align 8, !noalias !540, !nonnull !4, !noundef !4 + %2611 = getelementptr inbounds i8, ptr %16, i64 16 + %2612 = load i64, ptr %2611, align 8, !noalias !540, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2606, ptr noundef nonnull %2610, i64 noundef %2608, i64 noundef %2612) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" unwind label %2613 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813": ; preds = %2609, %.noexc814 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16), !noalias !540 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17), !noalias !539 - br label %2625 + br label %2615 -2623: ; preds = %2619, %2609 - %2624 = landingpad { ptr, i32 } +2613: ; preds = %2609, %2599 + %2614 = landingpad { ptr, i32 } cleanup - br label %2810 + br label %2790 -2625: ; preds = %2601, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" +2615: ; preds = %2591, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" call void @llvm.experimental.noalias.scope.decl(metadata !547) - %2626 = load i8, ptr %130, align 8, !range !399, !alias.scope !547, !noundef !4 - %2627 = icmp eq i8 %2626, 2 - br i1 %2627, label %2649, label %2628 + %2616 = load i8, ptr %130, align 8, !range !399, !alias.scope !547, !noundef !4 + %2617 = icmp eq i8 %2616, 2 + br i1 %2617, label %2639, label %2618 -2628: ; preds = %2625 +2618: ; preds = %2615 call void @llvm.experimental.noalias.scope.decl(metadata !550) call void @llvm.experimental.noalias.scope.decl(metadata !553) call void @llvm.experimental.noalias.scope.decl(metadata !556) - %2629 = getelementptr inbounds i8, ptr %72, i64 432 - %2630 = load i64, ptr %2629, align 8, !alias.scope !559, !noundef !4 - %2631 = icmp ugt i64 %2630, 24 - br i1 %2631, label %2633, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817": ; preds = %2628 - %2632 = icmp eq i8 %2626, 0 - call void @llvm.assume(i1 %2632) - br label %2649 - -2633: ; preds = %2628 - %2634 = icmp ne i8 %2626, 0 - call void @llvm.assume(i1 %2634) - %2635 = getelementptr inbounds i8, ptr %72, i64 416 - %2636 = load ptr, ptr %2635, align 8, !alias.scope !559, !nonnull !4, !noundef !4 - %2637 = getelementptr inbounds i8, ptr %72, i64 408 - %2638 = load i64, ptr %2637, align 8, !alias.scope !559, !noundef !4 + %2619 = getelementptr inbounds i8, ptr %72, i64 432 + %2620 = load i64, ptr %2619, align 8, !alias.scope !559, !noundef !4 + %2621 = icmp ugt i64 %2620, 24 + br i1 %2621, label %2623, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817": ; preds = %2618 + %2622 = icmp eq i8 %2616, 0 + call void @llvm.assume(i1 %2622) + br label %2639 + +2623: ; preds = %2618 + %2624 = icmp ne i8 %2616, 0 + call void @llvm.assume(i1 %2624) + %2625 = getelementptr inbounds i8, ptr %72, i64 416 + %2626 = load ptr, ptr %2625, align 8, !alias.scope !559, !nonnull !4, !noundef !4 + %2627 = getelementptr inbounds i8, ptr %72, i64 408 + %2628 = load i64, ptr %2627, align 8, !alias.scope !559, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15), !noalias !559 - store i64 %2630, ptr %15, align 8, !noalias !559 - %2639 = getelementptr inbounds i8, ptr %15, i64 8 - store ptr %2636, ptr %2639, align 8, !noalias !559 - %2640 = getelementptr inbounds i8, ptr %15, i64 16 - store i64 %2638, ptr %2640, align 8, !noalias !559 + store i64 %2620, ptr %15, align 8, !noalias !559 + %2629 = getelementptr inbounds i8, ptr %15, i64 8 + store ptr %2626, ptr %2629, align 8, !noalias !559 + %2630 = getelementptr inbounds i8, ptr %15, i64 16 + store i64 %2628, ptr %2630, align 8, !noalias !559 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14), !noalias !560 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %15) - to label %.noexc820 unwind label %2647 - -.noexc820: ; preds = %2633 - %2641 = getelementptr inbounds i8, ptr %14, i64 8 - %2642 = load i64, ptr %2641, align 8, !range !125, !noalias !560, !noundef !4 - %.not.i.i.i.i.i.i.i818 = icmp eq i64 %2642, 0 - br i1 %.not.i.i.i.i.i.i.i818, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819", label %2643 - -2643: ; preds = %.noexc820 - %2644 = load ptr, ptr %14, align 8, !noalias !560, !nonnull !4, !noundef !4 - %2645 = getelementptr inbounds i8, ptr %14, i64 16 - %2646 = load i64, ptr %2645, align 8, !noalias !560, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2640, ptr noundef nonnull %2644, i64 noundef %2642, i64 noundef %2646) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" unwind label %2647 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819": ; preds = %2643, %.noexc820 + to label %.noexc820 unwind label %2637 + +.noexc820: ; preds = %2623 + %2631 = getelementptr inbounds i8, ptr %14, i64 8 + %2632 = load i64, ptr %2631, align 8, !range !125, !noalias !560, !noundef !4 + %.not.i.i.i.i.i.i.i818 = icmp eq i64 %2632, 0 + br i1 %.not.i.i.i.i.i.i.i818, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819", label %2633 + +2633: ; preds = %.noexc820 + %2634 = load ptr, ptr %14, align 8, !noalias !560, !nonnull !4, !noundef !4 + %2635 = getelementptr inbounds i8, ptr %14, i64 16 + %2636 = load i64, ptr %2635, align 8, !noalias !560, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2630, ptr noundef nonnull %2634, i64 noundef %2632, i64 noundef %2636) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" unwind label %2637 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819": ; preds = %2633, %.noexc820 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14), !noalias !560 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !559 - br label %2649 + br label %2639 -2647: ; preds = %2643, %2633 - %2648 = landingpad { ptr, i32 } +2637: ; preds = %2633, %2623 + %2638 = landingpad { ptr, i32 } cleanup - br label %2811 + br label %2791 -2649: ; preds = %2625, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" +2639: ; preds = %2615, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" call void @llvm.experimental.noalias.scope.decl(metadata !567) - %2650 = load i8, ptr %108, align 8, !range !399, !alias.scope !567, !noundef !4 - %2651 = icmp eq i8 %2650, 2 - br i1 %2651, label %2673, label %2652 + %2640 = load i8, ptr %108, align 8, !range !399, !alias.scope !567, !noundef !4 + %2641 = icmp eq i8 %2640, 2 + br i1 %2641, label %2663, label %2642 -2652: ; preds = %2649 +2642: ; preds = %2639 call void @llvm.experimental.noalias.scope.decl(metadata !570) call void @llvm.experimental.noalias.scope.decl(metadata !573) call void @llvm.experimental.noalias.scope.decl(metadata !576) - %2653 = getelementptr inbounds i8, ptr %72, i64 472 - %2654 = load i64, ptr %2653, align 8, !alias.scope !579, !noundef !4 - %2655 = icmp ugt i64 %2654, 24 - br i1 %2655, label %2657, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823": ; preds = %2652 - %2656 = icmp eq i8 %2650, 0 - call void @llvm.assume(i1 %2656) - br label %2673 - -2657: ; preds = %2652 - %2658 = icmp ne i8 %2650, 0 - call void @llvm.assume(i1 %2658) - %2659 = getelementptr inbounds i8, ptr %72, i64 456 - %2660 = load ptr, ptr %2659, align 8, !alias.scope !579, !nonnull !4, !noundef !4 - %2661 = getelementptr inbounds i8, ptr %72, i64 448 - %2662 = load i64, ptr %2661, align 8, !alias.scope !579, !noundef !4 + %2643 = getelementptr inbounds i8, ptr %72, i64 472 + %2644 = load i64, ptr %2643, align 8, !alias.scope !579, !noundef !4 + %2645 = icmp ugt i64 %2644, 24 + br i1 %2645, label %2647, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823": ; preds = %2642 + %2646 = icmp eq i8 %2640, 0 + call void @llvm.assume(i1 %2646) + br label %2663 + +2647: ; preds = %2642 + %2648 = icmp ne i8 %2640, 0 + call void @llvm.assume(i1 %2648) + %2649 = getelementptr inbounds i8, ptr %72, i64 456 + %2650 = load ptr, ptr %2649, align 8, !alias.scope !579, !nonnull !4, !noundef !4 + %2651 = getelementptr inbounds i8, ptr %72, i64 448 + %2652 = load i64, ptr %2651, align 8, !alias.scope !579, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13), !noalias !579 - store i64 %2654, ptr %13, align 8, !noalias !579 - %2663 = getelementptr inbounds i8, ptr %13, i64 8 - store ptr %2660, ptr %2663, align 8, !noalias !579 - %2664 = getelementptr inbounds i8, ptr %13, i64 16 - store i64 %2662, ptr %2664, align 8, !noalias !579 + store i64 %2644, ptr %13, align 8, !noalias !579 + %2653 = getelementptr inbounds i8, ptr %13, i64 8 + store ptr %2650, ptr %2653, align 8, !noalias !579 + %2654 = getelementptr inbounds i8, ptr %13, i64 16 + store i64 %2652, ptr %2654, align 8, !noalias !579 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12), !noalias !580 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %13) - to label %.noexc826 unwind label %2671 - -.noexc826: ; preds = %2657 - %2665 = getelementptr inbounds i8, ptr %12, i64 8 - %2666 = load i64, ptr %2665, align 8, !range !125, !noalias !580, !noundef !4 - %.not.i.i.i.i.i.i.i824 = icmp eq i64 %2666, 0 - br i1 %.not.i.i.i.i.i.i.i824, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825", label %2667 - -2667: ; preds = %.noexc826 - %2668 = load ptr, ptr %12, align 8, !noalias !580, !nonnull !4, !noundef !4 - %2669 = getelementptr inbounds i8, ptr %12, i64 16 - %2670 = load i64, ptr %2669, align 8, !noalias !580, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2664, ptr noundef nonnull %2668, i64 noundef %2666, i64 noundef %2670) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" unwind label %2671 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825": ; preds = %2667, %.noexc826 + to label %.noexc826 unwind label %2661 + +.noexc826: ; preds = %2647 + %2655 = getelementptr inbounds i8, ptr %12, i64 8 + %2656 = load i64, ptr %2655, align 8, !range !125, !noalias !580, !noundef !4 + %.not.i.i.i.i.i.i.i824 = icmp eq i64 %2656, 0 + br i1 %.not.i.i.i.i.i.i.i824, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825", label %2657 + +2657: ; preds = %.noexc826 + %2658 = load ptr, ptr %12, align 8, !noalias !580, !nonnull !4, !noundef !4 + %2659 = getelementptr inbounds i8, ptr %12, i64 16 + %2660 = load i64, ptr %2659, align 8, !noalias !580, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2654, ptr noundef nonnull %2658, i64 noundef %2656, i64 noundef %2660) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" unwind label %2661 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825": ; preds = %2657, %.noexc826 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !580 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !579 - br label %2673 + br label %2663 -2671: ; preds = %2667, %2657 - %2672 = landingpad { ptr, i32 } +2661: ; preds = %2657, %2647 + %2662 = landingpad { ptr, i32 } cleanup - br label %2812 + br label %2792 -2673: ; preds = %2649, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" +2663: ; preds = %2639, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" call void @llvm.experimental.noalias.scope.decl(metadata !587) - %2674 = load i8, ptr %115, align 8, !range !399, !alias.scope !587, !noundef !4 - %2675 = icmp eq i8 %2674, 2 - br i1 %2675, label %2697, label %2676 + %2664 = load i8, ptr %115, align 8, !range !399, !alias.scope !587, !noundef !4 + %2665 = icmp eq i8 %2664, 2 + br i1 %2665, label %2687, label %2666 -2676: ; preds = %2673 +2666: ; preds = %2663 call void @llvm.experimental.noalias.scope.decl(metadata !590) call void @llvm.experimental.noalias.scope.decl(metadata !593) call void @llvm.experimental.noalias.scope.decl(metadata !596) - %2677 = getelementptr inbounds i8, ptr %72, i64 512 - %2678 = load i64, ptr %2677, align 8, !alias.scope !599, !noundef !4 - %2679 = icmp ugt i64 %2678, 24 - br i1 %2679, label %2681, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829": ; preds = %2676 - %2680 = icmp eq i8 %2674, 0 - call void @llvm.assume(i1 %2680) - br label %2697 - -2681: ; preds = %2676 - %2682 = icmp ne i8 %2674, 0 - call void @llvm.assume(i1 %2682) - %2683 = getelementptr inbounds i8, ptr %72, i64 496 - %2684 = load ptr, ptr %2683, align 8, !alias.scope !599, !nonnull !4, !noundef !4 - %2685 = getelementptr inbounds i8, ptr %72, i64 488 - %2686 = load i64, ptr %2685, align 8, !alias.scope !599, !noundef !4 + %2667 = getelementptr inbounds i8, ptr %72, i64 512 + %2668 = load i64, ptr %2667, align 8, !alias.scope !599, !noundef !4 + %2669 = icmp ugt i64 %2668, 24 + br i1 %2669, label %2671, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829": ; preds = %2666 + %2670 = icmp eq i8 %2664, 0 + call void @llvm.assume(i1 %2670) + br label %2687 + +2671: ; preds = %2666 + %2672 = icmp ne i8 %2664, 0 + call void @llvm.assume(i1 %2672) + %2673 = getelementptr inbounds i8, ptr %72, i64 496 + %2674 = load ptr, ptr %2673, align 8, !alias.scope !599, !nonnull !4, !noundef !4 + %2675 = getelementptr inbounds i8, ptr %72, i64 488 + %2676 = load i64, ptr %2675, align 8, !alias.scope !599, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11), !noalias !599 - store i64 %2678, ptr %11, align 8, !noalias !599 - %2687 = getelementptr inbounds i8, ptr %11, i64 8 - store ptr %2684, ptr %2687, align 8, !noalias !599 - %2688 = getelementptr inbounds i8, ptr %11, i64 16 - store i64 %2686, ptr %2688, align 8, !noalias !599 + store i64 %2668, ptr %11, align 8, !noalias !599 + %2677 = getelementptr inbounds i8, ptr %11, i64 8 + store ptr %2674, ptr %2677, align 8, !noalias !599 + %2678 = getelementptr inbounds i8, ptr %11, i64 16 + store i64 %2676, ptr %2678, align 8, !noalias !599 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !600 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11) - to label %.noexc832 unwind label %2695 - -.noexc832: ; preds = %2681 - %2689 = getelementptr inbounds i8, ptr %10, i64 8 - %2690 = load i64, ptr %2689, align 8, !range !125, !noalias !600, !noundef !4 - %.not.i.i.i.i.i.i.i830 = icmp eq i64 %2690, 0 - br i1 %.not.i.i.i.i.i.i.i830, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831", label %2691 - -2691: ; preds = %.noexc832 - %2692 = load ptr, ptr %10, align 8, !noalias !600, !nonnull !4, !noundef !4 - %2693 = getelementptr inbounds i8, ptr %10, i64 16 - %2694 = load i64, ptr %2693, align 8, !noalias !600, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2688, ptr noundef nonnull %2692, i64 noundef %2690, i64 noundef %2694) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" unwind label %2695 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831": ; preds = %2691, %.noexc832 + to label %.noexc832 unwind label %2685 + +.noexc832: ; preds = %2671 + %2679 = getelementptr inbounds i8, ptr %10, i64 8 + %2680 = load i64, ptr %2679, align 8, !range !125, !noalias !600, !noundef !4 + %.not.i.i.i.i.i.i.i830 = icmp eq i64 %2680, 0 + br i1 %.not.i.i.i.i.i.i.i830, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831", label %2681 + +2681: ; preds = %.noexc832 + %2682 = load ptr, ptr %10, align 8, !noalias !600, !nonnull !4, !noundef !4 + %2683 = getelementptr inbounds i8, ptr %10, i64 16 + %2684 = load i64, ptr %2683, align 8, !noalias !600, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2678, ptr noundef nonnull %2682, i64 noundef %2680, i64 noundef %2684) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" unwind label %2685 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831": ; preds = %2681, %.noexc832 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !600 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11), !noalias !599 - br label %2697 + br label %2687 -2695: ; preds = %2691, %2681 - %2696 = landingpad { ptr, i32 } +2685: ; preds = %2681, %2671 + %2686 = landingpad { ptr, i32 } cleanup - br label %2813 + br label %2793 -2697: ; preds = %2673, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" +2687: ; preds = %2663, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" call void @llvm.experimental.noalias.scope.decl(metadata !607) - %2698 = load i64, ptr %116, align 8, !range !125, !alias.scope !607, !noundef !4 - %2699 = icmp eq i64 %2698, -9223372036854775808 - br i1 %2699, label %2717, label %2700 + %2688 = load i64, ptr %116, align 8, !range !125, !alias.scope !607, !noundef !4 + %2689 = icmp eq i64 %2688, -9223372036854775808 + br i1 %2689, label %2707, label %2690 -2700: ; preds = %2697 +2690: ; preds = %2687 call void @llvm.experimental.noalias.scope.decl(metadata !610) - %2701 = getelementptr inbounds i8, ptr %72, i64 40 - %2702 = load ptr, ptr %2701, align 8, !alias.scope !613, !nonnull !4, !noundef !4 - %2703 = getelementptr inbounds i8, ptr %72, i64 48 - %2704 = load i64, ptr %2703, align 8, !alias.scope !613, !noundef !4 - invoke void @"_ZN4core3ptr57drop_in_place$LT$$u5b$exr..meta..attribute..Text$u5d$$GT$17h54d6cfd12be0463dE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 %2702, i64 noundef %2704) - to label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" unwind label %2705, !noalias !616 - -2705: ; preds = %2700 - %2706 = landingpad { ptr, i32 } + %2691 = getelementptr inbounds i8, ptr %72, i64 40 + %2692 = load ptr, ptr %2691, align 8, !alias.scope !613, !nonnull !4, !noundef !4 + %2693 = getelementptr inbounds i8, ptr %72, i64 48 + %2694 = load i64, ptr %2693, align 8, !alias.scope !613, !noundef !4 + invoke void @"_ZN4core3ptr57drop_in_place$LT$$u5b$exr..meta..attribute..Text$u5d$$GT$17h54d6cfd12be0463dE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 %2692, i64 noundef %2694) + to label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" unwind label %2695, !noalias !616 + +2695: ; preds = %2690 + %2696 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..raw_vec..RawVec$LT$exr..meta..attribute..Text$GT$$GT$17hb5273f395f6ae07eE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(16) %116) #48 - to label %.body unwind label %2713 + to label %.body unwind label %2703 -"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i": ; preds = %2700 +"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i": ; preds = %2690 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !617 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3575eb9489abc3deE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %116) - to label %.noexc835 unwind label %2715 + to label %.noexc835 unwind label %2705 .noexc835: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" - %2707 = getelementptr inbounds i8, ptr %9, i64 8 - %2708 = load i64, ptr %2707, align 8, !range !125, !noalias !617, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %2708, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i", label %2709 - -2709: ; preds = %.noexc835 - %2710 = load ptr, ptr %9, align 8, !noalias !617, !nonnull !4, !noundef !4 - %2711 = getelementptr inbounds i8, ptr %9, i64 16 - %2712 = load i64, ptr %2711, align 8, !noalias !617, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2703, ptr noundef nonnull %2710, i64 noundef %2708, i64 noundef %2712) - to label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" unwind label %2715 - -2713: ; preds = %2705 - %2714 = landingpad { ptr, i32 } + %2697 = getelementptr inbounds i8, ptr %9, i64 8 + %2698 = load i64, ptr %2697, align 8, !range !125, !noalias !617, !noundef !4 + %.not.i.i.i.i = icmp eq i64 %2698, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i", label %2699 + +2699: ; preds = %.noexc835 + %2700 = load ptr, ptr %9, align 8, !noalias !617, !nonnull !4, !noundef !4 + %2701 = getelementptr inbounds i8, ptr %9, i64 16 + %2702 = load i64, ptr %2701, align 8, !noalias !617, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2693, ptr noundef nonnull %2700, i64 noundef %2698, i64 noundef %2702) + to label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" unwind label %2705 + +2703: ; preds = %2695 + %2704 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i": ; preds = %2709, %.noexc835 +"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i": ; preds = %2699, %.noexc835 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !617 - br label %2717 + br label %2707 -2715: ; preds = %2709, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" - %2716 = landingpad { ptr, i32 } +2705: ; preds = %2699, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" + %2706 = landingpad { ptr, i32 } cleanup br label %.body -2717: ; preds = %2697, %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" +2707: ; preds = %2687, %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" call void @llvm.experimental.noalias.scope.decl(metadata !622) - %2718 = load i64, ptr %109, align 8, !range !125, !alias.scope !622, !noundef !4 - %2719 = icmp eq i64 %2718, -9223372036854775808 - br i1 %2719, label %2730, label %2720 + %2708 = load i64, ptr %109, align 8, !range !125, !alias.scope !622, !noundef !4 + %2709 = icmp eq i64 %2708, -9223372036854775808 + br i1 %2709, label %2720, label %2710 -2720: ; preds = %2717 +2710: ; preds = %2707 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !625 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he521b5452bc33e2fE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %109) - to label %.noexc837 unwind label %2728 - -.noexc837: ; preds = %2720 - %2721 = getelementptr inbounds i8, ptr %8, i64 8 - %2722 = load i64, ptr %2721, align 8, !range !125, !noalias !625, !noundef !4 - %.not.i.i.i.i.i = icmp eq i64 %2722, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i", label %2723 - -2723: ; preds = %.noexc837 - %2724 = load ptr, ptr %8, align 8, !noalias !625, !nonnull !4, !noundef !4 - %2725 = getelementptr inbounds i8, ptr %8, i64 16 - %2726 = load i64, ptr %2725, align 8, !noalias !625, !noundef !4 - %2727 = getelementptr inbounds i8, ptr %72, i64 72 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2727, ptr noundef nonnull %2724, i64 noundef %2722, i64 noundef %2726) - to label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" unwind label %2728 - -"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i": ; preds = %2723, %.noexc837 + to label %.noexc837 unwind label %2718 + +.noexc837: ; preds = %2710 + %2711 = getelementptr inbounds i8, ptr %8, i64 8 + %2712 = load i64, ptr %2711, align 8, !range !125, !noalias !625, !noundef !4 + %.not.i.i.i.i.i = icmp eq i64 %2712, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i", label %2713 + +2713: ; preds = %.noexc837 + %2714 = load ptr, ptr %8, align 8, !noalias !625, !nonnull !4, !noundef !4 + %2715 = getelementptr inbounds i8, ptr %8, i64 16 + %2716 = load i64, ptr %2715, align 8, !noalias !625, !noundef !4 + %2717 = getelementptr inbounds i8, ptr %72, i64 72 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2717, ptr noundef nonnull %2714, i64 noundef %2712, i64 noundef %2716) + to label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" unwind label %2718 + +"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i": ; preds = %2713, %.noexc837 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !625 - br label %2730 + br label %2720 -2728: ; preds = %2723, %2720 - %2729 = landingpad { ptr, i32 } +2718: ; preds = %2713, %2710 + %2719 = landingpad { ptr, i32 } cleanup - br label %2814 + br label %2794 -2730: ; preds = %2717, %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" +2720: ; preds = %2707, %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" call void @llvm.experimental.noalias.scope.decl(metadata !634) - %2731 = load i8, ptr %137, align 8, !range !399, !alias.scope !634, !noundef !4 - %2732 = icmp eq i8 %2731, 2 - br i1 %2732, label %2754, label %2733 + %2721 = load i8, ptr %137, align 8, !range !399, !alias.scope !634, !noundef !4 + %2722 = icmp eq i8 %2721, 2 + br i1 %2722, label %2744, label %2723 -2733: ; preds = %2730 +2723: ; preds = %2720 call void @llvm.experimental.noalias.scope.decl(metadata !637) call void @llvm.experimental.noalias.scope.decl(metadata !640) call void @llvm.experimental.noalias.scope.decl(metadata !643) - %2734 = getelementptr inbounds i8, ptr %72, i64 552 - %2735 = load i64, ptr %2734, align 8, !alias.scope !646, !noundef !4 - %2736 = icmp ugt i64 %2735, 24 - br i1 %2736, label %2738, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839": ; preds = %2733 - %2737 = icmp eq i8 %2731, 0 - call void @llvm.assume(i1 %2737) - br label %2754 - -2738: ; preds = %2733 - %2739 = icmp ne i8 %2731, 0 - call void @llvm.assume(i1 %2739) - %2740 = getelementptr inbounds i8, ptr %72, i64 536 - %2741 = load ptr, ptr %2740, align 8, !alias.scope !646, !nonnull !4, !noundef !4 - %2742 = getelementptr inbounds i8, ptr %72, i64 528 - %2743 = load i64, ptr %2742, align 8, !alias.scope !646, !noundef !4 + %2724 = getelementptr inbounds i8, ptr %72, i64 552 + %2725 = load i64, ptr %2724, align 8, !alias.scope !646, !noundef !4 + %2726 = icmp ugt i64 %2725, 24 + br i1 %2726, label %2728, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839": ; preds = %2723 + %2727 = icmp eq i8 %2721, 0 + call void @llvm.assume(i1 %2727) + br label %2744 + +2728: ; preds = %2723 + %2729 = icmp ne i8 %2721, 0 + call void @llvm.assume(i1 %2729) + %2730 = getelementptr inbounds i8, ptr %72, i64 536 + %2731 = load ptr, ptr %2730, align 8, !alias.scope !646, !nonnull !4, !noundef !4 + %2732 = getelementptr inbounds i8, ptr %72, i64 528 + %2733 = load i64, ptr %2732, align 8, !alias.scope !646, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !646 - store i64 %2735, ptr %7, align 8, !noalias !646 - %2744 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr %2741, ptr %2744, align 8, !noalias !646 - %2745 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %2743, ptr %2745, align 8, !noalias !646 + store i64 %2725, ptr %7, align 8, !noalias !646 + %2734 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr %2731, ptr %2734, align 8, !noalias !646 + %2735 = getelementptr inbounds i8, ptr %7, i64 16 + store i64 %2733, ptr %2735, align 8, !noalias !646 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !647 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7) - to label %.noexc842 unwind label %2752 - -.noexc842: ; preds = %2738 - %2746 = getelementptr inbounds i8, ptr %6, i64 8 - %2747 = load i64, ptr %2746, align 8, !range !125, !noalias !647, !noundef !4 - %.not.i.i.i.i.i.i.i840 = icmp eq i64 %2747, 0 - br i1 %.not.i.i.i.i.i.i.i840, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841", label %2748 - -2748: ; preds = %.noexc842 - %2749 = load ptr, ptr %6, align 8, !noalias !647, !nonnull !4, !noundef !4 - %2750 = getelementptr inbounds i8, ptr %6, i64 16 - %2751 = load i64, ptr %2750, align 8, !noalias !647, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2745, ptr noundef nonnull %2749, i64 noundef %2747, i64 noundef %2751) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" unwind label %2752 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841": ; preds = %2748, %.noexc842 + to label %.noexc842 unwind label %2742 + +.noexc842: ; preds = %2728 + %2736 = getelementptr inbounds i8, ptr %6, i64 8 + %2737 = load i64, ptr %2736, align 8, !range !125, !noalias !647, !noundef !4 + %.not.i.i.i.i.i.i.i840 = icmp eq i64 %2737, 0 + br i1 %.not.i.i.i.i.i.i.i840, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841", label %2738 + +2738: ; preds = %.noexc842 + %2739 = load ptr, ptr %6, align 8, !noalias !647, !nonnull !4, !noundef !4 + %2740 = getelementptr inbounds i8, ptr %6, i64 16 + %2741 = load i64, ptr %2740, align 8, !noalias !647, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2735, ptr noundef nonnull %2739, i64 noundef %2737, i64 noundef %2741) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" unwind label %2742 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841": ; preds = %2738, %.noexc842 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !647 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !646 - br label %2754 + br label %2744 -2752: ; preds = %2748, %2738 - %2753 = landingpad { ptr, i32 } +2742: ; preds = %2738, %2728 + %2743 = landingpad { ptr, i32 } cleanup - br label %2815 + br label %2795 -2754: ; preds = %2730, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" +2744: ; preds = %2720, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" call void @llvm.experimental.noalias.scope.decl(metadata !654) - %2755 = load i8, ptr %129, align 8, !range !399, !alias.scope !654, !noundef !4 - %2756 = icmp eq i8 %2755, 2 - br i1 %2756, label %2778, label %2757 + %2745 = load i8, ptr %129, align 8, !range !399, !alias.scope !654, !noundef !4 + %2746 = icmp eq i8 %2745, 2 + br i1 %2746, label %2768, label %2747 -2757: ; preds = %2754 +2747: ; preds = %2744 call void @llvm.experimental.noalias.scope.decl(metadata !657) call void @llvm.experimental.noalias.scope.decl(metadata !660) call void @llvm.experimental.noalias.scope.decl(metadata !663) - %2758 = getelementptr inbounds i8, ptr %72, i64 592 - %2759 = load i64, ptr %2758, align 8, !alias.scope !666, !noundef !4 - %2760 = icmp ugt i64 %2759, 24 - br i1 %2760, label %2762, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845": ; preds = %2757 - %2761 = icmp eq i8 %2755, 0 - call void @llvm.assume(i1 %2761) - br label %2778 - -2762: ; preds = %2757 - %2763 = icmp ne i8 %2755, 0 - call void @llvm.assume(i1 %2763) - %2764 = getelementptr inbounds i8, ptr %72, i64 576 - %2765 = load ptr, ptr %2764, align 8, !alias.scope !666, !nonnull !4, !noundef !4 - %2766 = getelementptr inbounds i8, ptr %72, i64 568 - %2767 = load i64, ptr %2766, align 8, !alias.scope !666, !noundef !4 + %2748 = getelementptr inbounds i8, ptr %72, i64 592 + %2749 = load i64, ptr %2748, align 8, !alias.scope !666, !noundef !4 + %2750 = icmp ugt i64 %2749, 24 + br i1 %2750, label %2752, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845": ; preds = %2747 + %2751 = icmp eq i8 %2745, 0 + call void @llvm.assume(i1 %2751) + br label %2768 + +2752: ; preds = %2747 + %2753 = icmp ne i8 %2745, 0 + call void @llvm.assume(i1 %2753) + %2754 = getelementptr inbounds i8, ptr %72, i64 576 + %2755 = load ptr, ptr %2754, align 8, !alias.scope !666, !nonnull !4, !noundef !4 + %2756 = getelementptr inbounds i8, ptr %72, i64 568 + %2757 = load i64, ptr %2756, align 8, !alias.scope !666, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !666 - store i64 %2759, ptr %5, align 8, !noalias !666 - %2768 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr %2765, ptr %2768, align 8, !noalias !666 - %2769 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 %2767, ptr %2769, align 8, !noalias !666 + store i64 %2749, ptr %5, align 8, !noalias !666 + %2758 = getelementptr inbounds i8, ptr %5, i64 8 + store ptr %2755, ptr %2758, align 8, !noalias !666 + %2759 = getelementptr inbounds i8, ptr %5, i64 16 + store i64 %2757, ptr %2759, align 8, !noalias !666 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !667 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %5) - to label %.noexc848 unwind label %2776 - -.noexc848: ; preds = %2762 - %2770 = getelementptr inbounds i8, ptr %4, i64 8 - %2771 = load i64, ptr %2770, align 8, !range !125, !noalias !667, !noundef !4 - %.not.i.i.i.i.i.i.i846 = icmp eq i64 %2771, 0 - br i1 %.not.i.i.i.i.i.i.i846, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847", label %2772 - -2772: ; preds = %.noexc848 - %2773 = load ptr, ptr %4, align 8, !noalias !667, !nonnull !4, !noundef !4 - %2774 = getelementptr inbounds i8, ptr %4, i64 16 - %2775 = load i64, ptr %2774, align 8, !noalias !667, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2769, ptr noundef nonnull %2773, i64 noundef %2771, i64 noundef %2775) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" unwind label %2776 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847": ; preds = %2772, %.noexc848 + to label %.noexc848 unwind label %2766 + +.noexc848: ; preds = %2752 + %2760 = getelementptr inbounds i8, ptr %4, i64 8 + %2761 = load i64, ptr %2760, align 8, !range !125, !noalias !667, !noundef !4 + %.not.i.i.i.i.i.i.i846 = icmp eq i64 %2761, 0 + br i1 %.not.i.i.i.i.i.i.i846, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847", label %2762 + +2762: ; preds = %.noexc848 + %2763 = load ptr, ptr %4, align 8, !noalias !667, !nonnull !4, !noundef !4 + %2764 = getelementptr inbounds i8, ptr %4, i64 16 + %2765 = load i64, ptr %2764, align 8, !noalias !667, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2759, ptr noundef nonnull %2763, i64 noundef %2761, i64 noundef %2765) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" unwind label %2766 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847": ; preds = %2762, %.noexc848 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !667 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !666 - br label %2778 + br label %2768 -2776: ; preds = %2772, %2762 - %2777 = landingpad { ptr, i32 } +2766: ; preds = %2762, %2752 + %2767 = landingpad { ptr, i32 } cleanup - br label %2816 + br label %2796 -2778: ; preds = %2754, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" +2768: ; preds = %2744, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" call void @llvm.experimental.noalias.scope.decl(metadata !674) call void @llvm.experimental.noalias.scope.decl(metadata !677) call void @llvm.experimental.noalias.scope.decl(metadata !680) call void @llvm.experimental.noalias.scope.decl(metadata !683) call void @llvm.experimental.noalias.scope.decl(metadata !686) - %2779 = getelementptr inbounds i8, ptr %72, i64 608 - %2780 = load i64, ptr %2779, align 8, !alias.scope !689, !noundef !4 - %2781 = icmp eq i64 %2780, 0 - br i1 %2781, label %2804, label %2782 + %2769 = getelementptr inbounds i8, ptr %72, i64 608 + %2770 = load i64, ptr %2769, align 8, !alias.scope !689, !noundef !4 + %2771 = icmp eq i64 %2770, 0 + br i1 %2771, label %2784, label %2772 -2782: ; preds = %2778 +2772: ; preds = %2768 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %140) to label %.noexc851 unwind label %74 -.noexc851: ; preds = %2782 +.noexc851: ; preds = %2772 call void @llvm.experimental.noalias.scope.decl(metadata !690) - %2783 = add i64 %2780, 1 - %2784 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2783, i64 392) - %2785 = extractvalue { i64, i1 } %2784, 1 - %2786 = xor i1 %2785, true - call void @llvm.assume(i1 %2786) - %2787 = extractvalue { i64, i1 } %2784, 0 - %2788 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2787, i64 15) - %2789 = extractvalue { i64, i1 } %2788, 1 - %2790 = xor i1 %2789, true - call void @llvm.assume(i1 %2790) - %2791 = extractvalue { i64, i1 } %2788, 0 - %2792 = and i64 %2791, -16 - %2793 = add i64 %2780, 17 - %2794 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2792, i64 %2793) - %2795 = extractvalue { i64, i1 } %2794, 0 - %2796 = extractvalue { i64, i1 } %2794, 1 - %2797 = icmp ult i64 %2795, 9223372036854775793 - %2798 = xor i1 %2796, true - call void @llvm.assume(i1 %2798) - call void @llvm.assume(i1 %2797) - %2799 = icmp eq i64 %2795, 0 - br i1 %2799, label %2804, label %2800 - -2800: ; preds = %.noexc851 - %2801 = load ptr, ptr %140, align 8, !alias.scope !693, !nonnull !4, !noundef !4 - %2802 = sub nsw i64 0, %2792 - %2803 = getelementptr inbounds i8, ptr %2801, i64 %2802 - call void @__rust_dealloc(ptr noundef nonnull %2803, i64 noundef %2795, i64 noundef 16) #50, !noalias !693 - br label %2804 - -"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852": ; preds = %2807, %2804, %.thread650 + %2773 = mul i64 %2770, 392 + %2774 = add i64 %2773, 407 + %2775 = and i64 %2774, -16 + %2776 = add i64 %2770, 17 + %2777 = add nuw i64 %2776, %2775 + %2778 = icmp ult i64 %2777, 9223372036854775793 + call void @llvm.assume(i1 %2778) + %2779 = icmp eq i64 %2777, 0 + br i1 %2779, label %2784, label %2780 + +2780: ; preds = %.noexc851 + %2781 = load ptr, ptr %140, align 8, !alias.scope !693, !nonnull !4, !noundef !4 + %2782 = sub nsw i64 0, %2775 + %2783 = getelementptr inbounds i8, ptr %2781, i64 %2782 + call void @__rust_dealloc(ptr noundef nonnull %2783, i64 noundef %2777, i64 noundef 16) #50, !noalias !693 + br label %2784 + +"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852": ; preds = %2787, %2784, %.thread650 call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %73) br label %2494 -2804: ; preds = %2778, %.noexc851, %2800 +2784: ; preds = %2768, %.noexc851, %2780 call void @llvm.lifetime.end.p0(i64 848, ptr nonnull %72) - %2805 = load i64, ptr %73, align 8, !range !395, !alias.scope !694, !noundef !4 - %2806 = icmp eq i64 %2805, 2 - br i1 %2806, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852", label %2807 + %2785 = load i64, ptr %73, align 8, !range !395, !alias.scope !694, !noundef !4 + %2786 = icmp eq i64 %2785, 2 + br i1 %2786, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852", label %2787 -2807: ; preds = %2804 +2787: ; preds = %2784 call void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2fa1c395e3df82f2E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(336) %73) br label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852" -2808: ; preds = %2575, %2551 - %.pn = phi { ptr, i32 } [ %2576, %2575 ], [ %2552, %2551 ] +2788: ; preds = %2565, %2541 + %.pn = phi { ptr, i32 } [ %2566, %2565 ], [ %2542, %2541 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %97) #48 - to label %2809 unwind label %2387 + to label %2789 unwind label %2387 -2809: ; preds = %2599, %2808 - %.pn755 = phi { ptr, i32 } [ %2600, %2599 ], [ %.pn, %2808 ] +2789: ; preds = %2589, %2788 + %.pn755 = phi { ptr, i32 } [ %2590, %2589 ], [ %.pn, %2788 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %134) #48 - to label %2810 unwind label %2387 + to label %2790 unwind label %2387 -2810: ; preds = %2623, %2809 - %.pn757 = phi { ptr, i32 } [ %2624, %2623 ], [ %.pn755, %2809 ] +2790: ; preds = %2613, %2789 + %.pn757 = phi { ptr, i32 } [ %2614, %2613 ], [ %.pn755, %2789 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %130) #48 - to label %2811 unwind label %2387 + to label %2791 unwind label %2387 -2811: ; preds = %2647, %2810 - %.pn759 = phi { ptr, i32 } [ %2648, %2647 ], [ %.pn757, %2810 ] +2791: ; preds = %2637, %2790 + %.pn759 = phi { ptr, i32 } [ %2638, %2637 ], [ %.pn757, %2790 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %108) #48 - to label %2812 unwind label %2387 + to label %2792 unwind label %2387 -2812: ; preds = %2671, %2811 - %.pn761 = phi { ptr, i32 } [ %2672, %2671 ], [ %.pn759, %2811 ] +2792: ; preds = %2661, %2791 + %.pn761 = phi { ptr, i32 } [ %2662, %2661 ], [ %.pn759, %2791 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %115) #48 - to label %2813 unwind label %2387 + to label %2793 unwind label %2387 -2813: ; preds = %2695, %2812 - %.pn763 = phi { ptr, i32 } [ %2696, %2695 ], [ %.pn761, %2812 ] +2793: ; preds = %2685, %2792 + %.pn763 = phi { ptr, i32 } [ %2686, %2685 ], [ %.pn761, %2792 ] invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %116) #48 to label %.body unwind label %2387 -.body: ; preds = %2715, %2705, %2813 - %eh.lpad-body.pn = phi { ptr, i32 } [ %.pn763, %2813 ], [ %2716, %2715 ], [ %2706, %2705 ] +.body: ; preds = %2705, %2695, %2793 + %eh.lpad-body.pn = phi { ptr, i32 } [ %.pn763, %2793 ], [ %2706, %2705 ], [ %2696, %2695 ] invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %109) #48 - to label %2814 unwind label %2387 + to label %2794 unwind label %2387 -2814: ; preds = %2728, %.body - %.pn766 = phi { ptr, i32 } [ %2729, %2728 ], [ %eh.lpad-body.pn, %.body ] +2794: ; preds = %2718, %.body + %.pn766 = phi { ptr, i32 } [ %2719, %2718 ], [ %eh.lpad-body.pn, %.body ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %137) #48 - to label %2815 unwind label %2387 + to label %2795 unwind label %2387 -2815: ; preds = %2752, %2814 - %.pn768 = phi { ptr, i32 } [ %2753, %2752 ], [ %.pn766, %2814 ] +2795: ; preds = %2742, %2794 + %.pn768 = phi { ptr, i32 } [ %2743, %2742 ], [ %.pn766, %2794 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %129) #48 - to label %2816 unwind label %2387 + to label %2796 unwind label %2387 -2816: ; preds = %2776, %2815 - %.pn770 = phi { ptr, i32 } [ %2777, %2776 ], [ %.pn768, %2815 ] +2796: ; preds = %2766, %2795 + %.pn770 = phi { ptr, i32 } [ %2767, %2766 ], [ %.pn768, %2795 ] invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %140) #48 to label %.thread unwind label %2387 .thread91: ; preds = %.thread98.loopexit, %.thread98.loopexit.split-lp, %2409, %.thread458 %.pn72596 = phi { ptr, i32 } [ %.pn715, %2409 ], [ %.pn715447462, %.thread458 ], [ %lpad.loopexit, %.thread98.loopexit ], [ %lpad.loopexit.split-lp, %.thread98.loopexit.split-lp ] invoke void @"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E"(ptr noalias noundef nonnull align 8 dereferenceable(136) %71) #48 - to label %2817 unwind label %2387 + to label %2797 unwind label %2387 -2817: ; preds = %.thread91, %77 +2797: ; preds = %.thread91, %77 %.pn729.ph = phi { ptr, i32 } [ %.pn72596, %.thread91 ], [ %78, %77 ] - %2818 = getelementptr inbounds i8, ptr %72, i64 240 + %2798 = getelementptr inbounds i8, ptr %72, i64 240 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2798) #48 + to label %2799 unwind label %2387 + +2799: ; preds = %2797 + %2800 = getelementptr inbounds i8, ptr %72, i64 280 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2800) #48 + to label %2801 unwind label %2387 + +2801: ; preds = %2799 + %2802 = getelementptr inbounds i8, ptr %72, i64 320 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2802) #48 + to label %2803 unwind label %2387 + +2803: ; preds = %2801 + %2804 = getelementptr inbounds i8, ptr %72, i64 360 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2804) #48 + to label %2805 unwind label %2387 + +2805: ; preds = %2803 + %2806 = getelementptr inbounds i8, ptr %72, i64 400 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2806) #48 + to label %2807 unwind label %2387 + +2807: ; preds = %2805 + %2808 = getelementptr inbounds i8, ptr %72, i64 440 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2808) #48 + to label %2809 unwind label %2387 + +2809: ; preds = %2807 + %2810 = getelementptr inbounds i8, ptr %72, i64 480 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2810) #48 + to label %2811 unwind label %2387 + +2811: ; preds = %2809 + %2812 = getelementptr inbounds i8, ptr %72, i64 32 + invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2812) #48 + to label %2813 unwind label %2387 + +2813: ; preds = %2811 + %2814 = getelementptr inbounds i8, ptr %72, i64 56 + invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2814) #48 + to label %2815 unwind label %2387 + +2815: ; preds = %2813 + %2816 = getelementptr inbounds i8, ptr %72, i64 520 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2816) #48 + to label %2817 unwind label %2387 + +2817: ; preds = %2815 + %2818 = getelementptr inbounds i8, ptr %72, i64 560 invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2818) #48 to label %2819 unwind label %2387 2819: ; preds = %2817 - %2820 = getelementptr inbounds i8, ptr %72, i64 280 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2820) #48 - to label %2821 unwind label %2387 - -2821: ; preds = %2819 - %2822 = getelementptr inbounds i8, ptr %72, i64 320 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2822) #48 - to label %2823 unwind label %2387 - -2823: ; preds = %2821 - %2824 = getelementptr inbounds i8, ptr %72, i64 360 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2824) #48 - to label %2825 unwind label %2387 - -2825: ; preds = %2823 - %2826 = getelementptr inbounds i8, ptr %72, i64 400 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2826) #48 - to label %2827 unwind label %2387 - -2827: ; preds = %2825 - %2828 = getelementptr inbounds i8, ptr %72, i64 440 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2828) #48 - to label %2829 unwind label %2387 - -2829: ; preds = %2827 - %2830 = getelementptr inbounds i8, ptr %72, i64 480 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2830) #48 - to label %2831 unwind label %2387 - -2831: ; preds = %2829 - %2832 = getelementptr inbounds i8, ptr %72, i64 32 - invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2832) #48 - to label %2833 unwind label %2387 - -2833: ; preds = %2831 - %2834 = getelementptr inbounds i8, ptr %72, i64 56 - invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2834) #48 - to label %2835 unwind label %2387 - -2835: ; preds = %2833 - %2836 = getelementptr inbounds i8, ptr %72, i64 520 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2836) #48 - to label %2837 unwind label %2387 - -2837: ; preds = %2835 - %2838 = getelementptr inbounds i8, ptr %72, i64 560 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2838) #48 - to label %2839 unwind label %2387 - -2839: ; preds = %2837 - %2840 = getelementptr inbounds i8, ptr %72, i64 600 - invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %2840) #48 + %2820 = getelementptr inbounds i8, ptr %72, i64 600 + invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %2820) #48 to label %.thread unwind label %2387 -"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854": ; preds = %2503, %2495, %.thread, %2843 - %.pn729.pn = phi { ptr, i32 } [ %.pn729.ph.pn, %2843 ], [ %.pn729.ph.pn, %.thread ], [ %2497, %2503 ], [ %2496, %2495 ] +"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854": ; preds = %2503, %2495, %.thread, %2823 + %.pn729.pn = phi { ptr, i32 } [ %.pn729.ph.pn, %2823 ], [ %.pn729.ph.pn, %.thread ], [ %2497, %2503 ], [ %2496, %2495 ] resume { ptr, i32 } %.pn729.pn -.thread: ; preds = %2839, %2816, %74 - %.pn729.ph.pn = phi { ptr, i32 } [ %.pn729.ph, %2839 ], [ %.pn770, %2816 ], [ %75, %74 ] - %2841 = load i64, ptr %73, align 8, !range !395, !alias.scope !697, !noundef !4 - %2842 = icmp eq i64 %2841, 2 - br i1 %2842, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854", label %2843 +.thread: ; preds = %2819, %2796, %74 + %.pn729.ph.pn = phi { ptr, i32 } [ %.pn729.ph, %2819 ], [ %.pn770, %2796 ], [ %75, %74 ] + %2821 = load i64, ptr %73, align 8, !range !395, !alias.scope !697, !noundef !4 + %2822 = icmp eq i64 %2821, 2 + br i1 %2822, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854", label %2823 -2843: ; preds = %.thread +2823: ; preds = %.thread invoke void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2fa1c395e3df82f2E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(336) %73) to label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854" unwind label %2387 } @@ -7932,7 +7906,7 @@ define internal fastcc void @_ZN3exr4meta6header6Header4read17he76144322e45d971E invoke void @"_ZN77_$LT$exr..meta..header..LayerAttributes$u20$as$u20$core..default..Default$GT$7default17h2df77917b194f966E"(ptr noalias nocapture noundef nonnull sret({ { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [4 x i64] }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i32, [7 x i32] }, { i32, float }, { i32, float }, { i32, float }, { i32, float }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { i8, [39 x i8] }, { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, { i32, i32 }, { float, float }, { i32, [2 x i32] }, { i32, [2 x i32] }, { i32, [16 x i32] }, { i32, [16 x i32] }, { i32, [2 x i32] }, float, i8, [7 x i8] }) align 8 dereferenceable(848) %72) to label %76 unwind label %74 -74: ; preds = %2782, %3 +74: ; preds = %2772, %3 %75 = landingpad { ptr, i32 } cleanup br label %.thread @@ -7946,7 +7920,7 @@ define internal fastcc void @_ZN3exr4meta6header6Header4read17he76144322e45d971E 77: ; preds = %2507, %79, %76 %78 = landingpad { ptr, i32 } cleanup - br label %2817 + br label %2797 79: ; preds = %76 invoke void @_ZN3exr4meta6header15ImageAttributes3new17h7b492660a5fc6ff6E(ptr noalias nocapture noundef nonnull sret({ { { { { ptr, i64, i64, i64 }, {}, {} }, { i64, i64 } } }, { { i64, i64 }, { i32, i32 } }, float, { i32, [8 x i32] }, { i8, [17 x i8] }, [6 x i8] }) align 8 dereferenceable(136) %71, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %70) @@ -11995,7 +11969,7 @@ _ZN3exr4meta12sequence_end8has_come17h40aa8c9fb2e0a9c8E.exit.thread: ; preds = % invoke void @"_ZN4core3ptr57drop_in_place$LT$exr..meta..attribute..AttributeValue$GT$17h4410941565360b61E.llvm.15361875792781664197"(ptr noalias noundef nonnull align 8 dereferenceable(352) %85) #48 to label %.thread114 unwind label %2387 -2387: ; preds = %2843, %2502, %2839, %2837, %2835, %2833, %2831, %2829, %2827, %2825, %2823, %2821, %2819, %2817, %.thread91, %2816, %2815, %2814, %.body, %2813, %2812, %2811, %2810, %2809, %2808, %2551, %2503, %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit795", %2495, %.thread458, %2410, %.thread450, %2392, %2386 +2387: ; preds = %2823, %2502, %2819, %2817, %2815, %2813, %2811, %2809, %2807, %2805, %2803, %2801, %2799, %2797, %.thread91, %2796, %2795, %2794, %.body, %2793, %2792, %2791, %2790, %2789, %2788, %2541, %2503, %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit795", %2495, %.thread458, %2410, %.thread450, %2392, %2386 %2388 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 @@ -12695,7 +12669,7 @@ _ZN3exr4meta9attribute15TileDescription8validate17h645fa9baebcaab05E.exit: ; pre %2504 = getelementptr inbounds i8, ptr %71, i64 8 %2505 = load i64, ptr %2504, align 8, !alias.scope !769, !noundef !4 %2506 = icmp eq i64 %2505, 0 - br i1 %2506, label %2529, label %2507 + br i1 %2506, label %2519, label %2507 2507: ; preds = %.thread465 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %71) @@ -12703,854 +12677,828 @@ _ZN3exr4meta9attribute15TileDescription8validate17h645fa9baebcaab05E.exit: ; pre .noexc796: ; preds = %2507 call void @llvm.experimental.noalias.scope.decl(metadata !770) - %2508 = add i64 %2505, 1 - %2509 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2508, i64 392) - %2510 = extractvalue { i64, i1 } %2509, 1 - %2511 = xor i1 %2510, true - call void @llvm.assume(i1 %2511) - %2512 = extractvalue { i64, i1 } %2509, 0 - %2513 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2512, i64 15) - %2514 = extractvalue { i64, i1 } %2513, 1 - %2515 = xor i1 %2514, true - call void @llvm.assume(i1 %2515) - %2516 = extractvalue { i64, i1 } %2513, 0 - %2517 = and i64 %2516, -16 - %2518 = add i64 %2505, 17 - %2519 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2517, i64 %2518) - %2520 = extractvalue { i64, i1 } %2519, 0 - %2521 = extractvalue { i64, i1 } %2519, 1 - %2522 = icmp ult i64 %2520, 9223372036854775793 - %2523 = xor i1 %2521, true - call void @llvm.assume(i1 %2523) - call void @llvm.assume(i1 %2522) - %2524 = icmp eq i64 %2520, 0 - br i1 %2524, label %2529, label %2525 - -2525: ; preds = %.noexc796 - %2526 = load ptr, ptr %71, align 8, !alias.scope !773, !nonnull !4, !noundef !4 - %2527 = sub nsw i64 0, %2517 - %2528 = getelementptr inbounds i8, ptr %2526, i64 %2527 - call void @__rust_dealloc(ptr noundef nonnull %2528, i64 noundef %2520, i64 noundef 16) #50, !noalias !773 - br label %2529 - -2529: ; preds = %.thread465, %.noexc796, %2525 + %2508 = mul i64 %2505, 392 + %2509 = add i64 %2508, 407 + %2510 = and i64 %2509, -16 + %2511 = add i64 %2505, 17 + %2512 = add nuw i64 %2511, %2510 + %2513 = icmp ult i64 %2512, 9223372036854775793 + call void @llvm.assume(i1 %2513) + %2514 = icmp eq i64 %2512, 0 + br i1 %2514, label %2519, label %2515 + +2515: ; preds = %.noexc796 + %2516 = load ptr, ptr %71, align 8, !alias.scope !773, !nonnull !4, !noundef !4 + %2517 = sub nsw i64 0, %2510 + %2518 = getelementptr inbounds i8, ptr %2516, i64 %2517 + call void @__rust_dealloc(ptr noundef nonnull %2518, i64 noundef %2512, i64 noundef 16) #50, !noalias !773 + br label %2519 + +2519: ; preds = %.thread465, %.noexc796, %2515 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %71) call void @llvm.experimental.noalias.scope.decl(metadata !774) - %2530 = load i8, ptr %138, align 8, !range !399, !alias.scope !774, !noundef !4 - %2531 = icmp eq i8 %2530, 2 - br i1 %2531, label %2553, label %2532 + %2520 = load i8, ptr %138, align 8, !range !399, !alias.scope !774, !noundef !4 + %2521 = icmp eq i8 %2520, 2 + br i1 %2521, label %2543, label %2522 -2532: ; preds = %2529 +2522: ; preds = %2519 call void @llvm.experimental.noalias.scope.decl(metadata !777) call void @llvm.experimental.noalias.scope.decl(metadata !780) call void @llvm.experimental.noalias.scope.decl(metadata !783) - %2533 = getelementptr inbounds i8, ptr %72, i64 272 - %2534 = load i64, ptr %2533, align 8, !alias.scope !786, !noundef !4 - %2535 = icmp ugt i64 %2534, 24 - br i1 %2535, label %2537, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i": ; preds = %2532 - %2536 = icmp eq i8 %2530, 0 - call void @llvm.assume(i1 %2536) - br label %2553 - -2537: ; preds = %2532 - %2538 = icmp ne i8 %2530, 0 - call void @llvm.assume(i1 %2538) - %2539 = getelementptr inbounds i8, ptr %72, i64 256 - %2540 = load ptr, ptr %2539, align 8, !alias.scope !786, !nonnull !4, !noundef !4 - %2541 = getelementptr inbounds i8, ptr %72, i64 248 - %2542 = load i64, ptr %2541, align 8, !alias.scope !786, !noundef !4 + %2523 = getelementptr inbounds i8, ptr %72, i64 272 + %2524 = load i64, ptr %2523, align 8, !alias.scope !786, !noundef !4 + %2525 = icmp ugt i64 %2524, 24 + br i1 %2525, label %2527, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i": ; preds = %2522 + %2526 = icmp eq i8 %2520, 0 + call void @llvm.assume(i1 %2526) + br label %2543 + +2527: ; preds = %2522 + %2528 = icmp ne i8 %2520, 0 + call void @llvm.assume(i1 %2528) + %2529 = getelementptr inbounds i8, ptr %72, i64 256 + %2530 = load ptr, ptr %2529, align 8, !alias.scope !786, !nonnull !4, !noundef !4 + %2531 = getelementptr inbounds i8, ptr %72, i64 248 + %2532 = load i64, ptr %2531, align 8, !alias.scope !786, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23), !noalias !786 - store i64 %2534, ptr %23, align 8, !noalias !786 - %2543 = getelementptr inbounds i8, ptr %23, i64 8 - store ptr %2540, ptr %2543, align 8, !noalias !786 - %2544 = getelementptr inbounds i8, ptr %23, i64 16 - store i64 %2542, ptr %2544, align 8, !noalias !786 + store i64 %2524, ptr %23, align 8, !noalias !786 + %2533 = getelementptr inbounds i8, ptr %23, i64 8 + store ptr %2530, ptr %2533, align 8, !noalias !786 + %2534 = getelementptr inbounds i8, ptr %23, i64 16 + store i64 %2532, ptr %2534, align 8, !noalias !786 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22), !noalias !787 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc797 unwind label %2551 - -.noexc797: ; preds = %2537 - %2545 = getelementptr inbounds i8, ptr %22, i64 8 - %2546 = load i64, ptr %2545, align 8, !range !125, !noalias !787, !noundef !4 - %.not.i.i.i.i.i.i.i = icmp eq i64 %2546, 0 - br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i", label %2547 - -2547: ; preds = %.noexc797 - %2548 = load ptr, ptr %22, align 8, !noalias !787, !nonnull !4, !noundef !4 - %2549 = getelementptr inbounds i8, ptr %22, i64 16 - %2550 = load i64, ptr %2549, align 8, !noalias !787, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2544, ptr noundef nonnull %2548, i64 noundef %2546, i64 noundef %2550) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" unwind label %2551 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i": ; preds = %2547, %.noexc797 + to label %.noexc797 unwind label %2541 + +.noexc797: ; preds = %2527 + %2535 = getelementptr inbounds i8, ptr %22, i64 8 + %2536 = load i64, ptr %2535, align 8, !range !125, !noalias !787, !noundef !4 + %.not.i.i.i.i.i.i.i = icmp eq i64 %2536, 0 + br i1 %.not.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i", label %2537 + +2537: ; preds = %.noexc797 + %2538 = load ptr, ptr %22, align 8, !noalias !787, !nonnull !4, !noundef !4 + %2539 = getelementptr inbounds i8, ptr %22, i64 16 + %2540 = load i64, ptr %2539, align 8, !noalias !787, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2534, ptr noundef nonnull %2538, i64 noundef %2536, i64 noundef %2540) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" unwind label %2541 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i": ; preds = %2537, %.noexc797 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22), !noalias !787 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23), !noalias !786 - br label %2553 + br label %2543 -2551: ; preds = %2547, %2537 - %2552 = landingpad { ptr, i32 } +2541: ; preds = %2537, %2527 + %2542 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %105) #48 - to label %2808 unwind label %2387 + to label %2788 unwind label %2387 -2553: ; preds = %2529, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" +2543: ; preds = %2519, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i" call void @llvm.experimental.noalias.scope.decl(metadata !794) - %2554 = load i8, ptr %105, align 8, !range !399, !alias.scope !794, !noundef !4 - %2555 = icmp eq i8 %2554, 2 - br i1 %2555, label %2577, label %2556 + %2544 = load i8, ptr %105, align 8, !range !399, !alias.scope !794, !noundef !4 + %2545 = icmp eq i8 %2544, 2 + br i1 %2545, label %2567, label %2546 -2556: ; preds = %2553 +2546: ; preds = %2543 call void @llvm.experimental.noalias.scope.decl(metadata !797) call void @llvm.experimental.noalias.scope.decl(metadata !800) call void @llvm.experimental.noalias.scope.decl(metadata !803) - %2557 = getelementptr inbounds i8, ptr %72, i64 312 - %2558 = load i64, ptr %2557, align 8, !alias.scope !806, !noundef !4 - %2559 = icmp ugt i64 %2558, 24 - br i1 %2559, label %2561, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799": ; preds = %2556 - %2560 = icmp eq i8 %2554, 0 - call void @llvm.assume(i1 %2560) - br label %2577 - -2561: ; preds = %2556 - %2562 = icmp ne i8 %2554, 0 - call void @llvm.assume(i1 %2562) - %2563 = getelementptr inbounds i8, ptr %72, i64 296 - %2564 = load ptr, ptr %2563, align 8, !alias.scope !806, !nonnull !4, !noundef !4 - %2565 = getelementptr inbounds i8, ptr %72, i64 288 - %2566 = load i64, ptr %2565, align 8, !alias.scope !806, !noundef !4 + %2547 = getelementptr inbounds i8, ptr %72, i64 312 + %2548 = load i64, ptr %2547, align 8, !alias.scope !806, !noundef !4 + %2549 = icmp ugt i64 %2548, 24 + br i1 %2549, label %2551, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799": ; preds = %2546 + %2550 = icmp eq i8 %2544, 0 + call void @llvm.assume(i1 %2550) + br label %2567 + +2551: ; preds = %2546 + %2552 = icmp ne i8 %2544, 0 + call void @llvm.assume(i1 %2552) + %2553 = getelementptr inbounds i8, ptr %72, i64 296 + %2554 = load ptr, ptr %2553, align 8, !alias.scope !806, !nonnull !4, !noundef !4 + %2555 = getelementptr inbounds i8, ptr %72, i64 288 + %2556 = load i64, ptr %2555, align 8, !alias.scope !806, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21), !noalias !806 - store i64 %2558, ptr %21, align 8, !noalias !806 - %2567 = getelementptr inbounds i8, ptr %21, i64 8 - store ptr %2564, ptr %2567, align 8, !noalias !806 - %2568 = getelementptr inbounds i8, ptr %21, i64 16 - store i64 %2566, ptr %2568, align 8, !noalias !806 + store i64 %2548, ptr %21, align 8, !noalias !806 + %2557 = getelementptr inbounds i8, ptr %21, i64 8 + store ptr %2554, ptr %2557, align 8, !noalias !806 + %2558 = getelementptr inbounds i8, ptr %21, i64 16 + store i64 %2556, ptr %2558, align 8, !noalias !806 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20), !noalias !807 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %21) - to label %.noexc802 unwind label %2575 - -.noexc802: ; preds = %2561 - %2569 = getelementptr inbounds i8, ptr %20, i64 8 - %2570 = load i64, ptr %2569, align 8, !range !125, !noalias !807, !noundef !4 - %.not.i.i.i.i.i.i.i800 = icmp eq i64 %2570, 0 - br i1 %.not.i.i.i.i.i.i.i800, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801", label %2571 - -2571: ; preds = %.noexc802 - %2572 = load ptr, ptr %20, align 8, !noalias !807, !nonnull !4, !noundef !4 - %2573 = getelementptr inbounds i8, ptr %20, i64 16 - %2574 = load i64, ptr %2573, align 8, !noalias !807, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2568, ptr noundef nonnull %2572, i64 noundef %2570, i64 noundef %2574) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" unwind label %2575 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801": ; preds = %2571, %.noexc802 + to label %.noexc802 unwind label %2565 + +.noexc802: ; preds = %2551 + %2559 = getelementptr inbounds i8, ptr %20, i64 8 + %2560 = load i64, ptr %2559, align 8, !range !125, !noalias !807, !noundef !4 + %.not.i.i.i.i.i.i.i800 = icmp eq i64 %2560, 0 + br i1 %.not.i.i.i.i.i.i.i800, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801", label %2561 + +2561: ; preds = %.noexc802 + %2562 = load ptr, ptr %20, align 8, !noalias !807, !nonnull !4, !noundef !4 + %2563 = getelementptr inbounds i8, ptr %20, i64 16 + %2564 = load i64, ptr %2563, align 8, !noalias !807, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2558, ptr noundef nonnull %2562, i64 noundef %2560, i64 noundef %2564) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" unwind label %2565 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801": ; preds = %2561, %.noexc802 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20), !noalias !807 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21), !noalias !806 - br label %2577 + br label %2567 -2575: ; preds = %2571, %2561 - %2576 = landingpad { ptr, i32 } +2565: ; preds = %2561, %2551 + %2566 = landingpad { ptr, i32 } cleanup - br label %2808 + br label %2788 -2577: ; preds = %2553, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" +2567: ; preds = %2543, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i799", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i801" call void @llvm.experimental.noalias.scope.decl(metadata !814) - %2578 = load i8, ptr %97, align 8, !range !399, !alias.scope !814, !noundef !4 - %2579 = icmp eq i8 %2578, 2 - br i1 %2579, label %2601, label %2580 + %2568 = load i8, ptr %97, align 8, !range !399, !alias.scope !814, !noundef !4 + %2569 = icmp eq i8 %2568, 2 + br i1 %2569, label %2591, label %2570 -2580: ; preds = %2577 +2570: ; preds = %2567 call void @llvm.experimental.noalias.scope.decl(metadata !817) call void @llvm.experimental.noalias.scope.decl(metadata !820) call void @llvm.experimental.noalias.scope.decl(metadata !823) - %2581 = getelementptr inbounds i8, ptr %72, i64 352 - %2582 = load i64, ptr %2581, align 8, !alias.scope !826, !noundef !4 - %2583 = icmp ugt i64 %2582, 24 - br i1 %2583, label %2585, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805": ; preds = %2580 - %2584 = icmp eq i8 %2578, 0 - call void @llvm.assume(i1 %2584) - br label %2601 - -2585: ; preds = %2580 - %2586 = icmp ne i8 %2578, 0 - call void @llvm.assume(i1 %2586) - %2587 = getelementptr inbounds i8, ptr %72, i64 336 - %2588 = load ptr, ptr %2587, align 8, !alias.scope !826, !nonnull !4, !noundef !4 - %2589 = getelementptr inbounds i8, ptr %72, i64 328 - %2590 = load i64, ptr %2589, align 8, !alias.scope !826, !noundef !4 + %2571 = getelementptr inbounds i8, ptr %72, i64 352 + %2572 = load i64, ptr %2571, align 8, !alias.scope !826, !noundef !4 + %2573 = icmp ugt i64 %2572, 24 + br i1 %2573, label %2575, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805": ; preds = %2570 + %2574 = icmp eq i8 %2568, 0 + call void @llvm.assume(i1 %2574) + br label %2591 + +2575: ; preds = %2570 + %2576 = icmp ne i8 %2568, 0 + call void @llvm.assume(i1 %2576) + %2577 = getelementptr inbounds i8, ptr %72, i64 336 + %2578 = load ptr, ptr %2577, align 8, !alias.scope !826, !nonnull !4, !noundef !4 + %2579 = getelementptr inbounds i8, ptr %72, i64 328 + %2580 = load i64, ptr %2579, align 8, !alias.scope !826, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19), !noalias !826 - store i64 %2582, ptr %19, align 8, !noalias !826 - %2591 = getelementptr inbounds i8, ptr %19, i64 8 - store ptr %2588, ptr %2591, align 8, !noalias !826 - %2592 = getelementptr inbounds i8, ptr %19, i64 16 - store i64 %2590, ptr %2592, align 8, !noalias !826 + store i64 %2572, ptr %19, align 8, !noalias !826 + %2581 = getelementptr inbounds i8, ptr %19, i64 8 + store ptr %2578, ptr %2581, align 8, !noalias !826 + %2582 = getelementptr inbounds i8, ptr %19, i64 16 + store i64 %2580, ptr %2582, align 8, !noalias !826 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18), !noalias !827 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %19) - to label %.noexc808 unwind label %2599 - -.noexc808: ; preds = %2585 - %2593 = getelementptr inbounds i8, ptr %18, i64 8 - %2594 = load i64, ptr %2593, align 8, !range !125, !noalias !827, !noundef !4 - %.not.i.i.i.i.i.i.i806 = icmp eq i64 %2594, 0 - br i1 %.not.i.i.i.i.i.i.i806, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807", label %2595 - -2595: ; preds = %.noexc808 - %2596 = load ptr, ptr %18, align 8, !noalias !827, !nonnull !4, !noundef !4 - %2597 = getelementptr inbounds i8, ptr %18, i64 16 - %2598 = load i64, ptr %2597, align 8, !noalias !827, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2592, ptr noundef nonnull %2596, i64 noundef %2594, i64 noundef %2598) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" unwind label %2599 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807": ; preds = %2595, %.noexc808 + to label %.noexc808 unwind label %2589 + +.noexc808: ; preds = %2575 + %2583 = getelementptr inbounds i8, ptr %18, i64 8 + %2584 = load i64, ptr %2583, align 8, !range !125, !noalias !827, !noundef !4 + %.not.i.i.i.i.i.i.i806 = icmp eq i64 %2584, 0 + br i1 %.not.i.i.i.i.i.i.i806, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807", label %2585 + +2585: ; preds = %.noexc808 + %2586 = load ptr, ptr %18, align 8, !noalias !827, !nonnull !4, !noundef !4 + %2587 = getelementptr inbounds i8, ptr %18, i64 16 + %2588 = load i64, ptr %2587, align 8, !noalias !827, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2582, ptr noundef nonnull %2586, i64 noundef %2584, i64 noundef %2588) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" unwind label %2589 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807": ; preds = %2585, %.noexc808 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18), !noalias !827 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19), !noalias !826 - br label %2601 + br label %2591 -2599: ; preds = %2595, %2585 - %2600 = landingpad { ptr, i32 } +2589: ; preds = %2585, %2575 + %2590 = landingpad { ptr, i32 } cleanup - br label %2809 + br label %2789 -2601: ; preds = %2577, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" +2591: ; preds = %2567, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i805", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i807" call void @llvm.experimental.noalias.scope.decl(metadata !834) - %2602 = load i8, ptr %134, align 8, !range !399, !alias.scope !834, !noundef !4 - %2603 = icmp eq i8 %2602, 2 - br i1 %2603, label %2625, label %2604 + %2592 = load i8, ptr %134, align 8, !range !399, !alias.scope !834, !noundef !4 + %2593 = icmp eq i8 %2592, 2 + br i1 %2593, label %2615, label %2594 -2604: ; preds = %2601 +2594: ; preds = %2591 call void @llvm.experimental.noalias.scope.decl(metadata !837) call void @llvm.experimental.noalias.scope.decl(metadata !840) call void @llvm.experimental.noalias.scope.decl(metadata !843) - %2605 = getelementptr inbounds i8, ptr %72, i64 392 - %2606 = load i64, ptr %2605, align 8, !alias.scope !846, !noundef !4 - %2607 = icmp ugt i64 %2606, 24 - br i1 %2607, label %2609, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811": ; preds = %2604 - %2608 = icmp eq i8 %2602, 0 - call void @llvm.assume(i1 %2608) - br label %2625 - -2609: ; preds = %2604 - %2610 = icmp ne i8 %2602, 0 - call void @llvm.assume(i1 %2610) - %2611 = getelementptr inbounds i8, ptr %72, i64 376 - %2612 = load ptr, ptr %2611, align 8, !alias.scope !846, !nonnull !4, !noundef !4 - %2613 = getelementptr inbounds i8, ptr %72, i64 368 - %2614 = load i64, ptr %2613, align 8, !alias.scope !846, !noundef !4 + %2595 = getelementptr inbounds i8, ptr %72, i64 392 + %2596 = load i64, ptr %2595, align 8, !alias.scope !846, !noundef !4 + %2597 = icmp ugt i64 %2596, 24 + br i1 %2597, label %2599, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811": ; preds = %2594 + %2598 = icmp eq i8 %2592, 0 + call void @llvm.assume(i1 %2598) + br label %2615 + +2599: ; preds = %2594 + %2600 = icmp ne i8 %2592, 0 + call void @llvm.assume(i1 %2600) + %2601 = getelementptr inbounds i8, ptr %72, i64 376 + %2602 = load ptr, ptr %2601, align 8, !alias.scope !846, !nonnull !4, !noundef !4 + %2603 = getelementptr inbounds i8, ptr %72, i64 368 + %2604 = load i64, ptr %2603, align 8, !alias.scope !846, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17), !noalias !846 - store i64 %2606, ptr %17, align 8, !noalias !846 - %2615 = getelementptr inbounds i8, ptr %17, i64 8 - store ptr %2612, ptr %2615, align 8, !noalias !846 - %2616 = getelementptr inbounds i8, ptr %17, i64 16 - store i64 %2614, ptr %2616, align 8, !noalias !846 + store i64 %2596, ptr %17, align 8, !noalias !846 + %2605 = getelementptr inbounds i8, ptr %17, i64 8 + store ptr %2602, ptr %2605, align 8, !noalias !846 + %2606 = getelementptr inbounds i8, ptr %17, i64 16 + store i64 %2604, ptr %2606, align 8, !noalias !846 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16), !noalias !847 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %17) - to label %.noexc814 unwind label %2623 - -.noexc814: ; preds = %2609 - %2617 = getelementptr inbounds i8, ptr %16, i64 8 - %2618 = load i64, ptr %2617, align 8, !range !125, !noalias !847, !noundef !4 - %.not.i.i.i.i.i.i.i812 = icmp eq i64 %2618, 0 - br i1 %.not.i.i.i.i.i.i.i812, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813", label %2619 - -2619: ; preds = %.noexc814 - %2620 = load ptr, ptr %16, align 8, !noalias !847, !nonnull !4, !noundef !4 - %2621 = getelementptr inbounds i8, ptr %16, i64 16 - %2622 = load i64, ptr %2621, align 8, !noalias !847, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2616, ptr noundef nonnull %2620, i64 noundef %2618, i64 noundef %2622) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" unwind label %2623 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813": ; preds = %2619, %.noexc814 + to label %.noexc814 unwind label %2613 + +.noexc814: ; preds = %2599 + %2607 = getelementptr inbounds i8, ptr %16, i64 8 + %2608 = load i64, ptr %2607, align 8, !range !125, !noalias !847, !noundef !4 + %.not.i.i.i.i.i.i.i812 = icmp eq i64 %2608, 0 + br i1 %.not.i.i.i.i.i.i.i812, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813", label %2609 + +2609: ; preds = %.noexc814 + %2610 = load ptr, ptr %16, align 8, !noalias !847, !nonnull !4, !noundef !4 + %2611 = getelementptr inbounds i8, ptr %16, i64 16 + %2612 = load i64, ptr %2611, align 8, !noalias !847, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2606, ptr noundef nonnull %2610, i64 noundef %2608, i64 noundef %2612) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" unwind label %2613 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813": ; preds = %2609, %.noexc814 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16), !noalias !847 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17), !noalias !846 - br label %2625 + br label %2615 -2623: ; preds = %2619, %2609 - %2624 = landingpad { ptr, i32 } +2613: ; preds = %2609, %2599 + %2614 = landingpad { ptr, i32 } cleanup - br label %2810 + br label %2790 -2625: ; preds = %2601, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" +2615: ; preds = %2591, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i811", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i813" call void @llvm.experimental.noalias.scope.decl(metadata !854) - %2626 = load i8, ptr %130, align 8, !range !399, !alias.scope !854, !noundef !4 - %2627 = icmp eq i8 %2626, 2 - br i1 %2627, label %2649, label %2628 + %2616 = load i8, ptr %130, align 8, !range !399, !alias.scope !854, !noundef !4 + %2617 = icmp eq i8 %2616, 2 + br i1 %2617, label %2639, label %2618 -2628: ; preds = %2625 +2618: ; preds = %2615 call void @llvm.experimental.noalias.scope.decl(metadata !857) call void @llvm.experimental.noalias.scope.decl(metadata !860) call void @llvm.experimental.noalias.scope.decl(metadata !863) - %2629 = getelementptr inbounds i8, ptr %72, i64 432 - %2630 = load i64, ptr %2629, align 8, !alias.scope !866, !noundef !4 - %2631 = icmp ugt i64 %2630, 24 - br i1 %2631, label %2633, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817": ; preds = %2628 - %2632 = icmp eq i8 %2626, 0 - call void @llvm.assume(i1 %2632) - br label %2649 - -2633: ; preds = %2628 - %2634 = icmp ne i8 %2626, 0 - call void @llvm.assume(i1 %2634) - %2635 = getelementptr inbounds i8, ptr %72, i64 416 - %2636 = load ptr, ptr %2635, align 8, !alias.scope !866, !nonnull !4, !noundef !4 - %2637 = getelementptr inbounds i8, ptr %72, i64 408 - %2638 = load i64, ptr %2637, align 8, !alias.scope !866, !noundef !4 + %2619 = getelementptr inbounds i8, ptr %72, i64 432 + %2620 = load i64, ptr %2619, align 8, !alias.scope !866, !noundef !4 + %2621 = icmp ugt i64 %2620, 24 + br i1 %2621, label %2623, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817": ; preds = %2618 + %2622 = icmp eq i8 %2616, 0 + call void @llvm.assume(i1 %2622) + br label %2639 + +2623: ; preds = %2618 + %2624 = icmp ne i8 %2616, 0 + call void @llvm.assume(i1 %2624) + %2625 = getelementptr inbounds i8, ptr %72, i64 416 + %2626 = load ptr, ptr %2625, align 8, !alias.scope !866, !nonnull !4, !noundef !4 + %2627 = getelementptr inbounds i8, ptr %72, i64 408 + %2628 = load i64, ptr %2627, align 8, !alias.scope !866, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15), !noalias !866 - store i64 %2630, ptr %15, align 8, !noalias !866 - %2639 = getelementptr inbounds i8, ptr %15, i64 8 - store ptr %2636, ptr %2639, align 8, !noalias !866 - %2640 = getelementptr inbounds i8, ptr %15, i64 16 - store i64 %2638, ptr %2640, align 8, !noalias !866 + store i64 %2620, ptr %15, align 8, !noalias !866 + %2629 = getelementptr inbounds i8, ptr %15, i64 8 + store ptr %2626, ptr %2629, align 8, !noalias !866 + %2630 = getelementptr inbounds i8, ptr %15, i64 16 + store i64 %2628, ptr %2630, align 8, !noalias !866 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14), !noalias !867 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %15) - to label %.noexc820 unwind label %2647 - -.noexc820: ; preds = %2633 - %2641 = getelementptr inbounds i8, ptr %14, i64 8 - %2642 = load i64, ptr %2641, align 8, !range !125, !noalias !867, !noundef !4 - %.not.i.i.i.i.i.i.i818 = icmp eq i64 %2642, 0 - br i1 %.not.i.i.i.i.i.i.i818, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819", label %2643 - -2643: ; preds = %.noexc820 - %2644 = load ptr, ptr %14, align 8, !noalias !867, !nonnull !4, !noundef !4 - %2645 = getelementptr inbounds i8, ptr %14, i64 16 - %2646 = load i64, ptr %2645, align 8, !noalias !867, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2640, ptr noundef nonnull %2644, i64 noundef %2642, i64 noundef %2646) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" unwind label %2647 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819": ; preds = %2643, %.noexc820 + to label %.noexc820 unwind label %2637 + +.noexc820: ; preds = %2623 + %2631 = getelementptr inbounds i8, ptr %14, i64 8 + %2632 = load i64, ptr %2631, align 8, !range !125, !noalias !867, !noundef !4 + %.not.i.i.i.i.i.i.i818 = icmp eq i64 %2632, 0 + br i1 %.not.i.i.i.i.i.i.i818, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819", label %2633 + +2633: ; preds = %.noexc820 + %2634 = load ptr, ptr %14, align 8, !noalias !867, !nonnull !4, !noundef !4 + %2635 = getelementptr inbounds i8, ptr %14, i64 16 + %2636 = load i64, ptr %2635, align 8, !noalias !867, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2630, ptr noundef nonnull %2634, i64 noundef %2632, i64 noundef %2636) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" unwind label %2637 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819": ; preds = %2633, %.noexc820 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14), !noalias !867 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !866 - br label %2649 + br label %2639 -2647: ; preds = %2643, %2633 - %2648 = landingpad { ptr, i32 } +2637: ; preds = %2633, %2623 + %2638 = landingpad { ptr, i32 } cleanup - br label %2811 + br label %2791 -2649: ; preds = %2625, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" +2639: ; preds = %2615, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i817", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i819" call void @llvm.experimental.noalias.scope.decl(metadata !874) - %2650 = load i8, ptr %108, align 8, !range !399, !alias.scope !874, !noundef !4 - %2651 = icmp eq i8 %2650, 2 - br i1 %2651, label %2673, label %2652 + %2640 = load i8, ptr %108, align 8, !range !399, !alias.scope !874, !noundef !4 + %2641 = icmp eq i8 %2640, 2 + br i1 %2641, label %2663, label %2642 -2652: ; preds = %2649 +2642: ; preds = %2639 call void @llvm.experimental.noalias.scope.decl(metadata !877) call void @llvm.experimental.noalias.scope.decl(metadata !880) call void @llvm.experimental.noalias.scope.decl(metadata !883) - %2653 = getelementptr inbounds i8, ptr %72, i64 472 - %2654 = load i64, ptr %2653, align 8, !alias.scope !886, !noundef !4 - %2655 = icmp ugt i64 %2654, 24 - br i1 %2655, label %2657, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823": ; preds = %2652 - %2656 = icmp eq i8 %2650, 0 - call void @llvm.assume(i1 %2656) - br label %2673 - -2657: ; preds = %2652 - %2658 = icmp ne i8 %2650, 0 - call void @llvm.assume(i1 %2658) - %2659 = getelementptr inbounds i8, ptr %72, i64 456 - %2660 = load ptr, ptr %2659, align 8, !alias.scope !886, !nonnull !4, !noundef !4 - %2661 = getelementptr inbounds i8, ptr %72, i64 448 - %2662 = load i64, ptr %2661, align 8, !alias.scope !886, !noundef !4 + %2643 = getelementptr inbounds i8, ptr %72, i64 472 + %2644 = load i64, ptr %2643, align 8, !alias.scope !886, !noundef !4 + %2645 = icmp ugt i64 %2644, 24 + br i1 %2645, label %2647, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823": ; preds = %2642 + %2646 = icmp eq i8 %2640, 0 + call void @llvm.assume(i1 %2646) + br label %2663 + +2647: ; preds = %2642 + %2648 = icmp ne i8 %2640, 0 + call void @llvm.assume(i1 %2648) + %2649 = getelementptr inbounds i8, ptr %72, i64 456 + %2650 = load ptr, ptr %2649, align 8, !alias.scope !886, !nonnull !4, !noundef !4 + %2651 = getelementptr inbounds i8, ptr %72, i64 448 + %2652 = load i64, ptr %2651, align 8, !alias.scope !886, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13), !noalias !886 - store i64 %2654, ptr %13, align 8, !noalias !886 - %2663 = getelementptr inbounds i8, ptr %13, i64 8 - store ptr %2660, ptr %2663, align 8, !noalias !886 - %2664 = getelementptr inbounds i8, ptr %13, i64 16 - store i64 %2662, ptr %2664, align 8, !noalias !886 + store i64 %2644, ptr %13, align 8, !noalias !886 + %2653 = getelementptr inbounds i8, ptr %13, i64 8 + store ptr %2650, ptr %2653, align 8, !noalias !886 + %2654 = getelementptr inbounds i8, ptr %13, i64 16 + store i64 %2652, ptr %2654, align 8, !noalias !886 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12), !noalias !887 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %13) - to label %.noexc826 unwind label %2671 - -.noexc826: ; preds = %2657 - %2665 = getelementptr inbounds i8, ptr %12, i64 8 - %2666 = load i64, ptr %2665, align 8, !range !125, !noalias !887, !noundef !4 - %.not.i.i.i.i.i.i.i824 = icmp eq i64 %2666, 0 - br i1 %.not.i.i.i.i.i.i.i824, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825", label %2667 - -2667: ; preds = %.noexc826 - %2668 = load ptr, ptr %12, align 8, !noalias !887, !nonnull !4, !noundef !4 - %2669 = getelementptr inbounds i8, ptr %12, i64 16 - %2670 = load i64, ptr %2669, align 8, !noalias !887, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2664, ptr noundef nonnull %2668, i64 noundef %2666, i64 noundef %2670) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" unwind label %2671 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825": ; preds = %2667, %.noexc826 + to label %.noexc826 unwind label %2661 + +.noexc826: ; preds = %2647 + %2655 = getelementptr inbounds i8, ptr %12, i64 8 + %2656 = load i64, ptr %2655, align 8, !range !125, !noalias !887, !noundef !4 + %.not.i.i.i.i.i.i.i824 = icmp eq i64 %2656, 0 + br i1 %.not.i.i.i.i.i.i.i824, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825", label %2657 + +2657: ; preds = %.noexc826 + %2658 = load ptr, ptr %12, align 8, !noalias !887, !nonnull !4, !noundef !4 + %2659 = getelementptr inbounds i8, ptr %12, i64 16 + %2660 = load i64, ptr %2659, align 8, !noalias !887, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2654, ptr noundef nonnull %2658, i64 noundef %2656, i64 noundef %2660) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" unwind label %2661 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825": ; preds = %2657, %.noexc826 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !887 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !886 - br label %2673 + br label %2663 -2671: ; preds = %2667, %2657 - %2672 = landingpad { ptr, i32 } +2661: ; preds = %2657, %2647 + %2662 = landingpad { ptr, i32 } cleanup - br label %2812 + br label %2792 -2673: ; preds = %2649, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" +2663: ; preds = %2639, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i823", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i825" call void @llvm.experimental.noalias.scope.decl(metadata !894) - %2674 = load i8, ptr %115, align 8, !range !399, !alias.scope !894, !noundef !4 - %2675 = icmp eq i8 %2674, 2 - br i1 %2675, label %2697, label %2676 + %2664 = load i8, ptr %115, align 8, !range !399, !alias.scope !894, !noundef !4 + %2665 = icmp eq i8 %2664, 2 + br i1 %2665, label %2687, label %2666 -2676: ; preds = %2673 +2666: ; preds = %2663 call void @llvm.experimental.noalias.scope.decl(metadata !897) call void @llvm.experimental.noalias.scope.decl(metadata !900) call void @llvm.experimental.noalias.scope.decl(metadata !903) - %2677 = getelementptr inbounds i8, ptr %72, i64 512 - %2678 = load i64, ptr %2677, align 8, !alias.scope !906, !noundef !4 - %2679 = icmp ugt i64 %2678, 24 - br i1 %2679, label %2681, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829": ; preds = %2676 - %2680 = icmp eq i8 %2674, 0 - call void @llvm.assume(i1 %2680) - br label %2697 - -2681: ; preds = %2676 - %2682 = icmp ne i8 %2674, 0 - call void @llvm.assume(i1 %2682) - %2683 = getelementptr inbounds i8, ptr %72, i64 496 - %2684 = load ptr, ptr %2683, align 8, !alias.scope !906, !nonnull !4, !noundef !4 - %2685 = getelementptr inbounds i8, ptr %72, i64 488 - %2686 = load i64, ptr %2685, align 8, !alias.scope !906, !noundef !4 + %2667 = getelementptr inbounds i8, ptr %72, i64 512 + %2668 = load i64, ptr %2667, align 8, !alias.scope !906, !noundef !4 + %2669 = icmp ugt i64 %2668, 24 + br i1 %2669, label %2671, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829": ; preds = %2666 + %2670 = icmp eq i8 %2664, 0 + call void @llvm.assume(i1 %2670) + br label %2687 + +2671: ; preds = %2666 + %2672 = icmp ne i8 %2664, 0 + call void @llvm.assume(i1 %2672) + %2673 = getelementptr inbounds i8, ptr %72, i64 496 + %2674 = load ptr, ptr %2673, align 8, !alias.scope !906, !nonnull !4, !noundef !4 + %2675 = getelementptr inbounds i8, ptr %72, i64 488 + %2676 = load i64, ptr %2675, align 8, !alias.scope !906, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11), !noalias !906 - store i64 %2678, ptr %11, align 8, !noalias !906 - %2687 = getelementptr inbounds i8, ptr %11, i64 8 - store ptr %2684, ptr %2687, align 8, !noalias !906 - %2688 = getelementptr inbounds i8, ptr %11, i64 16 - store i64 %2686, ptr %2688, align 8, !noalias !906 + store i64 %2668, ptr %11, align 8, !noalias !906 + %2677 = getelementptr inbounds i8, ptr %11, i64 8 + store ptr %2674, ptr %2677, align 8, !noalias !906 + %2678 = getelementptr inbounds i8, ptr %11, i64 16 + store i64 %2676, ptr %2678, align 8, !noalias !906 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !907 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %11) - to label %.noexc832 unwind label %2695 - -.noexc832: ; preds = %2681 - %2689 = getelementptr inbounds i8, ptr %10, i64 8 - %2690 = load i64, ptr %2689, align 8, !range !125, !noalias !907, !noundef !4 - %.not.i.i.i.i.i.i.i830 = icmp eq i64 %2690, 0 - br i1 %.not.i.i.i.i.i.i.i830, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831", label %2691 - -2691: ; preds = %.noexc832 - %2692 = load ptr, ptr %10, align 8, !noalias !907, !nonnull !4, !noundef !4 - %2693 = getelementptr inbounds i8, ptr %10, i64 16 - %2694 = load i64, ptr %2693, align 8, !noalias !907, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2688, ptr noundef nonnull %2692, i64 noundef %2690, i64 noundef %2694) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" unwind label %2695 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831": ; preds = %2691, %.noexc832 + to label %.noexc832 unwind label %2685 + +.noexc832: ; preds = %2671 + %2679 = getelementptr inbounds i8, ptr %10, i64 8 + %2680 = load i64, ptr %2679, align 8, !range !125, !noalias !907, !noundef !4 + %.not.i.i.i.i.i.i.i830 = icmp eq i64 %2680, 0 + br i1 %.not.i.i.i.i.i.i.i830, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831", label %2681 + +2681: ; preds = %.noexc832 + %2682 = load ptr, ptr %10, align 8, !noalias !907, !nonnull !4, !noundef !4 + %2683 = getelementptr inbounds i8, ptr %10, i64 16 + %2684 = load i64, ptr %2683, align 8, !noalias !907, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2678, ptr noundef nonnull %2682, i64 noundef %2680, i64 noundef %2684) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" unwind label %2685 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831": ; preds = %2681, %.noexc832 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !907 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11), !noalias !906 - br label %2697 + br label %2687 -2695: ; preds = %2691, %2681 - %2696 = landingpad { ptr, i32 } +2685: ; preds = %2681, %2671 + %2686 = landingpad { ptr, i32 } cleanup - br label %2813 + br label %2793 -2697: ; preds = %2673, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" +2687: ; preds = %2663, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i829", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i831" call void @llvm.experimental.noalias.scope.decl(metadata !914) - %2698 = load i64, ptr %116, align 8, !range !125, !alias.scope !914, !noundef !4 - %2699 = icmp eq i64 %2698, -9223372036854775808 - br i1 %2699, label %2717, label %2700 + %2688 = load i64, ptr %116, align 8, !range !125, !alias.scope !914, !noundef !4 + %2689 = icmp eq i64 %2688, -9223372036854775808 + br i1 %2689, label %2707, label %2690 -2700: ; preds = %2697 +2690: ; preds = %2687 call void @llvm.experimental.noalias.scope.decl(metadata !917) - %2701 = getelementptr inbounds i8, ptr %72, i64 40 - %2702 = load ptr, ptr %2701, align 8, !alias.scope !920, !nonnull !4, !noundef !4 - %2703 = getelementptr inbounds i8, ptr %72, i64 48 - %2704 = load i64, ptr %2703, align 8, !alias.scope !920, !noundef !4 - invoke void @"_ZN4core3ptr57drop_in_place$LT$$u5b$exr..meta..attribute..Text$u5d$$GT$17h54d6cfd12be0463dE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 %2702, i64 noundef %2704) - to label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" unwind label %2705, !noalias !923 - -2705: ; preds = %2700 - %2706 = landingpad { ptr, i32 } + %2691 = getelementptr inbounds i8, ptr %72, i64 40 + %2692 = load ptr, ptr %2691, align 8, !alias.scope !920, !nonnull !4, !noundef !4 + %2693 = getelementptr inbounds i8, ptr %72, i64 48 + %2694 = load i64, ptr %2693, align 8, !alias.scope !920, !noundef !4 + invoke void @"_ZN4core3ptr57drop_in_place$LT$$u5b$exr..meta..attribute..Text$u5d$$GT$17h54d6cfd12be0463dE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 %2692, i64 noundef %2694) + to label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" unwind label %2695, !noalias !923 + +2695: ; preds = %2690 + %2696 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..raw_vec..RawVec$LT$exr..meta..attribute..Text$GT$$GT$17hb5273f395f6ae07eE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(16) %116) #48 - to label %.body unwind label %2713 + to label %.body unwind label %2703 -"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i": ; preds = %2700 +"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i": ; preds = %2690 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !924 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h3575eb9489abc3deE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %116) - to label %.noexc835 unwind label %2715 + to label %.noexc835 unwind label %2705 .noexc835: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" - %2707 = getelementptr inbounds i8, ptr %9, i64 8 - %2708 = load i64, ptr %2707, align 8, !range !125, !noalias !924, !noundef !4 - %.not.i.i.i.i = icmp eq i64 %2708, 0 - br i1 %.not.i.i.i.i, label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i", label %2709 - -2709: ; preds = %.noexc835 - %2710 = load ptr, ptr %9, align 8, !noalias !924, !nonnull !4, !noundef !4 - %2711 = getelementptr inbounds i8, ptr %9, i64 16 - %2712 = load i64, ptr %2711, align 8, !noalias !924, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2703, ptr noundef nonnull %2710, i64 noundef %2708, i64 noundef %2712) - to label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" unwind label %2715 - -2713: ; preds = %2705 - %2714 = landingpad { ptr, i32 } + %2697 = getelementptr inbounds i8, ptr %9, i64 8 + %2698 = load i64, ptr %2697, align 8, !range !125, !noalias !924, !noundef !4 + %.not.i.i.i.i = icmp eq i64 %2698, 0 + br i1 %.not.i.i.i.i, label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i", label %2699 + +2699: ; preds = %.noexc835 + %2700 = load ptr, ptr %9, align 8, !noalias !924, !nonnull !4, !noundef !4 + %2701 = getelementptr inbounds i8, ptr %9, i64 16 + %2702 = load i64, ptr %2701, align 8, !noalias !924, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2693, ptr noundef nonnull %2700, i64 noundef %2698, i64 noundef %2702) + to label %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" unwind label %2705 + +2703: ; preds = %2695 + %2704 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i": ; preds = %2709, %.noexc835 +"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i": ; preds = %2699, %.noexc835 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !924 - br label %2717 + br label %2707 -2715: ; preds = %2709, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" - %2716 = landingpad { ptr, i32 } +2705: ; preds = %2699, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4b3cbdcb800ea436E.llvm.9832446184049035033.exit.i.i" + %2706 = landingpad { ptr, i32 } cleanup br label %.body -2717: ; preds = %2697, %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" +2707: ; preds = %2687, %"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$17h8a0698a9c8d9349eE.exit.i" call void @llvm.experimental.noalias.scope.decl(metadata !929) - %2718 = load i64, ptr %109, align 8, !range !125, !alias.scope !929, !noundef !4 - %2719 = icmp eq i64 %2718, -9223372036854775808 - br i1 %2719, label %2730, label %2720 + %2708 = load i64, ptr %109, align 8, !range !125, !alias.scope !929, !noundef !4 + %2709 = icmp eq i64 %2708, -9223372036854775808 + br i1 %2709, label %2720, label %2710 -2720: ; preds = %2717 +2710: ; preds = %2707 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !932 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he521b5452bc33e2fE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %109) - to label %.noexc837 unwind label %2728 - -.noexc837: ; preds = %2720 - %2721 = getelementptr inbounds i8, ptr %8, i64 8 - %2722 = load i64, ptr %2721, align 8, !range !125, !noalias !932, !noundef !4 - %.not.i.i.i.i.i = icmp eq i64 %2722, 0 - br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i", label %2723 - -2723: ; preds = %.noexc837 - %2724 = load ptr, ptr %8, align 8, !noalias !932, !nonnull !4, !noundef !4 - %2725 = getelementptr inbounds i8, ptr %8, i64 16 - %2726 = load i64, ptr %2725, align 8, !noalias !932, !noundef !4 - %2727 = getelementptr inbounds i8, ptr %72, i64 72 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2727, ptr noundef nonnull %2724, i64 noundef %2722, i64 noundef %2726) - to label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" unwind label %2728 - -"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i": ; preds = %2723, %.noexc837 + to label %.noexc837 unwind label %2718 + +.noexc837: ; preds = %2710 + %2711 = getelementptr inbounds i8, ptr %8, i64 8 + %2712 = load i64, ptr %2711, align 8, !range !125, !noalias !932, !noundef !4 + %.not.i.i.i.i.i = icmp eq i64 %2712, 0 + br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i", label %2713 + +2713: ; preds = %.noexc837 + %2714 = load ptr, ptr %8, align 8, !noalias !932, !nonnull !4, !noundef !4 + %2715 = getelementptr inbounds i8, ptr %8, i64 16 + %2716 = load i64, ptr %2715, align 8, !noalias !932, !noundef !4 + %2717 = getelementptr inbounds i8, ptr %72, i64 72 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2717, ptr noundef nonnull %2714, i64 noundef %2712, i64 noundef %2716) + to label %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" unwind label %2718 + +"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i": ; preds = %2713, %.noexc837 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !932 - br label %2730 + br label %2720 -2728: ; preds = %2723, %2720 - %2729 = landingpad { ptr, i32 } +2718: ; preds = %2713, %2710 + %2719 = landingpad { ptr, i32 } cleanup - br label %2814 + br label %2794 -2730: ; preds = %2717, %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" +2720: ; preds = %2707, %"_ZN4core3ptr50drop_in_place$LT$exr..meta..attribute..Preview$GT$17h0bb14d0951984fdcE.exit.i" call void @llvm.experimental.noalias.scope.decl(metadata !941) - %2731 = load i8, ptr %137, align 8, !range !399, !alias.scope !941, !noundef !4 - %2732 = icmp eq i8 %2731, 2 - br i1 %2732, label %2754, label %2733 + %2721 = load i8, ptr %137, align 8, !range !399, !alias.scope !941, !noundef !4 + %2722 = icmp eq i8 %2721, 2 + br i1 %2722, label %2744, label %2723 -2733: ; preds = %2730 +2723: ; preds = %2720 call void @llvm.experimental.noalias.scope.decl(metadata !944) call void @llvm.experimental.noalias.scope.decl(metadata !947) call void @llvm.experimental.noalias.scope.decl(metadata !950) - %2734 = getelementptr inbounds i8, ptr %72, i64 552 - %2735 = load i64, ptr %2734, align 8, !alias.scope !953, !noundef !4 - %2736 = icmp ugt i64 %2735, 24 - br i1 %2736, label %2738, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839": ; preds = %2733 - %2737 = icmp eq i8 %2731, 0 - call void @llvm.assume(i1 %2737) - br label %2754 - -2738: ; preds = %2733 - %2739 = icmp ne i8 %2731, 0 - call void @llvm.assume(i1 %2739) - %2740 = getelementptr inbounds i8, ptr %72, i64 536 - %2741 = load ptr, ptr %2740, align 8, !alias.scope !953, !nonnull !4, !noundef !4 - %2742 = getelementptr inbounds i8, ptr %72, i64 528 - %2743 = load i64, ptr %2742, align 8, !alias.scope !953, !noundef !4 + %2724 = getelementptr inbounds i8, ptr %72, i64 552 + %2725 = load i64, ptr %2724, align 8, !alias.scope !953, !noundef !4 + %2726 = icmp ugt i64 %2725, 24 + br i1 %2726, label %2728, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839": ; preds = %2723 + %2727 = icmp eq i8 %2721, 0 + call void @llvm.assume(i1 %2727) + br label %2744 + +2728: ; preds = %2723 + %2729 = icmp ne i8 %2721, 0 + call void @llvm.assume(i1 %2729) + %2730 = getelementptr inbounds i8, ptr %72, i64 536 + %2731 = load ptr, ptr %2730, align 8, !alias.scope !953, !nonnull !4, !noundef !4 + %2732 = getelementptr inbounds i8, ptr %72, i64 528 + %2733 = load i64, ptr %2732, align 8, !alias.scope !953, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !953 - store i64 %2735, ptr %7, align 8, !noalias !953 - %2744 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr %2741, ptr %2744, align 8, !noalias !953 - %2745 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %2743, ptr %2745, align 8, !noalias !953 + store i64 %2725, ptr %7, align 8, !noalias !953 + %2734 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr %2731, ptr %2734, align 8, !noalias !953 + %2735 = getelementptr inbounds i8, ptr %7, i64 16 + store i64 %2733, ptr %2735, align 8, !noalias !953 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !954 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7) - to label %.noexc842 unwind label %2752 - -.noexc842: ; preds = %2738 - %2746 = getelementptr inbounds i8, ptr %6, i64 8 - %2747 = load i64, ptr %2746, align 8, !range !125, !noalias !954, !noundef !4 - %.not.i.i.i.i.i.i.i840 = icmp eq i64 %2747, 0 - br i1 %.not.i.i.i.i.i.i.i840, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841", label %2748 - -2748: ; preds = %.noexc842 - %2749 = load ptr, ptr %6, align 8, !noalias !954, !nonnull !4, !noundef !4 - %2750 = getelementptr inbounds i8, ptr %6, i64 16 - %2751 = load i64, ptr %2750, align 8, !noalias !954, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2745, ptr noundef nonnull %2749, i64 noundef %2747, i64 noundef %2751) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" unwind label %2752 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841": ; preds = %2748, %.noexc842 + to label %.noexc842 unwind label %2742 + +.noexc842: ; preds = %2728 + %2736 = getelementptr inbounds i8, ptr %6, i64 8 + %2737 = load i64, ptr %2736, align 8, !range !125, !noalias !954, !noundef !4 + %.not.i.i.i.i.i.i.i840 = icmp eq i64 %2737, 0 + br i1 %.not.i.i.i.i.i.i.i840, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841", label %2738 + +2738: ; preds = %.noexc842 + %2739 = load ptr, ptr %6, align 8, !noalias !954, !nonnull !4, !noundef !4 + %2740 = getelementptr inbounds i8, ptr %6, i64 16 + %2741 = load i64, ptr %2740, align 8, !noalias !954, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2735, ptr noundef nonnull %2739, i64 noundef %2737, i64 noundef %2741) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" unwind label %2742 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841": ; preds = %2738, %.noexc842 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !954 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !953 - br label %2754 + br label %2744 -2752: ; preds = %2748, %2738 - %2753 = landingpad { ptr, i32 } +2742: ; preds = %2738, %2728 + %2743 = landingpad { ptr, i32 } cleanup - br label %2815 + br label %2795 -2754: ; preds = %2730, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" +2744: ; preds = %2720, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i839", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i841" call void @llvm.experimental.noalias.scope.decl(metadata !961) - %2755 = load i8, ptr %129, align 8, !range !399, !alias.scope !961, !noundef !4 - %2756 = icmp eq i8 %2755, 2 - br i1 %2756, label %2778, label %2757 + %2745 = load i8, ptr %129, align 8, !range !399, !alias.scope !961, !noundef !4 + %2746 = icmp eq i8 %2745, 2 + br i1 %2746, label %2768, label %2747 -2757: ; preds = %2754 +2747: ; preds = %2744 call void @llvm.experimental.noalias.scope.decl(metadata !964) call void @llvm.experimental.noalias.scope.decl(metadata !967) call void @llvm.experimental.noalias.scope.decl(metadata !970) - %2758 = getelementptr inbounds i8, ptr %72, i64 592 - %2759 = load i64, ptr %2758, align 8, !alias.scope !973, !noundef !4 - %2760 = icmp ugt i64 %2759, 24 - br i1 %2760, label %2762, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845": ; preds = %2757 - %2761 = icmp eq i8 %2755, 0 - call void @llvm.assume(i1 %2761) - br label %2778 - -2762: ; preds = %2757 - %2763 = icmp ne i8 %2755, 0 - call void @llvm.assume(i1 %2763) - %2764 = getelementptr inbounds i8, ptr %72, i64 576 - %2765 = load ptr, ptr %2764, align 8, !alias.scope !973, !nonnull !4, !noundef !4 - %2766 = getelementptr inbounds i8, ptr %72, i64 568 - %2767 = load i64, ptr %2766, align 8, !alias.scope !973, !noundef !4 + %2748 = getelementptr inbounds i8, ptr %72, i64 592 + %2749 = load i64, ptr %2748, align 8, !alias.scope !973, !noundef !4 + %2750 = icmp ugt i64 %2749, 24 + br i1 %2750, label %2752, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845": ; preds = %2747 + %2751 = icmp eq i8 %2745, 0 + call void @llvm.assume(i1 %2751) + br label %2768 + +2752: ; preds = %2747 + %2753 = icmp ne i8 %2745, 0 + call void @llvm.assume(i1 %2753) + %2754 = getelementptr inbounds i8, ptr %72, i64 576 + %2755 = load ptr, ptr %2754, align 8, !alias.scope !973, !nonnull !4, !noundef !4 + %2756 = getelementptr inbounds i8, ptr %72, i64 568 + %2757 = load i64, ptr %2756, align 8, !alias.scope !973, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !973 - store i64 %2759, ptr %5, align 8, !noalias !973 - %2768 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr %2765, ptr %2768, align 8, !noalias !973 - %2769 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 %2767, ptr %2769, align 8, !noalias !973 + store i64 %2749, ptr %5, align 8, !noalias !973 + %2758 = getelementptr inbounds i8, ptr %5, i64 8 + store ptr %2755, ptr %2758, align 8, !noalias !973 + %2759 = getelementptr inbounds i8, ptr %5, i64 16 + store i64 %2757, ptr %2759, align 8, !noalias !973 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !974 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %5) - to label %.noexc848 unwind label %2776 - -.noexc848: ; preds = %2762 - %2770 = getelementptr inbounds i8, ptr %4, i64 8 - %2771 = load i64, ptr %2770, align 8, !range !125, !noalias !974, !noundef !4 - %.not.i.i.i.i.i.i.i846 = icmp eq i64 %2771, 0 - br i1 %.not.i.i.i.i.i.i.i846, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847", label %2772 - -2772: ; preds = %.noexc848 - %2773 = load ptr, ptr %4, align 8, !noalias !974, !nonnull !4, !noundef !4 - %2774 = getelementptr inbounds i8, ptr %4, i64 16 - %2775 = load i64, ptr %2774, align 8, !noalias !974, !noundef !4 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2769, ptr noundef nonnull %2773, i64 noundef %2771, i64 noundef %2775) - to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" unwind label %2776 - -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847": ; preds = %2772, %.noexc848 + to label %.noexc848 unwind label %2766 + +.noexc848: ; preds = %2752 + %2760 = getelementptr inbounds i8, ptr %4, i64 8 + %2761 = load i64, ptr %2760, align 8, !range !125, !noalias !974, !noundef !4 + %.not.i.i.i.i.i.i.i846 = icmp eq i64 %2761, 0 + br i1 %.not.i.i.i.i.i.i.i846, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847", label %2762 + +2762: ; preds = %.noexc848 + %2763 = load ptr, ptr %4, align 8, !noalias !974, !nonnull !4, !noundef !4 + %2764 = getelementptr inbounds i8, ptr %4, i64 16 + %2765 = load i64, ptr %2764, align 8, !noalias !974, !noundef !4 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %2759, ptr noundef nonnull %2763, i64 noundef %2761, i64 noundef %2765) + to label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" unwind label %2766 + +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847": ; preds = %2762, %.noexc848 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !974 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !973 - br label %2778 + br label %2768 -2776: ; preds = %2772, %2762 - %2777 = landingpad { ptr, i32 } +2766: ; preds = %2762, %2752 + %2767 = landingpad { ptr, i32 } cleanup - br label %2816 + br label %2796 -2778: ; preds = %2754, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" +2768: ; preds = %2744, %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i845", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i847" call void @llvm.experimental.noalias.scope.decl(metadata !981) call void @llvm.experimental.noalias.scope.decl(metadata !984) call void @llvm.experimental.noalias.scope.decl(metadata !987) call void @llvm.experimental.noalias.scope.decl(metadata !990) call void @llvm.experimental.noalias.scope.decl(metadata !993) - %2779 = getelementptr inbounds i8, ptr %72, i64 608 - %2780 = load i64, ptr %2779, align 8, !alias.scope !996, !noundef !4 - %2781 = icmp eq i64 %2780, 0 - br i1 %2781, label %2804, label %2782 + %2769 = getelementptr inbounds i8, ptr %72, i64 608 + %2770 = load i64, ptr %2769, align 8, !alias.scope !996, !noundef !4 + %2771 = icmp eq i64 %2770, 0 + br i1 %2771, label %2784, label %2772 -2782: ; preds = %2778 +2772: ; preds = %2768 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %140) to label %.noexc851 unwind label %74 -.noexc851: ; preds = %2782 +.noexc851: ; preds = %2772 call void @llvm.experimental.noalias.scope.decl(metadata !997) - %2783 = add i64 %2780, 1 - %2784 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2783, i64 392) - %2785 = extractvalue { i64, i1 } %2784, 1 - %2786 = xor i1 %2785, true - call void @llvm.assume(i1 %2786) - %2787 = extractvalue { i64, i1 } %2784, 0 - %2788 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2787, i64 15) - %2789 = extractvalue { i64, i1 } %2788, 1 - %2790 = xor i1 %2789, true - call void @llvm.assume(i1 %2790) - %2791 = extractvalue { i64, i1 } %2788, 0 - %2792 = and i64 %2791, -16 - %2793 = add i64 %2780, 17 - %2794 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2792, i64 %2793) - %2795 = extractvalue { i64, i1 } %2794, 0 - %2796 = extractvalue { i64, i1 } %2794, 1 - %2797 = icmp ult i64 %2795, 9223372036854775793 - %2798 = xor i1 %2796, true - call void @llvm.assume(i1 %2798) - call void @llvm.assume(i1 %2797) - %2799 = icmp eq i64 %2795, 0 - br i1 %2799, label %2804, label %2800 - -2800: ; preds = %.noexc851 - %2801 = load ptr, ptr %140, align 8, !alias.scope !1000, !nonnull !4, !noundef !4 - %2802 = sub nsw i64 0, %2792 - %2803 = getelementptr inbounds i8, ptr %2801, i64 %2802 - call void @__rust_dealloc(ptr noundef nonnull %2803, i64 noundef %2795, i64 noundef 16) #50, !noalias !1000 - br label %2804 - -"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852": ; preds = %2807, %2804, %.thread650 + %2773 = mul i64 %2770, 392 + %2774 = add i64 %2773, 407 + %2775 = and i64 %2774, -16 + %2776 = add i64 %2770, 17 + %2777 = add nuw i64 %2776, %2775 + %2778 = icmp ult i64 %2777, 9223372036854775793 + call void @llvm.assume(i1 %2778) + %2779 = icmp eq i64 %2777, 0 + br i1 %2779, label %2784, label %2780 + +2780: ; preds = %.noexc851 + %2781 = load ptr, ptr %140, align 8, !alias.scope !1000, !nonnull !4, !noundef !4 + %2782 = sub nsw i64 0, %2775 + %2783 = getelementptr inbounds i8, ptr %2781, i64 %2782 + call void @__rust_dealloc(ptr noundef nonnull %2783, i64 noundef %2777, i64 noundef 16) #50, !noalias !1000 + br label %2784 + +"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852": ; preds = %2787, %2784, %.thread650 call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %73) br label %2494 -2804: ; preds = %2778, %.noexc851, %2800 +2784: ; preds = %2768, %.noexc851, %2780 call void @llvm.lifetime.end.p0(i64 848, ptr nonnull %72) - %2805 = load i64, ptr %73, align 8, !range !395, !alias.scope !1001, !noundef !4 - %2806 = icmp eq i64 %2805, 2 - br i1 %2806, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852", label %2807 + %2785 = load i64, ptr %73, align 8, !range !395, !alias.scope !1001, !noundef !4 + %2786 = icmp eq i64 %2785, 2 + br i1 %2786, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852", label %2787 -2807: ; preds = %2804 +2787: ; preds = %2784 call void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2fa1c395e3df82f2E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(336) %73) br label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit852" -2808: ; preds = %2575, %2551 - %.pn = phi { ptr, i32 } [ %2576, %2575 ], [ %2552, %2551 ] +2788: ; preds = %2565, %2541 + %.pn = phi { ptr, i32 } [ %2566, %2565 ], [ %2542, %2541 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %97) #48 - to label %2809 unwind label %2387 + to label %2789 unwind label %2387 -2809: ; preds = %2599, %2808 - %.pn755 = phi { ptr, i32 } [ %2600, %2599 ], [ %.pn, %2808 ] +2789: ; preds = %2589, %2788 + %.pn755 = phi { ptr, i32 } [ %2590, %2589 ], [ %.pn, %2788 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %134) #48 - to label %2810 unwind label %2387 + to label %2790 unwind label %2387 -2810: ; preds = %2623, %2809 - %.pn757 = phi { ptr, i32 } [ %2624, %2623 ], [ %.pn755, %2809 ] +2790: ; preds = %2613, %2789 + %.pn757 = phi { ptr, i32 } [ %2614, %2613 ], [ %.pn755, %2789 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %130) #48 - to label %2811 unwind label %2387 + to label %2791 unwind label %2387 -2811: ; preds = %2647, %2810 - %.pn759 = phi { ptr, i32 } [ %2648, %2647 ], [ %.pn757, %2810 ] +2791: ; preds = %2637, %2790 + %.pn759 = phi { ptr, i32 } [ %2638, %2637 ], [ %.pn757, %2790 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %108) #48 - to label %2812 unwind label %2387 + to label %2792 unwind label %2387 -2812: ; preds = %2671, %2811 - %.pn761 = phi { ptr, i32 } [ %2672, %2671 ], [ %.pn759, %2811 ] +2792: ; preds = %2661, %2791 + %.pn761 = phi { ptr, i32 } [ %2662, %2661 ], [ %.pn759, %2791 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %115) #48 - to label %2813 unwind label %2387 + to label %2793 unwind label %2387 -2813: ; preds = %2695, %2812 - %.pn763 = phi { ptr, i32 } [ %2696, %2695 ], [ %.pn761, %2812 ] +2793: ; preds = %2685, %2792 + %.pn763 = phi { ptr, i32 } [ %2686, %2685 ], [ %.pn761, %2792 ] invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %116) #48 to label %.body unwind label %2387 -.body: ; preds = %2715, %2705, %2813 - %eh.lpad-body.pn = phi { ptr, i32 } [ %.pn763, %2813 ], [ %2716, %2715 ], [ %2706, %2705 ] +.body: ; preds = %2705, %2695, %2793 + %eh.lpad-body.pn = phi { ptr, i32 } [ %.pn763, %2793 ], [ %2706, %2705 ], [ %2696, %2695 ] invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %109) #48 - to label %2814 unwind label %2387 + to label %2794 unwind label %2387 -2814: ; preds = %2728, %.body - %.pn766 = phi { ptr, i32 } [ %2729, %2728 ], [ %eh.lpad-body.pn, %.body ] +2794: ; preds = %2718, %.body + %.pn766 = phi { ptr, i32 } [ %2719, %2718 ], [ %eh.lpad-body.pn, %.body ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %137) #48 - to label %2815 unwind label %2387 + to label %2795 unwind label %2387 -2815: ; preds = %2752, %2814 - %.pn768 = phi { ptr, i32 } [ %2753, %2752 ], [ %.pn766, %2814 ] +2795: ; preds = %2742, %2794 + %.pn768 = phi { ptr, i32 } [ %2743, %2742 ], [ %.pn766, %2794 ] invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %129) #48 - to label %2816 unwind label %2387 + to label %2796 unwind label %2387 -2816: ; preds = %2776, %2815 - %.pn770 = phi { ptr, i32 } [ %2777, %2776 ], [ %.pn768, %2815 ] +2796: ; preds = %2766, %2795 + %.pn770 = phi { ptr, i32 } [ %2767, %2766 ], [ %.pn768, %2795 ] invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %140) #48 to label %.thread unwind label %2387 .thread91: ; preds = %.thread98.loopexit, %.thread98.loopexit.split-lp, %2409, %.thread458 %.pn72596 = phi { ptr, i32 } [ %.pn715, %2409 ], [ %.pn715447462, %.thread458 ], [ %lpad.loopexit, %.thread98.loopexit ], [ %lpad.loopexit.split-lp, %.thread98.loopexit.split-lp ] invoke void @"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E"(ptr noalias noundef nonnull align 8 dereferenceable(136) %71) #48 - to label %2817 unwind label %2387 + to label %2797 unwind label %2387 -2817: ; preds = %.thread91, %77 +2797: ; preds = %.thread91, %77 %.pn729.ph = phi { ptr, i32 } [ %.pn72596, %.thread91 ], [ %78, %77 ] - %2818 = getelementptr inbounds i8, ptr %72, i64 240 + %2798 = getelementptr inbounds i8, ptr %72, i64 240 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2798) #48 + to label %2799 unwind label %2387 + +2799: ; preds = %2797 + %2800 = getelementptr inbounds i8, ptr %72, i64 280 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2800) #48 + to label %2801 unwind label %2387 + +2801: ; preds = %2799 + %2802 = getelementptr inbounds i8, ptr %72, i64 320 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2802) #48 + to label %2803 unwind label %2387 + +2803: ; preds = %2801 + %2804 = getelementptr inbounds i8, ptr %72, i64 360 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2804) #48 + to label %2805 unwind label %2387 + +2805: ; preds = %2803 + %2806 = getelementptr inbounds i8, ptr %72, i64 400 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2806) #48 + to label %2807 unwind label %2387 + +2807: ; preds = %2805 + %2808 = getelementptr inbounds i8, ptr %72, i64 440 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2808) #48 + to label %2809 unwind label %2387 + +2809: ; preds = %2807 + %2810 = getelementptr inbounds i8, ptr %72, i64 480 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2810) #48 + to label %2811 unwind label %2387 + +2811: ; preds = %2809 + %2812 = getelementptr inbounds i8, ptr %72, i64 32 + invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2812) #48 + to label %2813 unwind label %2387 + +2813: ; preds = %2811 + %2814 = getelementptr inbounds i8, ptr %72, i64 56 + invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2814) #48 + to label %2815 unwind label %2387 + +2815: ; preds = %2813 + %2816 = getelementptr inbounds i8, ptr %72, i64 520 + invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2816) #48 + to label %2817 unwind label %2387 + +2817: ; preds = %2815 + %2818 = getelementptr inbounds i8, ptr %72, i64 560 invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2818) #48 to label %2819 unwind label %2387 2819: ; preds = %2817 - %2820 = getelementptr inbounds i8, ptr %72, i64 280 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2820) #48 - to label %2821 unwind label %2387 - -2821: ; preds = %2819 - %2822 = getelementptr inbounds i8, ptr %72, i64 320 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2822) #48 - to label %2823 unwind label %2387 - -2823: ; preds = %2821 - %2824 = getelementptr inbounds i8, ptr %72, i64 360 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2824) #48 - to label %2825 unwind label %2387 - -2825: ; preds = %2823 - %2826 = getelementptr inbounds i8, ptr %72, i64 400 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2826) #48 - to label %2827 unwind label %2387 - -2827: ; preds = %2825 - %2828 = getelementptr inbounds i8, ptr %72, i64 440 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2828) #48 - to label %2829 unwind label %2387 - -2829: ; preds = %2827 - %2830 = getelementptr inbounds i8, ptr %72, i64 480 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2830) #48 - to label %2831 unwind label %2387 - -2831: ; preds = %2829 - %2832 = getelementptr inbounds i8, ptr %72, i64 32 - invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$exr..meta..attribute..Text$GT$$GT$$GT$17hab9cf0c616eac5f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2832) #48 - to label %2833 unwind label %2387 - -2833: ; preds = %2831 - %2834 = getelementptr inbounds i8, ptr %72, i64 56 - invoke fastcc void @"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Preview$GT$$GT$17h6b1f6bc795163a3cE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2834) #48 - to label %2835 unwind label %2387 - -2835: ; preds = %2833 - %2836 = getelementptr inbounds i8, ptr %72, i64 520 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2836) #48 - to label %2837 unwind label %2387 - -2837: ; preds = %2835 - %2838 = getelementptr inbounds i8, ptr %72, i64 560 - invoke fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..Text$GT$$GT$17hbb443b795115f890E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %2838) #48 - to label %2839 unwind label %2387 - -2839: ; preds = %2837 - %2840 = getelementptr inbounds i8, ptr %72, i64 600 - invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %2840) #48 + %2820 = getelementptr inbounds i8, ptr %72, i64 600 + invoke void @"_ZN4core3ptr130drop_in_place$LT$std..collections..hash..map..HashMap$LT$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$GT$$GT$17h3bf1127557128257E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %2820) #48 to label %.thread unwind label %2387 -"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854": ; preds = %2503, %2495, %.thread, %2843 - %.pn729.pn = phi { ptr, i32 } [ %.pn729.ph.pn, %2843 ], [ %.pn729.ph.pn, %.thread ], [ %2497, %2503 ], [ %2496, %2495 ] +"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854": ; preds = %2503, %2495, %.thread, %2823 + %.pn729.pn = phi { ptr, i32 } [ %.pn729.ph.pn, %2823 ], [ %.pn729.ph.pn, %.thread ], [ %2497, %2503 ], [ %2496, %2495 ] resume { ptr, i32 } %.pn729.pn -.thread: ; preds = %2839, %2816, %74 - %.pn729.ph.pn = phi { ptr, i32 } [ %.pn729.ph, %2839 ], [ %.pn770, %2816 ], [ %75, %74 ] - %2841 = load i64, ptr %73, align 8, !range !395, !alias.scope !1004, !noundef !4 - %2842 = icmp eq i64 %2841, 2 - br i1 %2842, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854", label %2843 +.thread: ; preds = %2819, %2796, %74 + %.pn729.ph.pn = phi { ptr, i32 } [ %.pn729.ph, %2819 ], [ %.pn770, %2796 ], [ %75, %74 ] + %2821 = load i64, ptr %73, align 8, !range !395, !alias.scope !1004, !noundef !4 + %2822 = icmp eq i64 %2821, 2 + br i1 %2822, label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854", label %2823 -2843: ; preds = %.thread +2823: ; preds = %.thread invoke void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2fa1c395e3df82f2E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(336) %73) to label %"_ZN4core3ptr82drop_in_place$LT$core..option..Option$LT$exr..meta..attribute..ChannelList$GT$$GT$17h40f73b975490510cE.exit854" unwind label %2387 } @@ -17774,7 +17722,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.assume(i1 %127) %128 = getelementptr inbounds i8, ptr %2, i64 8 %129 = invoke noundef ptr @"_ZN8smallvec21ConstNonNull$LT$T$GT$3new17h881c48122848fbccE.llvm.6924994955228445577"(ptr noundef nonnull %128) - to label %.noexc93 unwind label %276 + to label %.noexc93 unwind label %266 .noexc93: ; preds = %126 %130 = icmp eq ptr %129, null @@ -17782,7 +17730,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa 131: ; preds = %.noexc93 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.485243c0b6e0c52e847d698bbee735f0.6.llvm.6924994955228445577, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.485243c0b6e0c52e847d698bbee735f0.150.llvm.6924994955228445577) #47 - to label %.noexc94 unwind label %276 + to label %.noexc94 unwind label %266 .noexc94: ; preds = %131 unreachable @@ -17802,7 +17750,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7, i64 32, i1 false) store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %304 + br label %294 139: ; preds = %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } @@ -17927,7 +17875,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.lifetime.start.p0(i64 4368, ptr nonnull %26) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(4368) %26, ptr noundef nonnull align 8 dereferenceable(4368) %2, i64 4368, i1 false) invoke void @"_ZN3exr5block6reader15Reader$LT$R$GT$13filter_chunks17h235c46c77e2c5c63E"(ptr noalias nocapture noundef nonnull sret({ i64, [550 x i64] }) align 8 dereferenceable(4408) %27, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4368) %26, i1 noundef zeroext %33, ptr noalias noundef nonnull readonly align 8 dereferenceable(1376) %29) - to label %168 unwind label %272 + to label %168 unwind label %262 "_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$161": ; preds = %163 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.78, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.4116, i64 32, i1 false) @@ -17940,7 +17888,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %29) call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %304 + br label %294 168: ; preds = %165 call void @llvm.lifetime.end.p0(i64 4368, ptr nonnull %26) @@ -17975,7 +17923,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa %.sroa.719.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 4416 store i64 0, ptr %.sroa.719.0..sroa_idx, align 8 invoke void @_ZN3exr5block6reader12ChunksReader21decompress_sequential17h472f556e3b61e0deE(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %23, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4424) %22, i1 noundef zeroext %33, ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) - to label %177 unwind label %272 + to label %177 unwind label %262 176: ; preds = %172 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) @@ -17990,7 +17938,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa %.sroa.719.0..sroa_idx20 = getelementptr inbounds i8, ptr %24, i64 4416 store i64 0, ptr %.sroa.719.0..sroa_idx20, align 8 invoke void @_ZN3exr5block6reader12ChunksReader19decompress_parallel17hbc1e21651bc21fa8E(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %25, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4424) %24, i1 noundef zeroext %33, ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) - to label %236 unwind label %272 + to label %226 unwind label %262 177: ; preds = %175 call void @llvm.lifetime.end.p0(i64 4424, ptr nonnull %22) @@ -18012,7 +17960,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.273.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.273, i64 24, i1 false) br label %205 -183: ; preds = %239, %180 +183: ; preds = %229, %180 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %.sroa.6122) call void @llvm.lifetime.start.p0(i64 1376, ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1376) %21, ptr noundef nonnull align 8 dereferenceable(1376) %29, i64 1376, i1 false) @@ -18058,7 +18006,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !alias.scope !1441, !noalias !1427 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) invoke void @"_ZN4core3ptr472drop_in_place$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$GT$17h008f0bdb9001c0deE"(ptr noalias noundef nonnull align 8 dereferenceable(296) %186) - to label %242 unwind label %199, !noalias !1427 + to label %232 unwind label %199, !noalias !1427 197: ; preds = %187 %198 = landingpad { ptr, i32 } @@ -18092,7 +18040,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49, !noalias !1417 unreachable -205: ; preds = %240, %181, %173 +205: ; preds = %230, %181, %173 store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 4368, ptr nonnull %.sroa.016.sroa.7) call void @llvm.experimental.noalias.scope.decl(metadata !1442) @@ -18110,94 +18058,81 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa 210: ; preds = %205 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %206) - to label %.noexc.i102 unwind label %232 + to label %.noexc.i102 unwind label %222 .noexc.i102: ; preds = %210 call void @llvm.experimental.noalias.scope.decl(metadata !1464) - %211 = add i64 %208, 1 - %212 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %211, i64 392) - %213 = extractvalue { i64, i1 } %212, 1 - %214 = xor i1 %213, true - call void @llvm.assume(i1 %214) - %215 = extractvalue { i64, i1 } %212, 0 - %216 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %215, i64 15) - %217 = extractvalue { i64, i1 } %216, 1 - %218 = xor i1 %217, true - call void @llvm.assume(i1 %218) - %219 = extractvalue { i64, i1 } %216, 0 - %220 = and i64 %219, -16 - %221 = add i64 %208, 17 - %222 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %220, i64 %221) - %223 = extractvalue { i64, i1 } %222, 0 - %224 = extractvalue { i64, i1 } %222, 1 - %225 = icmp ult i64 %223, 9223372036854775793 - %226 = xor i1 %224, true - call void @llvm.assume(i1 %226) - call void @llvm.assume(i1 %225) - %227 = icmp eq i64 %223, 0 - br i1 %227, label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i", label %228 - -228: ; preds = %.noexc.i102 - %229 = load ptr, ptr %206, align 8, !alias.scope !1467, !nonnull !4, !noundef !4 - %230 = sub nsw i64 0, %220 - %231 = getelementptr inbounds i8, ptr %229, i64 %230 - call void @__rust_dealloc(ptr noundef nonnull %231, i64 noundef %223, i64 noundef 16) #50, !noalias !1467 + %211 = mul i64 %208, 392 + %212 = add i64 %211, 407 + %213 = and i64 %212, -16 + %214 = add i64 %208, 17 + %215 = add nuw i64 %214, %213 + %216 = icmp ult i64 %215, 9223372036854775793 + call void @llvm.assume(i1 %216) + %217 = icmp eq i64 %215, 0 + br i1 %217, label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i", label %218 + +218: ; preds = %.noexc.i102 + %219 = load ptr, ptr %206, align 8, !alias.scope !1467, !nonnull !4, !noundef !4 + %220 = sub nsw i64 0, %213 + %221 = getelementptr inbounds i8, ptr %219, i64 %220 + call void @__rust_dealloc(ptr noundef nonnull %221, i64 noundef %215, i64 noundef 16) #50, !noalias !1467 br label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" -232: ; preds = %210 - %233 = landingpad { ptr, i32 } +222: ; preds = %210 + %223 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1060drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17h709b1082b7637b24E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %29) - to label %.thread134.thread unwind label %234 + to label %.thread134.thread unwind label %224 -"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i": ; preds = %228, %.noexc.i102, %205 +"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i": ; preds = %218, %.noexc.i102, %205 invoke void @"_ZN4core3ptr1060drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17h709b1082b7637b24E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %29) to label %"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$" unwind label %139 -234: ; preds = %232 - %235 = landingpad { ptr, i32 } +224: ; preds = %222 + %225 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -236: ; preds = %176 +226: ; preds = %176 call void @llvm.lifetime.end.p0(i64 4424, ptr nonnull %24) - %237 = load i64, ptr %25, align 8, !range !394, !noundef !4 - %238 = icmp eq i64 %237, 4 - br i1 %238, label %239, label %240 + %227 = load i64, ptr %25, align 8, !range !394, !noundef !4 + %228 = icmp eq i64 %227, 4 + br i1 %228, label %229, label %230 -239: ; preds = %236 +229: ; preds = %226 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) br label %183 -240: ; preds = %236 +230: ; preds = %226 %.sroa.465.0..sroa_idx = getelementptr inbounds i8, ptr %25, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.465.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) - %241 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %237, ptr %241, align 8 + %231 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %227, ptr %231, align 8 %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267, i64 24, i1 false) br label %205 -242: ; preds = %189 +232: ; preds = %189 call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %10), !noalias !1427 - %243 = getelementptr inbounds i8, ptr %12, i64 1216 - %244 = getelementptr inbounds i8, ptr %12, i64 848 + %233 = getelementptr inbounds i8, ptr %12, i64 1216 + %234 = getelementptr inbounds i8, ptr %12, i64 848 %.sroa.0.888..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.0.i, i64 888 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(280) %.sroa.0.888..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(280) %11, i64 280, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(848) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(848) %21, i64 848, i1 false) %.sroa.0.848..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.0.i, i64 848 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.848..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %244, i64 40, i1 false), !alias.scope !1468 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.848..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %234, i64 40, i1 false), !alias.scope !1468 call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %11) %.sroa.4120.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1168 - %245 = load <2 x i64>, ptr %243, align 8, !alias.scope !1425, !noalias !1428 + %235 = load <2 x i64>, ptr %233, align 8, !alias.scope !1425, !noalias !1428 call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %12), !noalias !1417 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122, ptr noundef nonnull align 8 dereferenceable(136) %13, i64 136, i1 false), !noalias !1469 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %13), !noalias !1417 call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1168) %0, ptr noundef nonnull align 8 dereferenceable(1168) %.sroa.0.i, i64 1168, i1 false) - store <2 x i64> %245, ptr %.sroa.4120.0..sroa_idx, align 8 + store <2 x i64> %235, ptr %.sroa.4120.0..sroa_idx, align 8 %.sroa.6122.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1184 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122, i64 136, i1 false) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %.sroa.6122) @@ -18209,71 +18144,71 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h3335da1a82d69c5aE.exit.threa call void @llvm.experimental.noalias.scope.decl(metadata !1476) call void @llvm.experimental.noalias.scope.decl(metadata !1479) invoke void @"_ZN4core3ptr262drop_in_place$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$GT$17h3b4c9ddf62bd76c3E"(ptr noalias noundef nonnull align 8 dereferenceable(120) %1) - to label %249 unwind label %246 + to label %239 unwind label %236 -246: ; preds = %242 - %247 = landingpad { ptr, i32 } +236: ; preds = %232 + %237 = landingpad { ptr, i32 } cleanup - %248 = getelementptr inbounds i8, ptr %1, i64 120 - invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %248) #48 - to label %common.resume unwind label %270 + %238 = getelementptr inbounds i8, ptr %1, i64 120 + invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %238) #48 + to label %common.resume unwind label %260 -249: ; preds = %242 - %250 = getelementptr inbounds i8, ptr %1, i64 120 +239: ; preds = %232 + %240 = getelementptr inbounds i8, ptr %1, i64 120 call void @llvm.experimental.noalias.scope.decl(metadata !1482) call void @llvm.experimental.noalias.scope.decl(metadata !1485) call void @llvm.experimental.noalias.scope.decl(metadata !1488) - %251 = getelementptr inbounds i8, ptr %1, i64 152 - %252 = load i64, ptr %251, align 8, !alias.scope !1491, !noundef !4 - %253 = icmp ugt i64 %252, 24 - %254 = load i8, ptr %250, align 8, !range !116, !alias.scope !1491, !noundef !4 - br i1 %253, label %256, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i": ; preds = %249 - %255 = icmp eq i8 %254, 0 - call void @llvm.assume(i1 %255) + %241 = getelementptr inbounds i8, ptr %1, i64 152 + %242 = load i64, ptr %241, align 8, !alias.scope !1491, !noundef !4 + %243 = icmp ugt i64 %242, 24 + %244 = load i8, ptr %240, align 8, !range !116, !alias.scope !1491, !noundef !4 + br i1 %243, label %246, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i": ; preds = %239 + %245 = icmp eq i8 %244, 0 + call void @llvm.assume(i1 %245) br label %"_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered." -256: ; preds = %249 - %257 = icmp ne i8 %254, 0 - call void @llvm.assume(i1 %257) - %258 = getelementptr inbounds i8, ptr %1, i64 136 - %259 = load ptr, ptr %258, align 8, !alias.scope !1491, !nonnull !4, !noundef !4 - %260 = getelementptr inbounds i8, ptr %1, i64 128 - %261 = load i64, ptr %260, align 8, !alias.scope !1491, !noundef !4 +246: ; preds = %239 + %247 = icmp ne i8 %244, 0 + call void @llvm.assume(i1 %247) + %248 = getelementptr inbounds i8, ptr %1, i64 136 + %249 = load ptr, ptr %248, align 8, !alias.scope !1491, !nonnull !4, !noundef !4 + %250 = getelementptr inbounds i8, ptr %1, i64 128 + %251 = load i64, ptr %250, align 8, !alias.scope !1491, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !1491 - store i64 %252, ptr %7, align 8, !noalias !1491 - %262 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr %259, ptr %262, align 8, !noalias !1491 - %263 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %261, ptr %263, align 8, !noalias !1491 + store i64 %242, ptr %7, align 8, !noalias !1491 + %252 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr %249, ptr %252, align 8, !noalias !1491 + %253 = getelementptr inbounds i8, ptr %7, i64 16 + store i64 %251, ptr %253, align 8, !noalias !1491 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1492 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7), !noalias !1499 - %264 = getelementptr inbounds i8, ptr %6, i64 8 - %265 = load i64, ptr %264, align 8, !range !125, !noalias !1492, !noundef !4 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %265, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", label %266 - -266: ; preds = %256 - %267 = load ptr, ptr %6, align 8, !noalias !1492, !nonnull !4, !noundef !4 - %268 = getelementptr inbounds i8, ptr %6, i64 16 - %269 = load i64, ptr %268, align 8, !noalias !1492, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %263, ptr noundef nonnull %267, i64 noundef %265, i64 noundef %269), !noalias !1499 + %254 = getelementptr inbounds i8, ptr %6, i64 8 + %255 = load i64, ptr %254, align 8, !range !125, !noalias !1492, !noundef !4 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %255, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", label %256 + +256: ; preds = %246 + %257 = load ptr, ptr %6, align 8, !noalias !1492, !nonnull !4, !noundef !4 + %258 = getelementptr inbounds i8, ptr %6, i64 16 + %259 = load i64, ptr %258, align 8, !noalias !1492, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %253, ptr noundef nonnull %257, i64 noundef %255, i64 noundef %259), !noalias !1499 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i": ; preds = %266, %256 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i": ; preds = %256, %246 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1492 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !1491 br label %"_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered." -270: ; preds = %246 - %271 = landingpad { ptr, i32 } +260: ; preds = %236 + %261 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -common.resume: ; preds = %.thread134.thread, %278, %246 - %common.resume.op = phi { ptr, i32 } [ %247, %246 ], [ %279, %278 ], [ %.pn86, %.thread134.thread ] +common.resume: ; preds = %.thread134.thread, %268, %236 + %common.resume.op = phi { ptr, i32 } [ %237, %236 ], [ %269, %268 ], [ %.pn86, %.thread134.thread ] resume { ptr, i32 } %common.resume.op "_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered.": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" @@ -18282,113 +18217,113 @@ common.resume: ; preds = %.thread134.thread, "_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$": ; preds = %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %29) call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %277 + br label %267 -272: ; preds = %165, %175, %176 - %273 = landingpad { ptr, i32 } +262: ; preds = %165, %175, %176 + %263 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$$GT$17hd9f9f502ec3d0296E"(ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) #48 - to label %.thread134.thread unwind label %274 + to label %.thread134.thread unwind label %264 -274: ; preds = %276, %.thread, %.thread134.thread, %272 - %275 = landingpad { ptr, i32 } +264: ; preds = %266, %.thread, %.thread134.thread, %262 + %265 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -276: ; preds = %126, %131 +266: ; preds = %126, %131 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1060drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17h709b1082b7637b24E.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %30) - to label %.thread unwind label %274 + to label %.thread unwind label %264 -277: ; preds = %"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$", %304 +267: ; preds = %"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$", %294 call void @llvm.experimental.noalias.scope.decl(metadata !1500) call void @llvm.experimental.noalias.scope.decl(metadata !1503) call void @llvm.experimental.noalias.scope.decl(metadata !1506) call void @llvm.experimental.noalias.scope.decl(metadata !1509) invoke void @"_ZN4core3ptr262drop_in_place$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$GT$17h3b4c9ddf62bd76c3E"(ptr noalias noundef nonnull align 8 dereferenceable(120) %1) - to label %281 unwind label %278 + to label %271 unwind label %268 -278: ; preds = %277 - %279 = landingpad { ptr, i32 } +268: ; preds = %267 + %269 = landingpad { ptr, i32 } cleanup - %280 = getelementptr inbounds i8, ptr %1, i64 120 - invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %280) #48 - to label %common.resume unwind label %302 + %270 = getelementptr inbounds i8, ptr %1, i64 120 + invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %270) #48 + to label %common.resume unwind label %292 -281: ; preds = %277 - %282 = getelementptr inbounds i8, ptr %1, i64 120 +271: ; preds = %267 + %272 = getelementptr inbounds i8, ptr %1, i64 120 call void @llvm.experimental.noalias.scope.decl(metadata !1512) call void @llvm.experimental.noalias.scope.decl(metadata !1515) call void @llvm.experimental.noalias.scope.decl(metadata !1518) - %283 = getelementptr inbounds i8, ptr %1, i64 152 - %284 = load i64, ptr %283, align 8, !alias.scope !1521, !noundef !4 - %285 = icmp ugt i64 %284, 24 - %286 = load i8, ptr %282, align 8, !range !116, !alias.scope !1521, !noundef !4 - br i1 %285, label %288, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110": ; preds = %281 - %287 = icmp eq i8 %286, 0 - call void @llvm.assume(i1 %287) + %273 = getelementptr inbounds i8, ptr %1, i64 152 + %274 = load i64, ptr %273, align 8, !alias.scope !1521, !noundef !4 + %275 = icmp ugt i64 %274, 24 + %276 = load i8, ptr %272, align 8, !range !116, !alias.scope !1521, !noundef !4 + br i1 %275, label %278, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110": ; preds = %271 + %277 = icmp eq i8 %276, 0 + call void @llvm.assume(i1 %277) br label %"_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered." -288: ; preds = %281 - %289 = icmp ne i8 %286, 0 - call void @llvm.assume(i1 %289) - %290 = getelementptr inbounds i8, ptr %1, i64 136 - %291 = load ptr, ptr %290, align 8, !alias.scope !1521, !nonnull !4, !noundef !4 - %292 = getelementptr inbounds i8, ptr %1, i64 128 - %293 = load i64, ptr %292, align 8, !alias.scope !1521, !noundef !4 +278: ; preds = %271 + %279 = icmp ne i8 %276, 0 + call void @llvm.assume(i1 %279) + %280 = getelementptr inbounds i8, ptr %1, i64 136 + %281 = load ptr, ptr %280, align 8, !alias.scope !1521, !nonnull !4, !noundef !4 + %282 = getelementptr inbounds i8, ptr %1, i64 128 + %283 = load i64, ptr %282, align 8, !alias.scope !1521, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !1521 - store i64 %284, ptr %5, align 8, !noalias !1521 - %294 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr %291, ptr %294, align 8, !noalias !1521 - %295 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 %293, ptr %295, align 8, !noalias !1521 + store i64 %274, ptr %5, align 8, !noalias !1521 + %284 = getelementptr inbounds i8, ptr %5, i64 8 + store ptr %281, ptr %284, align 8, !noalias !1521 + %285 = getelementptr inbounds i8, ptr %5, i64 16 + store i64 %283, ptr %285, align 8, !noalias !1521 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1522 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %5), !noalias !1529 - %296 = getelementptr inbounds i8, ptr %4, i64 8 - %297 = load i64, ptr %296, align 8, !range !125, !noalias !1522, !noundef !4 - %.not.i.i.i.i.i.i.i.i.i.i111 = icmp eq i64 %297, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i111, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", label %298 - -298: ; preds = %288 - %299 = load ptr, ptr %4, align 8, !noalias !1522, !nonnull !4, !noundef !4 - %300 = getelementptr inbounds i8, ptr %4, i64 16 - %301 = load i64, ptr %300, align 8, !noalias !1522, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %295, ptr noundef nonnull %299, i64 noundef %297, i64 noundef %301), !noalias !1529 + %286 = getelementptr inbounds i8, ptr %4, i64 8 + %287 = load i64, ptr %286, align 8, !range !125, !noalias !1522, !noundef !4 + %.not.i.i.i.i.i.i.i.i.i.i111 = icmp eq i64 %287, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i111, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", label %288 + +288: ; preds = %278 + %289 = load ptr, ptr %4, align 8, !noalias !1522, !nonnull !4, !noundef !4 + %290 = getelementptr inbounds i8, ptr %4, i64 16 + %291 = load i64, ptr %290, align 8, !noalias !1522, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %285, ptr noundef nonnull %289, i64 noundef %287, i64 noundef %291), !noalias !1529 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112": ; preds = %298, %288 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112": ; preds = %288, %278 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !1522 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !1521 br label %"_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered." -302: ; preds = %278 - %303 = landingpad { ptr, i32 } +292: ; preds = %268 + %293 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -304: ; preds = %"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$161", %.critedge +294: ; preds = %"_ZN4core3ptr1128drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$161", %.critedge invoke void @"_ZN4core3ptr115drop_in_place$LT$exr..block..reader..Reader$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$GT$17h0590c39c61ced690E"(ptr noalias noundef nonnull align 8 dereferenceable(4368) %2) - to label %277 unwind label %305 + to label %267 unwind label %295 -.thread134.thread: ; preds = %.body.i98, %272, %232, %139, %.thread, %305 - %.pn86 = phi { ptr, i32 } [ %306, %305 ], [ %.pn.pn127, %.thread ], [ %233, %232 ], [ %lpad.thr_comm.split-lp, %139 ], [ %273, %272 ], [ %eh.lpad-body.i.i, %.body.i98 ] +.thread134.thread: ; preds = %.body.i98, %262, %222, %139, %.thread, %295 + %.pn86 = phi { ptr, i32 } [ %296, %295 ], [ %.pn.pn127, %.thread ], [ %223, %222 ], [ %lpad.thr_comm.split-lp, %139 ], [ %263, %262 ], [ %eh.lpad-body.i.i, %.body.i98 ] invoke void @"_ZN4core3ptr1779drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$$GT$17h584f7586e7e72be9E"(ptr noalias noundef nonnull align 8 dereferenceable(248) %1) #48 - to label %common.resume unwind label %274 + to label %common.resume unwind label %264 -305: ; preds = %304 - %306 = landingpad { ptr, i32 } +295: ; preds = %294 + %296 = landingpad { ptr, i32 } cleanup br label %.thread134.thread -.thread: ; preds = %158, %276, %.body.i, %110, %113, %53 - %.pn.pn127 = phi { ptr, i32 } [ %54, %53 ], [ %111, %113 ], [ %111, %110 ], [ %eh.lpad-body.i, %.body.i ], [ %159, %158 ], [ %lpad.thr_comm, %276 ] +.thread: ; preds = %158, %266, %.body.i, %110, %113, %53 + %.pn.pn127 = phi { ptr, i32 } [ %54, %53 ], [ %111, %113 ], [ %111, %110 ], [ %eh.lpad-body.i, %.body.i ], [ %159, %158 ], [ %lpad.thr_comm, %266 ] invoke void @"_ZN4core3ptr115drop_in_place$LT$exr..block..reader..Reader$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$GT$17h0590c39c61ced690E"(ptr noalias noundef nonnull align 8 dereferenceable(4368) %2) #48 - to label %.thread134.thread unwind label %274 + to label %.thread134.thread unwind label %264 } ; Function Attrs: nonlazybind uwtable @@ -18841,7 +18776,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.assume(i1 %127) %128 = getelementptr inbounds i8, ptr %2, i64 8 %129 = invoke noundef ptr @"_ZN8smallvec21ConstNonNull$LT$T$GT$3new17h881c48122848fbccE.llvm.6924994955228445577"(ptr noundef nonnull %128) - to label %.noexc93 unwind label %276 + to label %.noexc93 unwind label %266 .noexc93: ; preds = %126 %130 = icmp eq ptr %129, null @@ -18849,7 +18784,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa 131: ; preds = %.noexc93 invoke void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.485243c0b6e0c52e847d698bbee735f0.6.llvm.6924994955228445577, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.485243c0b6e0c52e847d698bbee735f0.150.llvm.6924994955228445577) #47 - to label %.noexc94 unwind label %276 + to label %.noexc94 unwind label %266 .noexc94: ; preds = %131 unreachable @@ -18869,7 +18804,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7, i64 32, i1 false) store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %304 + br label %294 139: ; preds = %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" %lpad.thr_comm.split-lp = landingpad { ptr, i32 } @@ -18994,7 +18929,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.lifetime.start.p0(i64 4344, ptr nonnull %26) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(4344) %26, ptr noundef nonnull align 8 dereferenceable(4344) %2, i64 4344, i1 false) invoke void @"_ZN3exr5block6reader15Reader$LT$R$GT$13filter_chunks17h754c56564d615831E"(ptr noalias nocapture noundef nonnull sret({ i64, [547 x i64] }) align 8 dereferenceable(4384) %27, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4344) %26, i1 noundef zeroext %33, ptr noalias noundef nonnull readonly align 8 dereferenceable(1376) %29) - to label %168 unwind label %272 + to label %168 unwind label %262 "_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific161": ; preds = %163 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.78, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.4116, i64 32, i1 false) @@ -19007,7 +18942,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %29) call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %304 + br label %294 168: ; preds = %165 call void @llvm.lifetime.end.p0(i64 4344, ptr nonnull %26) @@ -19042,7 +18977,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa %.sroa.719.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 4392 store i64 0, ptr %.sroa.719.0..sroa_idx, align 8 invoke void @_ZN3exr5block6reader12ChunksReader21decompress_sequential17hddca56db04d6a75dE(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %23, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4400) %22, i1 noundef zeroext %33, ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) - to label %177 unwind label %272 + to label %177 unwind label %262 176: ; preds = %172 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) @@ -19057,7 +18992,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa %.sroa.719.0..sroa_idx20 = getelementptr inbounds i8, ptr %24, i64 4392 store i64 0, ptr %.sroa.719.0..sroa_idx20, align 8 invoke void @_ZN3exr5block6reader12ChunksReader19decompress_parallel17hb1b17cd9e6f7a538E(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %25, ptr noalias nocapture noundef nonnull align 8 dereferenceable(4400) %24, i1 noundef zeroext %33, ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) - to label %236 unwind label %272 + to label %226 unwind label %262 177: ; preds = %175 call void @llvm.lifetime.end.p0(i64 4400, ptr nonnull %22) @@ -19079,7 +19014,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.273.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.273, i64 24, i1 false) br label %205 -183: ; preds = %239, %180 +183: ; preds = %229, %180 call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %.sroa.6122) call void @llvm.lifetime.start.p0(i64 1376, ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1376) %21, ptr noundef nonnull align 8 dereferenceable(1376) %29, i64 1376, i1 false) @@ -19125,7 +19060,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !alias.scope !1681, !noalias !1667 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) invoke void @"_ZN4core3ptr472drop_in_place$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$GT$17h008f0bdb9001c0deE"(ptr noalias noundef nonnull align 8 dereferenceable(296) %186) - to label %242 unwind label %199, !noalias !1667 + to label %232 unwind label %199, !noalias !1667 197: ; preds = %187 %198 = landingpad { ptr, i32 } @@ -19159,7 +19094,7 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49, !noalias !1657 unreachable -205: ; preds = %240, %181, %173 +205: ; preds = %230, %181, %173 store i64 2, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 4344, ptr nonnull %.sroa.016.sroa.7) call void @llvm.experimental.noalias.scope.decl(metadata !1682) @@ -19177,94 +19112,81 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa 210: ; preds = %205 invoke void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %206) - to label %.noexc.i102 unwind label %232 + to label %.noexc.i102 unwind label %222 .noexc.i102: ; preds = %210 call void @llvm.experimental.noalias.scope.decl(metadata !1704) - %211 = add i64 %208, 1 - %212 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %211, i64 392) - %213 = extractvalue { i64, i1 } %212, 1 - %214 = xor i1 %213, true - call void @llvm.assume(i1 %214) - %215 = extractvalue { i64, i1 } %212, 0 - %216 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %215, i64 15) - %217 = extractvalue { i64, i1 } %216, 1 - %218 = xor i1 %217, true - call void @llvm.assume(i1 %218) - %219 = extractvalue { i64, i1 } %216, 0 - %220 = and i64 %219, -16 - %221 = add i64 %208, 17 - %222 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %220, i64 %221) - %223 = extractvalue { i64, i1 } %222, 0 - %224 = extractvalue { i64, i1 } %222, 1 - %225 = icmp ult i64 %223, 9223372036854775793 - %226 = xor i1 %224, true - call void @llvm.assume(i1 %226) - call void @llvm.assume(i1 %225) - %227 = icmp eq i64 %223, 0 - br i1 %227, label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i", label %228 - -228: ; preds = %.noexc.i102 - %229 = load ptr, ptr %206, align 8, !alias.scope !1707, !nonnull !4, !noundef !4 - %230 = sub nsw i64 0, %220 - %231 = getelementptr inbounds i8, ptr %229, i64 %230 - call void @__rust_dealloc(ptr noundef nonnull %231, i64 noundef %223, i64 noundef 16) #50, !noalias !1707 + %211 = mul i64 %208, 392 + %212 = add i64 %211, 407 + %213 = and i64 %212, -16 + %214 = add i64 %208, 17 + %215 = add nuw i64 %214, %213 + %216 = icmp ult i64 %215, 9223372036854775793 + call void @llvm.assume(i1 %216) + %217 = icmp eq i64 %215, 0 + br i1 %217, label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i", label %218 + +218: ; preds = %.noexc.i102 + %219 = load ptr, ptr %206, align 8, !alias.scope !1707, !nonnull !4, !noundef !4 + %220 = sub nsw i64 0, %213 + %221 = getelementptr inbounds i8, ptr %219, i64 %220 + call void @__rust_dealloc(ptr noundef nonnull %221, i64 noundef %215, i64 noundef 16) #50, !noalias !1707 br label %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" -232: ; preds = %210 - %233 = landingpad { ptr, i32 } +222: ; preds = %210 + %223 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1034drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17hab25e7d73e931b4aE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %29) - to label %.thread134.thread unwind label %234 + to label %.thread134.thread unwind label %224 -"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i": ; preds = %228, %.noexc.i102, %205 +"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i": ; preds = %218, %.noexc.i102, %205 invoke void @"_ZN4core3ptr1034drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17hab25e7d73e931b4aE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %29) to label %"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific" unwind label %139 -234: ; preds = %232 - %235 = landingpad { ptr, i32 } +224: ; preds = %222 + %225 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -236: ; preds = %176 +226: ; preds = %176 call void @llvm.lifetime.end.p0(i64 4400, ptr nonnull %24) - %237 = load i64, ptr %25, align 8, !range !394, !noundef !4 - %238 = icmp eq i64 %237, 4 - br i1 %238, label %239, label %240 + %227 = load i64, ptr %25, align 8, !range !394, !noundef !4 + %228 = icmp eq i64 %227, 4 + br i1 %228, label %229, label %230 -239: ; preds = %236 +229: ; preds = %226 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) br label %183 -240: ; preds = %236 +230: ; preds = %226 %.sroa.465.0..sroa_idx = getelementptr inbounds i8, ptr %25, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.465.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) - %241 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %237, ptr %241, align 8 + %231 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %227, ptr %231, align 8 %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.267, i64 24, i1 false) br label %205 -242: ; preds = %189 +232: ; preds = %189 call void @llvm.lifetime.end.p0(i64 328, ptr nonnull %10), !noalias !1667 - %243 = getelementptr inbounds i8, ptr %12, i64 1216 - %244 = getelementptr inbounds i8, ptr %12, i64 848 + %233 = getelementptr inbounds i8, ptr %12, i64 1216 + %234 = getelementptr inbounds i8, ptr %12, i64 848 %.sroa.0.888..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.0.i, i64 888 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(280) %.sroa.0.888..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(280) %11, i64 280, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(848) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(848) %21, i64 848, i1 false) %.sroa.0.848..sroa_idx.i = getelementptr inbounds i8, ptr %.sroa.0.i, i64 848 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.848..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %244, i64 40, i1 false), !alias.scope !1708 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.848..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %234, i64 40, i1 false), !alias.scope !1708 call void @llvm.lifetime.end.p0(i64 280, ptr nonnull %11) %.sroa.4120.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1168 - %245 = load <2 x i64>, ptr %243, align 8, !alias.scope !1665, !noalias !1668 + %235 = load <2 x i64>, ptr %233, align 8, !alias.scope !1665, !noalias !1668 call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %12), !noalias !1657 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122, ptr noundef nonnull align 8 dereferenceable(136) %13, i64 136, i1 false), !noalias !1709 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %13), !noalias !1657 call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1168) %0, ptr noundef nonnull align 8 dereferenceable(1168) %.sroa.0.i, i64 1168, i1 false) - store <2 x i64> %245, ptr %.sroa.4120.0..sroa_idx, align 8 + store <2 x i64> %235, ptr %.sroa.4120.0..sroa_idx, align 8 %.sroa.6122.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1184 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(136) %.sroa.6122, i64 136, i1 false) call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %.sroa.6122) @@ -19276,71 +19198,71 @@ _ZN4core4iter8adapters7flatten17and_then_or_clear17h1995f83a836331c8E.exit.threa call void @llvm.experimental.noalias.scope.decl(metadata !1716) call void @llvm.experimental.noalias.scope.decl(metadata !1719) invoke void @"_ZN4core3ptr262drop_in_place$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$GT$17h3b4c9ddf62bd76c3E"(ptr noalias noundef nonnull align 8 dereferenceable(120) %1) - to label %249 unwind label %246 + to label %239 unwind label %236 -246: ; preds = %242 - %247 = landingpad { ptr, i32 } +236: ; preds = %232 + %237 = landingpad { ptr, i32 } cleanup - %248 = getelementptr inbounds i8, ptr %1, i64 120 - invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %248) #48 - to label %common.resume unwind label %270 + %238 = getelementptr inbounds i8, ptr %1, i64 120 + invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %238) #48 + to label %common.resume unwind label %260 -249: ; preds = %242 - %250 = getelementptr inbounds i8, ptr %1, i64 120 +239: ; preds = %232 + %240 = getelementptr inbounds i8, ptr %1, i64 120 call void @llvm.experimental.noalias.scope.decl(metadata !1722) call void @llvm.experimental.noalias.scope.decl(metadata !1725) call void @llvm.experimental.noalias.scope.decl(metadata !1728) - %251 = getelementptr inbounds i8, ptr %1, i64 152 - %252 = load i64, ptr %251, align 8, !alias.scope !1731, !noundef !4 - %253 = icmp ugt i64 %252, 24 - %254 = load i8, ptr %250, align 8, !range !116, !alias.scope !1731, !noundef !4 - br i1 %253, label %256, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i": ; preds = %249 - %255 = icmp eq i8 %254, 0 - call void @llvm.assume(i1 %255) + %241 = getelementptr inbounds i8, ptr %1, i64 152 + %242 = load i64, ptr %241, align 8, !alias.scope !1731, !noundef !4 + %243 = icmp ugt i64 %242, 24 + %244 = load i8, ptr %240, align 8, !range !116, !alias.scope !1731, !noundef !4 + br i1 %243, label %246, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i": ; preds = %239 + %245 = icmp eq i8 %244, 0 + call void @llvm.assume(i1 %245) br label %"_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$" -256: ; preds = %249 - %257 = icmp ne i8 %254, 0 - call void @llvm.assume(i1 %257) - %258 = getelementptr inbounds i8, ptr %1, i64 136 - %259 = load ptr, ptr %258, align 8, !alias.scope !1731, !nonnull !4, !noundef !4 - %260 = getelementptr inbounds i8, ptr %1, i64 128 - %261 = load i64, ptr %260, align 8, !alias.scope !1731, !noundef !4 +246: ; preds = %239 + %247 = icmp ne i8 %244, 0 + call void @llvm.assume(i1 %247) + %248 = getelementptr inbounds i8, ptr %1, i64 136 + %249 = load ptr, ptr %248, align 8, !alias.scope !1731, !nonnull !4, !noundef !4 + %250 = getelementptr inbounds i8, ptr %1, i64 128 + %251 = load i64, ptr %250, align 8, !alias.scope !1731, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !1731 - store i64 %252, ptr %7, align 8, !noalias !1731 - %262 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr %259, ptr %262, align 8, !noalias !1731 - %263 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 %261, ptr %263, align 8, !noalias !1731 + store i64 %242, ptr %7, align 8, !noalias !1731 + %252 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr %249, ptr %252, align 8, !noalias !1731 + %253 = getelementptr inbounds i8, ptr %7, i64 16 + store i64 %251, ptr %253, align 8, !noalias !1731 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1732 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %7), !noalias !1739 - %264 = getelementptr inbounds i8, ptr %6, i64 8 - %265 = load i64, ptr %264, align 8, !range !125, !noalias !1732, !noundef !4 - %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %265, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", label %266 - -266: ; preds = %256 - %267 = load ptr, ptr %6, align 8, !noalias !1732, !nonnull !4, !noundef !4 - %268 = getelementptr inbounds i8, ptr %6, i64 16 - %269 = load i64, ptr %268, align 8, !noalias !1732, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %263, ptr noundef nonnull %267, i64 noundef %265, i64 noundef %269), !noalias !1739 + %254 = getelementptr inbounds i8, ptr %6, i64 8 + %255 = load i64, ptr %254, align 8, !range !125, !noalias !1732, !noundef !4 + %.not.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %255, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", label %256 + +256: ; preds = %246 + %257 = load ptr, ptr %6, align 8, !noalias !1732, !nonnull !4, !noundef !4 + %258 = getelementptr inbounds i8, ptr %6, i64 16 + %259 = load i64, ptr %258, align 8, !noalias !1732, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %253, ptr noundef nonnull %257, i64 noundef %255, i64 noundef %259), !noalias !1739 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i": ; preds = %266, %256 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i": ; preds = %256, %246 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1732 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !1731 br label %"_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$" -270: ; preds = %246 - %271 = landingpad { ptr, i32 } +260: ; preds = %236 + %261 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -common.resume: ; preds = %.thread134.thread, %278, %246 - %common.resume.op = phi { ptr, i32 } [ %247, %246 ], [ %279, %278 ], [ %.pn86, %.thread134.thread ] +common.resume: ; preds = %.thread134.thread, %268, %236 + %common.resume.op = phi { ptr, i32 } [ %237, %236 ], [ %269, %268 ], [ %.pn86, %.thread134.thread ] resume { ptr, i32 } %common.resume.op "_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110", %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i", %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i" @@ -19349,113 +19271,113 @@ common.resume: ; preds = %.thread134.thread, "_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific": ; preds = %"_ZN4core3ptr55drop_in_place$LT$exr..meta..header..ImageAttributes$GT$17h6f2f33ca9e5fd4b8E.exit.i" call void @llvm.lifetime.end.p0(i64 1376, ptr nonnull %29) call void @llvm.lifetime.end.p0(i64 1240, ptr nonnull %30) - br label %277 + br label %267 -272: ; preds = %165, %175, %176 - %273 = landingpad { ptr, i32 } +262: ; preds = %165, %175, %176 + %263 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$$GT$17h4bc2090796f83486E"(ptr noalias noundef nonnull align 8 dereferenceable(1376) %29) #48 - to label %.thread134.thread unwind label %274 + to label %.thread134.thread unwind label %264 -274: ; preds = %276, %.thread, %.thread134.thread, %272 - %275 = landingpad { ptr, i32 } +264: ; preds = %266, %.thread, %.thread134.thread, %262 + %265 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -276: ; preds = %126, %131 +266: ; preds = %126, %131 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr1034drop_in_place$LT$exr..image..read..layers..LayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..OptionalSampleReader$LT$f32$GT$$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$GT$$GT$$GT$17hab25e7d73e931b4aE.llvm.9832446184049035033"(ptr noalias noundef nonnull align 8 dereferenceable(1232) %30) - to label %.thread unwind label %274 + to label %.thread unwind label %264 -277: ; preds = %"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific", %304 +267: ; preds = %"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific", %294 call void @llvm.experimental.noalias.scope.decl(metadata !1740) call void @llvm.experimental.noalias.scope.decl(metadata !1743) call void @llvm.experimental.noalias.scope.decl(metadata !1746) call void @llvm.experimental.noalias.scope.decl(metadata !1749) invoke void @"_ZN4core3ptr262drop_in_place$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$GT$17h3b4c9ddf62bd76c3E"(ptr noalias noundef nonnull align 8 dereferenceable(120) %1) - to label %281 unwind label %278 + to label %271 unwind label %268 -278: ; preds = %277 - %279 = landingpad { ptr, i32 } +268: ; preds = %267 + %269 = landingpad { ptr, i32 } cleanup - %280 = getelementptr inbounds i8, ptr %1, i64 120 - invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %280) #48 - to label %common.resume unwind label %302 + %270 = getelementptr inbounds i8, ptr %1, i64 120 + invoke void @"_ZN4core3ptr47drop_in_place$LT$exr..meta..attribute..Text$GT$17h730822ae9eeaa833E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %270) #48 + to label %common.resume unwind label %292 -281: ; preds = %277 - %282 = getelementptr inbounds i8, ptr %1, i64 120 +271: ; preds = %267 + %272 = getelementptr inbounds i8, ptr %1, i64 120 call void @llvm.experimental.noalias.scope.decl(metadata !1752) call void @llvm.experimental.noalias.scope.decl(metadata !1755) call void @llvm.experimental.noalias.scope.decl(metadata !1758) - %283 = getelementptr inbounds i8, ptr %1, i64 152 - %284 = load i64, ptr %283, align 8, !alias.scope !1761, !noundef !4 - %285 = icmp ugt i64 %284, 24 - %286 = load i8, ptr %282, align 8, !range !116, !alias.scope !1761, !noundef !4 - br i1 %285, label %288, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110" - -"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110": ; preds = %281 - %287 = icmp eq i8 %286, 0 - call void @llvm.assume(i1 %287) + %273 = getelementptr inbounds i8, ptr %1, i64 152 + %274 = load i64, ptr %273, align 8, !alias.scope !1761, !noundef !4 + %275 = icmp ugt i64 %274, 24 + %276 = load i8, ptr %272, align 8, !range !116, !alias.scope !1761, !noundef !4 + br i1 %275, label %278, label %"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110" + +"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17h3226bec8f0e0c6cbE.exit.i.i.i.i.i.i.i110": ; preds = %271 + %277 = icmp eq i8 %276, 0 + call void @llvm.assume(i1 %277) br label %"_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$" -288: ; preds = %281 - %289 = icmp ne i8 %286, 0 - call void @llvm.assume(i1 %289) - %290 = getelementptr inbounds i8, ptr %1, i64 136 - %291 = load ptr, ptr %290, align 8, !alias.scope !1761, !nonnull !4, !noundef !4 - %292 = getelementptr inbounds i8, ptr %1, i64 128 - %293 = load i64, ptr %292, align 8, !alias.scope !1761, !noundef !4 +278: ; preds = %271 + %279 = icmp ne i8 %276, 0 + call void @llvm.assume(i1 %279) + %280 = getelementptr inbounds i8, ptr %1, i64 136 + %281 = load ptr, ptr %280, align 8, !alias.scope !1761, !nonnull !4, !noundef !4 + %282 = getelementptr inbounds i8, ptr %1, i64 128 + %283 = load i64, ptr %282, align 8, !alias.scope !1761, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !1761 - store i64 %284, ptr %5, align 8, !noalias !1761 - %294 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr %291, ptr %294, align 8, !noalias !1761 - %295 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 %293, ptr %295, align 8, !noalias !1761 + store i64 %274, ptr %5, align 8, !noalias !1761 + %284 = getelementptr inbounds i8, ptr %5, i64 8 + store ptr %281, ptr %284, align 8, !noalias !1761 + %285 = getelementptr inbounds i8, ptr %5, i64 16 + store i64 %283, ptr %285, align 8, !noalias !1761 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1762 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %5), !noalias !1769 - %296 = getelementptr inbounds i8, ptr %4, i64 8 - %297 = load i64, ptr %296, align 8, !range !125, !noalias !1762, !noundef !4 - %.not.i.i.i.i.i.i.i.i.i.i111 = icmp eq i64 %297, 0 - br i1 %.not.i.i.i.i.i.i.i.i.i.i111, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", label %298 - -298: ; preds = %288 - %299 = load ptr, ptr %4, align 8, !noalias !1762, !nonnull !4, !noundef !4 - %300 = getelementptr inbounds i8, ptr %4, i64 16 - %301 = load i64, ptr %300, align 8, !noalias !1762, !noundef !4 - call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %295, ptr noundef nonnull %299, i64 noundef %297, i64 noundef %301), !noalias !1769 + %286 = getelementptr inbounds i8, ptr %4, i64 8 + %287 = load i64, ptr %286, align 8, !range !125, !noalias !1762, !noundef !4 + %.not.i.i.i.i.i.i.i.i.i.i111 = icmp eq i64 %287, 0 + br i1 %.not.i.i.i.i.i.i.i.i.i.i111, label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112", label %288 + +288: ; preds = %278 + %289 = load ptr, ptr %4, align 8, !noalias !1762, !nonnull !4, !noundef !4 + %290 = getelementptr inbounds i8, ptr %4, i64 16 + %291 = load i64, ptr %290, align 8, !noalias !1762, !noundef !4 + call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %285, ptr noundef nonnull %289, i64 noundef %287, i64 noundef %291), !noalias !1769 br label %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112" -"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112": ; preds = %298, %288 +"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E.exit.i.i.i.i.i.i.i112": ; preds = %288, %278 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !1762 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !1761 br label %"_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$" -302: ; preds = %278 - %303 = landingpad { ptr, i32 } +292: ; preds = %268 + %293 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #49 unreachable -304: ; preds = %"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific161", %.critedge +294: ; preds = %"_ZN4core3ptr1102drop_in_place$LT$exr..image..read..image..ImageWithAttributesReader$LT$exr..image..read..layers..FirstValidLayerReader$LT$exr..image..read..specific_channels..SpecificChannelsReader$LT$alloc..vec..Vec$LT$f32$GT$$C$$RF$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..Recursive$LT$exr..image..recursive..NoneMore$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific_channels..SampleReader$LT$f32$GT$$GT$$C$exr..image..read..specific161", %.critedge invoke void @"_ZN4core3ptr102drop_in_place$LT$exr..block..reader..Reader$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$GT$17h314cb8c62eab15dbE"(ptr noalias noundef nonnull align 8 dereferenceable(4344) %2) - to label %277 unwind label %305 + to label %267 unwind label %295 -.thread134.thread: ; preds = %.body.i98, %272, %232, %139, %.thread, %305 - %.pn86 = phi { ptr, i32 } [ %306, %305 ], [ %.pn.pn127, %.thread ], [ %233, %232 ], [ %lpad.thr_comm.split-lp, %139 ], [ %273, %272 ], [ %eh.lpad-body.i.i, %.body.i98 ] +.thread134.thread: ; preds = %.body.i98, %262, %222, %139, %.thread, %295 + %.pn86 = phi { ptr, i32 } [ %296, %295 ], [ %.pn.pn127, %.thread ], [ %223, %222 ], [ %lpad.thr_comm.split-lp, %139 ], [ %263, %262 ], [ %eh.lpad-body.i.i, %.body.i98 ] invoke void @"_ZN4core3ptr1701drop_in_place$LT$exr..image..read..image..ReadImage$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$exr..image..read..layers..ReadFirstValidLayer$LT$exr..image..read..specific_channels..CollectPixels$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$exr..image..recursive..NoneMore$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$f32$GT$$C$$LP$f32$C$f32$C$f32$C$f32$RP$$C$alloc..vec..Vec$LT$f32$GT$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image_with_progress$LT$$LT$image..codecs..openexr..OpenExrDecoder$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$u20$as$u20$image..image..ImageDecoder$GT$..read_image..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$$GT$17h8fda8b960abceea0E"(ptr noalias noundef nonnull align 8 dereferenceable(248) %1) #48 - to label %common.resume unwind label %274 + to label %common.resume unwind label %264 -305: ; preds = %304 - %306 = landingpad { ptr, i32 } +295: ; preds = %294 + %296 = landingpad { ptr, i32 } cleanup br label %.thread134.thread -.thread: ; preds = %158, %276, %.body.i, %110, %113, %53 - %.pn.pn127 = phi { ptr, i32 } [ %54, %53 ], [ %111, %113 ], [ %111, %110 ], [ %eh.lpad-body.i, %.body.i ], [ %159, %158 ], [ %lpad.thr_comm, %276 ] +.thread: ; preds = %158, %266, %.body.i, %110, %113, %53 + %.pn.pn127 = phi { ptr, i32 } [ %54, %53 ], [ %111, %113 ], [ %111, %110 ], [ %eh.lpad-body.i, %.body.i ], [ %159, %158 ], [ %lpad.thr_comm, %266 ] invoke void @"_ZN4core3ptr102drop_in_place$LT$exr..block..reader..Reader$LT$std..io..cursor..Cursor$LT$$RF$$u5b$u8$u5d$$GT$$GT$$GT$17h314cb8c62eab15dbE"(ptr noalias noundef nonnull align 8 dereferenceable(4344) %2) #48 - to label %.thread134.thread unwind label %274 + to label %.thread134.thread unwind label %264 } ; Function Attrs: nonlazybind uwtable @@ -33984,45 +33906,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15361875792781664197.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15361875792781664197.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #50 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15361875792781664197.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15361875792781664197.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #50 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15361875792781664197.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15361875792781664197.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15361875792781664197.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15361875792781664197.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.15361875792781664197.exit, %19 ret void } @@ -34417,45 +34325,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h1a2d762 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !4178) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !4178, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #50, !noalias !4178 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !4178, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #50, !noalias !4178 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %22, %8, %4 ret void } @@ -34470,45 +34364,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h3c2464e tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h683f2c9d5a8ca801E.llvm.15361875792781664197(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) tail call void @llvm.experimental.noalias.scope.decl(metadata !4181) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !4181, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #50, !noalias !4181 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !4181, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #50, !noalias !4181 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %22, %8, %4 ret void } @@ -34522,45 +34402,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hc3b1e5a 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !4184) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !4184, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #50, !noalias !4184 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !4184, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #50, !noalias !4184 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hce5d5ce49145fe9bE.llvm.15361875792781664197.exit: ; preds = %22, %8, %4 ret void } @@ -34896,7 +34762,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %149 + br i1 %.not.i, label %25, label %139 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -34992,11 +34858,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %72 = xor i16 %71, -1 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %140 - %.sroa.1317.067 = phi i16 [ %81, %140 ], [ %72, %.preheader.preheader ] - %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %140 ], [ %67, %.preheader.preheader ] - %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %140 ], [ 0, %.preheader.preheader ] - %.sroa.915.064 = phi i64 [ %85, %140 ], [ %68, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %130 + %.sroa.1317.067 = phi i16 [ %81, %130 ], [ %72, %.preheader.preheader ] + %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %130 ], [ %67, %.preheader.preheader ] + %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %130 ], [ 0, %.preheader.preheader ] + %.sroa.915.064 = phi i64 [ %85, %130 ], [ %68, %.preheader.preheader ] %.not.not.i58 = icmp eq i16 %.sroa.1317.067, 0 br i1 %.not.not.i58, label %.noexc2, label %._crit_edge @@ -35044,7 +34910,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.not6.i.i = icmp eq i16 %95, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread50.loopexit: ; preds = %140 +.thread50.loopexit: ; preds = %130 %.pre = load i64, ptr %8, align 8, !alias.scope !4274, !noalias !4276 %.sroa.079.0.copyload.pre = load ptr, ptr %0, align 8, !noalias !4278 br label %.thread50 @@ -35064,104 +34930,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %98, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %99 99: ; preds = %.thread50 - %100 = add i64 %.sroa.480.0.copyload, 1 - %101 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %100, i64 392) - %102 = extractvalue { i64, i1 } %101, 1 - %103 = xor i1 %102, true - call void @llvm.assume(i1 %103), !noalias !4253 - %104 = extractvalue { i64, i1 } %101, 0 - %105 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %104, i64 15) - %106 = extractvalue { i64, i1 } %105, 1 - %107 = xor i1 %106, true - call void @llvm.assume(i1 %107), !noalias !4253 - %108 = extractvalue { i64, i1 } %105, 0 - %109 = and i64 %108, -16 - %110 = add i64 %.sroa.480.0.copyload, 17 - %111 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %109, i64 %110) - %112 = extractvalue { i64, i1 } %111, 0 - %113 = extractvalue { i64, i1 } %111, 1 - %114 = icmp ult i64 %112, 9223372036854775793 - %115 = xor i1 %113, true - call void @llvm.assume(i1 %115), !noalias !4253 - call void @llvm.assume(i1 %114), !noalias !4253 - %116 = icmp eq i64 %112, 0 - br i1 %116, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %117 - -117: ; preds = %99 - %118 = icmp ne ptr %.sroa.079.0.copyload, null - call void @llvm.assume(i1 %118), !noalias !4253 - %119 = sub nsw i64 0, %109 - %120 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %119 - call void @__rust_dealloc(ptr noundef nonnull %120, i64 noundef %112, i64 noundef 16) #50, !noalias !4284 + %100 = mul i64 %.sroa.480.0.copyload, 392 + %101 = add i64 %100, 407 + %102 = and i64 %101, -16 + %103 = add i64 %.sroa.480.0.copyload, 17 + %104 = add nuw i64 %103, %102 + %105 = icmp ult i64 %104, 9223372036854775793 + call void @llvm.assume(i1 %105), !noalias !4253 + %106 = icmp eq i64 %104, 0 + br i1 %106, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %107 + +107: ; preds = %99 + %108 = icmp ne ptr %.sroa.079.0.copyload, null + call void @llvm.assume(i1 %108), !noalias !4253 + %109 = sub nsw i64 0, %102 + %110 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %109 + call void @__rust_dealloc(ptr noundef nonnull %110, i64 noundef %104, i64 noundef 16) #50, !noalias !4284 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %123, %.lr.ph.i.i ], [ %92, %._crit_edge ] - %.sroa.7.07.i.i = phi i64 [ %121, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %121 = add i64 %.sroa.7.07.i.i, 16 - %122 = add i64 %121, %.sroa.0.08.i.i - %123 = and i64 %122, %62 - %124 = getelementptr inbounds i8, ptr %66, i64 %123 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %124, align 1, !noalias !4271 - %125 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %126 = bitcast <16 x i1> %125 to i16 - %.not.i.i = icmp eq i16 %126, 0 + %.sroa.0.08.i.i = phi i64 [ %113, %.lr.ph.i.i ], [ %92, %._crit_edge ] + %.sroa.7.07.i.i = phi i64 [ %111, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %111 = add i64 %.sroa.7.07.i.i, 16 + %112 = add i64 %111, %.sroa.0.08.i.i + %113 = and i64 %112, %62 + %114 = getelementptr inbounds i8, ptr %66, i64 %113 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %114, align 1, !noalias !4271 + %115 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %116 = bitcast <16 x i1> %115 to i16 + %.not.i.i = icmp eq i16 %116, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %92, %._crit_edge ], [ %123, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %95, %._crit_edge ], [ %126, %.lr.ph.i.i ] - %127 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 - %128 = zext nneg i16 %127 to i64 - %129 = add i64 %.sroa.0.0.lcssa.i.i, %128 - %130 = and i64 %129, %62 - %131 = getelementptr inbounds i8, ptr %66, i64 %130 - %132 = load i8, ptr %131, align 1, !noundef !4 - %133 = icmp sgt i8 %132, -1 - br i1 %133, label %134, label %140 - -134: ; preds = %._crit_edge.i.i - %135 = load <16 x i8>, ptr %66, align 16, !noalias !4293 - %136 = icmp slt <16 x i8> %135, zeroinitializer - %137 = bitcast <16 x i1> %136 to i16 - %.not.i.i.i = icmp ne i16 %137, 0 - %138 = call i16 @llvm.cttz.i16(i16 %137, i1 true), !range !3956 - %139 = zext nneg i16 %138 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %92, %._crit_edge ], [ %113, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %95, %._crit_edge ], [ %116, %.lr.ph.i.i ] + %117 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 + %118 = zext nneg i16 %117 to i64 + %119 = add i64 %.sroa.0.0.lcssa.i.i, %118 + %120 = and i64 %119, %62 + %121 = getelementptr inbounds i8, ptr %66, i64 %120 + %122 = load i8, ptr %121, align 1, !noundef !4 + %123 = icmp sgt i8 %122, -1 + br i1 %123, label %124, label %130 + +124: ; preds = %._crit_edge.i.i + %125 = load <16 x i8>, ptr %66, align 16, !noalias !4293 + %126 = icmp slt <16 x i8> %125, zeroinitializer + %127 = bitcast <16 x i1> %126 to i16 + %.not.i.i.i = icmp ne i16 %127, 0 + %128 = call i16 @llvm.cttz.i16(i16 %127, i1 true), !range !3956 + %129 = zext nneg i16 %128 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %140 + br label %130 -140: ; preds = %134, %._crit_edge.i.i - %.0.i.i.i7 = phi i64 [ %139, %134 ], [ %130, %._crit_edge.i.i ] - %141 = getelementptr inbounds i8, ptr %66, i64 %.0.i.i.i7 - %142 = lshr i64 %91, 57 - %143 = trunc i64 %142 to i8 - %144 = add i64 %.0.i.i.i7, -16 - %145 = and i64 %144, %62 - store i8 %143, ptr %141, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %145 - store i8 %143, ptr %gep, align 1 - %146 = load ptr, ptr %0, align 8, !alias.scope !4274, !noalias !4276, !nonnull !4, !noundef !4 +130: ; preds = %124, %._crit_edge.i.i + %.0.i.i.i7 = phi i64 [ %129, %124 ], [ %120, %._crit_edge.i.i ] + %131 = getelementptr inbounds i8, ptr %66, i64 %.0.i.i.i7 + %132 = lshr i64 %91, 57 + %133 = trunc i64 %132 to i8 + %134 = add i64 %.0.i.i.i7, -16 + %135 = and i64 %134, %62 + store i8 %133, ptr %131, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %135 + store i8 %133, ptr %gep, align 1 + %136 = load ptr, ptr %0, align 8, !alias.scope !4274, !noalias !4276, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %84, -1 %.neg28.i.i = mul i64 %.neg.i.i, 392 - %147 = getelementptr inbounds i8, ptr %146, i64 %.neg28.i.i + %137 = getelementptr inbounds i8, ptr %136, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i7, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 392 - %148 = getelementptr inbounds i8, ptr %66, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(392) %148, ptr noundef nonnull align 1 dereferenceable(392) %147, i64 392, i1 false), !noalias !4253 + %138 = getelementptr inbounds i8, ptr %66, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(392) %138, ptr noundef nonnull align 1 dereferenceable(392) %137, i64 392, i1 false), !noalias !4253 %.not = icmp eq i64 %85, 0 br i1 %.not, label %.thread50.loopexit, label %.preheader -149: ; preds = %17 +139: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17ha9bc101732278164E", i64 noundef 392, ptr noundef nonnull @"_ZN4core3ptr94drop_in_place$LT$$LP$exr..meta..attribute..Text$C$exr..meta..attribute..AttributeValue$RP$$GT$17h8649a0ad6365a727E.llvm.15361875792781664197") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %117, %99, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %149 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %149 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %99 ], [ 16, %117 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %149 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %99 ], [ -9223372036854775807, %117 ] - %150 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %151 = insertvalue { i64, i64 } %150, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %107, %99, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %139 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %139 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %99 ], [ 16, %107 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %139 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %99 ], [ -9223372036854775807, %107 ] + %140 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %141 = insertvalue { i64, i64 } %140, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %151 + ret { i64, i64 } %141 } ; Function Attrs: cold nonlazybind uwtable @@ -35196,7 +35049,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %148 + br i1 %.not.i, label %25, label %141 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -35297,11 +35150,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %73 = xor i16 %72, -1 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %138 - %.sroa.1317.067 = phi i16 [ %82, %138 ], [ %73, %.preheader.preheader ] - %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %138 ], [ %68, %.preheader.preheader ] - %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %138 ], [ 0, %.preheader.preheader ] - %.sroa.915.064 = phi i64 [ %86, %138 ], [ %69, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %131 + %.sroa.1317.067 = phi i16 [ %82, %131 ], [ %73, %.preheader.preheader ] + %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %131 ], [ %68, %.preheader.preheader ] + %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %131 ], [ 0, %.preheader.preheader ] + %.sroa.915.064 = phi i64 [ %86, %131 ], [ %69, %.preheader.preheader ] %.not.not.i58 = icmp eq i16 %.sroa.1317.067, 0 br i1 %.not.not.i58, label %.noexc2, label %._crit_edge @@ -35349,7 +35202,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.not6.i.i = icmp eq i16 %96, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread50.loopexit: ; preds = %138 +.thread50.loopexit: ; preds = %131 %.pre = load i64, ptr %8, align 8, !alias.scope !4336, !noalias !4338 %.sroa.079.0.copyload.pre = load ptr, ptr %0, align 8, !noalias !4340 br label %.thread50 @@ -35370,100 +35223,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. 100: ; preds = %.thread50 %101 = shl i64 %.sroa.480.0.copyload, 3 - %102 = add i64 %101, 8 - %103 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %102, i64 15) - %104 = extractvalue { i64, i1 } %103, 1 - %105 = xor i1 %104, true - call void @llvm.assume(i1 %105), !noalias !4315 - %106 = extractvalue { i64, i1 } %103, 0 - %107 = and i64 %106, -16 - %108 = add i64 %.sroa.480.0.copyload, 17 - %109 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %107, i64 %108) - %110 = extractvalue { i64, i1 } %109, 0 - %111 = extractvalue { i64, i1 } %109, 1 - %112 = icmp ult i64 %110, 9223372036854775793 - %113 = xor i1 %111, true - call void @llvm.assume(i1 %113), !noalias !4315 - call void @llvm.assume(i1 %112), !noalias !4315 - %114 = icmp eq i64 %110, 0 - br i1 %114, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %115 - -115: ; preds = %100 - %116 = icmp ne ptr %.sroa.079.0.copyload, null - call void @llvm.assume(i1 %116), !noalias !4315 - %117 = sub nsw i64 0, %107 - %118 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %117 - call void @__rust_dealloc(ptr noundef nonnull %118, i64 noundef %110, i64 noundef 16) #50, !noalias !4346 + %102 = add i64 %101, 23 + %103 = and i64 %102, -16 + %104 = add i64 %.sroa.480.0.copyload, 17 + %105 = add nuw i64 %104, %103 + %106 = icmp ult i64 %105, 9223372036854775793 + call void @llvm.assume(i1 %106), !noalias !4315 + %107 = icmp eq i64 %105, 0 + br i1 %107, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %108 + +108: ; preds = %100 + %109 = icmp ne ptr %.sroa.079.0.copyload, null + call void @llvm.assume(i1 %109), !noalias !4315 + %110 = sub nsw i64 0, %103 + %111 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %110 + call void @__rust_dealloc(ptr noundef nonnull %111, i64 noundef %105, i64 noundef 16) #50, !noalias !4346 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %121, %.lr.ph.i.i ], [ %93, %._crit_edge ] - %.sroa.7.07.i.i = phi i64 [ %119, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %119 = add i64 %.sroa.7.07.i.i, 16 - %120 = add i64 %119, %.sroa.0.08.i.i - %121 = and i64 %120, %63 - %122 = getelementptr inbounds i8, ptr %67, i64 %121 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %122, align 1, !noalias !4333 - %123 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %124 = bitcast <16 x i1> %123 to i16 - %.not.i.i = icmp eq i16 %124, 0 + %.sroa.0.08.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ %93, %._crit_edge ] + %.sroa.7.07.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %112 = add i64 %.sroa.7.07.i.i, 16 + %113 = add i64 %112, %.sroa.0.08.i.i + %114 = and i64 %113, %63 + %115 = getelementptr inbounds i8, ptr %67, i64 %114 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %115, align 1, !noalias !4333 + %116 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %117 = bitcast <16 x i1> %116 to i16 + %.not.i.i = icmp eq i16 %117, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %121, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %124, %.lr.ph.i.i ] - %125 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 - %126 = zext nneg i16 %125 to i64 - %127 = add i64 %.sroa.0.0.lcssa.i.i, %126 - %128 = and i64 %127, %63 - %129 = getelementptr inbounds i8, ptr %67, i64 %128 - %130 = load i8, ptr %129, align 1, !noundef !4 - %131 = icmp sgt i8 %130, -1 - br i1 %131, label %132, label %138 - -132: ; preds = %._crit_edge.i.i - %133 = load <16 x i8>, ptr %67, align 16, !noalias !4355 - %134 = icmp slt <16 x i8> %133, zeroinitializer - %135 = bitcast <16 x i1> %134 to i16 - %.not.i.i.i = icmp ne i16 %135, 0 - %136 = call i16 @llvm.cttz.i16(i16 %135, i1 true), !range !3956 - %137 = zext nneg i16 %136 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %117, %.lr.ph.i.i ] + %118 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 + %119 = zext nneg i16 %118 to i64 + %120 = add i64 %.sroa.0.0.lcssa.i.i, %119 + %121 = and i64 %120, %63 + %122 = getelementptr inbounds i8, ptr %67, i64 %121 + %123 = load i8, ptr %122, align 1, !noundef !4 + %124 = icmp sgt i8 %123, -1 + br i1 %124, label %125, label %131 + +125: ; preds = %._crit_edge.i.i + %126 = load <16 x i8>, ptr %67, align 16, !noalias !4355 + %127 = icmp slt <16 x i8> %126, zeroinitializer + %128 = bitcast <16 x i1> %127 to i16 + %.not.i.i.i = icmp ne i16 %128, 0 + %129 = call i16 @llvm.cttz.i16(i16 %128, i1 true), !range !3956 + %130 = zext nneg i16 %129 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %138 - -138: ; preds = %132, %._crit_edge.i.i - %.0.i.i.i7 = phi i64 [ %137, %132 ], [ %128, %._crit_edge.i.i ] - %139 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i7 - %140 = lshr i64 %92, 57 - %141 = trunc i64 %140 to i8 - %142 = add i64 %.0.i.i.i7, -16 - %143 = and i64 %142, %63 - store i8 %141, ptr %139, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %143 - store i8 %141, ptr %gep, align 1 - %144 = load ptr, ptr %0, align 8, !alias.scope !4336, !noalias !4338, !nonnull !4, !noundef !4 + br label %131 + +131: ; preds = %125, %._crit_edge.i.i + %.0.i.i.i7 = phi i64 [ %130, %125 ], [ %121, %._crit_edge.i.i ] + %132 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i7 + %133 = lshr i64 %92, 57 + %134 = trunc i64 %133 to i8 + %135 = add i64 %.0.i.i.i7, -16 + %136 = and i64 %135, %63 + store i8 %134, ptr %132, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %136 + store i8 %134, ptr %gep, align 1 + %137 = load ptr, ptr %0, align 8, !alias.scope !4336, !noalias !4338, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %85, -1 %.neg28.i.i = shl i64 %.neg.i.i, 3 - %145 = getelementptr inbounds i8, ptr %144, i64 %.neg28.i.i + %138 = getelementptr inbounds i8, ptr %137, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i7, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 3 - %146 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i - %147 = load i64, ptr %145, align 1, !noalias !4315 - store i64 %147, ptr %146, align 1, !noalias !4315 + %139 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i + %140 = load i64, ptr %138, align 1, !noalias !4315 + store i64 %140, ptr %139, align 1, !noalias !4315 %.not = icmp eq i64 %86, 0 br i1 %.not, label %.thread50.loopexit, label %.preheader -148: ; preds = %17 +141: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h4d023ac4bd17b5adE", i64 noundef 8, ptr noundef null) br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %115, %100, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %148 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %148 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %100 ], [ 16, %115 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %148 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %115 ] - %149 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %150 = insertvalue { i64, i64 } %149, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %108, %100, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %141 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %141 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %100 ], [ 16, %108 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %141 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %108 ] + %142 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %143 = insertvalue { i64, i64 } %142, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %150 + ret { i64, i64 } %143 } ; Function Attrs: cold nonlazybind uwtable @@ -35498,7 +35342,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %137 + br i1 %.not.i, label %25, label %135 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -35592,11 +35436,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %68 = xor i16 %67, -1 br label %.preheader -.preheader: ; preds = %.preheader.preheader, %128 - %.sroa.1317.067 = phi i16 [ %77, %128 ], [ %68, %.preheader.preheader ] - %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %128 ], [ %63, %.preheader.preheader ] - %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %128 ], [ 0, %.preheader.preheader ] - %.sroa.915.064 = phi i64 [ %81, %128 ], [ %64, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %126 + %.sroa.1317.067 = phi i16 [ %77, %126 ], [ %68, %.preheader.preheader ] + %.sroa.012.066 = phi ptr [ %.sroa.012.1.lcssa, %126 ], [ %63, %.preheader.preheader ] + %.sroa.513.065 = phi i64 [ %.sroa.513.1.lcssa, %126 ], [ 0, %.preheader.preheader ] + %.sroa.915.064 = phi i64 [ %81, %126 ], [ %64, %.preheader.preheader ] %.not.not.i58 = icmp eq i16 %.sroa.1317.067, 0 br i1 %.not.not.i58, label %.noexc2, label %._crit_edge @@ -35644,7 +35488,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.not6.i.i = icmp eq i16 %91, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread50.loopexit: ; preds = %128 +.thread50.loopexit: ; preds = %126 %.pre = load i64, ptr %8, align 8, !alias.scope !4398, !noalias !4400 %.sroa.079.0.copyload.pre = load ptr, ptr %0, align 8, !noalias !4402 br label %.thread50 @@ -35665,93 +35509,90 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. 95: ; preds = %.thread50 %96 = shl i64 %.sroa.480.0.copyload, 5 - %97 = add i64 %96, 32 - %98 = add i64 %.sroa.480.0.copyload, 17 - %99 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %97, i64 %98) - %100 = extractvalue { i64, i1 } %99, 0 - %101 = extractvalue { i64, i1 } %99, 1 - %102 = icmp ult i64 %100, 9223372036854775793 - %103 = xor i1 %101, true - call void @llvm.assume(i1 %103), !noalias !4377 - call void @llvm.assume(i1 %102), !noalias !4377 - %104 = icmp eq i64 %100, 0 - br i1 %104, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %105 - -105: ; preds = %95 - %106 = icmp ne ptr %.sroa.079.0.copyload, null - call void @llvm.assume(i1 %106), !noalias !4377 - %107 = sub nuw nsw i64 -32, %96 - %108 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %107 - call void @__rust_dealloc(ptr noundef nonnull %108, i64 noundef %100, i64 noundef 16) #50, !noalias !4408 + %97 = add i64 %96, 47 + %98 = and i64 %97, -32 + %99 = add i64 %.sroa.480.0.copyload, 17 + %100 = add nuw i64 %99, %98 + %101 = icmp ult i64 %100, 9223372036854775793 + call void @llvm.assume(i1 %101), !noalias !4377 + %102 = icmp eq i64 %100, 0 + br i1 %102, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit, label %103 + +103: ; preds = %95 + %104 = icmp ne ptr %.sroa.079.0.copyload, null + call void @llvm.assume(i1 %104), !noalias !4377 + %105 = sub nsw i64 0, %98 + %106 = getelementptr inbounds i8, ptr %.sroa.079.0.copyload, i64 %105 + call void @__rust_dealloc(ptr noundef nonnull %106, i64 noundef %100, i64 noundef 16) #50, !noalias !4408 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %111, %.lr.ph.i.i ], [ %88, %._crit_edge ] - %.sroa.7.07.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %109 = add i64 %.sroa.7.07.i.i, 16 - %110 = add i64 %109, %.sroa.0.08.i.i - %111 = and i64 %110, %58 - %112 = getelementptr inbounds i8, ptr %62, i64 %111 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %112, align 1, !noalias !4395 - %113 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %114 = bitcast <16 x i1> %113 to i16 - %.not.i.i = icmp eq i16 %114, 0 + %.sroa.0.08.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ %88, %._crit_edge ] + %.sroa.7.07.i.i = phi i64 [ %107, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %107 = add i64 %.sroa.7.07.i.i, 16 + %108 = add i64 %107, %.sroa.0.08.i.i + %109 = and i64 %108, %58 + %110 = getelementptr inbounds i8, ptr %62, i64 %109 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %110, align 1, !noalias !4395 + %111 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %112 = bitcast <16 x i1> %111 to i16 + %.not.i.i = icmp eq i16 %112, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %88, %._crit_edge ], [ %111, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %91, %._crit_edge ], [ %114, %.lr.ph.i.i ] - %115 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 - %116 = zext nneg i16 %115 to i64 - %117 = add i64 %.sroa.0.0.lcssa.i.i, %116 - %118 = and i64 %117, %58 - %119 = getelementptr inbounds i8, ptr %62, i64 %118 - %120 = load i8, ptr %119, align 1, !noundef !4 - %121 = icmp sgt i8 %120, -1 - br i1 %121, label %122, label %128 - -122: ; preds = %._crit_edge.i.i - %123 = load <16 x i8>, ptr %62, align 16, !noalias !4417 - %124 = icmp slt <16 x i8> %123, zeroinitializer - %125 = bitcast <16 x i1> %124 to i16 - %.not.i.i.i = icmp ne i16 %125, 0 - %126 = call i16 @llvm.cttz.i16(i16 %125, i1 true), !range !3956 - %127 = zext nneg i16 %126 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %88, %._crit_edge ], [ %109, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %91, %._crit_edge ], [ %112, %.lr.ph.i.i ] + %113 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !3956 + %114 = zext nneg i16 %113 to i64 + %115 = add i64 %.sroa.0.0.lcssa.i.i, %114 + %116 = and i64 %115, %58 + %117 = getelementptr inbounds i8, ptr %62, i64 %116 + %118 = load i8, ptr %117, align 1, !noundef !4 + %119 = icmp sgt i8 %118, -1 + br i1 %119, label %120, label %126 + +120: ; preds = %._crit_edge.i.i + %121 = load <16 x i8>, ptr %62, align 16, !noalias !4417 + %122 = icmp slt <16 x i8> %121, zeroinitializer + %123 = bitcast <16 x i1> %122 to i16 + %.not.i.i.i = icmp ne i16 %123, 0 + %124 = call i16 @llvm.cttz.i16(i16 %123, i1 true), !range !3956 + %125 = zext nneg i16 %124 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %128 - -128: ; preds = %122, %._crit_edge.i.i - %.0.i.i.i7 = phi i64 [ %127, %122 ], [ %118, %._crit_edge.i.i ] - %129 = getelementptr inbounds i8, ptr %62, i64 %.0.i.i.i7 - %130 = lshr i64 %87, 57 - %131 = trunc i64 %130 to i8 - %132 = add i64 %.0.i.i.i7, -16 - %133 = and i64 %132, %58 - store i8 %131, ptr %129, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %133 - store i8 %131, ptr %gep, align 1 - %134 = load ptr, ptr %0, align 8, !alias.scope !4398, !noalias !4400, !nonnull !4, !noundef !4 + br label %126 + +126: ; preds = %120, %._crit_edge.i.i + %.0.i.i.i7 = phi i64 [ %125, %120 ], [ %116, %._crit_edge.i.i ] + %127 = getelementptr inbounds i8, ptr %62, i64 %.0.i.i.i7 + %128 = lshr i64 %87, 57 + %129 = trunc i64 %128 to i8 + %130 = add i64 %.0.i.i.i7, -16 + %131 = and i64 %130, %58 + store i8 %129, ptr %127, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %131 + store i8 %129, ptr %gep, align 1 + %132 = load ptr, ptr %0, align 8, !alias.scope !4398, !noalias !4400, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %80, -1 %.neg28.i.i = shl i64 %.neg.i.i, 5 - %135 = getelementptr inbounds i8, ptr %134, i64 %.neg28.i.i + %133 = getelementptr inbounds i8, ptr %132, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i7, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 5 - %136 = getelementptr inbounds i8, ptr %62, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %136, ptr noundef nonnull align 1 dereferenceable(32) %135, i64 32, i1 false), !noalias !4377 + %134 = getelementptr inbounds i8, ptr %62, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %134, ptr noundef nonnull align 1 dereferenceable(32) %133, i64 32, i1 false), !noalias !4377 %.not = icmp eq i64 %81, 0 br i1 %.not, label %.thread50.loopexit, label %.preheader -137: ; preds = %17 +135: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17hefcd80f263e5eb5bE", i64 noundef 32, ptr noundef null) br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %105, %95, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %137 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %137 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %95 ], [ 16, %105 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %137 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %95 ], [ -9223372036854775807, %105 ] - %138 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %139 = insertvalue { i64, i64 } %138, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6a8f9ed4439eca60E.exit: ; preds = %103, %95, %.thread50, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i, %13, %135 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %135 ], [ %.sroa.6.0.i.i4, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ 16, %.thread50 ], [ 16, %95 ], [ 16, %103 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %135 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h8a0dbec3957b1967E.exit.thread.i.i ], [ -9223372036854775807, %.thread50 ], [ -9223372036854775807, %95 ], [ -9223372036854775807, %103 ] + %136 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %137 = insertvalue { i64, i64 } %136, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %139 + ret { i64, i64 } %137 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: readwrite) uwtable diff --git a/bench/influxdb-rs/optimized/17ptp6pnu4b90vr6.ll b/bench/influxdb-rs/optimized/17ptp6pnu4b90vr6.ll index 7ac2da3c1eb..1d91fd10b32 100644 --- a/bench/influxdb-rs/optimized/17ptp6pnu4b90vr6.ll +++ b/bench/influxdb-rs/optimized/17ptp6pnu4b90vr6.ll @@ -2657,7 +2657,7 @@ define hidden void @"_ZN4core3ptr111drop_in_place$LT$$LP$alloc..string..String$C cleanup %12 = getelementptr inbounds i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %12) #65 - to label %61 unwind label %59 + to label %59 unwind label %57 13: ; preds = %.noexc, %5 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !694 @@ -2731,35 +2731,32 @@ define hidden void @"_ZN4core3ptr111drop_in_place$LT$$LP$alloc..string..String$C _ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit.i.i.i.i.i.i: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1b96dc3483ea1bd2E.llvm.171605402441639591.exit.i.i.i.i.i.i.i", %18 tail call void @llvm.experimental.noalias.scope.decl(metadata !741) %46 = shl i64 %16, 6 - %47 = add i64 %46, 64 - %48 = add i64 %16, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = icmp ult i64 %50, 9223372036854775793 - %53 = xor i1 %51, true - tail call void @llvm.assume(i1 %53) - tail call void @llvm.assume(i1 %52) - %54 = icmp eq i64 %50, 0 - br i1 %54, label %"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E.exit", label %55 - -55: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit.i.i.i.i.i.i - %56 = load ptr, ptr %14, align 8, !alias.scope !744, !nonnull !4, !noundef !4 - %57 = sub nuw nsw i64 -64, %46 - %58 = getelementptr inbounds i8, ptr %56, i64 %57 - tail call void @__rust_dealloc(ptr noundef nonnull %58, i64 noundef %50, i64 noundef 16) #66, !noalias !744 + %47 = add i64 %46, 79 + %48 = and i64 %47, -64 + %49 = add i64 %16, 17 + %50 = add nuw i64 %49, %48 + %51 = icmp ult i64 %50, 9223372036854775793 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i64 %50, 0 + br i1 %52, label %"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E.exit", label %53 + +53: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit.i.i.i.i.i.i + %54 = load ptr, ptr %14, align 8, !alias.scope !744, !nonnull !4, !noundef !4 + %55 = sub nsw i64 0, %48 + %56 = getelementptr inbounds i8, ptr %54, i64 %55 + tail call void @__rust_dealloc(ptr noundef nonnull %56, i64 noundef %50, i64 noundef 16) #66, !noalias !744 br label %"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E.exit" -"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E.exit": ; preds = %13, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit.i.i.i.i.i.i, %55 +"_ZN4core3ptr79drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..TableBuffer$GT$17h6c74508daec33e20E.exit": ; preds = %13, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit.i.i.i.i.i.i, %53 ret void -59: ; preds = %10 - %60 = landingpad { ptr, i32 } +57: ; preds = %10 + %58 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #64 unreachable -61: ; preds = %10 +59: ; preds = %10 resume { ptr, i32 } %11 } @@ -2802,7 +2799,7 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$$LP$alloc..string..String$C cleanup %12 = getelementptr inbounds i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %12) #65 - to label %69 unwind label %67 + to label %59 unwind label %57 13: ; preds = %.noexc, %5 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !758 @@ -2875,46 +2872,33 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$$LP$alloc..string..String$C _ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit.i.i.i.i.i.i: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf2564d320e4be686E.llvm.171605402441639591.exit.i.i.i.i.i.i.i", %18 tail call void @llvm.experimental.noalias.scope.decl(metadata !805) - %46 = add i64 %16, 1 - %47 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %46, i64 72) - %48 = extractvalue { i64, i1 } %47, 1 - %49 = xor i1 %48, true - tail call void @llvm.assume(i1 %49) - %50 = extractvalue { i64, i1 } %47, 0 - %51 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %50, i64 15) - %52 = extractvalue { i64, i1 } %51, 1 - %53 = xor i1 %52, true - tail call void @llvm.assume(i1 %53) - %54 = extractvalue { i64, i1 } %51, 0 - %55 = and i64 %54, -16 - %56 = add i64 %16, 17 - %57 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %55, i64 %56) - %58 = extractvalue { i64, i1 } %57, 0 - %59 = extractvalue { i64, i1 } %57, 1 - %60 = icmp ult i64 %58, 9223372036854775793 - %61 = xor i1 %59, true - tail call void @llvm.assume(i1 %61) - tail call void @llvm.assume(i1 %60) - %62 = icmp eq i64 %58, 0 - br i1 %62, label %"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E.exit", label %63 - -63: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit.i.i.i.i.i.i - %64 = load ptr, ptr %14, align 8, !alias.scope !808, !nonnull !4, !noundef !4 - %65 = sub nsw i64 0, %55 - %66 = getelementptr inbounds i8, ptr %64, i64 %65 - tail call void @__rust_dealloc(ptr noundef nonnull %66, i64 noundef %58, i64 noundef 16) #66, !noalias !808 + %46 = mul i64 %16, 72 + %47 = add i64 %46, 87 + %48 = and i64 %47, -16 + %49 = add i64 %16, 17 + %50 = add nuw i64 %49, %48 + %51 = icmp ult i64 %50, 9223372036854775793 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i64 %50, 0 + br i1 %52, label %"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E.exit", label %53 + +53: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit.i.i.i.i.i.i + %54 = load ptr, ptr %14, align 8, !alias.scope !808, !nonnull !4, !noundef !4 + %55 = sub nsw i64 0, %48 + %56 = getelementptr inbounds i8, ptr %54, i64 %55 + tail call void @__rust_dealloc(ptr noundef nonnull %56, i64 noundef %50, i64 noundef 16) #66, !noalias !808 br label %"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E.exit" -"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E.exit": ; preds = %13, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit.i.i.i.i.i.i, %63 +"_ZN4core3ptr82drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$GT$17h3eb188af1b459be1E.exit": ; preds = %13, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit.i.i.i.i.i.i, %53 ret void -67: ; preds = %10 - %68 = landingpad { ptr, i32 } +57: ; preds = %10 + %58 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #64 unreachable -69: ; preds = %10 +59: ; preds = %10 resume { ptr, i32 } %11 } @@ -3102,7 +3086,7 @@ define hidden void @"_ZN4core3ptr133drop_in_place$LT$$LP$data_types..namespace_n cleanup %15 = getelementptr inbounds i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) #65 - to label %39 unwind label %37 + to label %34 unwind label %32 "_ZN4core3ptr62drop_in_place$LT$data_types..namespace_name..NamespaceName$GT$17h0af8fcbe85a7822bE.exit": ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h3c97cbc0a7d5bfd7E.exit.i.i", %1 %16 = getelementptr inbounds i8, ptr %0, i64 24 @@ -3120,40 +3104,33 @@ define hidden void @"_ZN4core3ptr133drop_in_place$LT$$LP$data_types..namespace_n 20: ; preds = %"_ZN4core3ptr62drop_in_place$LT$data_types..namespace_name..NamespaceName$GT$17h0af8fcbe85a7822bE.exit" tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17heec923e4d785ed18E.llvm.171605402441639591(ptr noalias noundef nonnull align 8 dereferenceable(32) %16) tail call void @llvm.experimental.noalias.scope.decl(metadata !891) - %21 = add i64 %18, 1 - %22 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %21, i64 96) - %23 = extractvalue { i64, i1 } %22, 1 - %24 = xor i1 %23, true - tail call void @llvm.assume(i1 %24) - %25 = extractvalue { i64, i1 } %22, 0 - %26 = add i64 %18, 17 - %27 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %25, i64 %26) - %28 = extractvalue { i64, i1 } %27, 0 - %29 = extractvalue { i64, i1 } %27, 1 - %30 = icmp ult i64 %28, 9223372036854775793 - %31 = xor i1 %29, true - tail call void @llvm.assume(i1 %31) - tail call void @llvm.assume(i1 %30) - %32 = icmp eq i64 %28, 0 - br i1 %32, label %"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E.exit", label %33 + %21 = mul i64 %18, 96 + %22 = add i64 %21, 111 + %23 = and i64 %22, -32 + %24 = add i64 %18, 17 + %25 = add nuw i64 %24, %23 + %26 = icmp ult i64 %25, 9223372036854775793 + tail call void @llvm.assume(i1 %26) + %27 = icmp eq i64 %25, 0 + br i1 %27, label %"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E.exit", label %28 -33: ; preds = %20 - %34 = load ptr, ptr %16, align 8, !alias.scope !894, !nonnull !4, !noundef !4 - %35 = sub nsw i64 0, %25 - %36 = getelementptr inbounds i8, ptr %34, i64 %35 - tail call void @__rust_dealloc(ptr noundef nonnull %36, i64 noundef %28, i64 noundef 16) #66, !noalias !894 +28: ; preds = %20 + %29 = load ptr, ptr %16, align 8, !alias.scope !894, !nonnull !4, !noundef !4 + %30 = sub nsw i64 0, %23 + %31 = getelementptr inbounds i8, ptr %29, i64 %30 + tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %25, i64 noundef 16) #66, !noalias !894 br label %"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E.exit" -"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E.exit": ; preds = %"_ZN4core3ptr62drop_in_place$LT$data_types..namespace_name..NamespaceName$GT$17h0af8fcbe85a7822bE.exit", %20, %33 +"_ZN4core3ptr81drop_in_place$LT$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$GT$17h53bf475684b6ee70E.exit": ; preds = %"_ZN4core3ptr62drop_in_place$LT$data_types..namespace_name..NamespaceName$GT$17h0af8fcbe85a7822bE.exit", %20, %28 ret void -37: ; preds = %13 - %38 = landingpad { ptr, i32 } +32: ; preds = %13 + %33 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #64 unreachable -39: ; preds = %13 +34: ; preds = %13 resume { ptr, i32 } %14 } @@ -3554,7 +3531,7 @@ define hidden void @"_ZN4core3ptr84drop_in_place$LT$$LP$alloc..string..String$C$ cleanup %12 = getelementptr inbounds i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %12) #65 - to label %37 unwind label %35 + to label %32 unwind label %30 13: ; preds = %.noexc, %5 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !989 @@ -3573,40 +3550,33 @@ define hidden void @"_ZN4core3ptr84drop_in_place$LT$$LP$alloc..string..String$C$ 18: ; preds = %13 tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17he5296947723c7e33E.llvm.171605402441639591(ptr noalias noundef nonnull align 8 dereferenceable(32) %14) tail call void @llvm.experimental.noalias.scope.decl(metadata !1017) - %19 = add i64 %16, 1 - %20 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %19, i64 96) - %21 = extractvalue { i64, i1 } %20, 1 - %22 = xor i1 %21, true - tail call void @llvm.assume(i1 %22) - %23 = extractvalue { i64, i1 } %20, 0 - %24 = add i64 %16, 17 - %25 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %23, i64 %24) - %26 = extractvalue { i64, i1 } %25, 0 - %27 = extractvalue { i64, i1 } %25, 1 - %28 = icmp ult i64 %26, 9223372036854775793 - %29 = xor i1 %27, true - tail call void @llvm.assume(i1 %29) - tail call void @llvm.assume(i1 %28) - %30 = icmp eq i64 %26, 0 - br i1 %30, label %"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE.exit", label %31 - -31: ; preds = %18 - %32 = load ptr, ptr %14, align 8, !alias.scope !1020, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %23 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %26, i64 noundef 16) #66, !noalias !1020 + %19 = mul i64 %16, 96 + %20 = add i64 %19, 111 + %21 = and i64 %20, -32 + %22 = add i64 %16, 17 + %23 = add nuw i64 %22, %21 + %24 = icmp ult i64 %23, 9223372036854775793 + tail call void @llvm.assume(i1 %24) + %25 = icmp eq i64 %23, 0 + br i1 %25, label %"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE.exit", label %26 + +26: ; preds = %18 + %27 = load ptr, ptr %14, align 8, !alias.scope !1020, !nonnull !4, !noundef !4 + %28 = sub nsw i64 0, %21 + %29 = getelementptr inbounds i8, ptr %27, i64 %28 + tail call void @__rust_dealloc(ptr noundef nonnull %29, i64 noundef %23, i64 noundef 16) #66, !noalias !1020 br label %"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE.exit" -"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE.exit": ; preds = %13, %18, %31 +"_ZN4core3ptr52drop_in_place$LT$influxdb3_write..DatabaseTables$GT$17h5c4ff0c60001508bE.exit": ; preds = %13, %18, %26 ret void -35: ; preds = %10 - %36 = landingpad { ptr, i32 } +30: ; preds = %10 + %31 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #64 unreachable -37: ; preds = %10 +32: ; preds = %10 resume { ptr, i32 } %11 } @@ -9888,45 +9858,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.17 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.171605402441639591.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.171605402441639591.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #66 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.171605402441639591.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.171605402441639591.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #66 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.171605402441639591.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.171605402441639591.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.171605402441639591.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.171605402441639591.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.171605402441639591.exit, %19 ret void } @@ -11067,45 +11023,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h090fa93 _ZN9hashbrown3raw13RawTableInner13drop_elements17h8d28b4209a6e1cd6E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc9e3b2749b1920bfE.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2708) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h8d28b4209a6e1cd6E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2708, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2708 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h8d28b4209a6e1cd6E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2708, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2708 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h8d28b4209a6e1cd6E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h8d28b4209a6e1cd6E.llvm.171605402441639591.exit, %4 ret void } @@ -11174,45 +11116,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h278467a _ZN9hashbrown3raw13RawTableInner13drop_elements17hbe267c820934f625E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3ec299bb5f703c62E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2729) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbe267c820934f625E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2729, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2729 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbe267c820934f625E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2729, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2729 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbe267c820934f625E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbe267c820934f625E.llvm.171605402441639591.exit, %4 ret void } @@ -11281,45 +11209,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h30f3869 _ZN9hashbrown3raw13RawTableInner13drop_elements17hebdaa1ba05f1fc2aE.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h219cc82c56a2043fE.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2750) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hebdaa1ba05f1fc2aE.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2750, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2750 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hebdaa1ba05f1fc2aE.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2750, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2750 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hebdaa1ba05f1fc2aE.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hebdaa1ba05f1fc2aE.llvm.171605402441639591.exit, %4 ret void } @@ -11388,45 +11302,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h3d4f5ec _ZN9hashbrown3raw13RawTableInner13drop_elements17h9a79be9a45884941E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17haf73439cb1f3feb9E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2771) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a79be9a45884941E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2771, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2771 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a79be9a45884941E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2771, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2771 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a79be9a45884941E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9a79be9a45884941E.llvm.171605402441639591.exit, %4 ret void } @@ -11495,45 +11395,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h3d8e416 _ZN9hashbrown3raw13RawTableInner13drop_elements17h7ccabace5818a765E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h82e2456e488e2997E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2792) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7ccabace5818a765E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2792, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2792 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7ccabace5818a765E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2792, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2792 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7ccabace5818a765E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h7ccabace5818a765E.llvm.171605402441639591.exit, %4 ret void } @@ -11602,45 +11488,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h84e2989 _ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1b96dc3483ea1bd2E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2813) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2813, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2813 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2813, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2813 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h4516e8e84b1d13a1E.llvm.171605402441639591.exit, %4 ret void } @@ -11709,45 +11581,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h8ccaefd _ZN9hashbrown3raw13RawTableInner13drop_elements17hbab4e5618ea32f9cE.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9311982d84e493a0E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2834) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbab4e5618ea32f9cE.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2834, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2834 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbab4e5618ea32f9cE.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2834, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2834 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbab4e5618ea32f9cE.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hbab4e5618ea32f9cE.llvm.171605402441639591.exit, %4 ret void } @@ -11816,45 +11674,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h9fc1357 _ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf2564d320e4be686E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2855) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2855, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2855 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2855, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2855 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc89a1d6d0f7d7d77E.llvm.171605402441639591.exit, %4 ret void } @@ -11869,45 +11713,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hb8ac82d tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h4d800d9d362bb9d2E.llvm.171605402441639591(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) tail call void @llvm.experimental.noalias.scope.decl(metadata !2858) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2858, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #66, !noalias !2858 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2858, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #66, !noalias !2858 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %22, %8, %4 ret void } @@ -11921,45 +11751,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hc86f965 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !2861) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2861, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #66, !noalias !2861 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2861, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #66, !noalias !2861 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %22, %8, %4 ret void } @@ -11974,45 +11790,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd542412 tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17heec923e4d785ed18E.llvm.171605402441639591(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) tail call void @llvm.experimental.noalias.scope.decl(metadata !2864) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2864, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #66, !noalias !2864 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2864, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #66, !noalias !2864 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %22, %8, %4 ret void } @@ -12081,45 +11883,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd8068b1 _ZN9hashbrown3raw13RawTableInner13drop_elements17h1cef6b9463f2270eE.llvm.171605402441639591.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h75557b34dd939e61E.llvm.171605402441639591.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2885) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1cef6b9463f2270eE.llvm.171605402441639591.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !2885, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #66, !noalias !2885 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1cef6b9463f2270eE.llvm.171605402441639591.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !2885, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #66, !noalias !2885 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1cef6b9463f2270eE.llvm.171605402441639591.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h1cef6b9463f2270eE.llvm.171605402441639591.exit, %4 ret void } @@ -12134,45 +11922,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hdded15d tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17he5296947723c7e33E.llvm.171605402441639591(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) tail call void @llvm.experimental.noalias.scope.decl(metadata !2888) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2888, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #66, !noalias !2888 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2888, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #66, !noalias !2888 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17hf189a17f81405310E.llvm.171605402441639591.exit: ; preds = %22, %8, %4 ret void } @@ -14584,7 +14358,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %138 + br i1 %.not.i, label %25, label %136 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -14678,11 +14452,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %69 = xor i16 %68, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %129 - %.sroa.1316.066 = phi i16 [ %69, %.preheader.lr.ph ], [ %78, %129 ] - %.sroa.011.065 = phi ptr [ %65, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %129 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %129 ] - %.sroa.914.063 = phi i64 [ %64, %.preheader.lr.ph ], [ %82, %129 ] +.preheader: ; preds = %.preheader.lr.ph, %127 + %.sroa.1316.066 = phi i16 [ %69, %.preheader.lr.ph ], [ %78, %127 ] + %.sroa.011.065 = phi ptr [ %65, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %127 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %127 ] + %.sroa.914.063 = phi i64 [ %64, %.preheader.lr.ph ], [ %82, %127 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -14730,7 +14504,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %92, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %129 +.thread49.loopexit: ; preds = %127 %.pre = load i64, ptr %8, align 8, !alias.scope !3246, !noalias !3248 br label %.thread49 @@ -14750,93 +14524,90 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. 96: ; preds = %.thread49 %97 = shl i64 %.sroa.479.0.copyload, 6 - %98 = add i64 %97, 64 - %99 = add i64 %.sroa.479.0.copyload, 17 - %100 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %98, i64 %99) - %101 = extractvalue { i64, i1 } %100, 0 - %102 = extractvalue { i64, i1 } %100, 1 - %103 = icmp ult i64 %101, 9223372036854775793 - %104 = xor i1 %102, true - call void @llvm.assume(i1 %104), !noalias !3256 - call void @llvm.assume(i1 %103), !noalias !3256 - %105 = icmp eq i64 %101, 0 - br i1 %105, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %106 - -106: ; preds = %96 - %107 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %107), !noalias !3256 - %108 = sub nuw nsw i64 -64, %97 - %109 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %108 - call void @__rust_dealloc(ptr noundef nonnull %109, i64 noundef %101, i64 noundef 16) #66, !noalias !3257 + %98 = add i64 %97, 79 + %99 = and i64 %98, -64 + %100 = add i64 %.sroa.479.0.copyload, 17 + %101 = add nuw i64 %100, %99 + %102 = icmp ult i64 %101, 9223372036854775793 + call void @llvm.assume(i1 %102), !noalias !3256 + %103 = icmp eq i64 %101, 0 + br i1 %103, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %104 + +104: ; preds = %96 + %105 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %105), !noalias !3256 + %106 = sub nsw i64 0, %99 + %107 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %106 + call void @__rust_dealloc(ptr noundef nonnull %107, i64 noundef %101, i64 noundef 16) #66, !noalias !3257 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ %89, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %110, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %110 = add i64 %.sroa.7.013.i.i, 16 - %111 = add i64 %110, %.sroa.0.014.i.i - %112 = and i64 %111, %59 - %113 = getelementptr inbounds i8, ptr %63, i64 %112 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %113, align 1, !noalias !3239 - %114 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %115 = bitcast <16 x i1> %114 to i16 - %.not.i.i = icmp eq i16 %115, 0 + %.sroa.0.014.i.i = phi i64 [ %110, %.lr.ph.i.i ], [ %89, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %108, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %108 = add i64 %.sroa.7.013.i.i, 16 + %109 = add i64 %108, %.sroa.0.014.i.i + %110 = and i64 %109, %59 + %111 = getelementptr inbounds i8, ptr %63, i64 %110 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %111, align 1, !noalias !3239 + %112 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %113 = bitcast <16 x i1> %112 to i16 + %.not.i.i = icmp eq i16 %113, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %89, %._crit_edge ], [ %112, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %92, %._crit_edge ], [ %115, %.lr.ph.i.i ] - %116 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %117 = zext nneg i16 %116 to i64 - %118 = add i64 %.sroa.0.0.lcssa.i.i, %117 - %119 = and i64 %118, %59 - %120 = getelementptr inbounds i8, ptr %63, i64 %119 - %121 = load i8, ptr %120, align 1, !noalias !3266, !noundef !4 - %122 = icmp sgt i8 %121, -1 - br i1 %122, label %123, label %129 - -123: ; preds = %._crit_edge.i.i - %124 = load <16 x i8>, ptr %63, align 16, !noalias !3267 - %125 = icmp slt <16 x i8> %124, zeroinitializer - %126 = bitcast <16 x i1> %125 to i16 - %.not.i.i.i = icmp ne i16 %126, 0 - %127 = call i16 @llvm.cttz.i16(i16 %126, i1 true), !range !377 - %128 = zext nneg i16 %127 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %89, %._crit_edge ], [ %110, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %92, %._crit_edge ], [ %113, %.lr.ph.i.i ] + %114 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %115 = zext nneg i16 %114 to i64 + %116 = add i64 %.sroa.0.0.lcssa.i.i, %115 + %117 = and i64 %116, %59 + %118 = getelementptr inbounds i8, ptr %63, i64 %117 + %119 = load i8, ptr %118, align 1, !noalias !3266, !noundef !4 + %120 = icmp sgt i8 %119, -1 + br i1 %120, label %121, label %127 + +121: ; preds = %._crit_edge.i.i + %122 = load <16 x i8>, ptr %63, align 16, !noalias !3267 + %123 = icmp slt <16 x i8> %122, zeroinitializer + %124 = bitcast <16 x i1> %123 to i16 + %.not.i.i.i = icmp ne i16 %124, 0 + %125 = call i16 @llvm.cttz.i16(i16 %124, i1 true), !range !377 + %126 = zext nneg i16 %125 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3256 - br label %129 - -129: ; preds = %123, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %128, %123 ], [ %119, %._crit_edge.i.i ] - %130 = getelementptr inbounds i8, ptr %63, i64 %.0.i.i.i6 - %131 = lshr i64 %88, 57 - %132 = trunc i64 %131 to i8 - %133 = add i64 %.0.i.i.i6, -16 - %134 = and i64 %133, %59 - store i8 %132, ptr %130, align 1, !noalias !3266 - %gep = getelementptr i8, ptr %invariant.gep, i64 %134 - store i8 %132, ptr %gep, align 1, !noalias !3266 - %135 = load ptr, ptr %0, align 8, !alias.scope !3246, !noalias !3248, !nonnull !4, !noundef !4 + br label %127 + +127: ; preds = %121, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %126, %121 ], [ %117, %._crit_edge.i.i ] + %128 = getelementptr inbounds i8, ptr %63, i64 %.0.i.i.i6 + %129 = lshr i64 %88, 57 + %130 = trunc i64 %129 to i8 + %131 = add i64 %.0.i.i.i6, -16 + %132 = and i64 %131, %59 + store i8 %130, ptr %128, align 1, !noalias !3266 + %gep = getelementptr i8, ptr %invariant.gep, i64 %132 + store i8 %130, ptr %gep, align 1, !noalias !3266 + %133 = load ptr, ptr %0, align 8, !alias.scope !3246, !noalias !3248, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %81, -1 %.neg28.i.i = shl i64 %.neg.i.i, 6 - %136 = getelementptr inbounds i8, ptr %135, i64 %.neg28.i.i + %134 = getelementptr inbounds i8, ptr %133, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 6 - %137 = getelementptr inbounds i8, ptr %63, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %137, ptr noundef nonnull align 1 dereferenceable(64) %136, i64 64, i1 false), !noalias !3256 + %135 = getelementptr inbounds i8, ptr %63, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %135, ptr noundef nonnull align 1 dereferenceable(64) %134, i64 64, i1 false), !noalias !3256 %.not = icmp eq i64 %82, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -138: ; preds = %17 +136: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h56f64cec9ce6238eE", i64 noundef 64, ptr noundef nonnull @"_ZN4core3ptr115drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..write_buffer..buffer_segment..PartitionBuffer$RP$$GT$17h1a5d5280654108deE.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %106, %96, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %138 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %138 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %96 ], [ 16, %106 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %138 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %96 ], [ -9223372036854775807, %106 ] - %139 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %140 = insertvalue { i64, i64 } %139, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %104, %96, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %136 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %136 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %96 ], [ 16, %104 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %136 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %96 ], [ -9223372036854775807, %104 ] + %137 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %138 = insertvalue { i64, i64 } %137, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %140 + ret { i64, i64 } %138 } ; Function Attrs: cold nonlazybind uwtable @@ -14870,7 +14641,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %18, i64 %17, i64 %21 %22 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %10, %22 - br i1 %.not.i, label %23, label %147 + br i1 %.not.i, label %23, label %140 23: ; preds = %15 %24 = add nuw i64 %.0.i, 1 @@ -14970,11 +14741,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %72 = xor i16 %71, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %137 - %.sroa.1316.066 = phi i16 [ %72, %.preheader.lr.ph ], [ %81, %137 ] - %.sroa.011.065 = phi ptr [ %68, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %137 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %137 ] - %.sroa.914.063 = phi i64 [ %67, %.preheader.lr.ph ], [ %85, %137 ] +.preheader: ; preds = %.preheader.lr.ph, %130 + %.sroa.1316.066 = phi i16 [ %72, %.preheader.lr.ph ], [ %81, %130 ] + %.sroa.011.065 = phi ptr [ %68, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %130 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %130 ] + %.sroa.914.063 = phi i64 [ %67, %.preheader.lr.ph ], [ %85, %130 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -15022,7 +14793,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %95, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %137 +.thread49.loopexit: ; preds = %130 %.pre = load i64, ptr %7, align 8, !alias.scope !3318, !noalias !3320 br label %.thread49 @@ -15042,95 +14813,86 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. 99: ; preds = %.thread49 %100 = shl i64 %.sroa.479.0.copyload, 3 - %101 = add i64 %100, 8 - %102 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %101, i64 15) - %103 = extractvalue { i64, i1 } %102, 1 - %104 = xor i1 %103, true - call void @llvm.assume(i1 %104), !noalias !3328 - %105 = extractvalue { i64, i1 } %102, 0 - %106 = and i64 %105, -16 - %107 = add i64 %.sroa.479.0.copyload, 17 - %108 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %106, i64 %107) - %109 = extractvalue { i64, i1 } %108, 0 - %110 = extractvalue { i64, i1 } %108, 1 - %111 = icmp ult i64 %109, 9223372036854775793 - %112 = xor i1 %110, true - call void @llvm.assume(i1 %112), !noalias !3328 - call void @llvm.assume(i1 %111), !noalias !3328 - %113 = icmp eq i64 %109, 0 - br i1 %113, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %114 - -114: ; preds = %99 - %115 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %115), !noalias !3328 - %116 = sub nsw i64 0, %106 - %117 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %116 - call void @__rust_dealloc(ptr noundef nonnull %117, i64 noundef %109, i64 noundef 16) #66, !noalias !3329 + %101 = add i64 %100, 23 + %102 = and i64 %101, -16 + %103 = add i64 %.sroa.479.0.copyload, 17 + %104 = add nuw i64 %103, %102 + %105 = icmp ult i64 %104, 9223372036854775793 + call void @llvm.assume(i1 %105), !noalias !3328 + %106 = icmp eq i64 %104, 0 + br i1 %106, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %107 + +107: ; preds = %99 + %108 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %108), !noalias !3328 + %109 = sub nsw i64 0, %102 + %110 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %109 + call void @__rust_dealloc(ptr noundef nonnull %110, i64 noundef %104, i64 noundef 16) #66, !noalias !3329 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %120, %.lr.ph.i.i ], [ %92, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %118, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %118 = add i64 %.sroa.7.013.i.i, 16 - %119 = add i64 %118, %.sroa.0.014.i.i - %120 = and i64 %119, %62 - %121 = getelementptr inbounds i8, ptr %66, i64 %120 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %121, align 1, !noalias !3311 - %122 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %123 = bitcast <16 x i1> %122 to i16 - %.not.i.i = icmp eq i16 %123, 0 + %.sroa.0.014.i.i = phi i64 [ %113, %.lr.ph.i.i ], [ %92, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %111, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %111 = add i64 %.sroa.7.013.i.i, 16 + %112 = add i64 %111, %.sroa.0.014.i.i + %113 = and i64 %112, %62 + %114 = getelementptr inbounds i8, ptr %66, i64 %113 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %114, align 1, !noalias !3311 + %115 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %116 = bitcast <16 x i1> %115 to i16 + %.not.i.i = icmp eq i16 %116, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %92, %._crit_edge ], [ %120, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %95, %._crit_edge ], [ %123, %.lr.ph.i.i ] - %124 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %125 = zext nneg i16 %124 to i64 - %126 = add i64 %.sroa.0.0.lcssa.i.i, %125 - %127 = and i64 %126, %62 - %128 = getelementptr inbounds i8, ptr %66, i64 %127 - %129 = load i8, ptr %128, align 1, !noalias !3338, !noundef !4 - %130 = icmp sgt i8 %129, -1 - br i1 %130, label %131, label %137 - -131: ; preds = %._crit_edge.i.i - %132 = load <16 x i8>, ptr %66, align 16, !noalias !3339 - %133 = icmp slt <16 x i8> %132, zeroinitializer - %134 = bitcast <16 x i1> %133 to i16 - %.not.i.i.i = icmp ne i16 %134, 0 - %135 = call i16 @llvm.cttz.i16(i16 %134, i1 true), !range !377 - %136 = zext nneg i16 %135 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %92, %._crit_edge ], [ %113, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %95, %._crit_edge ], [ %116, %.lr.ph.i.i ] + %117 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %118 = zext nneg i16 %117 to i64 + %119 = add i64 %.sroa.0.0.lcssa.i.i, %118 + %120 = and i64 %119, %62 + %121 = getelementptr inbounds i8, ptr %66, i64 %120 + %122 = load i8, ptr %121, align 1, !noalias !3338, !noundef !4 + %123 = icmp sgt i8 %122, -1 + br i1 %123, label %124, label %130 + +124: ; preds = %._crit_edge.i.i + %125 = load <16 x i8>, ptr %66, align 16, !noalias !3339 + %126 = icmp slt <16 x i8> %125, zeroinitializer + %127 = bitcast <16 x i1> %126 to i16 + %.not.i.i.i = icmp ne i16 %127, 0 + %128 = call i16 @llvm.cttz.i16(i16 %127, i1 true), !range !377 + %129 = zext nneg i16 %128 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3328 - br label %137 - -137: ; preds = %131, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %136, %131 ], [ %127, %._crit_edge.i.i ] - %138 = getelementptr inbounds i8, ptr %66, i64 %.0.i.i.i6 - %139 = lshr i64 %91, 57 - %140 = trunc i64 %139 to i8 - %141 = add i64 %.0.i.i.i6, -16 - %142 = and i64 %141, %62 - store i8 %140, ptr %138, align 1, !noalias !3338 - %gep = getelementptr i8, ptr %invariant.gep, i64 %142 - store i8 %140, ptr %gep, align 1, !noalias !3338 - %143 = load ptr, ptr %0, align 8, !alias.scope !3318, !noalias !3320, !nonnull !4, !noundef !4 + br label %130 + +130: ; preds = %124, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %129, %124 ], [ %120, %._crit_edge.i.i ] + %131 = getelementptr inbounds i8, ptr %66, i64 %.0.i.i.i6 + %132 = lshr i64 %91, 57 + %133 = trunc i64 %132 to i8 + %134 = add i64 %.0.i.i.i6, -16 + %135 = and i64 %134, %62 + store i8 %133, ptr %131, align 1, !noalias !3338 + %gep = getelementptr i8, ptr %invariant.gep, i64 %135 + store i8 %133, ptr %gep, align 1, !noalias !3338 + %136 = load ptr, ptr %0, align 8, !alias.scope !3318, !noalias !3320, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %84, -1 %.neg28.i.i = shl i64 %.neg.i.i, 3 - %144 = getelementptr inbounds i8, ptr %143, i64 %.neg28.i.i + %137 = getelementptr inbounds i8, ptr %136, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 3 - %145 = getelementptr inbounds i8, ptr %66, i64 %.neg30.i.i - %146 = load i64, ptr %144, align 1, !noalias !3328 - store i64 %146, ptr %145, align 1, !noalias !3328 + %138 = getelementptr inbounds i8, ptr %66, i64 %.neg30.i.i + %139 = load i64, ptr %137, align 1, !noalias !3328 + store i64 %139, ptr %138, align 1, !noalias !3328 %.not = icmp eq i64 %85, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -147: ; preds = %15 +140: ; preds = %15 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %4, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17haada65d542dd7bb5E", i64 noundef 8, ptr noundef null) br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %114, %99, %.thread49, %39, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %12, %147 - %.sroa.0.0.i = phi i64 [ %14, %12 ], [ -9223372036854775807, %147 ], [ %41, %39 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %99 ], [ -9223372036854775807, %114 ] +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %107, %99, %.thread49, %39, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %12, %140 + %.sroa.0.0.i = phi i64 [ %14, %12 ], [ -9223372036854775807, %140 ], [ %41, %39 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %99 ], [ -9223372036854775807, %107 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) ret i64 %.sroa.0.0.i } @@ -15166,7 +14928,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %17, i64 %16, i64 %20 %21 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %9, %21 - br i1 %.not.i, label %22, label %140 + br i1 %.not.i, label %22, label %135 22: ; preds = %14 %23 = add nuw i64 %.0.i, 1 @@ -15259,11 +15021,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %68 = xor i16 %67, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %131 - %.sroa.1316.066 = phi i16 [ %68, %.preheader.lr.ph ], [ %77, %131 ] - %.sroa.011.065 = phi ptr [ %64, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %131 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %131 ] - %.sroa.914.063 = phi i64 [ %63, %.preheader.lr.ph ], [ %81, %131 ] +.preheader: ; preds = %.preheader.lr.ph, %126 + %.sroa.1316.066 = phi i16 [ %68, %.preheader.lr.ph ], [ %77, %126 ] + %.sroa.011.065 = phi ptr [ %64, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %126 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %126 ] + %.sroa.914.063 = phi i64 [ %63, %.preheader.lr.ph ], [ %81, %126 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -15311,7 +15073,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %91, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %131 +.thread49.loopexit: ; preds = %126 %.pre = load i64, ptr %6, align 8, !alias.scope !3390, !noalias !3392 br label %.thread49 @@ -15330,93 +15092,86 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %94, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %95 95: ; preds = %.thread49 - %96 = add i64 %.sroa.479.0.copyload, 1 - %97 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %96, i64 96) - %98 = extractvalue { i64, i1 } %97, 1 - %99 = xor i1 %98, true - call void @llvm.assume(i1 %99), !noalias !3400 - %100 = extractvalue { i64, i1 } %97, 0 - %101 = add i64 %.sroa.479.0.copyload, 17 - %102 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %100, i64 %101) - %103 = extractvalue { i64, i1 } %102, 0 - %104 = extractvalue { i64, i1 } %102, 1 - %105 = icmp ult i64 %103, 9223372036854775793 - %106 = xor i1 %104, true - call void @llvm.assume(i1 %106), !noalias !3400 - call void @llvm.assume(i1 %105), !noalias !3400 - %107 = icmp eq i64 %103, 0 - br i1 %107, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %108 + %96 = mul i64 %.sroa.479.0.copyload, 96 + %97 = add i64 %96, 111 + %98 = and i64 %97, -32 + %99 = add i64 %.sroa.479.0.copyload, 17 + %100 = add nuw i64 %99, %98 + %101 = icmp ult i64 %100, 9223372036854775793 + call void @llvm.assume(i1 %101), !noalias !3400 + %102 = icmp eq i64 %100, 0 + br i1 %102, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %103 -108: ; preds = %95 - %109 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %109), !noalias !3400 - %110 = sub nsw i64 0, %100 - %111 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %110 - call void @__rust_dealloc(ptr noundef nonnull %111, i64 noundef %103, i64 noundef 16) #66, !noalias !3401 +103: ; preds = %95 + %104 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %104), !noalias !3400 + %105 = sub nsw i64 0, %98 + %106 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %105 + call void @__rust_dealloc(ptr noundef nonnull %106, i64 noundef %100, i64 noundef 16) #66, !noalias !3401 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ %88, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %112 = add i64 %.sroa.7.013.i.i, 16 - %113 = add i64 %112, %.sroa.0.014.i.i - %114 = and i64 %113, %58 - %115 = getelementptr inbounds i8, ptr %62, i64 %114 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %115, align 1, !noalias !3383 - %116 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %117 = bitcast <16 x i1> %116 to i16 - %.not.i.i = icmp eq i16 %117, 0 + %.sroa.0.014.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ %88, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %107, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %107 = add i64 %.sroa.7.013.i.i, 16 + %108 = add i64 %107, %.sroa.0.014.i.i + %109 = and i64 %108, %58 + %110 = getelementptr inbounds i8, ptr %62, i64 %109 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %110, align 1, !noalias !3383 + %111 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %112 = bitcast <16 x i1> %111 to i16 + %.not.i.i = icmp eq i16 %112, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %88, %._crit_edge ], [ %114, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %91, %._crit_edge ], [ %117, %.lr.ph.i.i ] - %118 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %119 = zext nneg i16 %118 to i64 - %120 = add i64 %.sroa.0.0.lcssa.i.i, %119 - %121 = and i64 %120, %58 - %122 = getelementptr inbounds i8, ptr %62, i64 %121 - %123 = load i8, ptr %122, align 1, !noalias !3410, !noundef !4 - %124 = icmp sgt i8 %123, -1 - br i1 %124, label %125, label %131 + %.sroa.0.0.lcssa.i.i = phi i64 [ %88, %._crit_edge ], [ %109, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %91, %._crit_edge ], [ %112, %.lr.ph.i.i ] + %113 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %114 = zext nneg i16 %113 to i64 + %115 = add i64 %.sroa.0.0.lcssa.i.i, %114 + %116 = and i64 %115, %58 + %117 = getelementptr inbounds i8, ptr %62, i64 %116 + %118 = load i8, ptr %117, align 1, !noalias !3410, !noundef !4 + %119 = icmp sgt i8 %118, -1 + br i1 %119, label %120, label %126 -125: ; preds = %._crit_edge.i.i - %126 = load <16 x i8>, ptr %62, align 16, !noalias !3411 - %127 = icmp slt <16 x i8> %126, zeroinitializer - %128 = bitcast <16 x i1> %127 to i16 - %.not.i.i.i = icmp ne i16 %128, 0 - %129 = call i16 @llvm.cttz.i16(i16 %128, i1 true), !range !377 - %130 = zext nneg i16 %129 to i64 +120: ; preds = %._crit_edge.i.i + %121 = load <16 x i8>, ptr %62, align 16, !noalias !3411 + %122 = icmp slt <16 x i8> %121, zeroinitializer + %123 = bitcast <16 x i1> %122 to i16 + %.not.i.i.i = icmp ne i16 %123, 0 + %124 = call i16 @llvm.cttz.i16(i16 %123, i1 true), !range !377 + %125 = zext nneg i16 %124 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3400 - br label %131 + br label %126 -131: ; preds = %125, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %130, %125 ], [ %121, %._crit_edge.i.i ] - %132 = getelementptr inbounds i8, ptr %62, i64 %.0.i.i.i6 - %133 = lshr i64 %87, 57 - %134 = trunc i64 %133 to i8 - %135 = add i64 %.0.i.i.i6, -16 - %136 = and i64 %135, %58 - store i8 %134, ptr %132, align 1, !noalias !3410 - %gep = getelementptr i8, ptr %invariant.gep, i64 %136 - store i8 %134, ptr %gep, align 1, !noalias !3410 - %137 = load ptr, ptr %0, align 8, !alias.scope !3390, !noalias !3392, !nonnull !4, !noundef !4 +126: ; preds = %120, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %125, %120 ], [ %116, %._crit_edge.i.i ] + %127 = getelementptr inbounds i8, ptr %62, i64 %.0.i.i.i6 + %128 = lshr i64 %87, 57 + %129 = trunc i64 %128 to i8 + %130 = add i64 %.0.i.i.i6, -16 + %131 = and i64 %130, %58 + store i8 %129, ptr %127, align 1, !noalias !3410 + %gep = getelementptr i8, ptr %invariant.gep, i64 %131 + store i8 %129, ptr %gep, align 1, !noalias !3410 + %132 = load ptr, ptr %0, align 8, !alias.scope !3390, !noalias !3392, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %80, -1 %.neg28.i.i = mul i64 %.neg.i.i, 96 - %138 = getelementptr inbounds i8, ptr %137, i64 %.neg28.i.i + %133 = getelementptr inbounds i8, ptr %132, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 96 - %139 = getelementptr inbounds i8, ptr %62, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(96) %139, ptr noundef nonnull align 1 dereferenceable(96) %138, i64 96, i1 false), !noalias !3400 + %134 = getelementptr inbounds i8, ptr %62, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(96) %134, ptr noundef nonnull align 1 dereferenceable(96) %133, i64 96, i1 false), !noalias !3400 %.not = icmp eq i64 %81, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -140: ; preds = %14 +135: ; preds = %14 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %3, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h057fd2ad82bc6d65E", i64 noundef 96, ptr noundef nonnull @"_ZN4core3ptr87drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..TableParquetFiles$RP$$GT$17h380be7a86d4c1083E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %108, %95, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %140 - %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %140 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %95 ], [ -9223372036854775807, %108 ] +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %103, %95, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %135 + %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %135 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %95 ], [ -9223372036854775807, %103 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret i64 %.sroa.0.0.i } @@ -15453,7 +15208,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %143 + br i1 %.not.i, label %25, label %138 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -15547,11 +15302,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %71 = xor i16 %70, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %134 - %.sroa.1316.066 = phi i16 [ %71, %.preheader.lr.ph ], [ %80, %134 ] - %.sroa.011.065 = phi ptr [ %67, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %134 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %134 ] - %.sroa.914.063 = phi i64 [ %66, %.preheader.lr.ph ], [ %84, %134 ] +.preheader: ; preds = %.preheader.lr.ph, %129 + %.sroa.1316.066 = phi i16 [ %71, %.preheader.lr.ph ], [ %80, %129 ] + %.sroa.011.065 = phi ptr [ %67, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %129 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %129 ] + %.sroa.914.063 = phi i64 [ %66, %.preheader.lr.ph ], [ %84, %129 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -15599,7 +15354,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %94, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %134 +.thread49.loopexit: ; preds = %129 %.pre = load i64, ptr %8, align 8, !alias.scope !3462, !noalias !3464 br label %.thread49 @@ -15618,98 +15373,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %97, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %98 98: ; preds = %.thread49 - %99 = add i64 %.sroa.479.0.copyload, 1 - %100 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %99, i64 48) - %101 = extractvalue { i64, i1 } %100, 1 - %102 = xor i1 %101, true - call void @llvm.assume(i1 %102), !noalias !3472 - %103 = extractvalue { i64, i1 } %100, 0 - %104 = add i64 %.sroa.479.0.copyload, 17 - %105 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %103, i64 %104) - %106 = extractvalue { i64, i1 } %105, 0 - %107 = extractvalue { i64, i1 } %105, 1 - %108 = icmp ult i64 %106, 9223372036854775793 - %109 = xor i1 %107, true - call void @llvm.assume(i1 %109), !noalias !3472 - call void @llvm.assume(i1 %108), !noalias !3472 - %110 = icmp eq i64 %106, 0 - br i1 %110, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %111 - -111: ; preds = %98 - %112 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %112), !noalias !3472 - %113 = sub nsw i64 0, %103 - %114 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %113 - call void @__rust_dealloc(ptr noundef nonnull %114, i64 noundef %106, i64 noundef 16) #66, !noalias !3473 + %99 = mul i64 %.sroa.479.0.copyload, 48 + %100 = add i64 %99, 63 + %101 = and i64 %100, -16 + %102 = add i64 %.sroa.479.0.copyload, 17 + %103 = add nuw i64 %102, %101 + %104 = icmp ult i64 %103, 9223372036854775793 + call void @llvm.assume(i1 %104), !noalias !3472 + %105 = icmp eq i64 %103, 0 + br i1 %105, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %106 + +106: ; preds = %98 + %107 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %107), !noalias !3472 + %108 = sub nsw i64 0, %101 + %109 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %108 + call void @__rust_dealloc(ptr noundef nonnull %109, i64 noundef %103, i64 noundef 16) #66, !noalias !3473 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %117, %.lr.ph.i.i ], [ %91, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %115, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %115 = add i64 %.sroa.7.013.i.i, 16 - %116 = add i64 %115, %.sroa.0.014.i.i - %117 = and i64 %116, %61 - %118 = getelementptr inbounds i8, ptr %65, i64 %117 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %118, align 1, !noalias !3455 - %119 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %120 = bitcast <16 x i1> %119 to i16 - %.not.i.i = icmp eq i16 %120, 0 + %.sroa.0.014.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ %91, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %110, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %110 = add i64 %.sroa.7.013.i.i, 16 + %111 = add i64 %110, %.sroa.0.014.i.i + %112 = and i64 %111, %61 + %113 = getelementptr inbounds i8, ptr %65, i64 %112 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %113, align 1, !noalias !3455 + %114 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %115 = bitcast <16 x i1> %114 to i16 + %.not.i.i = icmp eq i16 %115, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %91, %._crit_edge ], [ %117, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %94, %._crit_edge ], [ %120, %.lr.ph.i.i ] - %121 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %122 = zext nneg i16 %121 to i64 - %123 = add i64 %.sroa.0.0.lcssa.i.i, %122 - %124 = and i64 %123, %61 - %125 = getelementptr inbounds i8, ptr %65, i64 %124 - %126 = load i8, ptr %125, align 1, !noalias !3482, !noundef !4 - %127 = icmp sgt i8 %126, -1 - br i1 %127, label %128, label %134 - -128: ; preds = %._crit_edge.i.i - %129 = load <16 x i8>, ptr %65, align 16, !noalias !3483 - %130 = icmp slt <16 x i8> %129, zeroinitializer - %131 = bitcast <16 x i1> %130 to i16 - %.not.i.i.i = icmp ne i16 %131, 0 - %132 = call i16 @llvm.cttz.i16(i16 %131, i1 true), !range !377 - %133 = zext nneg i16 %132 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %91, %._crit_edge ], [ %112, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %94, %._crit_edge ], [ %115, %.lr.ph.i.i ] + %116 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %117 = zext nneg i16 %116 to i64 + %118 = add i64 %.sroa.0.0.lcssa.i.i, %117 + %119 = and i64 %118, %61 + %120 = getelementptr inbounds i8, ptr %65, i64 %119 + %121 = load i8, ptr %120, align 1, !noalias !3482, !noundef !4 + %122 = icmp sgt i8 %121, -1 + br i1 %122, label %123, label %129 + +123: ; preds = %._crit_edge.i.i + %124 = load <16 x i8>, ptr %65, align 16, !noalias !3483 + %125 = icmp slt <16 x i8> %124, zeroinitializer + %126 = bitcast <16 x i1> %125 to i16 + %.not.i.i.i = icmp ne i16 %126, 0 + %127 = call i16 @llvm.cttz.i16(i16 %126, i1 true), !range !377 + %128 = zext nneg i16 %127 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3472 - br label %134 - -134: ; preds = %128, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %133, %128 ], [ %124, %._crit_edge.i.i ] - %135 = getelementptr inbounds i8, ptr %65, i64 %.0.i.i.i6 - %136 = lshr i64 %90, 57 - %137 = trunc i64 %136 to i8 - %138 = add i64 %.0.i.i.i6, -16 - %139 = and i64 %138, %61 - store i8 %137, ptr %135, align 1, !noalias !3482 - %gep = getelementptr i8, ptr %invariant.gep, i64 %139 - store i8 %137, ptr %gep, align 1, !noalias !3482 - %140 = load ptr, ptr %0, align 8, !alias.scope !3462, !noalias !3464, !nonnull !4, !noundef !4 + br label %129 + +129: ; preds = %123, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %128, %123 ], [ %119, %._crit_edge.i.i ] + %130 = getelementptr inbounds i8, ptr %65, i64 %.0.i.i.i6 + %131 = lshr i64 %90, 57 + %132 = trunc i64 %131 to i8 + %133 = add i64 %.0.i.i.i6, -16 + %134 = and i64 %133, %61 + store i8 %132, ptr %130, align 1, !noalias !3482 + %gep = getelementptr i8, ptr %invariant.gep, i64 %134 + store i8 %132, ptr %gep, align 1, !noalias !3482 + %135 = load ptr, ptr %0, align 8, !alias.scope !3462, !noalias !3464, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %83, -1 %.neg28.i.i = mul i64 %.neg.i.i, 48 - %141 = getelementptr inbounds i8, ptr %140, i64 %.neg28.i.i + %136 = getelementptr inbounds i8, ptr %135, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 48 - %142 = getelementptr inbounds i8, ptr %65, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %142, ptr noundef nonnull align 1 dereferenceable(48) %141, i64 48, i1 false), !noalias !3472 + %137 = getelementptr inbounds i8, ptr %65, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %137, ptr noundef nonnull align 1 dereferenceable(48) %136, i64 48, i1 false), !noalias !3472 %.not = icmp eq i64 %84, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -143: ; preds = %17 +138: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17ha73589d3086e3d0eE", i64 noundef 48, ptr noundef nonnull @"_ZN4core3ptr98drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..write_buffer..PartitionBatch$RP$$GT$17h8d28fe29e62ccf34E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %111, %98, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %143 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %143 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %98 ], [ 16, %111 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %143 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %98 ], [ -9223372036854775807, %111 ] - %144 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %145 = insertvalue { i64, i64 } %144, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %106, %98, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %138 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %138 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %98 ], [ 16, %106 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %138 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %98 ], [ -9223372036854775807, %106 ] + %139 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %140 = insertvalue { i64, i64 } %139, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %145 + ret { i64, i64 } %140 } ; Function Attrs: cold nonlazybind uwtable @@ -15744,7 +15492,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %150 + br i1 %.not.i, label %25, label %140 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -15840,11 +15588,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %73 = xor i16 %72, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %141 - %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %141 ] - %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %141 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %141 ] - %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %141 ] +.preheader: ; preds = %.preheader.lr.ph, %131 + %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %131 ] + %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %131 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %131 ] + %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %131 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -15892,7 +15640,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %96, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %141 +.thread49.loopexit: ; preds = %131 %.pre = load i64, ptr %8, align 8, !alias.scope !3534, !noalias !3536 br label %.thread49 @@ -15911,104 +15659,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %99, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %100 100: ; preds = %.thread49 - %101 = add i64 %.sroa.479.0.copyload, 1 - %102 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %101, i64 72) - %103 = extractvalue { i64, i1 } %102, 1 - %104 = xor i1 %103, true - call void @llvm.assume(i1 %104), !noalias !3544 - %105 = extractvalue { i64, i1 } %102, 0 - %106 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %105, i64 15) - %107 = extractvalue { i64, i1 } %106, 1 - %108 = xor i1 %107, true - call void @llvm.assume(i1 %108), !noalias !3544 - %109 = extractvalue { i64, i1 } %106, 0 - %110 = and i64 %109, -16 - %111 = add i64 %.sroa.479.0.copyload, 17 - %112 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %110, i64 %111) - %113 = extractvalue { i64, i1 } %112, 0 - %114 = extractvalue { i64, i1 } %112, 1 - %115 = icmp ult i64 %113, 9223372036854775793 - %116 = xor i1 %114, true - call void @llvm.assume(i1 %116), !noalias !3544 - call void @llvm.assume(i1 %115), !noalias !3544 - %117 = icmp eq i64 %113, 0 - br i1 %117, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %118 - -118: ; preds = %100 - %119 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %119), !noalias !3544 - %120 = sub nsw i64 0, %110 - %121 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %120 - call void @__rust_dealloc(ptr noundef nonnull %121, i64 noundef %113, i64 noundef 16) #66, !noalias !3545 + %101 = mul i64 %.sroa.479.0.copyload, 72 + %102 = add i64 %101, 87 + %103 = and i64 %102, -16 + %104 = add i64 %.sroa.479.0.copyload, 17 + %105 = add nuw i64 %104, %103 + %106 = icmp ult i64 %105, 9223372036854775793 + call void @llvm.assume(i1 %106), !noalias !3544 + %107 = icmp eq i64 %105, 0 + br i1 %107, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %108 + +108: ; preds = %100 + %109 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %109), !noalias !3544 + %110 = sub nsw i64 0, %103 + %111 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %110 + call void @__rust_dealloc(ptr noundef nonnull %111, i64 noundef %105, i64 noundef 16) #66, !noalias !3545 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %124, %.lr.ph.i.i ], [ %93, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %122, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %122 = add i64 %.sroa.7.013.i.i, 16 - %123 = add i64 %122, %.sroa.0.014.i.i - %124 = and i64 %123, %63 - %125 = getelementptr inbounds i8, ptr %67, i64 %124 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %125, align 1, !noalias !3527 - %126 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %127 = bitcast <16 x i1> %126 to i16 - %.not.i.i = icmp eq i16 %127, 0 + %.sroa.0.014.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ %93, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %112 = add i64 %.sroa.7.013.i.i, 16 + %113 = add i64 %112, %.sroa.0.014.i.i + %114 = and i64 %113, %63 + %115 = getelementptr inbounds i8, ptr %67, i64 %114 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %115, align 1, !noalias !3527 + %116 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %117 = bitcast <16 x i1> %116 to i16 + %.not.i.i = icmp eq i16 %117, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %124, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %127, %.lr.ph.i.i ] - %128 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %129 = zext nneg i16 %128 to i64 - %130 = add i64 %.sroa.0.0.lcssa.i.i, %129 - %131 = and i64 %130, %63 - %132 = getelementptr inbounds i8, ptr %67, i64 %131 - %133 = load i8, ptr %132, align 1, !noalias !3554, !noundef !4 - %134 = icmp sgt i8 %133, -1 - br i1 %134, label %135, label %141 - -135: ; preds = %._crit_edge.i.i - %136 = load <16 x i8>, ptr %67, align 16, !noalias !3555 - %137 = icmp slt <16 x i8> %136, zeroinitializer - %138 = bitcast <16 x i1> %137 to i16 - %.not.i.i.i = icmp ne i16 %138, 0 - %139 = call i16 @llvm.cttz.i16(i16 %138, i1 true), !range !377 - %140 = zext nneg i16 %139 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %117, %.lr.ph.i.i ] + %118 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %119 = zext nneg i16 %118 to i64 + %120 = add i64 %.sroa.0.0.lcssa.i.i, %119 + %121 = and i64 %120, %63 + %122 = getelementptr inbounds i8, ptr %67, i64 %121 + %123 = load i8, ptr %122, align 1, !noalias !3554, !noundef !4 + %124 = icmp sgt i8 %123, -1 + br i1 %124, label %125, label %131 + +125: ; preds = %._crit_edge.i.i + %126 = load <16 x i8>, ptr %67, align 16, !noalias !3555 + %127 = icmp slt <16 x i8> %126, zeroinitializer + %128 = bitcast <16 x i1> %127 to i16 + %.not.i.i.i = icmp ne i16 %128, 0 + %129 = call i16 @llvm.cttz.i16(i16 %128, i1 true), !range !377 + %130 = zext nneg i16 %129 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3544 - br label %141 - -141: ; preds = %135, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %140, %135 ], [ %131, %._crit_edge.i.i ] - %142 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 - %143 = lshr i64 %92, 57 - %144 = trunc i64 %143 to i8 - %145 = add i64 %.0.i.i.i6, -16 - %146 = and i64 %145, %63 - store i8 %144, ptr %142, align 1, !noalias !3554 - %gep = getelementptr i8, ptr %invariant.gep, i64 %146 - store i8 %144, ptr %gep, align 1, !noalias !3554 - %147 = load ptr, ptr %0, align 8, !alias.scope !3534, !noalias !3536, !nonnull !4, !noundef !4 + br label %131 + +131: ; preds = %125, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %130, %125 ], [ %121, %._crit_edge.i.i ] + %132 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 + %133 = lshr i64 %92, 57 + %134 = trunc i64 %133 to i8 + %135 = add i64 %.0.i.i.i6, -16 + %136 = and i64 %135, %63 + store i8 %134, ptr %132, align 1, !noalias !3554 + %gep = getelementptr i8, ptr %invariant.gep, i64 %136 + store i8 %134, ptr %gep, align 1, !noalias !3554 + %137 = load ptr, ptr %0, align 8, !alias.scope !3534, !noalias !3536, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %85, -1 %.neg28.i.i = mul i64 %.neg.i.i, 72 - %148 = getelementptr inbounds i8, ptr %147, i64 %.neg28.i.i + %138 = getelementptr inbounds i8, ptr %137, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 72 - %149 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %149, ptr noundef nonnull align 1 dereferenceable(72) %148, i64 72, i1 false), !noalias !3544 + %139 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %139, ptr noundef nonnull align 1 dereferenceable(72) %138, i64 72, i1 false), !noalias !3544 %.not = icmp eq i64 %86, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -150: ; preds = %17 +140: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17had6f50421f9c2028E", i64 noundef 72, ptr noundef nonnull @"_ZN4core3ptr114drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..write_buffer..buffer_segment..DatabaseBuffer$RP$$GT$17h50904860a1f4f041E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %118, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %150 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %150 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %118 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %150 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %118 ] - %151 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %152 = insertvalue { i64, i64 } %151, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %108, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %140 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %140 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %108 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %140 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %108 ] + %141 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %142 = insertvalue { i64, i64 } %141, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %152 + ret { i64, i64 } %142 } ; Function Attrs: cold nonlazybind uwtable @@ -16043,7 +15778,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %150 + br i1 %.not.i, label %25, label %140 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -16139,11 +15874,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %73 = xor i16 %72, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %141 - %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %141 ] - %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %141 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %141 ] - %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %141 ] +.preheader: ; preds = %.preheader.lr.ph, %131 + %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %131 ] + %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %131 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %131 ] + %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %131 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -16191,7 +15926,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %96, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %141 +.thread49.loopexit: ; preds = %131 %.pre = load i64, ptr %8, align 8, !alias.scope !3606, !noalias !3608 br label %.thread49 @@ -16210,104 +15945,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %99, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %100 100: ; preds = %.thread49 - %101 = add i64 %.sroa.479.0.copyload, 1 - %102 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %101, i64 72) - %103 = extractvalue { i64, i1 } %102, 1 - %104 = xor i1 %103, true - call void @llvm.assume(i1 %104), !noalias !3616 - %105 = extractvalue { i64, i1 } %102, 0 - %106 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %105, i64 15) - %107 = extractvalue { i64, i1 } %106, 1 - %108 = xor i1 %107, true - call void @llvm.assume(i1 %108), !noalias !3616 - %109 = extractvalue { i64, i1 } %106, 0 - %110 = and i64 %109, -16 - %111 = add i64 %.sroa.479.0.copyload, 17 - %112 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %110, i64 %111) - %113 = extractvalue { i64, i1 } %112, 0 - %114 = extractvalue { i64, i1 } %112, 1 - %115 = icmp ult i64 %113, 9223372036854775793 - %116 = xor i1 %114, true - call void @llvm.assume(i1 %116), !noalias !3616 - call void @llvm.assume(i1 %115), !noalias !3616 - %117 = icmp eq i64 %113, 0 - br i1 %117, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %118 - -118: ; preds = %100 - %119 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %119), !noalias !3616 - %120 = sub nsw i64 0, %110 - %121 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %120 - call void @__rust_dealloc(ptr noundef nonnull %121, i64 noundef %113, i64 noundef 16) #66, !noalias !3617 + %101 = mul i64 %.sroa.479.0.copyload, 72 + %102 = add i64 %101, 87 + %103 = and i64 %102, -16 + %104 = add i64 %.sroa.479.0.copyload, 17 + %105 = add nuw i64 %104, %103 + %106 = icmp ult i64 %105, 9223372036854775793 + call void @llvm.assume(i1 %106), !noalias !3616 + %107 = icmp eq i64 %105, 0 + br i1 %107, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %108 + +108: ; preds = %100 + %109 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %109), !noalias !3616 + %110 = sub nsw i64 0, %103 + %111 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %110 + call void @__rust_dealloc(ptr noundef nonnull %111, i64 noundef %105, i64 noundef 16) #66, !noalias !3617 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %124, %.lr.ph.i.i ], [ %93, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %122, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %122 = add i64 %.sroa.7.013.i.i, 16 - %123 = add i64 %122, %.sroa.0.014.i.i - %124 = and i64 %123, %63 - %125 = getelementptr inbounds i8, ptr %67, i64 %124 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %125, align 1, !noalias !3599 - %126 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %127 = bitcast <16 x i1> %126 to i16 - %.not.i.i = icmp eq i16 %127, 0 + %.sroa.0.014.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ %93, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %112 = add i64 %.sroa.7.013.i.i, 16 + %113 = add i64 %112, %.sroa.0.014.i.i + %114 = and i64 %113, %63 + %115 = getelementptr inbounds i8, ptr %67, i64 %114 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %115, align 1, !noalias !3599 + %116 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %117 = bitcast <16 x i1> %116 to i16 + %.not.i.i = icmp eq i16 %117, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %124, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %127, %.lr.ph.i.i ] - %128 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %129 = zext nneg i16 %128 to i64 - %130 = add i64 %.sroa.0.0.lcssa.i.i, %129 - %131 = and i64 %130, %63 - %132 = getelementptr inbounds i8, ptr %67, i64 %131 - %133 = load i8, ptr %132, align 1, !noalias !3626, !noundef !4 - %134 = icmp sgt i8 %133, -1 - br i1 %134, label %135, label %141 - -135: ; preds = %._crit_edge.i.i - %136 = load <16 x i8>, ptr %67, align 16, !noalias !3627 - %137 = icmp slt <16 x i8> %136, zeroinitializer - %138 = bitcast <16 x i1> %137 to i16 - %.not.i.i.i = icmp ne i16 %138, 0 - %139 = call i16 @llvm.cttz.i16(i16 %138, i1 true), !range !377 - %140 = zext nneg i16 %139 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %117, %.lr.ph.i.i ] + %118 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %119 = zext nneg i16 %118 to i64 + %120 = add i64 %.sroa.0.0.lcssa.i.i, %119 + %121 = and i64 %120, %63 + %122 = getelementptr inbounds i8, ptr %67, i64 %121 + %123 = load i8, ptr %122, align 1, !noalias !3626, !noundef !4 + %124 = icmp sgt i8 %123, -1 + br i1 %124, label %125, label %131 + +125: ; preds = %._crit_edge.i.i + %126 = load <16 x i8>, ptr %67, align 16, !noalias !3627 + %127 = icmp slt <16 x i8> %126, zeroinitializer + %128 = bitcast <16 x i1> %127 to i16 + %.not.i.i.i = icmp ne i16 %128, 0 + %129 = call i16 @llvm.cttz.i16(i16 %128, i1 true), !range !377 + %130 = zext nneg i16 %129 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3616 - br label %141 - -141: ; preds = %135, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %140, %135 ], [ %131, %._crit_edge.i.i ] - %142 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 - %143 = lshr i64 %92, 57 - %144 = trunc i64 %143 to i8 - %145 = add i64 %.0.i.i.i6, -16 - %146 = and i64 %145, %63 - store i8 %144, ptr %142, align 1, !noalias !3626 - %gep = getelementptr i8, ptr %invariant.gep, i64 %146 - store i8 %144, ptr %gep, align 1, !noalias !3626 - %147 = load ptr, ptr %0, align 8, !alias.scope !3606, !noalias !3608, !nonnull !4, !noundef !4 + br label %131 + +131: ; preds = %125, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %130, %125 ], [ %121, %._crit_edge.i.i ] + %132 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 + %133 = lshr i64 %92, 57 + %134 = trunc i64 %133 to i8 + %135 = add i64 %.0.i.i.i6, -16 + %136 = and i64 %135, %63 + store i8 %134, ptr %132, align 1, !noalias !3626 + %gep = getelementptr i8, ptr %invariant.gep, i64 %136 + store i8 %134, ptr %gep, align 1, !noalias !3626 + %137 = load ptr, ptr %0, align 8, !alias.scope !3606, !noalias !3608, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %85, -1 %.neg28.i.i = mul i64 %.neg.i.i, 72 - %148 = getelementptr inbounds i8, ptr %147, i64 %.neg28.i.i + %138 = getelementptr inbounds i8, ptr %137, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 72 - %149 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %149, ptr noundef nonnull align 1 dereferenceable(72) %148, i64 72, i1 false), !noalias !3616 + %139 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %139, ptr noundef nonnull align 1 dereferenceable(72) %138, i64 72, i1 false), !noalias !3616 %.not = icmp eq i64 %86, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -150: ; preds = %17 +140: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h229e1bc071f656e9E", i64 noundef 72, ptr noundef nonnull @"_ZN4core3ptr133drop_in_place$LT$$LP$data_types..namespace_name..NamespaceName$C$influxdb3_write..write_buffer..buffer_segment..DatabaseBatch$RP$$GT$17h687f7c810a62f7c0E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %118, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %150 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %150 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %118 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %150 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %118 ] - %151 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %152 = insertvalue { i64, i64 } %151, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %108, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %140 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %140 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %108 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %140 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %108 ] + %141 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %142 = insertvalue { i64, i64 } %141, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %152 + ret { i64, i64 } %142 } ; Function Attrs: cold nonlazybind uwtable @@ -16341,7 +16063,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %17, i64 %16, i64 %20 %21 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %9, %21 - br i1 %.not.i, label %22, label %135 + br i1 %.not.i, label %22, label %133 22: ; preds = %14 %23 = add nuw i64 %.0.i, 1 @@ -16434,11 +16156,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %66 = xor i16 %65, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %126 - %.sroa.1316.066 = phi i16 [ %66, %.preheader.lr.ph ], [ %75, %126 ] - %.sroa.011.065 = phi ptr [ %62, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %126 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %126 ] - %.sroa.914.063 = phi i64 [ %61, %.preheader.lr.ph ], [ %79, %126 ] +.preheader: ; preds = %.preheader.lr.ph, %124 + %.sroa.1316.066 = phi i16 [ %66, %.preheader.lr.ph ], [ %75, %124 ] + %.sroa.011.065 = phi ptr [ %62, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %124 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %124 ] + %.sroa.914.063 = phi i64 [ %61, %.preheader.lr.ph ], [ %79, %124 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -16486,7 +16208,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %89, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %126 +.thread49.loopexit: ; preds = %124 %.pre = load i64, ptr %6, align 8, !alias.scope !3678, !noalias !3680 br label %.thread49 @@ -16506,88 +16228,85 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. 93: ; preds = %.thread49 %94 = shl i64 %.sroa.479.0.copyload, 5 - %95 = add i64 %94, 32 - %96 = add i64 %.sroa.479.0.copyload, 17 - %97 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %95, i64 %96) - %98 = extractvalue { i64, i1 } %97, 0 - %99 = extractvalue { i64, i1 } %97, 1 - %100 = icmp ult i64 %98, 9223372036854775793 - %101 = xor i1 %99, true - call void @llvm.assume(i1 %101), !noalias !3688 - call void @llvm.assume(i1 %100), !noalias !3688 - %102 = icmp eq i64 %98, 0 - br i1 %102, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %103 - -103: ; preds = %93 - %104 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %104), !noalias !3688 - %105 = sub nuw nsw i64 -32, %94 - %106 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %105 - call void @__rust_dealloc(ptr noundef nonnull %106, i64 noundef %98, i64 noundef 16) #66, !noalias !3689 + %95 = add i64 %94, 47 + %96 = and i64 %95, -32 + %97 = add i64 %.sroa.479.0.copyload, 17 + %98 = add nuw i64 %97, %96 + %99 = icmp ult i64 %98, 9223372036854775793 + call void @llvm.assume(i1 %99), !noalias !3688 + %100 = icmp eq i64 %98, 0 + br i1 %100, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %101 + +101: ; preds = %93 + %102 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %102), !noalias !3688 + %103 = sub nsw i64 0, %96 + %104 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %103 + call void @__rust_dealloc(ptr noundef nonnull %104, i64 noundef %98, i64 noundef 16) #66, !noalias !3689 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ %86, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %107, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %107 = add i64 %.sroa.7.013.i.i, 16 - %108 = add i64 %107, %.sroa.0.014.i.i - %109 = and i64 %108, %56 - %110 = getelementptr inbounds i8, ptr %60, i64 %109 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %110, align 1, !noalias !3671 - %111 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %112 = bitcast <16 x i1> %111 to i16 - %.not.i.i = icmp eq i16 %112, 0 + %.sroa.0.014.i.i = phi i64 [ %107, %.lr.ph.i.i ], [ %86, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %105, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %105 = add i64 %.sroa.7.013.i.i, 16 + %106 = add i64 %105, %.sroa.0.014.i.i + %107 = and i64 %106, %56 + %108 = getelementptr inbounds i8, ptr %60, i64 %107 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %108, align 1, !noalias !3671 + %109 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %110 = bitcast <16 x i1> %109 to i16 + %.not.i.i = icmp eq i16 %110, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %86, %._crit_edge ], [ %109, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %89, %._crit_edge ], [ %112, %.lr.ph.i.i ] - %113 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %114 = zext nneg i16 %113 to i64 - %115 = add i64 %.sroa.0.0.lcssa.i.i, %114 - %116 = and i64 %115, %56 - %117 = getelementptr inbounds i8, ptr %60, i64 %116 - %118 = load i8, ptr %117, align 1, !noalias !3698, !noundef !4 - %119 = icmp sgt i8 %118, -1 - br i1 %119, label %120, label %126 - -120: ; preds = %._crit_edge.i.i - %121 = load <16 x i8>, ptr %60, align 16, !noalias !3699 - %122 = icmp slt <16 x i8> %121, zeroinitializer - %123 = bitcast <16 x i1> %122 to i16 - %.not.i.i.i = icmp ne i16 %123, 0 - %124 = call i16 @llvm.cttz.i16(i16 %123, i1 true), !range !377 - %125 = zext nneg i16 %124 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %86, %._crit_edge ], [ %107, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %89, %._crit_edge ], [ %110, %.lr.ph.i.i ] + %111 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %112 = zext nneg i16 %111 to i64 + %113 = add i64 %.sroa.0.0.lcssa.i.i, %112 + %114 = and i64 %113, %56 + %115 = getelementptr inbounds i8, ptr %60, i64 %114 + %116 = load i8, ptr %115, align 1, !noalias !3698, !noundef !4 + %117 = icmp sgt i8 %116, -1 + br i1 %117, label %118, label %124 + +118: ; preds = %._crit_edge.i.i + %119 = load <16 x i8>, ptr %60, align 16, !noalias !3699 + %120 = icmp slt <16 x i8> %119, zeroinitializer + %121 = bitcast <16 x i1> %120 to i16 + %.not.i.i.i = icmp ne i16 %121, 0 + %122 = call i16 @llvm.cttz.i16(i16 %121, i1 true), !range !377 + %123 = zext nneg i16 %122 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3688 - br label %126 - -126: ; preds = %120, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %125, %120 ], [ %116, %._crit_edge.i.i ] - %127 = getelementptr inbounds i8, ptr %60, i64 %.0.i.i.i6 - %128 = lshr i64 %85, 57 - %129 = trunc i64 %128 to i8 - %130 = add i64 %.0.i.i.i6, -16 - %131 = and i64 %130, %56 - store i8 %129, ptr %127, align 1, !noalias !3698 - %gep = getelementptr i8, ptr %invariant.gep, i64 %131 - store i8 %129, ptr %gep, align 1, !noalias !3698 - %132 = load ptr, ptr %0, align 8, !alias.scope !3678, !noalias !3680, !nonnull !4, !noundef !4 + br label %124 + +124: ; preds = %118, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %123, %118 ], [ %114, %._crit_edge.i.i ] + %125 = getelementptr inbounds i8, ptr %60, i64 %.0.i.i.i6 + %126 = lshr i64 %85, 57 + %127 = trunc i64 %126 to i8 + %128 = add i64 %.0.i.i.i6, -16 + %129 = and i64 %128, %56 + store i8 %127, ptr %125, align 1, !noalias !3698 + %gep = getelementptr i8, ptr %invariant.gep, i64 %129 + store i8 %127, ptr %gep, align 1, !noalias !3698 + %130 = load ptr, ptr %0, align 8, !alias.scope !3678, !noalias !3680, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %78, -1 %.neg28.i.i = shl i64 %.neg.i.i, 5 - %133 = getelementptr inbounds i8, ptr %132, i64 %.neg28.i.i + %131 = getelementptr inbounds i8, ptr %130, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 5 - %134 = getelementptr inbounds i8, ptr %60, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %134, ptr noundef nonnull align 1 dereferenceable(32) %133, i64 32, i1 false), !noalias !3688 + %132 = getelementptr inbounds i8, ptr %60, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %132, ptr noundef nonnull align 1 dereferenceable(32) %131, i64 32, i1 false), !noalias !3688 %.not = icmp eq i64 %79, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -135: ; preds = %14 +133: ; preds = %14 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %3, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h41a6a8cf3a87b669E", i64 noundef 32, ptr noundef nonnull @"_ZN4core3ptr117drop_in_place$LT$$LP$alloc..string..String$C$alloc..sync..Arc$LT$influxdb3_write..catalog..DatabaseSchema$GT$$RP$$GT$17h39ccedf3665cfd40E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %103, %93, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %135 - %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %135 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %93 ], [ -9223372036854775807, %103 ] +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %101, %93, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %133 + %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %133 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %93 ], [ -9223372036854775807, %101 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret i64 %.sroa.0.0.i } @@ -16623,7 +16342,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %17, i64 %16, i64 %20 %21 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %9, %21 - br i1 %.not.i, label %22, label %147 + br i1 %.not.i, label %22, label %137 22: ; preds = %14 %23 = add nuw i64 %.0.i, 1 @@ -16718,11 +16437,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %70 = xor i16 %69, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %138 - %.sroa.1316.066 = phi i16 [ %70, %.preheader.lr.ph ], [ %79, %138 ] - %.sroa.011.065 = phi ptr [ %66, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %138 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %138 ] - %.sroa.914.063 = phi i64 [ %65, %.preheader.lr.ph ], [ %83, %138 ] +.preheader: ; preds = %.preheader.lr.ph, %128 + %.sroa.1316.066 = phi i16 [ %70, %.preheader.lr.ph ], [ %79, %128 ] + %.sroa.011.065 = phi ptr [ %66, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %128 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %128 ] + %.sroa.914.063 = phi i64 [ %65, %.preheader.lr.ph ], [ %83, %128 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -16770,7 +16489,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %93, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %138 +.thread49.loopexit: ; preds = %128 %.pre = load i64, ptr %6, align 8, !alias.scope !3750, !noalias !3752 br label %.thread49 @@ -16789,99 +16508,86 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %96, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %97 97: ; preds = %.thread49 - %98 = add i64 %.sroa.479.0.copyload, 1 - %99 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %98, i64 72) - %100 = extractvalue { i64, i1 } %99, 1 - %101 = xor i1 %100, true - call void @llvm.assume(i1 %101), !noalias !3760 - %102 = extractvalue { i64, i1 } %99, 0 - %103 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %102, i64 15) - %104 = extractvalue { i64, i1 } %103, 1 - %105 = xor i1 %104, true - call void @llvm.assume(i1 %105), !noalias !3760 - %106 = extractvalue { i64, i1 } %103, 0 - %107 = and i64 %106, -16 - %108 = add i64 %.sroa.479.0.copyload, 17 - %109 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %107, i64 %108) - %110 = extractvalue { i64, i1 } %109, 0 - %111 = extractvalue { i64, i1 } %109, 1 - %112 = icmp ult i64 %110, 9223372036854775793 - %113 = xor i1 %111, true - call void @llvm.assume(i1 %113), !noalias !3760 - call void @llvm.assume(i1 %112), !noalias !3760 - %114 = icmp eq i64 %110, 0 - br i1 %114, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %115 - -115: ; preds = %97 - %116 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %116), !noalias !3760 - %117 = sub nsw i64 0, %107 - %118 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %117 - call void @__rust_dealloc(ptr noundef nonnull %118, i64 noundef %110, i64 noundef 16) #66, !noalias !3761 + %98 = mul i64 %.sroa.479.0.copyload, 72 + %99 = add i64 %98, 87 + %100 = and i64 %99, -16 + %101 = add i64 %.sroa.479.0.copyload, 17 + %102 = add nuw i64 %101, %100 + %103 = icmp ult i64 %102, 9223372036854775793 + call void @llvm.assume(i1 %103), !noalias !3760 + %104 = icmp eq i64 %102, 0 + br i1 %104, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %105 + +105: ; preds = %97 + %106 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %106), !noalias !3760 + %107 = sub nsw i64 0, %100 + %108 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %107 + call void @__rust_dealloc(ptr noundef nonnull %108, i64 noundef %102, i64 noundef 16) #66, !noalias !3761 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %121, %.lr.ph.i.i ], [ %90, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %119, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %119 = add i64 %.sroa.7.013.i.i, 16 - %120 = add i64 %119, %.sroa.0.014.i.i - %121 = and i64 %120, %60 - %122 = getelementptr inbounds i8, ptr %64, i64 %121 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %122, align 1, !noalias !3743 - %123 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %124 = bitcast <16 x i1> %123 to i16 - %.not.i.i = icmp eq i16 %124, 0 + %.sroa.0.014.i.i = phi i64 [ %111, %.lr.ph.i.i ], [ %90, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %109 = add i64 %.sroa.7.013.i.i, 16 + %110 = add i64 %109, %.sroa.0.014.i.i + %111 = and i64 %110, %60 + %112 = getelementptr inbounds i8, ptr %64, i64 %111 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %112, align 1, !noalias !3743 + %113 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %114 = bitcast <16 x i1> %113 to i16 + %.not.i.i = icmp eq i16 %114, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %90, %._crit_edge ], [ %121, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %93, %._crit_edge ], [ %124, %.lr.ph.i.i ] - %125 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %126 = zext nneg i16 %125 to i64 - %127 = add i64 %.sroa.0.0.lcssa.i.i, %126 - %128 = and i64 %127, %60 - %129 = getelementptr inbounds i8, ptr %64, i64 %128 - %130 = load i8, ptr %129, align 1, !noalias !3770, !noundef !4 - %131 = icmp sgt i8 %130, -1 - br i1 %131, label %132, label %138 - -132: ; preds = %._crit_edge.i.i - %133 = load <16 x i8>, ptr %64, align 16, !noalias !3771 - %134 = icmp slt <16 x i8> %133, zeroinitializer - %135 = bitcast <16 x i1> %134 to i16 - %.not.i.i.i = icmp ne i16 %135, 0 - %136 = call i16 @llvm.cttz.i16(i16 %135, i1 true), !range !377 - %137 = zext nneg i16 %136 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %90, %._crit_edge ], [ %111, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %115 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %116 = zext nneg i16 %115 to i64 + %117 = add i64 %.sroa.0.0.lcssa.i.i, %116 + %118 = and i64 %117, %60 + %119 = getelementptr inbounds i8, ptr %64, i64 %118 + %120 = load i8, ptr %119, align 1, !noalias !3770, !noundef !4 + %121 = icmp sgt i8 %120, -1 + br i1 %121, label %122, label %128 + +122: ; preds = %._crit_edge.i.i + %123 = load <16 x i8>, ptr %64, align 16, !noalias !3771 + %124 = icmp slt <16 x i8> %123, zeroinitializer + %125 = bitcast <16 x i1> %124 to i16 + %.not.i.i.i = icmp ne i16 %125, 0 + %126 = call i16 @llvm.cttz.i16(i16 %125, i1 true), !range !377 + %127 = zext nneg i16 %126 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3760 - br label %138 - -138: ; preds = %132, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %137, %132 ], [ %128, %._crit_edge.i.i ] - %139 = getelementptr inbounds i8, ptr %64, i64 %.0.i.i.i6 - %140 = lshr i64 %89, 57 - %141 = trunc i64 %140 to i8 - %142 = add i64 %.0.i.i.i6, -16 - %143 = and i64 %142, %60 - store i8 %141, ptr %139, align 1, !noalias !3770 - %gep = getelementptr i8, ptr %invariant.gep, i64 %143 - store i8 %141, ptr %gep, align 1, !noalias !3770 - %144 = load ptr, ptr %0, align 8, !alias.scope !3750, !noalias !3752, !nonnull !4, !noundef !4 + br label %128 + +128: ; preds = %122, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %127, %122 ], [ %118, %._crit_edge.i.i ] + %129 = getelementptr inbounds i8, ptr %64, i64 %.0.i.i.i6 + %130 = lshr i64 %89, 57 + %131 = trunc i64 %130 to i8 + %132 = add i64 %.0.i.i.i6, -16 + %133 = and i64 %132, %60 + store i8 %131, ptr %129, align 1, !noalias !3770 + %gep = getelementptr i8, ptr %invariant.gep, i64 %133 + store i8 %131, ptr %gep, align 1, !noalias !3770 + %134 = load ptr, ptr %0, align 8, !alias.scope !3750, !noalias !3752, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %82, -1 %.neg28.i.i = mul i64 %.neg.i.i, 72 - %145 = getelementptr inbounds i8, ptr %144, i64 %.neg28.i.i + %135 = getelementptr inbounds i8, ptr %134, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 72 - %146 = getelementptr inbounds i8, ptr %64, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %146, ptr noundef nonnull align 1 dereferenceable(72) %145, i64 72, i1 false), !noalias !3760 + %136 = getelementptr inbounds i8, ptr %64, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %136, ptr noundef nonnull align 1 dereferenceable(72) %135, i64 72, i1 false), !noalias !3760 %.not = icmp eq i64 %83, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -147: ; preds = %14 +137: ; preds = %14 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %3, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h9ee294dda3797c55E", i64 noundef 72, ptr noundef nonnull @"_ZN4core3ptr84drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..DatabaseTables$RP$$GT$17h15c4173cd066b4f9E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %115, %97, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %147 - %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %147 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %97 ], [ -9223372036854775807, %115 ] +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %105, %97, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %11, %137 + %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %137 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %97 ], [ -9223372036854775807, %105 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret i64 %.sroa.0.0.i } @@ -16918,7 +16624,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %150 + br i1 %.not.i, label %25, label %140 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -17014,11 +16720,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %73 = xor i16 %72, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %141 - %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %141 ] - %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %141 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %141 ] - %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %141 ] +.preheader: ; preds = %.preheader.lr.ph, %131 + %.sroa.1316.066 = phi i16 [ %73, %.preheader.lr.ph ], [ %82, %131 ] + %.sroa.011.065 = phi ptr [ %69, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %131 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %131 ] + %.sroa.914.063 = phi i64 [ %68, %.preheader.lr.ph ], [ %86, %131 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -17066,7 +16772,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %96, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %141 +.thread49.loopexit: ; preds = %131 %.pre = load i64, ptr %8, align 8, !alias.scope !3822, !noalias !3824 br label %.thread49 @@ -17085,104 +16791,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %99, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %100 100: ; preds = %.thread49 - %101 = add i64 %.sroa.479.0.copyload, 1 - %102 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %101, i64 72) - %103 = extractvalue { i64, i1 } %102, 1 - %104 = xor i1 %103, true - call void @llvm.assume(i1 %104), !noalias !3832 - %105 = extractvalue { i64, i1 } %102, 0 - %106 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %105, i64 15) - %107 = extractvalue { i64, i1 } %106, 1 - %108 = xor i1 %107, true - call void @llvm.assume(i1 %108), !noalias !3832 - %109 = extractvalue { i64, i1 } %106, 0 - %110 = and i64 %109, -16 - %111 = add i64 %.sroa.479.0.copyload, 17 - %112 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %110, i64 %111) - %113 = extractvalue { i64, i1 } %112, 0 - %114 = extractvalue { i64, i1 } %112, 1 - %115 = icmp ult i64 %113, 9223372036854775793 - %116 = xor i1 %114, true - call void @llvm.assume(i1 %116), !noalias !3832 - call void @llvm.assume(i1 %115), !noalias !3832 - %117 = icmp eq i64 %113, 0 - br i1 %117, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %118 - -118: ; preds = %100 - %119 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %119), !noalias !3832 - %120 = sub nsw i64 0, %110 - %121 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %120 - call void @__rust_dealloc(ptr noundef nonnull %121, i64 noundef %113, i64 noundef 16) #66, !noalias !3833 + %101 = mul i64 %.sroa.479.0.copyload, 72 + %102 = add i64 %101, 87 + %103 = and i64 %102, -16 + %104 = add i64 %.sroa.479.0.copyload, 17 + %105 = add nuw i64 %104, %103 + %106 = icmp ult i64 %105, 9223372036854775793 + call void @llvm.assume(i1 %106), !noalias !3832 + %107 = icmp eq i64 %105, 0 + br i1 %107, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %108 + +108: ; preds = %100 + %109 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %109), !noalias !3832 + %110 = sub nsw i64 0, %103 + %111 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %110 + call void @__rust_dealloc(ptr noundef nonnull %111, i64 noundef %105, i64 noundef 16) #66, !noalias !3833 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %124, %.lr.ph.i.i ], [ %93, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %122, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %122 = add i64 %.sroa.7.013.i.i, 16 - %123 = add i64 %122, %.sroa.0.014.i.i - %124 = and i64 %123, %63 - %125 = getelementptr inbounds i8, ptr %67, i64 %124 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %125, align 1, !noalias !3815 - %126 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %127 = bitcast <16 x i1> %126 to i16 - %.not.i.i = icmp eq i16 %127, 0 + %.sroa.0.014.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ %93, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %112 = add i64 %.sroa.7.013.i.i, 16 + %113 = add i64 %112, %.sroa.0.014.i.i + %114 = and i64 %113, %63 + %115 = getelementptr inbounds i8, ptr %67, i64 %114 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %115, align 1, !noalias !3815 + %116 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %117 = bitcast <16 x i1> %116 to i16 + %.not.i.i = icmp eq i16 %117, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %124, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %127, %.lr.ph.i.i ] - %128 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %129 = zext nneg i16 %128 to i64 - %130 = add i64 %.sroa.0.0.lcssa.i.i, %129 - %131 = and i64 %130, %63 - %132 = getelementptr inbounds i8, ptr %67, i64 %131 - %133 = load i8, ptr %132, align 1, !noalias !3842, !noundef !4 - %134 = icmp sgt i8 %133, -1 - br i1 %134, label %135, label %141 - -135: ; preds = %._crit_edge.i.i - %136 = load <16 x i8>, ptr %67, align 16, !noalias !3843 - %137 = icmp slt <16 x i8> %136, zeroinitializer - %138 = bitcast <16 x i1> %137 to i16 - %.not.i.i.i = icmp ne i16 %138, 0 - %139 = call i16 @llvm.cttz.i16(i16 %138, i1 true), !range !377 - %140 = zext nneg i16 %139 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %96, %._crit_edge ], [ %117, %.lr.ph.i.i ] + %118 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %119 = zext nneg i16 %118 to i64 + %120 = add i64 %.sroa.0.0.lcssa.i.i, %119 + %121 = and i64 %120, %63 + %122 = getelementptr inbounds i8, ptr %67, i64 %121 + %123 = load i8, ptr %122, align 1, !noalias !3842, !noundef !4 + %124 = icmp sgt i8 %123, -1 + br i1 %124, label %125, label %131 + +125: ; preds = %._crit_edge.i.i + %126 = load <16 x i8>, ptr %67, align 16, !noalias !3843 + %127 = icmp slt <16 x i8> %126, zeroinitializer + %128 = bitcast <16 x i1> %127 to i16 + %.not.i.i.i = icmp ne i16 %128, 0 + %129 = call i16 @llvm.cttz.i16(i16 %128, i1 true), !range !377 + %130 = zext nneg i16 %129 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3832 - br label %141 - -141: ; preds = %135, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %140, %135 ], [ %131, %._crit_edge.i.i ] - %142 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 - %143 = lshr i64 %92, 57 - %144 = trunc i64 %143 to i8 - %145 = add i64 %.0.i.i.i6, -16 - %146 = and i64 %145, %63 - store i8 %144, ptr %142, align 1, !noalias !3842 - %gep = getelementptr i8, ptr %invariant.gep, i64 %146 - store i8 %144, ptr %gep, align 1, !noalias !3842 - %147 = load ptr, ptr %0, align 8, !alias.scope !3822, !noalias !3824, !nonnull !4, !noundef !4 + br label %131 + +131: ; preds = %125, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %130, %125 ], [ %121, %._crit_edge.i.i ] + %132 = getelementptr inbounds i8, ptr %67, i64 %.0.i.i.i6 + %133 = lshr i64 %92, 57 + %134 = trunc i64 %133 to i8 + %135 = add i64 %.0.i.i.i6, -16 + %136 = and i64 %135, %63 + store i8 %134, ptr %132, align 1, !noalias !3842 + %gep = getelementptr i8, ptr %invariant.gep, i64 %136 + store i8 %134, ptr %gep, align 1, !noalias !3842 + %137 = load ptr, ptr %0, align 8, !alias.scope !3822, !noalias !3824, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %85, -1 %.neg28.i.i = mul i64 %.neg.i.i, 72 - %148 = getelementptr inbounds i8, ptr %147, i64 %.neg28.i.i + %138 = getelementptr inbounds i8, ptr %137, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 72 - %149 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %149, ptr noundef nonnull align 1 dereferenceable(72) %148, i64 72, i1 false), !noalias !3832 + %139 = getelementptr inbounds i8, ptr %67, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %139, ptr noundef nonnull align 1 dereferenceable(72) %138, i64 72, i1 false), !noalias !3832 %.not = icmp eq i64 %86, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -150: ; preds = %17 +140: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h283a941baa99cd31E", i64 noundef 72, ptr noundef nonnull @"_ZN4core3ptr111drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..write_buffer..buffer_segment..TableBuffer$RP$$GT$17h955349c66a053d4fE.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %118, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %150 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %150 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %118 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %150 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %118 ] - %151 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %152 = insertvalue { i64, i64 } %151, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %108, %100, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %140 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %140 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %100 ], [ 16, %108 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %140 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %100 ], [ -9223372036854775807, %108 ] + %141 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %142 = insertvalue { i64, i64 } %141, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %152 + ret { i64, i64 } %142 } ; Function Attrs: cold nonlazybind uwtable @@ -17217,7 +16910,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %143 + br i1 %.not.i, label %25, label %138 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -17311,11 +17004,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %71 = xor i16 %70, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %134 - %.sroa.1316.066 = phi i16 [ %71, %.preheader.lr.ph ], [ %80, %134 ] - %.sroa.011.065 = phi ptr [ %67, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %134 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %134 ] - %.sroa.914.063 = phi i64 [ %66, %.preheader.lr.ph ], [ %84, %134 ] +.preheader: ; preds = %.preheader.lr.ph, %129 + %.sroa.1316.066 = phi i16 [ %71, %.preheader.lr.ph ], [ %80, %129 ] + %.sroa.011.065 = phi ptr [ %67, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %129 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %129 ] + %.sroa.914.063 = phi i64 [ %66, %.preheader.lr.ph ], [ %84, %129 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -17363,7 +17056,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %.not12.i.i = icmp eq i16 %94, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %134 +.thread49.loopexit: ; preds = %129 %.pre = load i64, ptr %8, align 8, !alias.scope !3894, !noalias !3896 br label %.thread49 @@ -17382,98 +17075,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %97, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %98 98: ; preds = %.thread49 - %99 = add i64 %.sroa.479.0.copyload, 1 - %100 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %99, i64 96) - %101 = extractvalue { i64, i1 } %100, 1 - %102 = xor i1 %101, true - call void @llvm.assume(i1 %102), !noalias !3904 - %103 = extractvalue { i64, i1 } %100, 0 - %104 = add i64 %.sroa.479.0.copyload, 17 - %105 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %103, i64 %104) - %106 = extractvalue { i64, i1 } %105, 0 - %107 = extractvalue { i64, i1 } %105, 1 - %108 = icmp ult i64 %106, 9223372036854775793 - %109 = xor i1 %107, true - call void @llvm.assume(i1 %109), !noalias !3904 - call void @llvm.assume(i1 %108), !noalias !3904 - %110 = icmp eq i64 %106, 0 - br i1 %110, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %111 - -111: ; preds = %98 - %112 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %112), !noalias !3904 - %113 = sub nsw i64 0, %103 - %114 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %113 - call void @__rust_dealloc(ptr noundef nonnull %114, i64 noundef %106, i64 noundef 16) #66, !noalias !3905 + %99 = mul i64 %.sroa.479.0.copyload, 96 + %100 = add i64 %99, 111 + %101 = and i64 %100, -32 + %102 = add i64 %.sroa.479.0.copyload, 17 + %103 = add nuw i64 %102, %101 + %104 = icmp ult i64 %103, 9223372036854775793 + call void @llvm.assume(i1 %104), !noalias !3904 + %105 = icmp eq i64 %103, 0 + br i1 %105, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit, label %106 + +106: ; preds = %98 + %107 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %107), !noalias !3904 + %108 = sub nsw i64 0, %101 + %109 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %108 + call void @__rust_dealloc(ptr noundef nonnull %109, i64 noundef %103, i64 noundef 16) #66, !noalias !3905 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %117, %.lr.ph.i.i ], [ %91, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %115, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %115 = add i64 %.sroa.7.013.i.i, 16 - %116 = add i64 %115, %.sroa.0.014.i.i - %117 = and i64 %116, %61 - %118 = getelementptr inbounds i8, ptr %65, i64 %117 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %118, align 1, !noalias !3887 - %119 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %120 = bitcast <16 x i1> %119 to i16 - %.not.i.i = icmp eq i16 %120, 0 + %.sroa.0.014.i.i = phi i64 [ %112, %.lr.ph.i.i ], [ %91, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %110, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %110 = add i64 %.sroa.7.013.i.i, 16 + %111 = add i64 %110, %.sroa.0.014.i.i + %112 = and i64 %111, %61 + %113 = getelementptr inbounds i8, ptr %65, i64 %112 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %113, align 1, !noalias !3887 + %114 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %115 = bitcast <16 x i1> %114 to i16 + %.not.i.i = icmp eq i16 %115, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %91, %._crit_edge ], [ %117, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %94, %._crit_edge ], [ %120, %.lr.ph.i.i ] - %121 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 - %122 = zext nneg i16 %121 to i64 - %123 = add i64 %.sroa.0.0.lcssa.i.i, %122 - %124 = and i64 %123, %61 - %125 = getelementptr inbounds i8, ptr %65, i64 %124 - %126 = load i8, ptr %125, align 1, !noalias !3914, !noundef !4 - %127 = icmp sgt i8 %126, -1 - br i1 %127, label %128, label %134 - -128: ; preds = %._crit_edge.i.i - %129 = load <16 x i8>, ptr %65, align 16, !noalias !3915 - %130 = icmp slt <16 x i8> %129, zeroinitializer - %131 = bitcast <16 x i1> %130 to i16 - %.not.i.i.i = icmp ne i16 %131, 0 - %132 = call i16 @llvm.cttz.i16(i16 %131, i1 true), !range !377 - %133 = zext nneg i16 %132 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %91, %._crit_edge ], [ %112, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %94, %._crit_edge ], [ %115, %.lr.ph.i.i ] + %116 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !377 + %117 = zext nneg i16 %116 to i64 + %118 = add i64 %.sroa.0.0.lcssa.i.i, %117 + %119 = and i64 %118, %61 + %120 = getelementptr inbounds i8, ptr %65, i64 %119 + %121 = load i8, ptr %120, align 1, !noalias !3914, !noundef !4 + %122 = icmp sgt i8 %121, -1 + br i1 %122, label %123, label %129 + +123: ; preds = %._crit_edge.i.i + %124 = load <16 x i8>, ptr %65, align 16, !noalias !3915 + %125 = icmp slt <16 x i8> %124, zeroinitializer + %126 = bitcast <16 x i1> %125 to i16 + %.not.i.i.i = icmp ne i16 %126, 0 + %127 = call i16 @llvm.cttz.i16(i16 %126, i1 true), !range !377 + %128 = zext nneg i16 %127 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !3904 - br label %134 - -134: ; preds = %128, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %133, %128 ], [ %124, %._crit_edge.i.i ] - %135 = getelementptr inbounds i8, ptr %65, i64 %.0.i.i.i6 - %136 = lshr i64 %90, 57 - %137 = trunc i64 %136 to i8 - %138 = add i64 %.0.i.i.i6, -16 - %139 = and i64 %138, %61 - store i8 %137, ptr %135, align 1, !noalias !3914 - %gep = getelementptr i8, ptr %invariant.gep, i64 %139 - store i8 %137, ptr %gep, align 1, !noalias !3914 - %140 = load ptr, ptr %0, align 8, !alias.scope !3894, !noalias !3896, !nonnull !4, !noundef !4 + br label %129 + +129: ; preds = %123, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %128, %123 ], [ %119, %._crit_edge.i.i ] + %130 = getelementptr inbounds i8, ptr %65, i64 %.0.i.i.i6 + %131 = lshr i64 %90, 57 + %132 = trunc i64 %131 to i8 + %133 = add i64 %.0.i.i.i6, -16 + %134 = and i64 %133, %61 + store i8 %132, ptr %130, align 1, !noalias !3914 + %gep = getelementptr i8, ptr %invariant.gep, i64 %134 + store i8 %132, ptr %gep, align 1, !noalias !3914 + %135 = load ptr, ptr %0, align 8, !alias.scope !3894, !noalias !3896, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %83, -1 %.neg28.i.i = mul i64 %.neg.i.i, 96 - %141 = getelementptr inbounds i8, ptr %140, i64 %.neg28.i.i + %136 = getelementptr inbounds i8, ptr %135, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 96 - %142 = getelementptr inbounds i8, ptr %65, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(96) %142, ptr noundef nonnull align 1 dereferenceable(96) %141, i64 96, i1 false), !noalias !3904 + %137 = getelementptr inbounds i8, ptr %65, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(96) %137, ptr noundef nonnull align 1 dereferenceable(96) %136, i64 96, i1 false), !noalias !3904 %.not = icmp eq i64 %84, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -143: ; preds = %17 +138: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h748fe396d1321117E", i64 noundef 96, ptr noundef nonnull @"_ZN4core3ptr94drop_in_place$LT$$LP$alloc..string..String$C$influxdb3_write..write_buffer..TableBatch$RP$$GT$17h11124fa8221a1b35E.llvm.171605402441639591") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %111, %98, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %143 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %143 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %98 ], [ 16, %111 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %143 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %98 ], [ -9223372036854775807, %111 ] - %144 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %145 = insertvalue { i64, i64 } %144, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0277f5e68793b7b3E.exit: ; preds = %106, %98, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i, %13, %138 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %138 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %98 ], [ 16, %106 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %138 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h0d07a08bae59a84eE.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %98 ], [ -9223372036854775807, %106 ] + %139 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %140 = insertvalue { i64, i64 } %139, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %145 + ret { i64, i64 } %140 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind uwtable diff --git a/bench/influxdb-rs/optimized/20e6y40qoje898dk.ll b/bench/influxdb-rs/optimized/20e6y40qoje898dk.ll index dd4b30bffd5..879dbfae6f1 100644 --- a/bench/influxdb-rs/optimized/20e6y40qoje898dk.ll +++ b/bench/influxdb-rs/optimized/20e6y40qoje898dk.ll @@ -3588,45 +3588,31 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.l %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.7682522193326259475.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.7682522193326259475.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #21 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.7682522193326259475.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.7682522193326259475.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #21 br label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.7682522193326259475.exit" -"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.7682522193326259475.exit": ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.7682522193326259475.exit, %28 +"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.7682522193326259475.exit": ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.7682522193326259475.exit, %19 ret void } @@ -3650,45 +3636,31 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17h5 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !1858) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !1858, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #21, !noalias !1858 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !1858, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #21, !noalias !1858 br label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit -_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit: ; preds = %22, %8, %4 ret void } @@ -3702,45 +3674,31 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17h9 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !1861) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !1861, !nonnull !4, !noundef !4 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #21, !noalias !1861 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !1861, !nonnull !4, !noundef !4 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #21, !noalias !1861 br label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit -_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hcde882ad281f143eE.llvm.7682522193326259475.exit: ; preds = %22, %8, %4 ret void } diff --git a/bench/influxdb-rs/optimized/2du585cd6kvsz0m5.ll b/bench/influxdb-rs/optimized/2du585cd6kvsz0m5.ll index d731c7668f3..462958aa2f2 100644 --- a/bench/influxdb-rs/optimized/2du585cd6kvsz0m5.ll +++ b/bench/influxdb-rs/optimized/2du585cd6kvsz0m5.ll @@ -172,46 +172,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !43, !noundef !7 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h13a0c7446e2af46cE.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #29, !noalias !44 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h13a0c7446e2af46cE.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #29, !noalias !44 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h13a0c7446e2af46cE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h13a0c7446e2af46cE.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h13a0c7446e2af46cE.exit": ; preds = %1, %5, %23 ret void } @@ -565,45 +551,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.15 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.15638356858648770541.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.15638356858648770541.exit - %29 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #29 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.15638356858648770541.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.15638356858648770541.exit + %20 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #29 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.15638356858648770541.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.15638356858648770541.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.15638356858648770541.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.15638356858648770541.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.15638356858648770541.exit, %19 ret void } @@ -731,45 +703,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17he8b6e77 _ZN9hashbrown3raw13RawTableInner13drop_elements17hd1355f7d840c86f1E.llvm.15638356858648770541.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h62c2f3b314f95b4dE.llvm.15638356858648770541.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !133) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h63d5086772893d33E.llvm.15638356858648770541.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hd1355f7d840c86f1E.llvm.15638356858648770541.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !133, !nonnull !7, !noundef !7 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #29, !noalias !133 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h63d5086772893d33E.llvm.15638356858648770541.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hd1355f7d840c86f1E.llvm.15638356858648770541.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !133, !nonnull !7, !noundef !7 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #29, !noalias !133 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h63d5086772893d33E.llvm.15638356858648770541.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h63d5086772893d33E.llvm.15638356858648770541.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hd1355f7d840c86f1E.llvm.15638356858648770541.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h63d5086772893d33E.llvm.15638356858648770541.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hd1355f7d840c86f1E.llvm.15638356858648770541.exit, %4 ret void } @@ -1011,7 +969,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %153 + br i1 %.not.i, label %30, label %148 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -1132,11 +1090,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %11) #27 br label %common.resume -.preheader: ; preds = %.preheader.preheader, %141 - %.sroa.1337.096 = phi i16 [ %87, %141 ], [ %75, %.preheader.preheader ] - %.sroa.935.095 = phi i64 [ %91, %141 ], [ %70, %.preheader.preheader ] - %.sroa.032.094 = phi ptr [ %.sroa.032.1.lcssa, %141 ], [ %71, %.preheader.preheader ] - %.sroa.533.093 = phi i64 [ %.sroa.533.1.lcssa, %141 ], [ 0, %.preheader.preheader ] +.preheader: ; preds = %.preheader.preheader, %136 + %.sroa.1337.096 = phi i16 [ %87, %136 ], [ %75, %.preheader.preheader ] + %.sroa.935.095 = phi i64 [ %91, %136 ], [ %70, %.preheader.preheader ] + %.sroa.032.094 = phi ptr [ %.sroa.032.1.lcssa, %136 ], [ %71, %.preheader.preheader ] + %.sroa.533.093 = phi i64 [ %.sroa.533.1.lcssa, %136 ], [ 0, %.preheader.preheader ] %.not.not.i87 = icmp eq i16 %.sroa.1337.096, 0 br i1 %.not.not.i87, label %.noexc2, label %._crit_edge @@ -1174,7 +1132,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. %96 = invoke noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h1e7ed96383ea8eb0E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %95) to label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" unwind label %77 -.thread70.loopexit: ; preds = %141 +.thread70.loopexit: ; preds = %136 %.pre108 = load i64, ptr %13, align 8, !alias.scope !201, !noalias !202 %.pre109 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !169 br label %.thread70 @@ -1200,159 +1158,152 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hb6347a8fe0768620E.exit. br i1 %100, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit", label %101 101: ; preds = %.thread70 - %102 = add i64 %.val1.i.i, 1 - %103 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %102, i64 48) - %104 = extractvalue { i64, i1 } %103, 1 - %105 = xor i1 %104, true - tail call void @llvm.assume(i1 %105) - %106 = extractvalue { i64, i1 } %103, 0 - %107 = add i64 %.val1.i.i, 17 - %108 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %106, i64 %107) - %109 = extractvalue { i64, i1 } %108, 0 - %110 = extractvalue { i64, i1 } %108, 1 - %111 = icmp ult i64 %109, 9223372036854775793 - %112 = xor i1 %110, true - tail call void @llvm.assume(i1 %112) - tail call void @llvm.assume(i1 %111) - %113 = icmp eq i64 %109, 0 - br i1 %113, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit", label %114 - -114: ; preds = %101 - %115 = icmp ne ptr %.val.i.i, null - tail call void @llvm.assume(i1 %115) - %116 = sub nsw i64 0, %106 - %117 = getelementptr inbounds i8, ptr %.val.i.i, i64 %116 - tail call void @__rust_dealloc(ptr noundef nonnull %117, i64 noundef %109, i64 noundef 16) #29, !noalias !216 + %102 = mul i64 %.val1.i.i, 48 + %103 = add i64 %102, 63 + %104 = and i64 %103, -16 + %105 = add i64 %.val1.i.i, 17 + %106 = add nuw i64 %105, %104 + %107 = icmp ult i64 %106, 9223372036854775793 + tail call void @llvm.assume(i1 %107) + %108 = icmp eq i64 %106, 0 + br i1 %108, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit", label %109 + +109: ; preds = %101 + %110 = icmp ne ptr %.val.i.i, null + tail call void @llvm.assume(i1 %110) + %111 = sub nsw i64 0, %104 + %112 = getelementptr inbounds i8, ptr %.val.i.i, i64 %111 + tail call void @__rust_dealloc(ptr noundef nonnull %112, i64 noundef %106, i64 noundef 16) #29, !noalias !216 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit": ; preds = %.thread70, %101, %114 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit": ; preds = %.thread70, %101, %109 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !169 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6f3af05fd57d1996E.exit "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit": ; preds = %._crit_edge %.sroa.617.0..sroa_idx.i.i.val3 = load i64, ptr %.sroa.617.i.i.sroa.4.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noundef !7 - %118 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %96 - %119 = getelementptr inbounds i8, ptr %69, i64 %118 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %119, align 1, !noalias !221 - %120 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %121 = bitcast <16 x i1> %120 to i16 - %.not6.i.i = icmp eq i16 %121, 0 + %113 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %96 + %114 = getelementptr inbounds i8, ptr %69, i64 %113 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %114, align 1, !noalias !221 + %115 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %116 = bitcast <16 x i1> %115 to i16 + %.not6.i.i = icmp eq i16 %116, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i .lr.ph.i.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit", %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %124, %.lr.ph.i.i ], [ %118, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ] - %.sroa.7.07.i.i = phi i64 [ %122, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ] - %122 = add i64 %.sroa.7.07.i.i, 16 - %123 = add i64 %122, %.sroa.0.08.i.i - %124 = and i64 %123, %.sroa.617.0..sroa_idx.i.i.val3 - %125 = getelementptr inbounds i8, ptr %69, i64 %124 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %125, align 1, !noalias !221 - %126 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %127 = bitcast <16 x i1> %126 to i16 - %.not.i.i = icmp eq i16 %127, 0 + %.sroa.0.08.i.i = phi i64 [ %119, %.lr.ph.i.i ], [ %113, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ] + %.sroa.7.07.i.i = phi i64 [ %117, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ] + %117 = add i64 %.sroa.7.07.i.i, 16 + %118 = add i64 %117, %.sroa.0.08.i.i + %119 = and i64 %118, %.sroa.617.0..sroa_idx.i.i.val3 + %120 = getelementptr inbounds i8, ptr %69, i64 %119 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %120, align 1, !noalias !221 + %121 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %122 = bitcast <16 x i1> %121 to i16 + %.not.i.i = icmp eq i16 %122, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" - %.sroa.0.0.lcssa.i.i = phi i64 [ %118, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ], [ %124, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %121, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ], [ %127, %.lr.ph.i.i ] - %128 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 - %129 = zext nneg i16 %128 to i64 - %130 = add i64 %.sroa.0.0.lcssa.i.i, %129 - %131 = and i64 %130, %.sroa.617.0..sroa_idx.i.i.val3 - %132 = getelementptr inbounds i8, ptr %69, i64 %131 - %133 = load i8, ptr %132, align 1, !noundef !7 - %134 = icmp sgt i8 %133, -1 - br i1 %134, label %135, label %141 - -135: ; preds = %._crit_edge.i.i - %136 = load <16 x i8>, ptr %69, align 16, !noalias !224 - %137 = icmp slt <16 x i8> %136, zeroinitializer - %138 = bitcast <16 x i1> %137 to i16 - %.not.i.i.i = icmp ne i16 %138, 0 - %139 = tail call i16 @llvm.cttz.i16(i16 %138, i1 true), !range !67 - %140 = zext nneg i16 %139 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %113, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ], [ %119, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %116, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h3fe6cbe0fa13ef0bE.exit" ], [ %122, %.lr.ph.i.i ] + %123 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !67 + %124 = zext nneg i16 %123 to i64 + %125 = add i64 %.sroa.0.0.lcssa.i.i, %124 + %126 = and i64 %125, %.sroa.617.0..sroa_idx.i.i.val3 + %127 = getelementptr inbounds i8, ptr %69, i64 %126 + %128 = load i8, ptr %127, align 1, !noundef !7 + %129 = icmp sgt i8 %128, -1 + br i1 %129, label %130, label %136 + +130: ; preds = %._crit_edge.i.i + %131 = load <16 x i8>, ptr %69, align 16, !noalias !224 + %132 = icmp slt <16 x i8> %131, zeroinitializer + %133 = bitcast <16 x i1> %132 to i16 + %.not.i.i.i = icmp ne i16 %133, 0 + %134 = tail call i16 @llvm.cttz.i16(i16 %133, i1 true), !range !67 + %135 = zext nneg i16 %134 to i64 tail call void @llvm.assume(i1 %.not.i.i.i) - br label %141 - -141: ; preds = %135, %._crit_edge.i.i - %.0.i.i.i8 = phi i64 [ %140, %135 ], [ %131, %._crit_edge.i.i ] - %142 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i8 - %143 = lshr i64 %96, 57 - %144 = trunc i64 %143 to i8 - %145 = add i64 %.0.i.i.i8, -16 - %146 = and i64 %145, %.sroa.617.0..sroa_idx.i.i.val3 - store i8 %144, ptr %142, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %146 - store i8 %144, ptr %gep, align 1 - %147 = load ptr, ptr %0, align 8, !alias.scope !201, !noalias !202, !nonnull !7, !noundef !7 + br label %136 + +136: ; preds = %130, %._crit_edge.i.i + %.0.i.i.i8 = phi i64 [ %135, %130 ], [ %126, %._crit_edge.i.i ] + %137 = getelementptr inbounds i8, ptr %69, i64 %.0.i.i.i8 + %138 = lshr i64 %96, 57 + %139 = trunc i64 %138 to i8 + %140 = add i64 %.0.i.i.i8, -16 + %141 = and i64 %140, %.sroa.617.0..sroa_idx.i.i.val3 + store i8 %139, ptr %137, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %141 + store i8 %139, ptr %gep, align 1 + %142 = load ptr, ptr %0, align 8, !alias.scope !201, !noalias !202, !nonnull !7, !noundef !7 %.neg.i.i = mul i64 %90, -48 - %148 = getelementptr i8, ptr %147, i64 %.neg.i.i - %149 = getelementptr i8, ptr %148, i64 -48 - %150 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !169, !nonnull !7, !noundef !7 + %143 = getelementptr i8, ptr %142, i64 %.neg.i.i + %144 = getelementptr i8, ptr %143, i64 -48 + %145 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !169, !nonnull !7, !noundef !7 %.neg28.i.i = mul i64 %.0.i.i.i8, -48 - %151 = getelementptr i8, ptr %150, i64 %.neg28.i.i - %152 = getelementptr i8, ptr %151, i64 -48 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %152, ptr noundef nonnull align 1 dereferenceable(48) %149, i64 48, i1 false) + %146 = getelementptr i8, ptr %145, i64 %.neg28.i.i + %147 = getelementptr i8, ptr %146, i64 -48 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %147, ptr noundef nonnull align 1 dereferenceable(48) %144, i64 48, i1 false) %.not = icmp eq i64 %91, 0 br i1 %.not, label %.thread70.loopexit, label %.preheader -common.resume: ; preds = %176, %77 - %common.resume.op = phi { ptr, i32 } [ %78, %77 ], [ %177, %176 ] +common.resume: ; preds = %171, %77 + %common.resume.op = phi { ptr, i32 } [ %78, %77 ], [ %172, %171 ] resume { ptr, i32 } %common.resume.op -153: ; preds = %22 +148: ; preds = %22 tail call void @llvm.experimental.noalias.scope.decl(metadata !227) %.val18.i = load ptr, ptr %0, align 8, !alias.scope !227 - %154 = lshr i64 %26, 4 - %155 = and i64 %26, 15 - %.not.i.i.i.i.i = icmp ne i64 %155, 0 - %156 = zext i1 %.not.i.i.i.i.i to i64 - %.0.i.i.i.i.i = add nuw nsw i64 %154, %156 + %149 = lshr i64 %26, 4 + %150 = and i64 %26, 15 + %.not.i.i.i.i.i = icmp ne i64 %150, 0 + %151 = zext i1 %.not.i.i.i.i.i to i64 + %.0.i.i.i.i.i = add nuw nsw i64 %149, %151 %.not.not4.i.i = icmp eq i64 %.0.i.i.i.i.i, 0 br i1 %.not.not4.i.i, label %._crit_edge.i.i10, label %.lr.ph.i.i9 -.lr.ph.i.i9: ; preds = %153 - %157 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %157) - br label %162 - -._crit_edge.i.i10: ; preds = %162, %153 - %158 = icmp ult i64 %26, 16 - %159 = icmp ne ptr %.val18.i, null - tail call void @llvm.assume(i1 %159) - %160 = getelementptr inbounds i8, ptr %9, i64 8 - %161 = getelementptr inbounds i8, ptr %9, i64 16 - br i1 %158, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.thread.i - -162: ; preds = %162, %.lr.ph.i.i9 - %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i9 ], [ %164, %162 ] - %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i9 ], [ %163, %162 ] - %163 = add nsw i64 %.sroa.5.05.i.i, -1 - %164 = add i64 %.sroa.01.06.i.i, 16 - %165 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i - %166 = load <16 x i8>, ptr %165, align 16, !noalias !230 - %.lobit.i.i.i = ashr <16 x i8> %166, - %167 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> - %168 = or <2 x i64> %167, - store <2 x i64> %168, ptr %165, align 16, !noalias !233 - %.not.not.i.i = icmp eq i64 %163, 0 - br i1 %.not.not.i.i, label %._crit_edge.i.i10, label %162 +.lr.ph.i.i9: ; preds = %148 + %152 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %152) + br label %157 + +._crit_edge.i.i10: ; preds = %157, %148 + %153 = icmp ult i64 %26, 16 + %154 = icmp ne ptr %.val18.i, null + tail call void @llvm.assume(i1 %154) + %155 = getelementptr inbounds i8, ptr %9, i64 8 + %156 = getelementptr inbounds i8, ptr %9, i64 16 + br i1 %153, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i, label %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.thread.i + +157: ; preds = %157, %.lr.ph.i.i9 + %.sroa.01.06.i.i = phi i64 [ 0, %.lr.ph.i.i9 ], [ %159, %157 ] + %.sroa.5.05.i.i = phi i64 [ %.0.i.i.i.i.i, %.lr.ph.i.i9 ], [ %158, %157 ] + %158 = add nsw i64 %.sroa.5.05.i.i, -1 + %159 = add i64 %.sroa.01.06.i.i, 16 + %160 = getelementptr inbounds i8, ptr %.val18.i, i64 %.sroa.01.06.i.i + %161 = load <16 x i8>, ptr %160, align 16, !noalias !230 + %.lobit.i.i.i = ashr <16 x i8> %161, + %162 = bitcast <16 x i8> %.lobit.i.i.i to <2 x i64> + %163 = or <2 x i64> %162, + store <2 x i64> %163, ptr %160, align 16, !noalias !233 + %.not.not.i.i = icmp eq i64 %158, 0 + br i1 %.not.not.i.i, label %._crit_edge.i.i10, label %157 _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.thread.i: ; preds = %._crit_edge.i.i10 - %169 = getelementptr inbounds i8, ptr %.val18.i, i64 %26 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %169, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !227 + %164 = getelementptr inbounds i8, ptr %.val18.i, i64 %26 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %164, ptr noundef nonnull align 1 dereferenceable(16) %.val18.i, i64 16, i1 false), !noalias !227 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !227 - store ptr @"_ZN4core3ptr203drop_in_place$LT$$LP$$LP$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$C$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$RP$$C$$LP$$RP$$RP$$GT$17hc0f9559b9ed2daf7E.llvm.15638356858648770541", ptr %160, align 8, !noalias !227 - store i64 48, ptr %161, align 8, !noalias !227 + store ptr @"_ZN4core3ptr203drop_in_place$LT$$LP$$LP$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$C$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$RP$$C$$LP$$RP$$RP$$GT$17hc0f9559b9ed2daf7E.llvm.15638356858648770541", ptr %155, align 8, !noalias !227 + store i64 48, ptr %156, align 8, !noalias !227 store ptr %0, ptr %9, align 8, !noalias !227 br label %.lr.ph.i _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i: ; preds = %._crit_edge.i.i10 - %170 = getelementptr inbounds i8, ptr %.val18.i, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %170, ptr nonnull align 1 %.val18.i, i64 %26, i1 false), !noalias !227 + %165 = getelementptr inbounds i8, ptr %.val18.i, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %165, ptr nonnull align 1 %.val18.i, i64 %26, i1 false), !noalias !227 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !227 - store ptr @"_ZN4core3ptr203drop_in_place$LT$$LP$$LP$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$C$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$RP$$C$$LP$$RP$$RP$$GT$17hc0f9559b9ed2daf7E.llvm.15638356858648770541", ptr %160, align 8, !noalias !227 - store i64 48, ptr %161, align 8, !noalias !227 + store ptr @"_ZN4core3ptr203drop_in_place$LT$$LP$$LP$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$C$core..option..Option$LT$influxdb_influxql_parser..identifier..Identifier$GT$$RP$$C$$LP$$RP$$RP$$GT$17hc0f9559b9ed2daf7E.llvm.15638356858648770541", ptr %155, align 8, !noalias !227 + store i64 48, ptr %156, align 8, !noalias !227 store ptr %0, ptr %9, align 8, !noalias !227 %.not11.i = icmp eq i64 %26, 0 br i1 %.not11.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread, label %.lr.ph.i @@ -1360,262 +1311,262 @@ _ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.ex .lr.ph.i: ; preds = %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.thread.i %.sroa.0.sroa.7.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %8, i64 32 %.sroa.0.sroa.9.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %8, i64 48 - %171 = getelementptr inbounds i8, ptr %8, i64 56 - %172 = getelementptr inbounds i8, ptr %5, i64 24 - %173 = load <2 x i64>, ptr %2, align 8 - %174 = shufflevector <2 x i64> %173, <2 x i64> poison, <4 x i32> - %175 = xor <4 x i64> %174, - br label %178 - -176: ; preds = %.noexc26.i, %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i", %198, %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i", %193, %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i - %177 = landingpad { ptr, i32 } + %166 = getelementptr inbounds i8, ptr %8, i64 56 + %167 = getelementptr inbounds i8, ptr %5, i64 24 + %168 = load <2 x i64>, ptr %2, align 8 + %169 = shufflevector <2 x i64> %168, <2 x i64> poison, <4 x i32> + %170 = xor <4 x i64> %169, + br label %173 + +171: ; preds = %.noexc26.i, %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i", %193, %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i", %188, %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i + %172 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr181drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h032dcf29c3f066d9E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #27 - to label %common.resume unwind label %275 - -178: ; preds = %274, %.lr.ph.i - %.sroa.02.010.i = phi i64 [ 0, %.lr.ph.i ], [ %179, %274 ] - %179 = add nuw i64 %.sroa.02.010.i, 1 - %180 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 - %181 = getelementptr inbounds i8, ptr %180, i64 %.sroa.02.010.i - %182 = load i8, ptr %181, align 1, !noundef !7 - %.not.i11 = icmp eq i8 %182, -128 - br i1 %.not.i11, label %183, label %274 - -183: ; preds = %178 + to label %common.resume unwind label %270 + +173: ; preds = %269, %.lr.ph.i + %.sroa.02.010.i = phi i64 [ 0, %.lr.ph.i ], [ %174, %269 ] + %174 = add nuw i64 %.sroa.02.010.i, 1 + %175 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 + %176 = getelementptr inbounds i8, ptr %175, i64 %.sroa.02.010.i + %177 = load i8, ptr %176, align 1, !noundef !7 + %.not.i11 = icmp eq i8 %177, -128 + br i1 %.not.i11, label %178, label %269 + +178: ; preds = %173 %.neg.i = mul i64 %.sroa.02.010.i, -48 - %184 = getelementptr i8, ptr %180, i64 %.neg.i - %185 = getelementptr i8, ptr %184, i64 -48 - %186 = sub nsw i64 0, %.sroa.02.010.i + %179 = getelementptr i8, ptr %175, i64 %.neg.i + %180 = getelementptr i8, ptr %179, i64 -48 + %181 = sub nsw i64 0, %.sroa.02.010.i br label %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i _ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i: ; preds = %.preheader.i %.pre.i21 = load ptr, ptr %0, align 8, !alias.scope !236, !noalias !239 br label %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i -_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i, %183 - %187 = phi ptr [ %.pre.i21, %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i ], [ %180, %183 ] - %188 = getelementptr inbounds { { { ptr, [2 x i64] }, { ptr, [2 x i64] } }, {} }, ptr %187, i64 %186 - %189 = getelementptr inbounds i8, ptr %188, i64 -48 +_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i, %178 + %182 = phi ptr [ %.pre.i21, %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i ], [ %175, %178 ] + %183 = getelementptr inbounds { { { ptr, [2 x i64] }, { ptr, [2 x i64] } }, {} }, ptr %182, i64 %181 + %184 = getelementptr inbounds i8, ptr %183, i64 -48 call void @llvm.experimental.noalias.scope.decl(metadata !241) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %8), !noalias !244 - store <4 x i64> %175, ptr %8, align 8, !alias.scope !246, !noalias !249 - store <2 x i64> %173, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i, align 8, !alias.scope !246, !noalias !249 + store <4 x i64> %170, ptr %8, align 8, !alias.scope !246, !noalias !249 + store <2 x i64> %168, ptr %.sroa.0.sroa.7.0..sroa_idx.i.i.i, align 8, !alias.scope !246, !noalias !249 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0.sroa.9.0..sroa_idx.i.i.i, i8 0, i64 24, i1 false), !alias.scope !246, !noalias !249 call void @llvm.experimental.noalias.scope.decl(metadata !251) call void @llvm.experimental.noalias.scope.decl(metadata !254) - %190 = load ptr, ptr %189, align 8, !alias.scope !257, !noalias !258, !noundef !7 - %191 = icmp ne ptr %190, null - %192 = zext i1 %191 to i64 + %185 = load ptr, ptr %184, align 8, !alias.scope !257, !noalias !258, !noundef !7 + %186 = icmp ne ptr %185, null + %187 = zext i1 %186 to i64 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !264 - store i64 %192, ptr %7, align 8, !noalias !264 + store i64 %187, ptr %7, align 8, !noalias !264 invoke void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h92c80904e41baaacE.llvm.14242210360153500751"(ptr noalias noundef nonnull align 8 dereferenceable(72) %8, ptr noalias noundef nonnull readonly align 1 %7, i64 noundef 8) - to label %.noexc.i14 unwind label %176 + to label %.noexc.i14 unwind label %171 .noexc.i14: ; preds = %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !264 - %.not.i.i.i.i22.i = icmp eq ptr %190, null - br i1 %.not.i.i.i.i22.i, label %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i", label %193 + %.not.i.i.i.i22.i = icmp eq ptr %185, null + br i1 %.not.i.i.i.i22.i, label %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i", label %188 -193: ; preds = %.noexc.i14 - invoke void @"_ZN85_$LT$influxdb_influxql_parser..identifier..Identifier$u20$as$u20$core..hash..Hash$GT$4hash17h44bc321c6cc2d46fE.llvm.14242210360153500751"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %189, ptr noalias noundef nonnull align 8 dereferenceable(72) %8) - to label %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i" unwind label %176 +188: ; preds = %.noexc.i14 + invoke void @"_ZN85_$LT$influxdb_influxql_parser..identifier..Identifier$u20$as$u20$core..hash..Hash$GT$4hash17h44bc321c6cc2d46fE.llvm.14242210360153500751"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %184, ptr noalias noundef nonnull align 8 dereferenceable(72) %8) + to label %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i" unwind label %171 -"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i": ; preds = %193, %.noexc.i14 - %194 = getelementptr inbounds i8, ptr %188, i64 -24 +"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i": ; preds = %188, %.noexc.i14 + %189 = getelementptr inbounds i8, ptr %183, i64 -24 call void @llvm.experimental.noalias.scope.decl(metadata !269) - %195 = load ptr, ptr %194, align 8, !alias.scope !272, !noalias !273, !noundef !7 - %196 = icmp ne ptr %195, null - %197 = zext i1 %196 to i64 + %190 = load ptr, ptr %189, align 8, !alias.scope !272, !noalias !273, !noundef !7 + %191 = icmp ne ptr %190, null + %192 = zext i1 %191 to i64 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6), !noalias !275 - store i64 %197, ptr %6, align 8, !noalias !275 + store i64 %192, ptr %6, align 8, !noalias !275 invoke void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h92c80904e41baaacE.llvm.14242210360153500751"(ptr noalias noundef nonnull align 8 dereferenceable(72) %8, ptr noalias noundef nonnull readonly align 1 %6, i64 noundef 8) - to label %.noexc24.i unwind label %176 + to label %.noexc24.i unwind label %171 .noexc24.i: ; preds = %"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..hash..Hash$GT$4hash17h9d46035abec737d7E.llvm.14242210360153500751.exit.i.i.i.i" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6), !noalias !275 - %.not.i1.i.i.i.i = icmp eq ptr %195, null - br i1 %.not.i1.i.i.i.i, label %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i", label %198 + %.not.i1.i.i.i.i = icmp eq ptr %190, null + br i1 %.not.i1.i.i.i.i, label %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i", label %193 -198: ; preds = %.noexc24.i - invoke void @"_ZN85_$LT$influxdb_influxql_parser..identifier..Identifier$u20$as$u20$core..hash..Hash$GT$4hash17h44bc321c6cc2d46fE.llvm.14242210360153500751"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %194, ptr noalias noundef nonnull align 8 dereferenceable(72) %8) - to label %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i" unwind label %176 +193: ; preds = %.noexc24.i + invoke void @"_ZN85_$LT$influxdb_influxql_parser..identifier..Identifier$u20$as$u20$core..hash..Hash$GT$4hash17h44bc321c6cc2d46fE.llvm.14242210360153500751"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %189, ptr noalias noundef nonnull align 8 dereferenceable(72) %8) + to label %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i" unwind label %171 -"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i": ; preds = %198, %.noexc24.i +"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i": ; preds = %193, %.noexc24.i call void @llvm.experimental.noalias.scope.decl(metadata !280) call void @llvm.experimental.noalias.scope.decl(metadata !283) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !286 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 32, i1 false), !noalias !244 - %199 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i, align 8, !alias.scope !287, !noalias !244, !noundef !7 - %200 = shl i64 %199, 56 - %201 = load i64, ptr %171, align 8, !alias.scope !287, !noalias !244, !noundef !7 - %202 = or i64 %200, %201 - %203 = load i64, ptr %172, align 8, !noalias !286, !noundef !7 - %204 = xor i64 %203, %202 - store i64 %204, ptr %172, align 8, !noalias !286 + %194 = load i64, ptr %.sroa.0.sroa.9.0..sroa_idx.i.i.i, align 8, !alias.scope !287, !noalias !244, !noundef !7 + %195 = shl i64 %194, 56 + %196 = load i64, ptr %166, align 8, !alias.scope !287, !noalias !244, !noundef !7 + %197 = or i64 %195, %196 + %198 = load i64, ptr %167, align 8, !noalias !286, !noundef !7 + %199 = xor i64 %198, %197 + store i64 %199, ptr %167, align 8, !noalias !286 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8c_rounds17h2a9be46c0f1097b7E.llvm.14242210360153500751"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %.noexc26.i unwind label %176 + to label %.noexc26.i unwind label %171 .noexc26.i: ; preds = %"_ZN4core4hash5impls52_$LT$impl$u20$core..hash..Hash$u20$for$u20$$RF$T$GT$4hash17he4c6524a53255e5eE.llvm.14242210360153500751.exit.i.i" - %205 = load <2 x i64>, ptr %5, align 16, !noalias !286 - %206 = insertelement <2 x i64> , i64 %202, i64 0 - %207 = xor <2 x i64> %205, %206 - store <2 x i64> %207, ptr %5, align 16, !noalias !286 + %200 = load <2 x i64>, ptr %5, align 16, !noalias !286 + %201 = insertelement <2 x i64> , i64 %197, i64 0 + %202 = xor <2 x i64> %200, %201 + store <2 x i64> %202, ptr %5, align 16, !noalias !286 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb70a718796202c0dE.llvm.14242210360153500751"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %208 unwind label %176 + to label %203 unwind label %171 -208: ; preds = %.noexc26.i - %209 = load <4 x i64>, ptr %5, align 16, !noalias !286 - %210 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %209) +203: ; preds = %.noexc26.i + %204 = load <4 x i64>, ptr %5, align 16, !noalias !286 + %205 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %204) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !286 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8), !noalias !244 %.val.i15 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 %.val17.i = load i64, ptr %23, align 8, !alias.scope !227, !noundef !7 - %211 = and i64 %.val17.i, %210 - %212 = getelementptr inbounds i8, ptr %.val.i15, i64 %211 - %.0.copyload.i45.i.i16 = load <16 x i8>, ptr %212, align 1, !noalias !288 - %213 = icmp slt <16 x i8> %.0.copyload.i45.i.i16, zeroinitializer - %214 = bitcast <16 x i1> %213 to i16 - %.not6.i.i17 = icmp eq i16 %214, 0 + %206 = and i64 %.val17.i, %205 + %207 = getelementptr inbounds i8, ptr %.val.i15, i64 %206 + %.0.copyload.i45.i.i16 = load <16 x i8>, ptr %207, align 1, !noalias !288 + %208 = icmp slt <16 x i8> %.0.copyload.i45.i.i16, zeroinitializer + %209 = bitcast <16 x i1> %208 to i16 + %.not6.i.i17 = icmp eq i16 %209, 0 br i1 %.not6.i.i17, label %.lr.ph.i21.i, label %._crit_edge.i20.i -.lr.ph.i21.i: ; preds = %208, %.lr.ph.i21.i - %.sroa.0.08.i.i23 = phi i64 [ %217, %.lr.ph.i21.i ], [ %211, %208 ] - %.sroa.7.07.i.i24 = phi i64 [ %215, %.lr.ph.i21.i ], [ 0, %208 ] - %215 = add i64 %.sroa.7.07.i.i24, 16 - %216 = add i64 %215, %.sroa.0.08.i.i23 - %217 = and i64 %216, %.val17.i - %218 = getelementptr inbounds i8, ptr %.val.i15, i64 %217 - %.0.copyload.i4.i.i25 = load <16 x i8>, ptr %218, align 1, !noalias !288 - %219 = icmp slt <16 x i8> %.0.copyload.i4.i.i25, zeroinitializer - %220 = bitcast <16 x i1> %219 to i16 - %.not.i.i26 = icmp eq i16 %220, 0 +.lr.ph.i21.i: ; preds = %203, %.lr.ph.i21.i + %.sroa.0.08.i.i23 = phi i64 [ %212, %.lr.ph.i21.i ], [ %206, %203 ] + %.sroa.7.07.i.i24 = phi i64 [ %210, %.lr.ph.i21.i ], [ 0, %203 ] + %210 = add i64 %.sroa.7.07.i.i24, 16 + %211 = add i64 %210, %.sroa.0.08.i.i23 + %212 = and i64 %211, %.val17.i + %213 = getelementptr inbounds i8, ptr %.val.i15, i64 %212 + %.0.copyload.i4.i.i25 = load <16 x i8>, ptr %213, align 1, !noalias !288 + %214 = icmp slt <16 x i8> %.0.copyload.i4.i.i25, zeroinitializer + %215 = bitcast <16 x i1> %214 to i16 + %.not.i.i26 = icmp eq i16 %215, 0 br i1 %.not.i.i26, label %.lr.ph.i21.i, label %._crit_edge.i20.i -._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %208 - %.sroa.0.0.lcssa.i.i18 = phi i64 [ %211, %208 ], [ %217, %.lr.ph.i21.i ] - %.lcssa.i.i19 = phi i16 [ %214, %208 ], [ %220, %.lr.ph.i21.i ] - %221 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i19, i1 true), !range !67 - %222 = zext nneg i16 %221 to i64 - %223 = add i64 %.sroa.0.0.lcssa.i.i18, %222 - %224 = and i64 %223, %.val17.i - %225 = getelementptr inbounds i8, ptr %.val.i15, i64 %224 - %226 = load i8, ptr %225, align 1, !noundef !7 - %227 = icmp sgt i8 %226, -1 - br i1 %227, label %228, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i - -228: ; preds = %._crit_edge.i20.i - %229 = load <16 x i8>, ptr %.val.i15, align 16, !noalias !291 - %230 = icmp slt <16 x i8> %229, zeroinitializer - %231 = bitcast <16 x i1> %230 to i16 - %.not.i.i.i22 = icmp ne i16 %231, 0 - %232 = call i16 @llvm.cttz.i16(i16 %231, i1 true), !range !67 - %233 = zext nneg i16 %232 to i64 +._crit_edge.i20.i: ; preds = %.lr.ph.i21.i, %203 + %.sroa.0.0.lcssa.i.i18 = phi i64 [ %206, %203 ], [ %212, %.lr.ph.i21.i ] + %.lcssa.i.i19 = phi i16 [ %209, %203 ], [ %215, %.lr.ph.i21.i ] + %216 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i19, i1 true), !range !67 + %217 = zext nneg i16 %216 to i64 + %218 = add i64 %.sroa.0.0.lcssa.i.i18, %217 + %219 = and i64 %218, %.val17.i + %220 = getelementptr inbounds i8, ptr %.val.i15, i64 %219 + %221 = load i8, ptr %220, align 1, !noundef !7 + %222 = icmp sgt i8 %221, -1 + br i1 %222, label %223, label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i + +223: ; preds = %._crit_edge.i20.i + %224 = load <16 x i8>, ptr %.val.i15, align 16, !noalias !291 + %225 = icmp slt <16 x i8> %224, zeroinitializer + %226 = bitcast <16 x i1> %225 to i16 + %.not.i.i.i22 = icmp ne i16 %226, 0 + %227 = call i16 @llvm.cttz.i16(i16 %226, i1 true), !range !67 + %228 = zext nneg i16 %227 to i64 call void @llvm.assume(i1 %.not.i.i.i22) br label %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i -_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i: ; preds = %228, %._crit_edge.i20.i - %.0.i.i.i20 = phi i64 [ %233, %228 ], [ %224, %._crit_edge.i20.i ] - %234 = sub i64 %.sroa.02.010.i, %211 - %235 = sub i64 %.0.i.i.i20, %211 - %236 = xor i64 %235, %234 - %.unshifted.i = and i64 %236, %.val17.i - %237 = icmp ult i64 %.unshifted.i, 16 - br i1 %237, label %251, label %238 +_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i: ; preds = %223, %._crit_edge.i20.i + %.0.i.i.i20 = phi i64 [ %228, %223 ], [ %219, %._crit_edge.i20.i ] + %229 = sub i64 %.sroa.02.010.i, %206 + %230 = sub i64 %.0.i.i.i20, %206 + %231 = xor i64 %230, %229 + %.unshifted.i = and i64 %231, %.val17.i + %232 = icmp ult i64 %.unshifted.i, 16 + br i1 %232, label %246, label %233 -238: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i +233: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i %.neg16.i = mul i64 %.0.i.i.i20, -48 - %239 = getelementptr i8, ptr %.val.i15, i64 %.neg16.i - %240 = getelementptr i8, ptr %239, i64 -48 - %241 = getelementptr inbounds i8, ptr %.val.i15, i64 %.0.i.i.i20 - %242 = load i8, ptr %241, align 1, !noundef !7 - %243 = lshr i64 %210, 57 - %244 = trunc i64 %243 to i8 - %245 = add i64 %.0.i.i.i20, -16 - %246 = and i64 %245, %.val17.i - store i8 %244, ptr %241, align 1 - %247 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 - %248 = getelementptr i8, ptr %247, i64 %246 - %249 = getelementptr i8, ptr %248, i64 16 - store i8 %244, ptr %249, align 1 - %250 = icmp eq i8 %242, -1 - br i1 %250, label %265, label %.preheader.i - -251: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i - %252 = lshr i64 %210, 57 - %253 = trunc i64 %252 to i8 - %254 = add i64 %.sroa.02.010.i, -16 - %255 = and i64 %.val17.i, %254 - %256 = getelementptr inbounds i8, ptr %.val.i15, i64 %.sroa.02.010.i - store i8 %253, ptr %256, align 1 - %257 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 - %258 = getelementptr i8, ptr %257, i64 %255 - %259 = getelementptr i8, ptr %258, i64 16 - store i8 %253, ptr %259, align 1 - br label %274 - -.preheader.i: ; preds = %238, %.preheader.i - %.0910.i.i = phi i64 [ %264, %.preheader.i ], [ 0, %238 ] - %260 = getelementptr inbounds i8, ptr %185, i64 %.0910.i.i - %261 = getelementptr inbounds i8, ptr %240, i64 %.0910.i.i - %262 = load i8, ptr %260, align 1 - %263 = load i8, ptr %261, align 1 - store i8 %263, ptr %260, align 1 - store i8 %262, ptr %261, align 1 - %264 = add nuw nsw i64 %.0910.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %264, 48 + %234 = getelementptr i8, ptr %.val.i15, i64 %.neg16.i + %235 = getelementptr i8, ptr %234, i64 -48 + %236 = getelementptr inbounds i8, ptr %.val.i15, i64 %.0.i.i.i20 + %237 = load i8, ptr %236, align 1, !noundef !7 + %238 = lshr i64 %205, 57 + %239 = trunc i64 %238 to i8 + %240 = add i64 %.0.i.i.i20, -16 + %241 = and i64 %240, %.val17.i + store i8 %239, ptr %236, align 1 + %242 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 + %243 = getelementptr i8, ptr %242, i64 %241 + %244 = getelementptr i8, ptr %243, i64 16 + store i8 %239, ptr %244, align 1 + %245 = icmp eq i8 %237, -1 + br i1 %245, label %260, label %.preheader.i + +246: ; preds = %_ZN9hashbrown3raw13RawTableInner16find_insert_slot17h54a567ea84f90bbaE.exit.i + %247 = lshr i64 %205, 57 + %248 = trunc i64 %247 to i8 + %249 = add i64 %.sroa.02.010.i, -16 + %250 = and i64 %.val17.i, %249 + %251 = getelementptr inbounds i8, ptr %.val.i15, i64 %.sroa.02.010.i + store i8 %248, ptr %251, align 1 + %252 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 + %253 = getelementptr i8, ptr %252, i64 %250 + %254 = getelementptr i8, ptr %253, i64 16 + store i8 %248, ptr %254, align 1 + br label %269 + +.preheader.i: ; preds = %233, %.preheader.i + %.0910.i.i = phi i64 [ %259, %.preheader.i ], [ 0, %233 ] + %255 = getelementptr inbounds i8, ptr %180, i64 %.0910.i.i + %256 = getelementptr inbounds i8, ptr %235, i64 %.0910.i.i + %257 = load i8, ptr %255, align 1 + %258 = load i8, ptr %256, align 1 + store i8 %258, ptr %255, align 1 + store i8 %257, ptr %256, align 1 + %259 = add nuw nsw i64 %.0910.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %259, 48 br i1 %exitcond.not.i.i, label %_ZN4core3ptr19swap_nonoverlapping17hb407e9d26d076c32E.exit.loopexit.i, label %.preheader.i -265: ; preds = %238 - %266 = add i64 %.sroa.02.010.i, -16 - %267 = load i64, ptr %23, align 8, !alias.scope !227, !noundef !7 - %268 = and i64 %267, %266 - %269 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 - %270 = getelementptr inbounds i8, ptr %269, i64 %.sroa.02.010.i - store i8 -1, ptr %270, align 1 - %271 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 - %272 = getelementptr i8, ptr %271, i64 %268 - %273 = getelementptr i8, ptr %272, i64 16 - store i8 -1, ptr %273, align 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %240, ptr noundef nonnull align 1 dereferenceable(48) %185, i64 48, i1 false) - br label %274 - -274: ; preds = %265, %251, %178 +260: ; preds = %233 + %261 = add i64 %.sroa.02.010.i, -16 + %262 = load i64, ptr %23, align 8, !alias.scope !227, !noundef !7 + %263 = and i64 %262, %261 + %264 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 + %265 = getelementptr inbounds i8, ptr %264, i64 %.sroa.02.010.i + store i8 -1, ptr %265, align 1 + %266 = load ptr, ptr %0, align 8, !alias.scope !227, !nonnull !7, !noundef !7 + %267 = getelementptr i8, ptr %266, i64 %263 + %268 = getelementptr i8, ptr %267, i64 16 + store i8 -1, ptr %268, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(48) %235, ptr noundef nonnull align 1 dereferenceable(48) %180, i64 48, i1 false) + br label %269 + +269: ; preds = %260, %246, %173 %exitcond.not.i = icmp eq i64 %.sroa.02.010.i, %24 - br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit, label %178 + br i1 %exitcond.not.i, label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit, label %173 -275: ; preds = %176 - %276 = landingpad { ptr, i32 } +270: ; preds = %171 + %271 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #28 unreachable -_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit: ; preds = %274 +_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit: ; preds = %269 %.pre18.i = load i64, ptr %23, align 8, !alias.scope !227 %.pre18.i.fr = freeze i64 %.pre18.i %.pre19.i = add i64 %.pre18.i.fr, 1 - %277 = lshr i64 %.pre19.i, 3 - %278 = mul nuw i64 %277, 7 - %279 = icmp ult i64 %.pre18.i.fr, 8 - %spec.select = select i1 %279, i64 %.pre18.i.fr, i64 %278 + %272 = lshr i64 %.pre19.i, 3 + %273 = mul nuw i64 %272, 7 + %274 = icmp ult i64 %.pre18.i.fr, 8 + %spec.select = select i1 %274, i64 %.pre18.i.fr, i64 %273 %.pre = load i64, ptr %13, align 8, !alias.scope !227 br label %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread _ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread: ; preds = %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i - %280 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit ] - %281 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit ] - %282 = getelementptr inbounds i8, ptr %0, i64 16 - %283 = sub i64 %281, %280 - store i64 %283, ptr %282, align 8, !alias.scope !227 + %275 = phi i64 [ %14, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i ], [ %.pre, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit ] + %276 = phi i64 [ 0, %_ZN9hashbrown3raw13RawTableInner23prepare_rehash_in_place17haccb9e3f88565de0E.exit.i ], [ %spec.select, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit ] + %277 = getelementptr inbounds i8, ptr %0, i64 16 + %278 = sub i64 %276, %275 + store i64 %278, ptr %277, align 8, !alias.scope !227 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !227 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6f3af05fd57d1996E.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h6f3af05fd57d1996E.exit: ; preds = %76, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread ], [ %.sroa.9.054.ph, %76 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit" ] %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17hac7ea2142498543cE.exit.thread ], [ %.sroa.5.056.ph, %76 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h51d76cd79fa32003E.exit" ] - %284 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %285 = insertvalue { i64, i64 } %284, i64 %.sroa.4.0.i, 1 - ret { i64, i64 } %285 + %279 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %280 = insertvalue { i64, i64 } %279, i64 %.sroa.4.0.i, 1 + ret { i64, i64 } %280 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable diff --git a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll index 7e11247999d..c7795ee8576 100644 --- a/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll +++ b/bench/influxdb-rs/optimized/34vmrh0qyn6415sj.ll @@ -1766,45 +1766,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.54 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !10 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.5441949568091396765.exit - %29 = load ptr, ptr %0, align 8, !nonnull !10, !noundef !10 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #20 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.5441949568091396765.exit + %20 = load ptr, ptr %0, align 8, !nonnull !10, !noundef !10 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #20 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.5441949568091396765.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h2e41f254f515f243E.llvm.5441949568091396765.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h65371285cda1071bE.llvm.5441949568091396765.exit, %19 ret void } @@ -2197,45 +2183,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h2b3f2ee _ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949568091396765.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h08bdf0fad3589d09E.llvm.5441949568091396765.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !289) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949568091396765.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !289, !nonnull !10, !noundef !10 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #20, !noalias !289 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949568091396765.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !289, !nonnull !10, !noundef !10 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #20, !noalias !289 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949568091396765.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h861214be7c77e60eE.llvm.5441949568091396765.exit, %4 ret void } @@ -2304,45 +2276,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h2ba4c46 _ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949568091396765.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h25c646f73914bee0E.llvm.5441949568091396765.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !310) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949568091396765.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !310, !nonnull !10, !noundef !10 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #20, !noalias !310 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949568091396765.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !310, !nonnull !10, !noundef !10 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #20, !noalias !310 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949568091396765.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h03c1806ef0eb6d5fE.llvm.5441949568091396765.exit, %4 ret void } @@ -2356,45 +2314,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h676ef78 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !313) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !313, !nonnull !10, !noundef !10 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #20, !noalias !313 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !313, !nonnull !10, !noundef !10 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #20, !noalias !313 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %22, %8, %4 ret void } @@ -2409,45 +2353,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hd40e112 tail call void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h5b2ed5df999bc1c7E.llvm.5441949568091396765(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) tail call void @llvm.experimental.noalias.scope.decl(metadata !316) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !316, !nonnull !10, !noundef !10 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #20, !noalias !316 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !316, !nonnull !10, !noundef !10 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #20, !noalias !316 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %22, %8, %4 ret void } @@ -2558,45 +2488,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hef42212 _ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949568091396765.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17hbcdf38dab8abd1f2E.llvm.5441949568091396765.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !345) %55 = add i64 %6, 1 - %56 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %55) - %57 = extractvalue { i64, i1 } %56, 1 - %58 = xor i1 %57, true - tail call void @llvm.assume(i1 %58) - %59 = extractvalue { i64, i1 } %56, 0 - %60 = add i64 %3, -1 - %61 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %59, i64 %60) - %62 = extractvalue { i64, i1 } %61, 1 - %63 = xor i1 %62, true - tail call void @llvm.assume(i1 %63) - %64 = extractvalue { i64, i1 } %61, 0 - %65 = sub i64 0, %3 - %66 = and i64 %64, %65 - %67 = add i64 %6, 17 - %68 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %66, i64 %67) - %69 = extractvalue { i64, i1 } %68, 0 - %70 = extractvalue { i64, i1 } %68, 1 - %71 = sub nuw i64 -9223372036854775808, %3 - %72 = icmp ule i64 %69, %71 - %73 = xor i1 %70, true - tail call void @llvm.assume(i1 %73) - tail call void @llvm.assume(i1 %72) - %74 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %74) - %75 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %75) - %76 = icmp eq i64 %69, 0 - br i1 %76, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %77 - -77: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949568091396765.exit - %78 = load ptr, ptr %0, align 8, !alias.scope !345, !nonnull !10, !noundef !10 - %79 = sub nsw i64 0, %66 - %80 = getelementptr inbounds i8, ptr %78, i64 %79 - %81 = icmp sgt i64 %60, -1 - tail call void @llvm.assume(i1 %81) - tail call void @__rust_dealloc(ptr noundef nonnull %80, i64 noundef %69, i64 noundef %3) #20, !noalias !345 + %56 = mul nuw i64 %55, %2 + %57 = add i64 %3, -1 + %58 = add nuw i64 %57, %56 + %59 = sub i64 0, %3 + %60 = and i64 %58, %59 + %61 = add i64 %6, 17 + %62 = add nuw i64 %61, %60 + %63 = sub nuw i64 -9223372036854775808, %3 + %64 = icmp ule i64 %62, %63 + tail call void @llvm.assume(i1 %64) + %65 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %65) + %66 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %66) + %67 = icmp eq i64 %62, 0 + br i1 %67, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit, label %68 + +68: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949568091396765.exit + %69 = load ptr, ptr %0, align 8, !alias.scope !345, !nonnull !10, !noundef !10 + %70 = sub nsw i64 0, %60 + %71 = getelementptr inbounds i8, ptr %69, i64 %70 + tail call void @__rust_dealloc(ptr noundef nonnull %71, i64 noundef %62, i64 noundef %3) #20, !noalias !345 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %77, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949568091396765.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha477c001f69db457E.llvm.5441949568091396765.exit: ; preds = %68, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h24d5802b2a2f81aeE.llvm.5441949568091396765.exit, %4 ret void } diff --git a/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll b/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll index 627686901dc..d2562f1f83c 100644 --- a/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll +++ b/bench/influxdb-rs/optimized/54bldmpi534adbqh.ll @@ -5694,46 +5694,32 @@ define internal fastcc void @"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !1106, !noundef !23 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h805f1b505db91608E.exit", label %32 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h805f1b505db91608E.exit", label %23 -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #37, !noalias !1107 +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #37, !noalias !1107 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h805f1b505db91608E.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h805f1b505db91608E.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h805f1b505db91608E.exit": ; preds = %1, %5, %23 ret void } @@ -12188,45 +12174,31 @@ _ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.l %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !23 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.10820452972315511531.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.10820452972315511531.exit - %29 = load ptr, ptr %0, align 8, !nonnull !23, !noundef !23 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #37 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.10820452972315511531.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.10820452972315511531.exit + %20 = load ptr, ptr %0, align 8, !nonnull !23, !noundef !23 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #37 br label %"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.10820452972315511531.exit" -"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.10820452972315511531.exit": ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.10820452972315511531.exit, %28 +"_ZN106_$LT$allocator_api2..stable..alloc..global..Global$u20$as$u20$allocator_api2..stable..alloc..Allocator$GT$10deallocate17hff0cc1b59ac6006eE.llvm.10820452972315511531.exit": ; preds = %_ZN9hashbrown3raw5inner11TableLayout20calculate_layout_for17h64ef2250447e437dE.llvm.10820452972315511531.exit, %19 ret void } @@ -12255,45 +12227,31 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17h7 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !2125) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2125, !nonnull !23, !noundef !23 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #37, !noalias !2125 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2125, !nonnull !23, !noundef !23 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #37, !noalias !2125 br label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit -_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %22, %8, %4 ret void } @@ -12307,45 +12265,31 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17h8 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !2128) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2128, !nonnull !23, !noundef !23 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #37, !noalias !2128 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2128, !nonnull !23, !noundef !23 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #37, !noalias !2128 br label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit -_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %22, %8, %4 ret void } @@ -12359,45 +12303,31 @@ define hidden void @_ZN9hashbrown3raw5inner13RawTableInner16drop_inner_table17hc 8: ; preds = %4 tail call void @llvm.experimental.noalias.scope.decl(metadata !2131) %9 = add i64 %6, 1 - %10 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %9) - %11 = extractvalue { i64, i1 } %10, 1 - %12 = xor i1 %11, true - tail call void @llvm.assume(i1 %12) - %13 = extractvalue { i64, i1 } %10, 0 - %14 = add i64 %3, -1 - %15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %14) - %16 = extractvalue { i64, i1 } %15, 1 - %17 = xor i1 %16, true - tail call void @llvm.assume(i1 %17) - %18 = extractvalue { i64, i1 } %15, 0 - %19 = sub i64 0, %3 - %20 = and i64 %18, %19 - %21 = add i64 %6, 17 - %22 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %20, i64 %21) - %23 = extractvalue { i64, i1 } %22, 0 - %24 = extractvalue { i64, i1 } %22, 1 - %25 = sub nuw i64 -9223372036854775808, %3 - %26 = icmp ule i64 %23, %25 - %27 = xor i1 %24, true - tail call void @llvm.assume(i1 %27) - tail call void @llvm.assume(i1 %26) - %28 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %28) - %29 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %23, 0 - br i1 %30, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %31 - -31: ; preds = %8 - %32 = load ptr, ptr %0, align 8, !alias.scope !2131, !nonnull !23, !noundef !23 - %33 = sub nsw i64 0, %20 - %34 = getelementptr inbounds i8, ptr %32, i64 %33 - %35 = icmp sgt i64 %14, -1 - tail call void @llvm.assume(i1 %35) - tail call void @__rust_dealloc(ptr noundef nonnull %34, i64 noundef %23, i64 noundef %3) #37, !noalias !2131 + %10 = mul nuw i64 %9, %2 + %11 = add i64 %3, -1 + %12 = add nuw i64 %11, %10 + %13 = sub i64 0, %3 + %14 = and i64 %12, %13 + %15 = add i64 %6, 17 + %16 = add nuw i64 %15, %14 + %17 = sub nuw i64 -9223372036854775808, %3 + %18 = icmp ule i64 %16, %17 + tail call void @llvm.assume(i1 %18) + %19 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %19) + %20 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %20) + %21 = icmp eq i64 %16, 0 + br i1 %21, label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit, label %22 + +22: ; preds = %8 + %23 = load ptr, ptr %0, align 8, !alias.scope !2131, !nonnull !23, !noundef !23 + %24 = sub nsw i64 0, %14 + %25 = getelementptr inbounds i8, ptr %23, i64 %24 + tail call void @__rust_dealloc(ptr noundef nonnull %25, i64 noundef %16, i64 noundef %3) #37, !noalias !2131 br label %_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit -_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %31, %8, %4 +_ZN9hashbrown3raw5inner13RawTableInner12free_buckets17hf2a6a500e85df368E.llvm.10820452972315511531.exit: ; preds = %22, %8, %4 ret void } @@ -12810,7 +12740,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14res %.0.i = select i1 %17, i64 %16, i64 %20 %21 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %12, %21 - br i1 %.not.i, label %27, label %148 + br i1 %.not.i, label %27, label %141 22: ; preds = %2 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !2170 @@ -12898,11 +12828,11 @@ _ZN9hashbrown3raw5inner13RawTableInner20full_buckets_indices17h9f47a5153e956561E call fastcc void @"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %6) #35 br label %common.resume -.preheader: ; preds = %.preheader.lr.ph, %134 - %.sroa.1344.0176 = phi i16 [ %40, %.preheader.lr.ph ], [ %56, %134 ] - %.sroa.9.0175 = phi i64 [ %35, %.preheader.lr.ph ], [ %60, %134 ] - %.sroa.541.0174 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.541.1.lcssa, %134 ] - %.sroa.040.0173 = phi ptr [ %36, %.preheader.lr.ph ], [ %.sroa.040.1.lcssa, %134 ] +.preheader: ; preds = %.preheader.lr.ph, %127 + %.sroa.1344.0176 = phi i16 [ %40, %.preheader.lr.ph ], [ %56, %127 ] + %.sroa.9.0175 = phi i64 [ %35, %.preheader.lr.ph ], [ %60, %127 ] + %.sroa.541.0174 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.541.1.lcssa, %127 ] + %.sroa.040.0173 = phi ptr [ %36, %.preheader.lr.ph ], [ %.sroa.040.1.lcssa, %127 ] %.not.not.i165 = icmp eq i16 %.sroa.1344.0176, 0 br i1 %.not.not.i165, label %.noexc2, label %._crit_edge168 @@ -12995,7 +12925,7 @@ _ZN9hashbrown3raw5inner13RawTableInner20full_buckets_indices17h9f47a5153e956561E %88 = invoke fastcc noundef i64 @_ZN5ahash12random_state11RandomState8hash_one17hd9a8ba772e3c57deE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.val.i.i, ptr noalias noundef nonnull readonly align 1 %87, i64 noundef %86) to label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" unwind label %.loopexit -.thread68.loopexit: ; preds = %134 +.thread68.loopexit: ; preds = %127 %.pre273 = load i64, ptr %9, align 8, !alias.scope !2202, !noalias !2203 br label %.thread68 @@ -13020,413 +12950,404 @@ _ZN9hashbrown3raw5inner13RawTableInner20full_buckets_indices17h9f47a5153e956561E 92: ; preds = %.thread68 %93 = shl i64 %.val1.i.i14, 3 - %94 = add i64 %93, 8 - %95 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %94, i64 15) - %96 = extractvalue { i64, i1 } %95, 1 - %97 = xor i1 %96, true - tail call void @llvm.assume(i1 %97) - %98 = extractvalue { i64, i1 } %95, 0 - %99 = and i64 %98, -16 - %100 = add i64 %.val1.i.i14, 17 - %101 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %99, i64 %100) - %102 = extractvalue { i64, i1 } %101, 0 - %103 = extractvalue { i64, i1 } %101, 1 - %104 = icmp ult i64 %102, 9223372036854775793 - %105 = xor i1 %103, true - tail call void @llvm.assume(i1 %105) - tail call void @llvm.assume(i1 %104) - %106 = icmp eq i64 %102, 0 - br i1 %106, label %"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E.exit", label %107 - -107: ; preds = %92 - %108 = icmp ne ptr %.val.i.i13, null - tail call void @llvm.assume(i1 %108) - %109 = sub nsw i64 0, %99 - %110 = getelementptr inbounds i8, ptr %.val.i.i13, i64 %109 - tail call void @__rust_dealloc(ptr noundef nonnull %110, i64 noundef %102, i64 noundef 16) #37, !noalias !2217 + %94 = add i64 %93, 23 + %95 = and i64 %94, -16 + %96 = add i64 %.val1.i.i14, 17 + %97 = add nuw i64 %96, %95 + %98 = icmp ult i64 %97, 9223372036854775793 + tail call void @llvm.assume(i1 %98) + %99 = icmp eq i64 %97, 0 + br i1 %99, label %"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E.exit", label %100 + +100: ; preds = %92 + %101 = icmp ne ptr %.val.i.i13, null + tail call void @llvm.assume(i1 %101) + %102 = sub nsw i64 0, %95 + %103 = getelementptr inbounds i8, ptr %.val.i.i13, i64 %102 + tail call void @__rust_dealloc(ptr noundef nonnull %103, i64 noundef %97, i64 noundef 16) #37, !noalias !2217 br label %"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E.exit" -"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E.exit": ; preds = %.thread68, %92, %107 +"_ZN4core3ptr235drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..prepare_resize$LT$allocator_api2..stable..alloc..global..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h2d984caab85c0390E.exit": ; preds = %.thread68, %92, %100 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6), !noalias !2174 br label %_ZN9hashbrown3raw5inner13RawTableInner20reserve_rehash_inner17h95a1c76e1709f840E.exit "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit": ; preds = %"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i" - %111 = and i64 %32, %88 - %112 = getelementptr inbounds i8, ptr %29, i64 %111 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %112, align 1, !noalias !2222 - %113 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %114 = bitcast <16 x i1> %113 to i16 - %.not6.i.i = icmp eq i16 %114, 0 + %104 = and i64 %32, %88 + %105 = getelementptr inbounds i8, ptr %29, i64 %104 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %105, align 1, !noalias !2222 + %106 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %107 = bitcast <16 x i1> %106 to i16 + %.not6.i.i = icmp eq i16 %107, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" - %.sroa.0.0.lcssa.i.i = phi i64 [ %111, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ], [ %130, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %114, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ], [ %133, %.lr.ph.i.i ] - %115 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !85 - %116 = zext nneg i16 %115 to i64 - %117 = add i64 %.sroa.0.0.lcssa.i.i, %116 - %118 = and i64 %117, %32 - %119 = getelementptr inbounds i8, ptr %29, i64 %118 - %120 = load i8, ptr %119, align 1, !noundef !23 - %121 = icmp sgt i8 %120, -1 - br i1 %121, label %122, label %134 - -122: ; preds = %._crit_edge.i.i - %123 = load <16 x i8>, ptr %29, align 16, !noalias !2225 - %124 = icmp slt <16 x i8> %123, zeroinitializer - %125 = bitcast <16 x i1> %124 to i16 - %.not.i.i.i = icmp ne i16 %125, 0 - %126 = tail call i16 @llvm.cttz.i16(i16 %125, i1 true), !range !85 - %127 = zext nneg i16 %126 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %104, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ], [ %123, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %107, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ], [ %126, %.lr.ph.i.i ] + %108 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !85 + %109 = zext nneg i16 %108 to i64 + %110 = add i64 %.sroa.0.0.lcssa.i.i, %109 + %111 = and i64 %110, %32 + %112 = getelementptr inbounds i8, ptr %29, i64 %111 + %113 = load i8, ptr %112, align 1, !noundef !23 + %114 = icmp sgt i8 %113, -1 + br i1 %114, label %115, label %127 + +115: ; preds = %._crit_edge.i.i + %116 = load <16 x i8>, ptr %29, align 16, !noalias !2225 + %117 = icmp slt <16 x i8> %116, zeroinitializer + %118 = bitcast <16 x i1> %117 to i16 + %.not.i.i.i = icmp ne i16 %118, 0 + %119 = tail call i16 @llvm.cttz.i16(i16 %118, i1 true), !range !85 + %120 = zext nneg i16 %119 to i64 tail call void @llvm.assume(i1 %.not.i.i.i) - br label %134 + br label %127 .lr.ph.i.i: ; preds = %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit", %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %130, %.lr.ph.i.i ], [ %111, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ] - %.sroa.7.07.i.i = phi i64 [ %128, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ] - %128 = add i64 %.sroa.7.07.i.i, 16 - %129 = add i64 %128, %.sroa.0.08.i.i - %130 = and i64 %129, %32 - %131 = getelementptr inbounds i8, ptr %29, i64 %130 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %131, align 1, !noalias !2222 - %132 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %133 = bitcast <16 x i1> %132 to i16 - %.not.i.i15 = icmp eq i16 %133, 0 + %.sroa.0.08.i.i = phi i64 [ %123, %.lr.ph.i.i ], [ %104, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ] + %.sroa.7.07.i.i = phi i64 [ %121, %.lr.ph.i.i ], [ 0, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit" ] + %121 = add i64 %.sroa.7.07.i.i, 16 + %122 = add i64 %121, %.sroa.0.08.i.i + %123 = and i64 %122, %32 + %124 = getelementptr inbounds i8, ptr %29, i64 %123 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %124, align 1, !noalias !2222 + %125 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %126 = bitcast <16 x i1> %125 to i16 + %.not.i.i15 = icmp eq i16 %126, 0 br i1 %.not.i.i15, label %.lr.ph.i.i, label %._crit_edge.i.i -134: ; preds = %122, %._crit_edge.i.i - %.0.i.i.i = phi i64 [ %127, %122 ], [ %118, %._crit_edge.i.i ] - %135 = getelementptr inbounds i8, ptr %29, i64 %.0.i.i.i - %136 = lshr i64 %88, 57 - %137 = trunc i64 %136 to i8 - %138 = add i64 %.0.i.i.i, -16 - %139 = and i64 %138, %32 - store i8 %137, ptr %135, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %139 - store i8 %137, ptr %gep, align 1 - %140 = load ptr, ptr %0, align 8, !alias.scope !2202, !noalias !2203, !nonnull !23, !noundef !23 - %141 = shl i64 %59, 3 - %142 = sub nuw nsw i64 -8, %141 - %143 = getelementptr inbounds i8, ptr %140, i64 %142 - %144 = shl i64 %.0.i.i.i, 3 - %145 = sub nuw nsw i64 -8, %144 - %146 = getelementptr inbounds i8, ptr %29, i64 %145 - %147 = load i64, ptr %143, align 1 - store i64 %147, ptr %146, align 1 +127: ; preds = %115, %._crit_edge.i.i + %.0.i.i.i = phi i64 [ %120, %115 ], [ %111, %._crit_edge.i.i ] + %128 = getelementptr inbounds i8, ptr %29, i64 %.0.i.i.i + %129 = lshr i64 %88, 57 + %130 = trunc i64 %129 to i8 + %131 = add i64 %.0.i.i.i, -16 + %132 = and i64 %131, %32 + store i8 %130, ptr %128, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %132 + store i8 %130, ptr %gep, align 1 + %133 = load ptr, ptr %0, align 8, !alias.scope !2202, !noalias !2203, !nonnull !23, !noundef !23 + %134 = shl i64 %59, 3 + %135 = sub nuw nsw i64 -8, %134 + %136 = getelementptr inbounds i8, ptr %133, i64 %135 + %137 = shl i64 %.0.i.i.i, 3 + %138 = sub nuw nsw i64 -8, %137 + %139 = getelementptr inbounds i8, ptr %29, i64 %138 + %140 = load i64, ptr %136, align 1 + store i64 %140, ptr %139, align 1 %.not = icmp eq i64 %60, 0 br i1 %.not, label %.thread68.loopexit, label %.preheader -common.resume: ; preds = %174, %47 - %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %47 ], [ %lpad.phi84, %174 ] +common.resume: ; preds = %167, %47 + %common.resume.op = phi { ptr, i32 } [ %lpad.phi, %47 ], [ %lpad.phi84, %167 ] resume { ptr, i32 } %common.resume.op -148: ; preds = %14 +141: ; preds = %14 %.val5 = load ptr, ptr %0, align 8 - %149 = lshr i64 %18, 4 - %150 = and i64 %18, 15 - %.not.i.i.i.i = icmp ne i64 %150, 0 - %151 = zext i1 %.not.i.i.i.i to i64 - %.0.i.i.i.i = add nuw nsw i64 %149, %151 + %142 = lshr i64 %18, 4 + %143 = and i64 %18, 15 + %.not.i.i.i.i = icmp ne i64 %143, 0 + %144 = zext i1 %.not.i.i.i.i to i64 + %.0.i.i.i.i = add nuw nsw i64 %142, %144 %.not.not4.i = icmp eq i64 %.0.i.i.i.i, 0 br i1 %.not.not4.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %148 - %152 = icmp ne ptr %.val5, null - tail call void @llvm.assume(i1 %152) - br label %155 +.lr.ph.i: ; preds = %141 + %145 = icmp ne ptr %.val5, null + tail call void @llvm.assume(i1 %145) + br label %148 -._crit_edge.i: ; preds = %155, %148 - %153 = icmp ult i64 %18, 16 - %154 = icmp ne ptr %.val5, null - tail call void @llvm.assume(i1 %154) - br i1 %153, label %164, label %162 - -155: ; preds = %155, %.lr.ph.i - %.sroa.01.06.i = phi i64 [ 0, %.lr.ph.i ], [ %157, %155 ] - %.sroa.5.05.i = phi i64 [ %.0.i.i.i.i, %.lr.ph.i ], [ %156, %155 ] - %156 = add nsw i64 %.sroa.5.05.i, -1 - %157 = add i64 %.sroa.01.06.i, 16 - %158 = getelementptr inbounds i8, ptr %.val5, i64 %.sroa.01.06.i - %159 = load <16 x i8>, ptr %158, align 16, !noalias !2228 - %.lobit.i.i = ashr <16 x i8> %159, - %160 = bitcast <16 x i8> %.lobit.i.i to <2 x i64> - %161 = or <2 x i64> %160, - store <2 x i64> %161, ptr %158, align 16, !noalias !2231 - %.not.not.i16 = icmp eq i64 %156, 0 - br i1 %.not.not.i16, label %._crit_edge.i, label %155 - -162: ; preds = %._crit_edge.i - %163 = getelementptr inbounds i8, ptr %.val5, i64 %18 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %163, ptr noundef nonnull align 1 dereferenceable(16) %.val5, i64 16, i1 false) +._crit_edge.i: ; preds = %148, %141 + %146 = icmp ult i64 %18, 16 + %147 = icmp ne ptr %.val5, null + tail call void @llvm.assume(i1 %147) + br i1 %146, label %157, label %155 + +148: ; preds = %148, %.lr.ph.i + %.sroa.01.06.i = phi i64 [ 0, %.lr.ph.i ], [ %150, %148 ] + %.sroa.5.05.i = phi i64 [ %.0.i.i.i.i, %.lr.ph.i ], [ %149, %148 ] + %149 = add nsw i64 %.sroa.5.05.i, -1 + %150 = add i64 %.sroa.01.06.i, 16 + %151 = getelementptr inbounds i8, ptr %.val5, i64 %.sroa.01.06.i + %152 = load <16 x i8>, ptr %151, align 16, !noalias !2228 + %.lobit.i.i = ashr <16 x i8> %152, + %153 = bitcast <16 x i8> %.lobit.i.i to <2 x i64> + %154 = or <2 x i64> %153, + store <2 x i64> %154, ptr %151, align 16, !noalias !2231 + %.not.not.i16 = icmp eq i64 %149, 0 + br i1 %.not.not.i16, label %._crit_edge.i, label %148 + +155: ; preds = %._crit_edge.i + %156 = getelementptr inbounds i8, ptr %.val5, i64 %18 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %156, ptr noundef nonnull align 1 dereferenceable(16) %.val5, i64 16, i1 false) br label %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit -164: ; preds = %._crit_edge.i - %165 = getelementptr inbounds i8, ptr %.val5, i64 16 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %165, ptr nonnull align 1 %.val5, i64 %18, i1 false) +157: ; preds = %._crit_edge.i + %158 = getelementptr inbounds i8, ptr %.val5, i64 16 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %158, ptr nonnull align 1 %.val5, i64 %18, i1 false) br label %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit -_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit: ; preds = %162, %164 +_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit: ; preds = %155, %157 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !2234 - %166 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr null, ptr %166, align 8, !noalias !2234 - %167 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 8, ptr %167, align 8, !noalias !2234 + %159 = getelementptr inbounds i8, ptr %5, i64 8 + store ptr null, ptr %159, align 8, !noalias !2234 + %160 = getelementptr inbounds i8, ptr %5, i64 16 + store i64 8, ptr %160, align 8, !noalias !2234 store ptr %0, ptr %5, align 8, !noalias !2234 - %168 = load i64, ptr %15, align 8, !noalias !2168, !noundef !23 - %.not177 = icmp eq i64 %168, -1 + %161 = load i64, ptr %15, align 8, !noalias !2168, !noundef !23 + %.not177 = icmp eq i64 %161, -1 br i1 %.not177, label %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i, label %.lr.ph164 .lr.ph164: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit %.val.i.i20 = load ptr, ptr %1, align 8, !nonnull !23, !align !57 - %169 = getelementptr inbounds i8, ptr %1, i64 8 - %.val1.i.i21 = load ptr, ptr %169, align 8, !nonnull !23, !align !57 - %170 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 56 - %171 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 72 - %172 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 16 - %173 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 32 - br label %175 + %162 = getelementptr inbounds i8, ptr %1, i64 8 + %.val1.i.i21 = load ptr, ptr %162, align 8, !nonnull !23, !align !57 + %163 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 56 + %164 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 72 + %165 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 16 + %166 = getelementptr inbounds i8, ptr %.val1.i.i21, i64 32 + br label %168 .loopexit80: ; preds = %"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22" %lpad.loopexit82 = landingpad { ptr, i32 } cleanup - br label %174 + br label %167 -.loopexit.split-lp81: ; preds = %._crit_edge.invoke, %214, %215 +.loopexit.split-lp81: ; preds = %._crit_edge.invoke, %207, %208 %lpad.loopexit.split-lp83 = landingpad { ptr, i32 } cleanup - br label %174 + br label %167 -174: ; preds = %.loopexit.split-lp81, %.loopexit80 +167: ; preds = %.loopexit.split-lp81, %.loopexit80 %lpad.phi84 = phi { ptr, i32 } [ %lpad.loopexit82, %.loopexit80 ], [ %lpad.loopexit.split-lp83, %.loopexit.split-lp81 ] invoke fastcc void @"_ZN4core3ptr195drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$$RF$mut$u20$hashbrown..raw..inner..RawTableInner$C$hashbrown..raw..inner..RawTableInner..rehash_in_place..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1e6c0d3ea4fa89f4E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #35 - to label %common.resume unwind label %285, !noalias !2168 - -175: ; preds = %.lr.ph164, %284 - %.sroa.02.0.i.i163 = phi i64 [ 0, %.lr.ph164 ], [ %176, %284 ] - %176 = add nuw i64 %.sroa.02.0.i.i163, 1 - %177 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 - %178 = getelementptr inbounds i8, ptr %177, i64 %.sroa.02.0.i.i163 - %179 = load i8, ptr %178, align 1, !noalias !2168, !noundef !23 - %.not.i.i = icmp eq i8 %179, -128 - br i1 %.not.i.i, label %180, label %284 - -180: ; preds = %175 - %181 = shl i64 %.sroa.02.0.i.i163, 3 - %182 = sub nuw nsw i64 -8, %181 - %183 = getelementptr i8, ptr %177, i64 %182 - %184 = sub nsw i64 0, %.sroa.02.0.i.i163 - %185 = getelementptr inbounds i64, ptr %177, i64 %184 - %186 = getelementptr inbounds i8, ptr %185, i64 -8 - %.val4.i19158 = load i64, ptr %186, align 8, !noalias !2237, !noundef !23 - %187 = load i64, ptr %171, align 8, !alias.scope !2241, !noalias !2237, !noundef !23 - %188 = add i64 %.val4.i19158, 1 - %189 = icmp ult i64 %188, %187 - br i1 %189, label %.lr.ph, label %._crit_edge.invoke, !prof !2244 + to label %common.resume unwind label %278, !noalias !2168 + +168: ; preds = %.lr.ph164, %277 + %.sroa.02.0.i.i163 = phi i64 [ 0, %.lr.ph164 ], [ %169, %277 ] + %169 = add nuw i64 %.sroa.02.0.i.i163, 1 + %170 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 + %171 = getelementptr inbounds i8, ptr %170, i64 %.sroa.02.0.i.i163 + %172 = load i8, ptr %171, align 1, !noalias !2168, !noundef !23 + %.not.i.i = icmp eq i8 %172, -128 + br i1 %.not.i.i, label %173, label %277 + +173: ; preds = %168 + %174 = shl i64 %.sroa.02.0.i.i163, 3 + %175 = sub nuw nsw i64 -8, %174 + %176 = getelementptr i8, ptr %170, i64 %175 + %177 = sub nsw i64 0, %.sroa.02.0.i.i163 + %178 = getelementptr inbounds i64, ptr %170, i64 %177 + %179 = getelementptr inbounds i8, ptr %178, i64 -8 + %.val4.i19158 = load i64, ptr %179, align 8, !noalias !2237, !noundef !23 + %180 = load i64, ptr %164, align 8, !alias.scope !2241, !noalias !2237, !noundef !23 + %181 = add i64 %.val4.i19158, 1 + %182 = icmp ult i64 %181, %180 + br i1 %182, label %.lr.ph, label %._crit_edge.invoke, !prof !2244 _ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit: ; preds = %.preheader79 tail call void @llvm.experimental.noalias.scope.decl(metadata !2245) %.val.i17 = load ptr, ptr %0, align 8, !alias.scope !2245, !noalias !2247, !nonnull !23, !noundef !23 - %190 = getelementptr inbounds i64, ptr %.val.i17, i64 %184 - %191 = getelementptr inbounds i8, ptr %190, i64 -8 - %.val4.i19 = load i64, ptr %191, align 8, !noalias !2248, !noundef !23 - %192 = load i64, ptr %171, align 8, !alias.scope !2249, !noalias !2248, !noundef !23 - %193 = add i64 %.val4.i19, 1 - %194 = icmp ult i64 %193, %192 - br i1 %194, label %.lr.ph, label %._crit_edge.invoke, !prof !2251 - -.lr.ph: ; preds = %180, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit - %195 = phi i64 [ %193, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %188, %180 ] - %196 = phi i64 [ %192, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %187, %180 ] - %.val4.i19159 = phi i64 [ %.val4.i19, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %.val4.i19158, %180 ] - %197 = load ptr, ptr %170, align 8, !alias.scope !2252, !noalias !2247, !nonnull !23, !noundef !23 - %198 = load ptr, ptr %172, align 8, !alias.scope !2252, !noalias !2247, !nonnull !23, !noundef !23 - %199 = load i64, ptr %173, align 8, !alias.scope !2252, !noalias !2247, !noundef !23 - %200 = getelementptr inbounds [0 x i32], ptr %197, i64 0, i64 %195 - %201 = load i32, ptr %200, align 4, !noalias !2253, !noundef !23 - %202 = sext i32 %201 to i64 - %203 = icmp ugt i64 %196, %.val4.i19159 - br i1 %203, label %207, label %._crit_edge.invoke, !prof !86 - -._crit_edge.invoke: ; preds = %180, %.lr.ph, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit - %204 = phi i64 [ %193, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %.val4.i19159, %.lr.ph ], [ %188, %180 ] - %205 = phi i64 [ %192, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %196, %.lr.ph ], [ %187, %180 ] - %206 = phi ptr [ @anon.45ca28eacd16980a982db8040ceab1d4.11, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ @anon.45ca28eacd16980a982db8040ceab1d4.12, %.lr.ph ], [ @anon.45ca28eacd16980a982db8040ceab1d4.11, %180 ] - invoke void @_ZN4core9panicking18panic_bounds_check17h326a19b32dc06d6dE(i64 noundef %204, i64 noundef %205, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %206) #34 + %183 = getelementptr inbounds i64, ptr %.val.i17, i64 %177 + %184 = getelementptr inbounds i8, ptr %183, i64 -8 + %.val4.i19 = load i64, ptr %184, align 8, !noalias !2248, !noundef !23 + %185 = load i64, ptr %164, align 8, !alias.scope !2249, !noalias !2248, !noundef !23 + %186 = add i64 %.val4.i19, 1 + %187 = icmp ult i64 %186, %185 + br i1 %187, label %.lr.ph, label %._crit_edge.invoke, !prof !2251 + +.lr.ph: ; preds = %173, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit + %188 = phi i64 [ %186, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %181, %173 ] + %189 = phi i64 [ %185, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %180, %173 ] + %.val4.i19159 = phi i64 [ %.val4.i19, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %.val4.i19158, %173 ] + %190 = load ptr, ptr %163, align 8, !alias.scope !2252, !noalias !2247, !nonnull !23, !noundef !23 + %191 = load ptr, ptr %165, align 8, !alias.scope !2252, !noalias !2247, !nonnull !23, !noundef !23 + %192 = load i64, ptr %166, align 8, !alias.scope !2252, !noalias !2247, !noundef !23 + %193 = getelementptr inbounds [0 x i32], ptr %190, i64 0, i64 %188 + %194 = load i32, ptr %193, align 4, !noalias !2253, !noundef !23 + %195 = sext i32 %194 to i64 + %196 = icmp ugt i64 %189, %.val4.i19159 + br i1 %196, label %200, label %._crit_edge.invoke, !prof !86 + +._crit_edge.invoke: ; preds = %173, %.lr.ph, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit + %197 = phi i64 [ %186, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %.val4.i19159, %.lr.ph ], [ %181, %173 ] + %198 = phi i64 [ %185, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ %189, %.lr.ph ], [ %180, %173 ] + %199 = phi ptr [ @anon.45ca28eacd16980a982db8040ceab1d4.11, %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit ], [ @anon.45ca28eacd16980a982db8040ceab1d4.12, %.lr.ph ], [ @anon.45ca28eacd16980a982db8040ceab1d4.11, %173 ] + invoke void @_ZN4core9panicking18panic_bounds_check17h326a19b32dc06d6dE(i64 noundef %197, i64 noundef %198, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %199) #34 to label %._crit_edge.cont unwind label %.loopexit.split-lp81 ._crit_edge.cont: ; preds = %._crit_edge.invoke unreachable -207: ; preds = %.lr.ph - %208 = getelementptr inbounds [0 x i32], ptr %197, i64 0, i64 %.val4.i19159 - %209 = load i32, ptr %208, align 4, !noalias !2253, !noundef !23 - %210 = sext i32 %209 to i64 - %211 = icmp ugt i32 %209, %201 - br i1 %211, label %214, label %212 +200: ; preds = %.lr.ph + %201 = getelementptr inbounds [0 x i32], ptr %190, i64 0, i64 %.val4.i19159 + %202 = load i32, ptr %201, align 4, !noalias !2253, !noundef !23 + %203 = sext i32 %202 to i64 + %204 = icmp ugt i32 %202, %194 + br i1 %204, label %207, label %205 -212: ; preds = %207 - %213 = icmp ult i64 %199, %202 - br i1 %213, label %215, label %"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22" +205: ; preds = %200 + %206 = icmp ult i64 %192, %195 + br i1 %206, label %208, label %"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22" -214: ; preds = %207 - invoke void @_ZN4core5slice5index22slice_index_order_fail17h0cf4df47d0fb97e4E(i64 noundef %210, i64 noundef %202, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.45ca28eacd16980a982db8040ceab1d4.13) #34 +207: ; preds = %200 + invoke void @_ZN4core5slice5index22slice_index_order_fail17h0cf4df47d0fb97e4E(i64 noundef %203, i64 noundef %195, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.45ca28eacd16980a982db8040ceab1d4.13) #34 to label %.noexc24 unwind label %.loopexit.split-lp81 -.noexc24: ; preds = %214 +.noexc24: ; preds = %207 unreachable -215: ; preds = %212 - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17he4b3fef0dd07c6e1E(i64 noundef %202, i64 noundef %199, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.45ca28eacd16980a982db8040ceab1d4.13) #34 +208: ; preds = %205 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17he4b3fef0dd07c6e1E(i64 noundef %195, i64 noundef %192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.45ca28eacd16980a982db8040ceab1d4.13) #34 to label %.noexc25 unwind label %.loopexit.split-lp81 -.noexc25: ; preds = %215 +.noexc25: ; preds = %208 unreachable -"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22": ; preds = %212 - %216 = sub nuw nsw i64 %202, %210 - %217 = getelementptr inbounds i8, ptr %198, i64 %210 - %218 = invoke fastcc noundef i64 @_ZN5ahash12random_state11RandomState8hash_one17hd9a8ba772e3c57deE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.val.i.i20, ptr noalias noundef nonnull readonly align 1 %217, i64 noundef %216) +"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22": ; preds = %205 + %209 = sub nuw nsw i64 %195, %203 + %210 = getelementptr inbounds i8, ptr %191, i64 %203 + %211 = invoke fastcc noundef i64 @_ZN5ahash12random_state11RandomState8hash_one17hd9a8ba772e3c57deE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.val.i.i20, ptr noalias noundef nonnull readonly align 1 %210, i64 noundef %209) to label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" unwind label %.loopexit80 "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28": ; preds = %"_ZN9hashbrown3map38RawVacantEntryMut$LT$K$C$V$C$S$C$A$GT$18insert_with_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hbe98e832307b20c0E.exit.i22" %.val = load ptr, ptr %0, align 8, !nonnull !23, !noundef !23 %.val3 = load i64, ptr %15, align 8, !noundef !23 - %219 = and i64 %.val3, %218 - %220 = getelementptr inbounds i8, ptr %.val, i64 %219 - %.0.copyload.i45.i = load <16 x i8>, ptr %220, align 1, !noalias !2256 - %221 = icmp slt <16 x i8> %.0.copyload.i45.i, zeroinitializer - %222 = bitcast <16 x i1> %221 to i16 - %.not6.i = icmp eq i16 %222, 0 + %212 = and i64 %.val3, %211 + %213 = getelementptr inbounds i8, ptr %.val, i64 %212 + %.0.copyload.i45.i = load <16 x i8>, ptr %213, align 1, !noalias !2256 + %214 = icmp slt <16 x i8> %.0.copyload.i45.i, zeroinitializer + %215 = bitcast <16 x i1> %214 to i16 + %.not6.i = icmp eq i16 %215, 0 br i1 %.not6.i, label %.lr.ph.i32, label %._crit_edge.i29 ._crit_edge.i29: ; preds = %.lr.ph.i32, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" - %.sroa.0.0.lcssa.i = phi i64 [ %219, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ], [ %238, %.lr.ph.i32 ] - %.lcssa.i = phi i16 [ %222, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ], [ %241, %.lr.ph.i32 ] - %223 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i, i1 true), !range !85 - %224 = zext nneg i16 %223 to i64 - %225 = add i64 %.sroa.0.0.lcssa.i, %224 - %226 = and i64 %225, %.val3 - %227 = getelementptr inbounds i8, ptr %.val, i64 %226 - %228 = load i8, ptr %227, align 1, !noundef !23 - %229 = icmp sgt i8 %228, -1 - br i1 %229, label %230, label %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit - -230: ; preds = %._crit_edge.i29 - %231 = load <16 x i8>, ptr %.val, align 16, !noalias !2259 - %232 = icmp slt <16 x i8> %231, zeroinitializer - %233 = bitcast <16 x i1> %232 to i16 - %.not.i.i31 = icmp ne i16 %233, 0 - %234 = tail call i16 @llvm.cttz.i16(i16 %233, i1 true), !range !85 - %235 = zext nneg i16 %234 to i64 + %.sroa.0.0.lcssa.i = phi i64 [ %212, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ], [ %231, %.lr.ph.i32 ] + %.lcssa.i = phi i16 [ %215, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ], [ %234, %.lr.ph.i32 ] + %216 = tail call i16 @llvm.cttz.i16(i16 %.lcssa.i, i1 true), !range !85 + %217 = zext nneg i16 %216 to i64 + %218 = add i64 %.sroa.0.0.lcssa.i, %217 + %219 = and i64 %218, %.val3 + %220 = getelementptr inbounds i8, ptr %.val, i64 %219 + %221 = load i8, ptr %220, align 1, !noundef !23 + %222 = icmp sgt i8 %221, -1 + br i1 %222, label %223, label %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit + +223: ; preds = %._crit_edge.i29 + %224 = load <16 x i8>, ptr %.val, align 16, !noalias !2259 + %225 = icmp slt <16 x i8> %224, zeroinitializer + %226 = bitcast <16 x i1> %225 to i16 + %.not.i.i31 = icmp ne i16 %226, 0 + %227 = tail call i16 @llvm.cttz.i16(i16 %226, i1 true), !range !85 + %228 = zext nneg i16 %227 to i64 tail call void @llvm.assume(i1 %.not.i.i31) br label %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit .lr.ph.i32: ; preds = %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28", %.lr.ph.i32 - %.sroa.0.08.i = phi i64 [ %238, %.lr.ph.i32 ], [ %219, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ] - %.sroa.7.07.i = phi i64 [ %236, %.lr.ph.i32 ], [ 0, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ] - %236 = add i64 %.sroa.7.07.i, 16 - %237 = add i64 %236, %.sroa.0.08.i - %238 = and i64 %237, %.val3 - %239 = getelementptr inbounds i8, ptr %.val, i64 %238 - %.0.copyload.i4.i = load <16 x i8>, ptr %239, align 1, !noalias !2256 - %240 = icmp slt <16 x i8> %.0.copyload.i4.i, zeroinitializer - %241 = bitcast <16 x i1> %240 to i16 - %.not.i33 = icmp eq i16 %241, 0 + %.sroa.0.08.i = phi i64 [ %231, %.lr.ph.i32 ], [ %212, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ] + %.sroa.7.07.i = phi i64 [ %229, %.lr.ph.i32 ], [ 0, %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h5753f3a1109b9928E.exit28" ] + %229 = add i64 %.sroa.7.07.i, 16 + %230 = add i64 %229, %.sroa.0.08.i + %231 = and i64 %230, %.val3 + %232 = getelementptr inbounds i8, ptr %.val, i64 %231 + %.0.copyload.i4.i = load <16 x i8>, ptr %232, align 1, !noalias !2256 + %233 = icmp slt <16 x i8> %.0.copyload.i4.i, zeroinitializer + %234 = bitcast <16 x i1> %233 to i16 + %.not.i33 = icmp eq i16 %234, 0 br i1 %.not.i33, label %.lr.ph.i32, label %._crit_edge.i29 -_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit: ; preds = %230, %._crit_edge.i29 - %.0.i.i30 = phi i64 [ %235, %230 ], [ %226, %._crit_edge.i29 ] - %242 = sub i64 %.sroa.02.0.i.i163, %219 - %243 = sub i64 %.0.i.i30, %219 - %244 = xor i64 %243, %242 - %.unshifted.i.i = and i64 %244, %.val3 - %245 = icmp ult i64 %.unshifted.i.i, 16 - br i1 %245, label %260, label %246 - -246: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit - %247 = shl i64 %.0.i.i30, 3 - %248 = sub nuw nsw i64 -8, %247 - %249 = getelementptr i8, ptr %.val, i64 %248 - %250 = getelementptr inbounds i8, ptr %.val, i64 %.0.i.i30 - %251 = load i8, ptr %250, align 1, !noalias !2168, !noundef !23 - %252 = lshr i64 %218, 57 - %253 = trunc i64 %252 to i8 - %254 = add i64 %.0.i.i30, -16 - %255 = and i64 %254, %.val3 - store i8 %253, ptr %250, align 1, !noalias !2168 - %256 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 - %257 = getelementptr i8, ptr %256, i64 %255 - %258 = getelementptr i8, ptr %257, i64 16 - store i8 %253, ptr %258, align 1, !noalias !2168 - %259 = icmp eq i8 %251, -1 - br i1 %259, label %274, label %.preheader79 - -260: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit - %261 = lshr i64 %218, 57 - %262 = trunc i64 %261 to i8 - %263 = add i64 %.sroa.02.0.i.i163, -16 - %264 = and i64 %.val3, %263 - %265 = getelementptr inbounds i8, ptr %.val, i64 %.sroa.02.0.i.i163 - store i8 %262, ptr %265, align 1, !noalias !2168 - %266 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 - %267 = getelementptr i8, ptr %266, i64 %264 - %268 = getelementptr i8, ptr %267, i64 16 - store i8 %262, ptr %268, align 1, !noalias !2168 - br label %284 - -.preheader79: ; preds = %246, %.preheader79 - %.0910.i = phi i64 [ %273, %.preheader79 ], [ 0, %246 ] - %269 = getelementptr inbounds i8, ptr %183, i64 %.0910.i - %270 = getelementptr inbounds i8, ptr %249, i64 %.0910.i - %271 = load i8, ptr %269, align 1, !noalias !2168 - %272 = load i8, ptr %270, align 1, !noalias !2168 - store i8 %272, ptr %269, align 1, !noalias !2168 - store i8 %271, ptr %270, align 1, !noalias !2168 - %273 = add nuw nsw i64 %.0910.i, 1 - %exitcond.not.i = icmp eq i64 %273, 8 +_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit: ; preds = %223, %._crit_edge.i29 + %.0.i.i30 = phi i64 [ %228, %223 ], [ %219, %._crit_edge.i29 ] + %235 = sub i64 %.sroa.02.0.i.i163, %212 + %236 = sub i64 %.0.i.i30, %212 + %237 = xor i64 %236, %235 + %.unshifted.i.i = and i64 %237, %.val3 + %238 = icmp ult i64 %.unshifted.i.i, 16 + br i1 %238, label %253, label %239 + +239: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit + %240 = shl i64 %.0.i.i30, 3 + %241 = sub nuw nsw i64 -8, %240 + %242 = getelementptr i8, ptr %.val, i64 %241 + %243 = getelementptr inbounds i8, ptr %.val, i64 %.0.i.i30 + %244 = load i8, ptr %243, align 1, !noalias !2168, !noundef !23 + %245 = lshr i64 %211, 57 + %246 = trunc i64 %245 to i8 + %247 = add i64 %.0.i.i30, -16 + %248 = and i64 %247, %.val3 + store i8 %246, ptr %243, align 1, !noalias !2168 + %249 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 + %250 = getelementptr i8, ptr %249, i64 %248 + %251 = getelementptr i8, ptr %250, i64 16 + store i8 %246, ptr %251, align 1, !noalias !2168 + %252 = icmp eq i8 %244, -1 + br i1 %252, label %267, label %.preheader79 + +253: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner16find_insert_slot17h3ec5b38a9b37e3e2E.exit + %254 = lshr i64 %211, 57 + %255 = trunc i64 %254 to i8 + %256 = add i64 %.sroa.02.0.i.i163, -16 + %257 = and i64 %.val3, %256 + %258 = getelementptr inbounds i8, ptr %.val, i64 %.sroa.02.0.i.i163 + store i8 %255, ptr %258, align 1, !noalias !2168 + %259 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 + %260 = getelementptr i8, ptr %259, i64 %257 + %261 = getelementptr i8, ptr %260, i64 16 + store i8 %255, ptr %261, align 1, !noalias !2168 + br label %277 + +.preheader79: ; preds = %239, %.preheader79 + %.0910.i = phi i64 [ %266, %.preheader79 ], [ 0, %239 ] + %262 = getelementptr inbounds i8, ptr %176, i64 %.0910.i + %263 = getelementptr inbounds i8, ptr %242, i64 %.0910.i + %264 = load i8, ptr %262, align 1, !noalias !2168 + %265 = load i8, ptr %263, align 1, !noalias !2168 + store i8 %265, ptr %262, align 1, !noalias !2168 + store i8 %264, ptr %263, align 1, !noalias !2168 + %266 = add nuw nsw i64 %.0910.i, 1 + %exitcond.not.i = icmp eq i64 %266, 8 br i1 %exitcond.not.i, label %_ZN4core3ptr19swap_nonoverlapping17h984dcd14aa83f486E.exit.loopexit, label %.preheader79 -274: ; preds = %246 - %275 = add i64 %.sroa.02.0.i.i163, -16 - %276 = load i64, ptr %15, align 8, !noalias !2168, !noundef !23 - %277 = and i64 %276, %275 - %278 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 - %279 = getelementptr inbounds i8, ptr %278, i64 %.sroa.02.0.i.i163 - store i8 -1, ptr %279, align 1, !noalias !2168 - %280 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 - %281 = getelementptr i8, ptr %280, i64 %277 - %282 = getelementptr i8, ptr %281, i64 16 - store i8 -1, ptr %282, align 1, !noalias !2168 - %283 = load i64, ptr %183, align 1, !noalias !2168 - store i64 %283, ptr %249, align 1, !noalias !2168 - br label %284 - -284: ; preds = %274, %260, %175 - %exitcond.not = icmp eq i64 %.sroa.02.0.i.i163, %168 - br i1 %exitcond.not, label %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit, label %175 - -285: ; preds = %174 - %286 = landingpad { ptr, i32 } +267: ; preds = %239 + %268 = add i64 %.sroa.02.0.i.i163, -16 + %269 = load i64, ptr %15, align 8, !noalias !2168, !noundef !23 + %270 = and i64 %269, %268 + %271 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 + %272 = getelementptr inbounds i8, ptr %271, i64 %.sroa.02.0.i.i163 + store i8 -1, ptr %272, align 1, !noalias !2168 + %273 = load ptr, ptr %0, align 8, !noalias !2168, !nonnull !23, !noundef !23 + %274 = getelementptr i8, ptr %273, i64 %270 + %275 = getelementptr i8, ptr %274, i64 16 + store i8 -1, ptr %275, align 1, !noalias !2168 + %276 = load i64, ptr %176, align 1, !noalias !2168 + store i64 %276, ptr %242, align 1, !noalias !2168 + br label %277 + +277: ; preds = %267, %253, %168 + %exitcond.not = icmp eq i64 %.sroa.02.0.i.i163, %161 + br i1 %exitcond.not, label %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit, label %168 + +278: ; preds = %167 + %279 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #36, !noalias !2168 unreachable -_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit: ; preds = %284 +_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit: ; preds = %277 %.pre = load i64, ptr %15, align 8, !noalias !2168 %.pre274 = add i64 %.pre, 1 - %287 = lshr i64 %.pre274, 3 - %288 = mul nuw i64 %287, 7 + %280 = lshr i64 %.pre274, 3 + %281 = mul nuw i64 %280, 7 br label %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i _ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i: ; preds = %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit, %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit - %.pre-phi = phi i64 [ %288, %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit ], [ 0, %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit ] - %289 = phi i64 [ %.pre, %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit ], [ -1, %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit ] - %290 = icmp ult i64 %289, 8 - %.0.i.i = select i1 %290, i64 %289, i64 %.pre-phi - %291 = load i64, ptr %9, align 8, !noalias !2168, !noundef !23 - %292 = getelementptr inbounds i8, ptr %0, i64 16 - %293 = sub i64 %.0.i.i, %291 - store i64 %293, ptr %292, align 8, !noalias !2168 + %.pre-phi = phi i64 [ %281, %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit ], [ 0, %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit ] + %282 = phi i64 [ %.pre, %_ZN9hashbrown3raw5inner13RawTableInner15rehash_in_place17h73890415128fb358E.exit.i.loopexit ], [ -1, %_ZN9hashbrown3raw5inner13RawTableInner23prepare_rehash_in_place17h91d387bc5b7b99b8E.exit ] + %283 = icmp ult i64 %282, 8 + %.0.i.i = select i1 %283, i64 %282, i64 %.pre-phi + %284 = load i64, ptr %9, align 8, !noalias !2168, !noundef !23 + %285 = getelementptr inbounds i8, ptr %0, i64 16 + %286 = sub i64 %.0.i.i, %284 + store i64 %286, ptr %285, align 8, !noalias !2168 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !2234 br label %_ZN9hashbrown3raw5inner13RawTableInner20reserve_rehash_inner17h95a1c76e1709f840E.exit diff --git a/bench/regex-rs/optimized/1ri0nxve2ijarfwj.ll b/bench/regex-rs/optimized/1ri0nxve2ijarfwj.ll index 3165788c990..412a23f6e6e 100644 --- a/bench/regex-rs/optimized/1ri0nxve2ijarfwj.ll +++ b/bench/regex-rs/optimized/1ri0nxve2ijarfwj.ll @@ -299,45 +299,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.16 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !11 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.16582408164832741840.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.16582408164832741840.exit - %29 = load ptr, ptr %0, align 8, !nonnull !11, !noundef !11 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #17 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.16582408164832741840.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.16582408164832741840.exit + %20 = load ptr, ptr %0, align 8, !nonnull !11, !noundef !11 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #17 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.16582408164832741840.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.16582408164832741840.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.16582408164832741840.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.16582408164832741840.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.16582408164832741840.exit, %19 ret void } @@ -564,45 +550,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hc3f9533 _ZN9hashbrown3raw13RawTableInner13drop_elements17hfb221bb232bb5436E.llvm.16582408164832741840.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17h0d02cf6efb4fe04eE.llvm.16582408164832741840.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !128) %40 = add i64 %6, 1 - %41 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %40) - %42 = extractvalue { i64, i1 } %41, 1 - %43 = xor i1 %42, true - tail call void @llvm.assume(i1 %43) - %44 = extractvalue { i64, i1 } %41, 0 - %45 = add i64 %3, -1 - %46 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %44, i64 %45) - %47 = extractvalue { i64, i1 } %46, 1 - %48 = xor i1 %47, true - tail call void @llvm.assume(i1 %48) - %49 = extractvalue { i64, i1 } %46, 0 - %50 = sub i64 0, %3 - %51 = and i64 %49, %50 - %52 = add i64 %6, 17 - %53 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %52) - %54 = extractvalue { i64, i1 } %53, 0 - %55 = extractvalue { i64, i1 } %53, 1 - %56 = sub nuw i64 -9223372036854775808, %3 - %57 = icmp ule i64 %54, %56 - %58 = xor i1 %55, true - tail call void @llvm.assume(i1 %58) - tail call void @llvm.assume(i1 %57) - %59 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %59) - %60 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %60) - %61 = icmp eq i64 %54, 0 - br i1 %61, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit, label %62 - -62: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfb221bb232bb5436E.llvm.16582408164832741840.exit - %63 = load ptr, ptr %0, align 8, !alias.scope !128, !nonnull !11, !noundef !11 - %64 = sub nsw i64 0, %51 - %65 = getelementptr inbounds i8, ptr %63, i64 %64 - %66 = icmp sgt i64 %45, -1 - tail call void @llvm.assume(i1 %66) - tail call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %54, i64 noundef %3) #17, !noalias !128 + %41 = mul nuw i64 %40, %2 + %42 = add i64 %3, -1 + %43 = add nuw i64 %42, %41 + %44 = sub i64 0, %3 + %45 = and i64 %43, %44 + %46 = add i64 %6, 17 + %47 = add nuw i64 %46, %45 + %48 = sub nuw i64 -9223372036854775808, %3 + %49 = icmp ule i64 %47, %48 + tail call void @llvm.assume(i1 %49) + %50 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %50) + %51 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i64 %47, 0 + br i1 %52, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit, label %53 + +53: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfb221bb232bb5436E.llvm.16582408164832741840.exit + %54 = load ptr, ptr %0, align 8, !alias.scope !128, !nonnull !11, !noundef !11 + %55 = sub nsw i64 0, %45 + %56 = getelementptr inbounds i8, ptr %54, i64 %55 + tail call void @__rust_dealloc(ptr noundef nonnull %56, i64 noundef %47, i64 noundef %3) #17, !noalias !128 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit: ; preds = %62, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfb221bb232bb5436E.llvm.16582408164832741840.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit: ; preds = %53, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hfb221bb232bb5436E.llvm.16582408164832741840.exit, %4 ret void } @@ -685,45 +657,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17he5cfc9a _ZN9hashbrown3raw13RawTableInner13drop_elements17hc1db0bf8cf02268dE.llvm.16582408164832741840.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17hb56f1ec0c2c92f95E.llvm.16582408164832741840.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !163) %40 = add i64 %6, 1 - %41 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %40) - %42 = extractvalue { i64, i1 } %41, 1 - %43 = xor i1 %42, true - tail call void @llvm.assume(i1 %43) - %44 = extractvalue { i64, i1 } %41, 0 - %45 = add i64 %3, -1 - %46 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %44, i64 %45) - %47 = extractvalue { i64, i1 } %46, 1 - %48 = xor i1 %47, true - tail call void @llvm.assume(i1 %48) - %49 = extractvalue { i64, i1 } %46, 0 - %50 = sub i64 0, %3 - %51 = and i64 %49, %50 - %52 = add i64 %6, 17 - %53 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %52) - %54 = extractvalue { i64, i1 } %53, 0 - %55 = extractvalue { i64, i1 } %53, 1 - %56 = sub nuw i64 -9223372036854775808, %3 - %57 = icmp ule i64 %54, %56 - %58 = xor i1 %55, true - tail call void @llvm.assume(i1 %58) - tail call void @llvm.assume(i1 %57) - %59 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %59) - %60 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %60) - %61 = icmp eq i64 %54, 0 - br i1 %61, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit, label %62 - -62: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc1db0bf8cf02268dE.llvm.16582408164832741840.exit - %63 = load ptr, ptr %0, align 8, !alias.scope !163, !nonnull !11, !noundef !11 - %64 = sub nsw i64 0, %51 - %65 = getelementptr inbounds i8, ptr %63, i64 %64 - %66 = icmp sgt i64 %45, -1 - tail call void @llvm.assume(i1 %66) - tail call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %54, i64 noundef %3) #17, !noalias !163 + %41 = mul nuw i64 %40, %2 + %42 = add i64 %3, -1 + %43 = add nuw i64 %42, %41 + %44 = sub i64 0, %3 + %45 = and i64 %43, %44 + %46 = add i64 %6, 17 + %47 = add nuw i64 %46, %45 + %48 = sub nuw i64 -9223372036854775808, %3 + %49 = icmp ule i64 %47, %48 + tail call void @llvm.assume(i1 %49) + %50 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %50) + %51 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i64 %47, 0 + br i1 %52, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit, label %53 + +53: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc1db0bf8cf02268dE.llvm.16582408164832741840.exit + %54 = load ptr, ptr %0, align 8, !alias.scope !163, !nonnull !11, !noundef !11 + %55 = sub nsw i64 0, %45 + %56 = getelementptr inbounds i8, ptr %54, i64 %55 + tail call void @__rust_dealloc(ptr noundef nonnull %56, i64 noundef %47, i64 noundef %3) #17, !noalias !163 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit: ; preds = %62, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc1db0bf8cf02268dE.llvm.16582408164832741840.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h0821552303dcec9aE.llvm.16582408164832741840.exit: ; preds = %53, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hc1db0bf8cf02268dE.llvm.16582408164832741840.exit, %4 ret void } diff --git a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll index a7417f80c23..b6c0f6ebfe1 100644 --- a/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll +++ b/bench/regex-rs/optimized/4dth5ncaqumdqgby.ll @@ -2940,46 +2940,32 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %8 = getelementptr inbounds i8, ptr %0, i64 16 %9 = load i64, ptr %8, align 8, !alias.scope !215, !noundef !5 %10 = add i64 %.val1.i, 1 - %11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %7, i64 %10) - %12 = extractvalue { i64, i1 } %11, 1 - %13 = xor i1 %12, true - tail call void @llvm.assume(i1 %13) - %14 = extractvalue { i64, i1 } %11, 0 - %15 = add i64 %9, -1 - %16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %14, i64 %15) - %17 = extractvalue { i64, i1 } %16, 1 - %18 = xor i1 %17, true - tail call void @llvm.assume(i1 %18) - %19 = extractvalue { i64, i1 } %16, 0 - %20 = sub i64 0, %9 - %21 = and i64 %19, %20 - %22 = add i64 %.val1.i, 17 - %23 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %21, i64 %22) - %24 = extractvalue { i64, i1 } %23, 0 - %25 = extractvalue { i64, i1 } %23, 1 - %26 = sub nuw i64 -9223372036854775808, %9 - %27 = icmp ule i64 %24, %26 - %28 = xor i1 %25, true - tail call void @llvm.assume(i1 %28) - tail call void @llvm.assume(i1 %27) - %29 = icmp ult i64 %9, -9223372036854775807 - tail call void @llvm.assume(i1 %29) - %30 = icmp ne i64 %9, 0 - tail call void @llvm.assume(i1 %30) - %31 = icmp eq i64 %24, 0 - br i1 %31, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit", label %32 - -32: ; preds = %5 - %33 = icmp ne ptr %.val.i, null - tail call void @llvm.assume(i1 %33) - %34 = sub nsw i64 0, %21 - %35 = getelementptr inbounds i8, ptr %.val.i, i64 %34 - %36 = icmp sgt i64 %15, -1 - tail call void @llvm.assume(i1 %36) - tail call void @__rust_dealloc(ptr noundef nonnull %35, i64 noundef %24, i64 noundef %9) #34, !noalias !216 + %11 = mul nuw i64 %7, %10 + %12 = add i64 %9, -1 + %13 = add nuw i64 %12, %11 + %14 = sub i64 0, %9 + %15 = and i64 %13, %14 + %16 = add i64 %.val1.i, 17 + %17 = add nuw i64 %16, %15 + %18 = sub nuw i64 -9223372036854775808, %9 + %19 = icmp ule i64 %17, %18 + tail call void @llvm.assume(i1 %19) + %20 = icmp ult i64 %9, -9223372036854775807 + tail call void @llvm.assume(i1 %20) + %21 = icmp ne i64 %9, 0 + tail call void @llvm.assume(i1 %21) + %22 = icmp eq i64 %17, 0 + br i1 %22, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit", label %23 + +23: ; preds = %5 + %24 = icmp ne ptr %.val.i, null + tail call void @llvm.assume(i1 %24) + %25 = sub nsw i64 0, %15 + %26 = getelementptr inbounds i8, ptr %.val.i, i64 %25 + tail call void @__rust_dealloc(ptr noundef nonnull %26, i64 noundef %17, i64 noundef %9) #34, !noalias !216 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit" -"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit": ; preds = %1, %5, %32 +"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7656fca3dc56cecfE.exit": ; preds = %1, %5, %23 ret void } @@ -4004,45 +3990,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !5 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12622858556511099134.exit - %29 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #34 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12622858556511099134.exit + %20 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #34 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12622858556511099134.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.12622858556511099134.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.12622858556511099134.exit, %19 ret void } @@ -4531,45 +4503,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h478286a _ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.12622858556511099134.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17h6ba2e841d08c5071E.llvm.12622858556511099134.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !424) %40 = add i64 %6, 1 - %41 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %40) - %42 = extractvalue { i64, i1 } %41, 1 - %43 = xor i1 %42, true - tail call void @llvm.assume(i1 %43) - %44 = extractvalue { i64, i1 } %41, 0 - %45 = add i64 %3, -1 - %46 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %44, i64 %45) - %47 = extractvalue { i64, i1 } %46, 1 - %48 = xor i1 %47, true - tail call void @llvm.assume(i1 %48) - %49 = extractvalue { i64, i1 } %46, 0 - %50 = sub i64 0, %3 - %51 = and i64 %49, %50 - %52 = add i64 %6, 17 - %53 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %52) - %54 = extractvalue { i64, i1 } %53, 0 - %55 = extractvalue { i64, i1 } %53, 1 - %56 = sub nuw i64 -9223372036854775808, %3 - %57 = icmp ule i64 %54, %56 - %58 = xor i1 %55, true - tail call void @llvm.assume(i1 %58) - tail call void @llvm.assume(i1 %57) - %59 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %59) - %60 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %60) - %61 = icmp eq i64 %54, 0 - br i1 %61, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit, label %62 - -62: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.12622858556511099134.exit - %63 = load ptr, ptr %0, align 8, !alias.scope !424, !nonnull !5, !noundef !5 - %64 = sub nsw i64 0, %51 - %65 = getelementptr inbounds i8, ptr %63, i64 %64 - %66 = icmp sgt i64 %45, -1 - tail call void @llvm.assume(i1 %66) - tail call void @__rust_dealloc(ptr noundef nonnull %65, i64 noundef %54, i64 noundef %3) #34, !noalias !424 + %41 = mul nuw i64 %40, %2 + %42 = add i64 %3, -1 + %43 = add nuw i64 %42, %41 + %44 = sub i64 0, %3 + %45 = and i64 %43, %44 + %46 = add i64 %6, 17 + %47 = add nuw i64 %46, %45 + %48 = sub nuw i64 -9223372036854775808, %3 + %49 = icmp ule i64 %47, %48 + tail call void @llvm.assume(i1 %49) + %50 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %50) + %51 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %51) + %52 = icmp eq i64 %47, 0 + br i1 %52, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit, label %53 + +53: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.12622858556511099134.exit + %54 = load ptr, ptr %0, align 8, !alias.scope !424, !nonnull !5, !noundef !5 + %55 = sub nsw i64 0, %45 + %56 = getelementptr inbounds i8, ptr %54, i64 %55 + tail call void @__rust_dealloc(ptr noundef nonnull %56, i64 noundef %47, i64 noundef %3) #34, !noalias !424 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit: ; preds = %62, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.12622858556511099134.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit: ; preds = %53, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hb8ab20d6e6271bd8E.llvm.12622858556511099134.exit, %4 ret void } @@ -4651,45 +4609,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h5bfc706 _ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.12622858556511099134.exit: ; preds = %"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17h3c91cd587966976fE.llvm.12622858556511099134.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !456) %41 = add i64 %6, 1 - %42 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = add i64 %3, -1 - %47 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %45, i64 %46) - %48 = extractvalue { i64, i1 } %47, 1 - %49 = xor i1 %48, true - tail call void @llvm.assume(i1 %49) - %50 = extractvalue { i64, i1 } %47, 0 - %51 = sub i64 0, %3 - %52 = and i64 %50, %51 - %53 = add i64 %6, 17 - %54 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %53) - %55 = extractvalue { i64, i1 } %54, 0 - %56 = extractvalue { i64, i1 } %54, 1 - %57 = sub nuw i64 -9223372036854775808, %3 - %58 = icmp ule i64 %55, %57 - %59 = xor i1 %56, true - tail call void @llvm.assume(i1 %59) - tail call void @llvm.assume(i1 %58) - %60 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %60) - %61 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %61) - %62 = icmp eq i64 %55, 0 - br i1 %62, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit, label %63 - -63: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.12622858556511099134.exit - %64 = load ptr, ptr %0, align 8, !alias.scope !456, !nonnull !5, !noundef !5 - %65 = sub nsw i64 0, %52 - %66 = getelementptr inbounds i8, ptr %64, i64 %65 - %67 = icmp sgt i64 %46, -1 - tail call void @llvm.assume(i1 %67) - tail call void @__rust_dealloc(ptr noundef nonnull %66, i64 noundef %55, i64 noundef %3) #34, !noalias !456 + %42 = mul nuw i64 %41, %2 + %43 = add i64 %3, -1 + %44 = add nuw i64 %43, %42 + %45 = sub i64 0, %3 + %46 = and i64 %44, %45 + %47 = add i64 %6, 17 + %48 = add nuw i64 %47, %46 + %49 = sub nuw i64 -9223372036854775808, %3 + %50 = icmp ule i64 %48, %49 + tail call void @llvm.assume(i1 %50) + %51 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %51) + %52 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %52) + %53 = icmp eq i64 %48, 0 + br i1 %53, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit, label %54 + +54: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.12622858556511099134.exit + %55 = load ptr, ptr %0, align 8, !alias.scope !456, !nonnull !5, !noundef !5 + %56 = sub nsw i64 0, %46 + %57 = getelementptr inbounds i8, ptr %55, i64 %56 + tail call void @__rust_dealloc(ptr noundef nonnull %57, i64 noundef %48, i64 noundef %3) #34, !noalias !456 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit: ; preds = %63, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.12622858556511099134.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h13d94914afbe307bE.llvm.12622858556511099134.exit: ; preds = %54, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9959d055644e7848E.llvm.12622858556511099134.exit, %4 ret void } @@ -4917,7 +4861,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %181 + br i1 %.not.i, label %30, label %171 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -5045,11 +4989,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #31, !noalias !535 resume { ptr, i32 } %82 -.preheader: ; preds = %.preheader.lr.ph, %169 - %.sroa.1321.071 = phi i16 [ %77, %.preheader.lr.ph ], [ %91, %169 ] - %.sroa.016.070 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.016.1.lcssa, %169 ] - %.sroa.517.069 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.517.1.lcssa, %169 ] - %.sroa.919.068 = phi i64 [ %72, %.preheader.lr.ph ], [ %95, %169 ] +.preheader: ; preds = %.preheader.lr.ph, %159 + %.sroa.1321.071 = phi i16 [ %77, %.preheader.lr.ph ], [ %91, %159 ] + %.sroa.016.070 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.016.1.lcssa, %159 ] + %.sroa.517.069 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.517.1.lcssa, %159 ] + %.sroa.919.068 = phi i64 [ %72, %.preheader.lr.ph ], [ %95, %159 ] %.not.not.i62 = icmp eq i16 %.sroa.1321.071, 0 br i1 %.not.not.i62, label %.noexc2, label %._crit_edge @@ -5136,9 +5080,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %116 = xor <2 x i64> %114, %115 store <2 x i64> %116, ptr %5, align 16, !noalias !590 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.12769474248840661535"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %143 unwind label %81 + to label %133 unwind label %81 -.thread54.loopexit: ; preds = %169 +.thread54.loopexit: ; preds = %159 %.pre = load i64, ptr %13, align 8, !alias.scope !592, !noalias !593 %.pre76 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !510 br label %.thread54 @@ -5164,123 +5108,110 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %120, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %121 121: ; preds = %.thread54 - %122 = add i64 %.val1.i.i, 1 - %123 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %122, i64 24) - %124 = extractvalue { i64, i1 } %123, 1 - %125 = xor i1 %124, true - call void @llvm.assume(i1 %125), !noalias !535 - %126 = extractvalue { i64, i1 } %123, 0 - %127 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %126, i64 15) - %128 = extractvalue { i64, i1 } %127, 1 - %129 = xor i1 %128, true - call void @llvm.assume(i1 %129), !noalias !535 - %130 = extractvalue { i64, i1 } %127, 0 - %131 = and i64 %130, -16 - %132 = add i64 %.val1.i.i, 17 - %133 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %131, i64 %132) - %134 = extractvalue { i64, i1 } %133, 0 - %135 = extractvalue { i64, i1 } %133, 1 - %136 = icmp ult i64 %134, 9223372036854775793 - %137 = xor i1 %135, true - call void @llvm.assume(i1 %137), !noalias !535 - call void @llvm.assume(i1 %136), !noalias !535 - %138 = icmp eq i64 %134, 0 - br i1 %138, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %139 - -139: ; preds = %121 - %140 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %140), !noalias !535 - %141 = sub nsw i64 0, %131 - %142 = getelementptr inbounds i8, ptr %.val.i.i, i64 %141 - call void @__rust_dealloc(ptr noundef nonnull %142, i64 noundef %134, i64 noundef 16) #34, !noalias !609 + %122 = mul i64 %.val1.i.i, 24 + %123 = add i64 %122, 39 + %124 = and i64 %123, -16 + %125 = add i64 %.val1.i.i, 17 + %126 = add nuw i64 %125, %124 + %127 = icmp ult i64 %126, 9223372036854775793 + call void @llvm.assume(i1 %127), !noalias !535 + %128 = icmp eq i64 %126, 0 + br i1 %128, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %129 + +129: ; preds = %121 + %130 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %130), !noalias !535 + %131 = sub nsw i64 0, %124 + %132 = getelementptr inbounds i8, ptr %.val.i.i, i64 %131 + call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %126, i64 noundef 16) #34, !noalias !609 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit": ; preds = %.thread54, %121, %139 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit": ; preds = %.thread54, %121, %129 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9), !noalias !510 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit -143: ; preds = %.noexc9 - %144 = load <4 x i64>, ptr %5, align 16, !noalias !590 - %145 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %144) +133: ; preds = %.noexc9 + %134 = load <4 x i64>, ptr %5, align 16, !noalias !590 + %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !590 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7), !noalias !561 %.sroa.617.0..sroa_idx.i.i.val3 = load i64, ptr %.sroa.617.i.i.sroa.4.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noundef !5 - %146 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %145 - %147 = getelementptr inbounds i8, ptr %71, i64 %146 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %147, align 1, !noalias !614 - %148 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %149 = bitcast <16 x i1> %148 to i16 - %.not6.i.i = icmp eq i16 %149, 0 + %136 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %135 + %137 = getelementptr inbounds i8, ptr %71, i64 %136 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %137, align 1, !noalias !614 + %138 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %139 = bitcast <16 x i1> %138 to i16 + %.not6.i.i = icmp eq i16 %139, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %143, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %152, %.lr.ph.i.i ], [ %146, %143 ] - %.sroa.7.07.i.i = phi i64 [ %150, %.lr.ph.i.i ], [ 0, %143 ] - %150 = add i64 %.sroa.7.07.i.i, 16 - %151 = add i64 %150, %.sroa.0.08.i.i - %152 = and i64 %151, %.sroa.617.0..sroa_idx.i.i.val3 - %153 = getelementptr inbounds i8, ptr %71, i64 %152 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %153, align 1, !noalias !614 - %154 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %155 = bitcast <16 x i1> %154 to i16 - %.not.i.i = icmp eq i16 %155, 0 +.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i + %.sroa.0.08.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] + %.sroa.7.07.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] + %140 = add i64 %.sroa.7.07.i.i, 16 + %141 = add i64 %140, %.sroa.0.08.i.i + %142 = and i64 %141, %.sroa.617.0..sroa_idx.i.i.val3 + %143 = getelementptr inbounds i8, ptr %71, i64 %142 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %143, align 1, !noalias !614 + %144 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %145 = bitcast <16 x i1> %144 to i16 + %.not.i.i = icmp eq i16 %145, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %143 - %.sroa.0.0.lcssa.i.i = phi i64 [ %146, %143 ], [ %152, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %149, %143 ], [ %155, %.lr.ph.i.i ] - %156 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !315 - %157 = zext nneg i16 %156 to i64 - %158 = add i64 %.sroa.0.0.lcssa.i.i, %157 - %159 = and i64 %158, %.sroa.617.0..sroa_idx.i.i.val3 - %160 = getelementptr inbounds i8, ptr %71, i64 %159 - %161 = load i8, ptr %160, align 1, !noundef !5 - %162 = icmp sgt i8 %161, -1 - br i1 %162, label %163, label %169 - -163: ; preds = %._crit_edge.i.i - %164 = load <16 x i8>, ptr %71, align 16, !noalias !617 - %165 = icmp slt <16 x i8> %164, zeroinitializer - %166 = bitcast <16 x i1> %165 to i16 - %.not.i.i.i = icmp ne i16 %166, 0 - %167 = call i16 @llvm.cttz.i16(i16 %166, i1 true), !range !315 - %168 = zext nneg i16 %167 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 + %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] + %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !315 + %147 = zext nneg i16 %146 to i64 + %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 + %149 = and i64 %148, %.sroa.617.0..sroa_idx.i.i.val3 + %150 = getelementptr inbounds i8, ptr %71, i64 %149 + %151 = load i8, ptr %150, align 1, !noundef !5 + %152 = icmp sgt i8 %151, -1 + br i1 %152, label %153, label %159 + +153: ; preds = %._crit_edge.i.i + %154 = load <16 x i8>, ptr %71, align 16, !noalias !617 + %155 = icmp slt <16 x i8> %154, zeroinitializer + %156 = bitcast <16 x i1> %155 to i16 + %.not.i.i.i = icmp ne i16 %156, 0 + %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !315 + %158 = zext nneg i16 %157 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %169 - -169: ; preds = %163, %._crit_edge.i.i - %.0.i.i.i11 = phi i64 [ %168, %163 ], [ %159, %._crit_edge.i.i ] - %170 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i11 - %171 = lshr i64 %145, 57 - %172 = trunc i64 %171 to i8 - %173 = add i64 %.0.i.i.i11, -16 - %174 = and i64 %173, %.sroa.617.0..sroa_idx.i.i.val3 - store i8 %172, ptr %170, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %174 - store i8 %172, ptr %gep, align 1 - %175 = load ptr, ptr %0, align 8, !alias.scope !592, !noalias !593, !nonnull !5, !noundef !5 + br label %159 + +159: ; preds = %153, %._crit_edge.i.i + %.0.i.i.i11 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] + %160 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i11 + %161 = lshr i64 %135, 57 + %162 = trunc i64 %161 to i8 + %163 = add i64 %.0.i.i.i11, -16 + %164 = and i64 %163, %.sroa.617.0..sroa_idx.i.i.val3 + store i8 %162, ptr %160, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %164 + store i8 %162, ptr %gep, align 1 + %165 = load ptr, ptr %0, align 8, !alias.scope !592, !noalias !593, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %94, -24 - %176 = getelementptr i8, ptr %175, i64 %.neg.i.i - %177 = getelementptr i8, ptr %176, i64 -24 - %178 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !510, !nonnull !5, !noundef !5 + %166 = getelementptr i8, ptr %165, i64 %.neg.i.i + %167 = getelementptr i8, ptr %166, i64 -24 + %168 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !510, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i11, -24 - %179 = getelementptr i8, ptr %178, i64 %.neg28.i.i - %180 = getelementptr i8, ptr %179, i64 -24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %180, ptr noundef nonnull align 1 dereferenceable(24) %177, i64 24, i1 false), !noalias !535 + %169 = getelementptr i8, ptr %168, i64 %.neg28.i.i + %170 = getelementptr i8, ptr %169, i64 -24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %170, ptr noundef nonnull align 1 dereferenceable(24) %167, i64 24, i1 false), !noalias !535 %.not = icmp eq i64 %95, 0 br i1 %.not, label %.thread54.loopexit, label %.preheader -181: ; preds = %22 +171: ; preds = %22 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %10, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h34c7a3fa65e75378E", ptr noundef nonnull @"_ZN4core3ptr103drop_in_place$LT$$LP$alloc..sync..Arc$LT$str$GT$$C$regex_automata..util..primitives..SmallIndex$RP$$GT$17hec5ca2eabae3278dE.llvm.12622858556511099134") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit: ; preds = %80, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", %18, %181 - %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %181 ], [ %.sroa.9.038.ph, %80 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] - %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %181 ], [ %.sroa.5.040.ph, %80 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] - %182 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %183 = insertvalue { i64, i64 } %182, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit: ; preds = %80, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", %18, %171 + %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %171 ], [ %.sroa.9.038.ph, %80 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] + %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %171 ], [ %.sroa.5.040.ph, %80 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] + %172 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %173 = insertvalue { i64, i64 } %172, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) - ret { i64, i64 } %183 + ret { i64, i64 } %173 } ; Function Attrs: cold nonlazybind uwtable @@ -5320,7 +5251,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %25, i64 %24, i64 %28 %29 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %16, %29 - br i1 %.not.i, label %30, label %181 + br i1 %.not.i, label %30, label %171 30: ; preds = %22 %31 = add nuw i64 %.0.i, 1 @@ -5448,11 +5379,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #31, !noalias !654 resume { ptr, i32 } %82 -.preheader: ; preds = %.preheader.lr.ph, %169 - %.sroa.1321.071 = phi i16 [ %77, %.preheader.lr.ph ], [ %91, %169 ] - %.sroa.016.070 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.016.1.lcssa, %169 ] - %.sroa.517.069 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.517.1.lcssa, %169 ] - %.sroa.919.068 = phi i64 [ %72, %.preheader.lr.ph ], [ %95, %169 ] +.preheader: ; preds = %.preheader.lr.ph, %159 + %.sroa.1321.071 = phi i16 [ %77, %.preheader.lr.ph ], [ %91, %159 ] + %.sroa.016.070 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.016.1.lcssa, %159 ] + %.sroa.517.069 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.517.1.lcssa, %159 ] + %.sroa.919.068 = phi i64 [ %72, %.preheader.lr.ph ], [ %95, %159 ] %.not.not.i62 = icmp eq i16 %.sroa.1321.071, 0 br i1 %.not.not.i62, label %.noexc2, label %._crit_edge @@ -5539,9 +5470,9 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %116 = xor <2 x i64> %114, %115 store <2 x i64> %116, ptr %5, align 16, !noalias !707 invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.12769474248840661535"(ptr noalias noundef nonnull align 8 dereferenceable(32) %5) - to label %143 unwind label %81 + to label %133 unwind label %81 -.thread54.loopexit: ; preds = %169 +.thread54.loopexit: ; preds = %159 %.pre = load i64, ptr %13, align 8, !alias.scope !709, !noalias !710 %.pre76 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !630 br label %.thread54 @@ -5567,123 +5498,110 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %120, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %121 121: ; preds = %.thread54 - %122 = add i64 %.val1.i.i, 1 - %123 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %122, i64 24) - %124 = extractvalue { i64, i1 } %123, 1 - %125 = xor i1 %124, true - call void @llvm.assume(i1 %125), !noalias !654 - %126 = extractvalue { i64, i1 } %123, 0 - %127 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %126, i64 15) - %128 = extractvalue { i64, i1 } %127, 1 - %129 = xor i1 %128, true - call void @llvm.assume(i1 %129), !noalias !654 - %130 = extractvalue { i64, i1 } %127, 0 - %131 = and i64 %130, -16 - %132 = add i64 %.val1.i.i, 17 - %133 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %131, i64 %132) - %134 = extractvalue { i64, i1 } %133, 0 - %135 = extractvalue { i64, i1 } %133, 1 - %136 = icmp ult i64 %134, 9223372036854775793 - %137 = xor i1 %135, true - call void @llvm.assume(i1 %137), !noalias !654 - call void @llvm.assume(i1 %136), !noalias !654 - %138 = icmp eq i64 %134, 0 - br i1 %138, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %139 - -139: ; preds = %121 - %140 = icmp ne ptr %.val.i.i, null - call void @llvm.assume(i1 %140), !noalias !654 - %141 = sub nsw i64 0, %131 - %142 = getelementptr inbounds i8, ptr %.val.i.i, i64 %141 - call void @__rust_dealloc(ptr noundef nonnull %142, i64 noundef %134, i64 noundef 16) #34, !noalias !726 + %122 = mul i64 %.val1.i.i, 24 + %123 = add i64 %122, 39 + %124 = and i64 %123, -16 + %125 = add i64 %.val1.i.i, 17 + %126 = add nuw i64 %125, %124 + %127 = icmp ult i64 %126, 9223372036854775793 + call void @llvm.assume(i1 %127), !noalias !654 + %128 = icmp eq i64 %126, 0 + br i1 %128, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", label %129 + +129: ; preds = %121 + %130 = icmp ne ptr %.val.i.i, null + call void @llvm.assume(i1 %130), !noalias !654 + %131 = sub nsw i64 0, %124 + %132 = getelementptr inbounds i8, ptr %.val.i.i, i64 %131 + call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %126, i64 noundef 16) #34, !noalias !726 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit": ; preds = %.thread54, %121, %139 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit": ; preds = %.thread54, %121, %129 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %9), !noalias !630 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit -143: ; preds = %.noexc9 - %144 = load <4 x i64>, ptr %5, align 16, !noalias !707 - %145 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %144) +133: ; preds = %.noexc9 + %134 = load <4 x i64>, ptr %5, align 16, !noalias !707 + %135 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> %134) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !707 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %7), !noalias !680 %.sroa.617.0..sroa_idx.i.i.val3 = load i64, ptr %.sroa.617.i.i.sroa.4.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noundef !5 - %146 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %145 - %147 = getelementptr inbounds i8, ptr %71, i64 %146 - %.0.copyload.i45.i.i = load <16 x i8>, ptr %147, align 1, !noalias !731 - %148 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer - %149 = bitcast <16 x i1> %148 to i16 - %.not6.i.i = icmp eq i16 %149, 0 + %136 = and i64 %.sroa.617.0..sroa_idx.i.i.val3, %135 + %137 = getelementptr inbounds i8, ptr %71, i64 %136 + %.0.copyload.i45.i.i = load <16 x i8>, ptr %137, align 1, !noalias !731 + %138 = icmp slt <16 x i8> %.0.copyload.i45.i.i, zeroinitializer + %139 = bitcast <16 x i1> %138 to i16 + %.not6.i.i = icmp eq i16 %139, 0 br i1 %.not6.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.lr.ph.i.i: ; preds = %143, %.lr.ph.i.i - %.sroa.0.08.i.i = phi i64 [ %152, %.lr.ph.i.i ], [ %146, %143 ] - %.sroa.7.07.i.i = phi i64 [ %150, %.lr.ph.i.i ], [ 0, %143 ] - %150 = add i64 %.sroa.7.07.i.i, 16 - %151 = add i64 %150, %.sroa.0.08.i.i - %152 = and i64 %151, %.sroa.617.0..sroa_idx.i.i.val3 - %153 = getelementptr inbounds i8, ptr %71, i64 %152 - %.0.copyload.i4.i.i = load <16 x i8>, ptr %153, align 1, !noalias !731 - %154 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer - %155 = bitcast <16 x i1> %154 to i16 - %.not.i.i = icmp eq i16 %155, 0 +.lr.ph.i.i: ; preds = %133, %.lr.ph.i.i + %.sroa.0.08.i.i = phi i64 [ %142, %.lr.ph.i.i ], [ %136, %133 ] + %.sroa.7.07.i.i = phi i64 [ %140, %.lr.ph.i.i ], [ 0, %133 ] + %140 = add i64 %.sroa.7.07.i.i, 16 + %141 = add i64 %140, %.sroa.0.08.i.i + %142 = and i64 %141, %.sroa.617.0..sroa_idx.i.i.val3 + %143 = getelementptr inbounds i8, ptr %71, i64 %142 + %.0.copyload.i4.i.i = load <16 x i8>, ptr %143, align 1, !noalias !731 + %144 = icmp slt <16 x i8> %.0.copyload.i4.i.i, zeroinitializer + %145 = bitcast <16 x i1> %144 to i16 + %.not.i.i = icmp eq i16 %145, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -._crit_edge.i.i: ; preds = %.lr.ph.i.i, %143 - %.sroa.0.0.lcssa.i.i = phi i64 [ %146, %143 ], [ %152, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %149, %143 ], [ %155, %.lr.ph.i.i ] - %156 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !315 - %157 = zext nneg i16 %156 to i64 - %158 = add i64 %.sroa.0.0.lcssa.i.i, %157 - %159 = and i64 %158, %.sroa.617.0..sroa_idx.i.i.val3 - %160 = getelementptr inbounds i8, ptr %71, i64 %159 - %161 = load i8, ptr %160, align 1, !noundef !5 - %162 = icmp sgt i8 %161, -1 - br i1 %162, label %163, label %169 - -163: ; preds = %._crit_edge.i.i - %164 = load <16 x i8>, ptr %71, align 16, !noalias !734 - %165 = icmp slt <16 x i8> %164, zeroinitializer - %166 = bitcast <16 x i1> %165 to i16 - %.not.i.i.i = icmp ne i16 %166, 0 - %167 = call i16 @llvm.cttz.i16(i16 %166, i1 true), !range !315 - %168 = zext nneg i16 %167 to i64 +._crit_edge.i.i: ; preds = %.lr.ph.i.i, %133 + %.sroa.0.0.lcssa.i.i = phi i64 [ %136, %133 ], [ %142, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %139, %133 ], [ %145, %.lr.ph.i.i ] + %146 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !315 + %147 = zext nneg i16 %146 to i64 + %148 = add i64 %.sroa.0.0.lcssa.i.i, %147 + %149 = and i64 %148, %.sroa.617.0..sroa_idx.i.i.val3 + %150 = getelementptr inbounds i8, ptr %71, i64 %149 + %151 = load i8, ptr %150, align 1, !noundef !5 + %152 = icmp sgt i8 %151, -1 + br i1 %152, label %153, label %159 + +153: ; preds = %._crit_edge.i.i + %154 = load <16 x i8>, ptr %71, align 16, !noalias !734 + %155 = icmp slt <16 x i8> %154, zeroinitializer + %156 = bitcast <16 x i1> %155 to i16 + %.not.i.i.i = icmp ne i16 %156, 0 + %157 = call i16 @llvm.cttz.i16(i16 %156, i1 true), !range !315 + %158 = zext nneg i16 %157 to i64 call void @llvm.assume(i1 %.not.i.i.i) - br label %169 - -169: ; preds = %163, %._crit_edge.i.i - %.0.i.i.i11 = phi i64 [ %168, %163 ], [ %159, %._crit_edge.i.i ] - %170 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i11 - %171 = lshr i64 %145, 57 - %172 = trunc i64 %171 to i8 - %173 = add i64 %.0.i.i.i11, -16 - %174 = and i64 %173, %.sroa.617.0..sroa_idx.i.i.val3 - store i8 %172, ptr %170, align 1 - %gep = getelementptr i8, ptr %invariant.gep, i64 %174 - store i8 %172, ptr %gep, align 1 - %175 = load ptr, ptr %0, align 8, !alias.scope !709, !noalias !710, !nonnull !5, !noundef !5 + br label %159 + +159: ; preds = %153, %._crit_edge.i.i + %.0.i.i.i11 = phi i64 [ %158, %153 ], [ %149, %._crit_edge.i.i ] + %160 = getelementptr inbounds i8, ptr %71, i64 %.0.i.i.i11 + %161 = lshr i64 %135, 57 + %162 = trunc i64 %161 to i8 + %163 = add i64 %.0.i.i.i11, -16 + %164 = and i64 %163, %.sroa.617.0..sroa_idx.i.i.val3 + store i8 %162, ptr %160, align 1 + %gep = getelementptr i8, ptr %invariant.gep, i64 %164 + store i8 %162, ptr %gep, align 1 + %165 = load ptr, ptr %0, align 8, !alias.scope !709, !noalias !710, !nonnull !5, !noundef !5 %.neg.i.i = mul i64 %94, -24 - %176 = getelementptr i8, ptr %175, i64 %.neg.i.i - %177 = getelementptr i8, ptr %176, i64 -24 - %178 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !630, !nonnull !5, !noundef !5 + %166 = getelementptr i8, ptr %165, i64 %.neg.i.i + %167 = getelementptr i8, ptr %166, i64 -24 + %168 = load ptr, ptr %.sroa.617.0..sroa_idx.i.i, align 8, !noalias !630, !nonnull !5, !noundef !5 %.neg28.i.i = mul i64 %.0.i.i.i11, -24 - %179 = getelementptr i8, ptr %178, i64 %.neg28.i.i - %180 = getelementptr i8, ptr %179, i64 -24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %180, ptr noundef nonnull align 1 dereferenceable(24) %177, i64 24, i1 false), !noalias !654 + %169 = getelementptr i8, ptr %168, i64 %.neg28.i.i + %170 = getelementptr i8, ptr %169, i64 -24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %170, ptr noundef nonnull align 1 dereferenceable(24) %167, i64 24, i1 false), !noalias !654 %.not = icmp eq i64 %95, 0 br i1 %.not, label %.thread54.loopexit, label %.preheader -181: ; preds = %22 +171: ; preds = %22 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %10, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h788a47276933ce15E", ptr noundef nonnull @"_ZN4core3ptr118drop_in_place$LT$$LP$regex_automata..util..determinize..state..State$C$regex_automata..hybrid..id..LazyStateID$RP$$GT$17h2d53d76ca675116cE.llvm.12622858556511099134") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit: ; preds = %80, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", %18, %181 - %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %181 ], [ %.sroa.9.038.ph, %80 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] - %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %181 ], [ %.sroa.5.040.ph, %80 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] - %182 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %183 = insertvalue { i64, i64 } %182, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h169c673a2c9f5031E.exit: ; preds = %80, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit", %18, %171 + %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %171 ], [ %.sroa.9.038.ph, %80 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] + %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %171 ], [ %.sroa.5.040.ph, %80 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h5596bad1cc6dc12cE.exit" ] + %172 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %173 = insertvalue { i64, i64 } %172, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) - ret { i64, i64 } %183 + ret { i64, i64 } %173 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/tokio-rs/optimized/18r5vqnw0wlric57.ll b/bench/tokio-rs/optimized/18r5vqnw0wlric57.ll index da6642500ff..aa9ae48937e 100644 --- a/bench/tokio-rs/optimized/18r5vqnw0wlric57.ll +++ b/bench/tokio-rs/optimized/18r5vqnw0wlric57.ll @@ -180,45 +180,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.95 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9526129571039220319.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.9526129571039220319.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #16 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9526129571039220319.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.9526129571039220319.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #16 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9526129571039220319.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9526129571039220319.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.9526129571039220319.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9526129571039220319.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.9526129571039220319.exit, %19 ret void } @@ -346,45 +332,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h0216d99 _ZN9hashbrown3raw13RawTableInner13drop_elements17h5b0cf474148ff162E.llvm.9526129571039220319.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hea0f0d344a92fa25E.llvm.9526129571039220319.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !48) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha1772a746788641eE.llvm.9526129571039220319.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h5b0cf474148ff162E.llvm.9526129571039220319.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !48, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #16, !noalias !48 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha1772a746788641eE.llvm.9526129571039220319.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h5b0cf474148ff162E.llvm.9526129571039220319.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !48, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #16, !noalias !48 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17ha1772a746788641eE.llvm.9526129571039220319.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17ha1772a746788641eE.llvm.9526129571039220319.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h5b0cf474148ff162E.llvm.9526129571039220319.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17ha1772a746788641eE.llvm.9526129571039220319.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h5b0cf474148ff162E.llvm.9526129571039220319.exit, %4 ret void } diff --git a/bench/tokio-rs/optimized/58zica37k9qw0rn.ll b/bench/tokio-rs/optimized/58zica37k9qw0rn.ll index ac9ba93d143..77fa9ca6b9b 100644 --- a/bench/tokio-rs/optimized/58zica37k9qw0rn.ll +++ b/bench/tokio-rs/optimized/58zica37k9qw0rn.ll @@ -3157,45 +3157,31 @@ _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = add i64 %5, 1 - %7 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %6) - %8 = extractvalue { i64, i1 } %7, 1 - %9 = xor i1 %8, true - tail call void @llvm.assume(i1 %9) - %10 = extractvalue { i64, i1 } %7, 0 - %11 = add i64 %3, -1 - %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %10, i64 %11) - %13 = extractvalue { i64, i1 } %12, 1 - %14 = xor i1 %13, true - tail call void @llvm.assume(i1 %14) - %15 = extractvalue { i64, i1 } %12, 0 - %16 = sub i64 0, %3 - %17 = and i64 %15, %16 - %18 = add i64 %5, 17 - %19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %17, i64 %18) - %20 = extractvalue { i64, i1 } %19, 0 - %21 = extractvalue { i64, i1 } %19, 1 - %22 = sub nuw i64 -9223372036854775808, %3 - %23 = icmp ule i64 %20, %22 - %24 = xor i1 %21, true - tail call void @llvm.assume(i1 %24) - tail call void @llvm.assume(i1 %23) - %25 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %25) - %26 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %26) - %27 = icmp eq i64 %20, 0 - br i1 %27, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13045902235258919337.exit", label %28 - -28: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13045902235258919337.exit - %29 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 - %30 = sub nsw i64 0, %17 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - %32 = icmp sgt i64 %11, -1 - tail call void @llvm.assume(i1 %32) - tail call void @__rust_dealloc(ptr noundef nonnull %31, i64 noundef %20, i64 noundef %3) #52 + %7 = mul nuw i64 %6, %2 + %8 = add i64 %3, -1 + %9 = add nuw i64 %8, %7 + %10 = sub i64 0, %3 + %11 = and i64 %9, %10 + %12 = add i64 %5, 17 + %13 = add nuw i64 %11, %12 + %14 = sub nuw i64 -9223372036854775808, %3 + %15 = icmp ule i64 %13, %14 + tail call void @llvm.assume(i1 %15) + %16 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %16) + %17 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %17) + %18 = icmp eq i64 %13, 0 + br i1 %18, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13045902235258919337.exit", label %19 + +19: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13045902235258919337.exit + %20 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %21 = sub nsw i64 0, %11 + %22 = getelementptr inbounds i8, ptr %20, i64 %21 + tail call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %13, i64 noundef %3) #52 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13045902235258919337.exit" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13045902235258919337.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13045902235258919337.exit, %28 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13045902235258919337.exit": ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.llvm.13045902235258919337.exit, %19 ret void } @@ -3632,45 +3618,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h3910a89 _ZN9hashbrown3raw13RawTableInner13drop_elements17hafc7c2843980eb26E.llvm.13045902235258919337.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc3cd5b49e8a56648E.llvm.13045902235258919337.exit.i", %8 tail call void @llvm.experimental.noalias.scope.decl(metadata !575) %36 = add i64 %6, 1 - %37 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %36) - %38 = extractvalue { i64, i1 } %37, 1 - %39 = xor i1 %38, true - tail call void @llvm.assume(i1 %39) - %40 = extractvalue { i64, i1 } %37, 0 - %41 = add i64 %3, -1 - %42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %41) - %43 = extractvalue { i64, i1 } %42, 1 - %44 = xor i1 %43, true - tail call void @llvm.assume(i1 %44) - %45 = extractvalue { i64, i1 } %42, 0 - %46 = sub i64 0, %3 - %47 = and i64 %45, %46 - %48 = add i64 %6, 17 - %49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %47, i64 %48) - %50 = extractvalue { i64, i1 } %49, 0 - %51 = extractvalue { i64, i1 } %49, 1 - %52 = sub nuw i64 -9223372036854775808, %3 - %53 = icmp ule i64 %50, %52 - %54 = xor i1 %51, true - tail call void @llvm.assume(i1 %54) - tail call void @llvm.assume(i1 %53) - %55 = icmp ult i64 %3, -9223372036854775807 - tail call void @llvm.assume(i1 %55) - %56 = icmp ne i64 %3, 0 - tail call void @llvm.assume(i1 %56) - %57 = icmp eq i64 %50, 0 - br i1 %57, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit, label %58 - -58: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hafc7c2843980eb26E.llvm.13045902235258919337.exit - %59 = load ptr, ptr %0, align 8, !alias.scope !575, !nonnull !4, !noundef !4 - %60 = sub nsw i64 0, %47 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = icmp sgt i64 %41, -1 - tail call void @llvm.assume(i1 %62) - tail call void @__rust_dealloc(ptr noundef nonnull %61, i64 noundef %50, i64 noundef %3) #52, !noalias !575 + %37 = mul nuw i64 %36, %2 + %38 = add i64 %3, -1 + %39 = add nuw i64 %38, %37 + %40 = sub i64 0, %3 + %41 = and i64 %39, %40 + %42 = add i64 %6, 17 + %43 = add nuw i64 %42, %41 + %44 = sub nuw i64 -9223372036854775808, %3 + %45 = icmp ule i64 %43, %44 + tail call void @llvm.assume(i1 %45) + %46 = icmp ult i64 %3, -9223372036854775807 + tail call void @llvm.assume(i1 %46) + %47 = icmp ne i64 %3, 0 + tail call void @llvm.assume(i1 %47) + %48 = icmp eq i64 %43, 0 + br i1 %48, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit, label %49 + +49: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17hafc7c2843980eb26E.llvm.13045902235258919337.exit + %50 = load ptr, ptr %0, align 8, !alias.scope !575, !nonnull !4, !noundef !4 + %51 = sub nsw i64 0, %41 + %52 = getelementptr inbounds i8, ptr %50, i64 %51 + tail call void @__rust_dealloc(ptr noundef nonnull %52, i64 noundef %43, i64 noundef %3) #52, !noalias !575 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit: ; preds = %58, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hafc7c2843980eb26E.llvm.13045902235258919337.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit: ; preds = %49, %_ZN9hashbrown3raw13RawTableInner13drop_elements17hafc7c2843980eb26E.llvm.13045902235258919337.exit, %4 ret void } @@ -3747,45 +3719,31 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h6e70515 _ZN9hashbrown3raw13RawTableInner13drop_elements17h9be9de9c66e2e340E.llvm.13045902235258919337.exit: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdf53f2164605e568E.llvm.13045902235258919337.exit.i", %10 call void @llvm.experimental.noalias.scope.decl(metadata !605) %38 = add i64 %8, 1 - %39 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %2, i64 %38) - %40 = extractvalue { i64, i1 } %39, 1 - %41 = xor i1 %40, true - call void @llvm.assume(i1 %41) - %42 = extractvalue { i64, i1 } %39, 0 - %43 = add i64 %3, -1 - %44 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %42, i64 %43) - %45 = extractvalue { i64, i1 } %44, 1 - %46 = xor i1 %45, true - call void @llvm.assume(i1 %46) - %47 = extractvalue { i64, i1 } %44, 0 - %48 = sub i64 0, %3 - %49 = and i64 %47, %48 - %50 = add i64 %8, 17 - %51 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %49, i64 %50) - %52 = extractvalue { i64, i1 } %51, 0 - %53 = extractvalue { i64, i1 } %51, 1 - %54 = sub nuw i64 -9223372036854775808, %3 - %55 = icmp ule i64 %52, %54 - %56 = xor i1 %53, true - call void @llvm.assume(i1 %56) - call void @llvm.assume(i1 %55) - %57 = icmp ult i64 %3, -9223372036854775807 - call void @llvm.assume(i1 %57) - %58 = icmp ne i64 %3, 0 - call void @llvm.assume(i1 %58) - %59 = icmp eq i64 %52, 0 - br i1 %59, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit, label %60 - -60: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9be9de9c66e2e340E.llvm.13045902235258919337.exit - %61 = load ptr, ptr %0, align 8, !alias.scope !605, !nonnull !4, !noundef !4 - %62 = sub nsw i64 0, %49 - %63 = getelementptr inbounds i8, ptr %61, i64 %62 - %64 = icmp sgt i64 %43, -1 - call void @llvm.assume(i1 %64) - call void @__rust_dealloc(ptr noundef nonnull %63, i64 noundef %52, i64 noundef %3) #52, !noalias !605 + %39 = mul nuw i64 %38, %2 + %40 = add i64 %3, -1 + %41 = add nuw i64 %40, %39 + %42 = sub i64 0, %3 + %43 = and i64 %41, %42 + %44 = add i64 %8, 17 + %45 = add nuw i64 %44, %43 + %46 = sub nuw i64 -9223372036854775808, %3 + %47 = icmp ule i64 %45, %46 + call void @llvm.assume(i1 %47) + %48 = icmp ult i64 %3, -9223372036854775807 + call void @llvm.assume(i1 %48) + %49 = icmp ne i64 %3, 0 + call void @llvm.assume(i1 %49) + %50 = icmp eq i64 %45, 0 + br i1 %50, label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit, label %51 + +51: ; preds = %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9be9de9c66e2e340E.llvm.13045902235258919337.exit + %52 = load ptr, ptr %0, align 8, !alias.scope !605, !nonnull !4, !noundef !4 + %53 = sub nsw i64 0, %43 + %54 = getelementptr inbounds i8, ptr %52, i64 %53 + call void @__rust_dealloc(ptr noundef nonnull %54, i64 noundef %45, i64 noundef %3) #52, !noalias !605 br label %_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit -_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit: ; preds = %60, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9be9de9c66e2e340E.llvm.13045902235258919337.exit, %4 +_ZN9hashbrown3raw13RawTableInner12free_buckets17h5832fa79d2fd10ddE.llvm.13045902235258919337.exit: ; preds = %51, %_ZN9hashbrown3raw13RawTableInner13drop_elements17h9be9de9c66e2e340E.llvm.13045902235258919337.exit, %4 ret void } @@ -4413,7 +4371,7 @@ define internal fastcc i64 @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %17, i64 %16, i64 %20 %21 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %9, %21 - br i1 %.not.i, label %22, label %134 + br i1 %.not.i, label %22, label %132 22: ; preds = %14 %23 = add nuw i64 %.0.i, 1 @@ -4506,11 +4464,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %65 = xor i16 %64, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %125 - %.sroa.1316.066 = phi i16 [ %65, %.preheader.lr.ph ], [ %74, %125 ] - %.sroa.011.065 = phi ptr [ %61, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %125 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %125 ] - %.sroa.914.063 = phi i64 [ %60, %.preheader.lr.ph ], [ %78, %125 ] +.preheader: ; preds = %.preheader.lr.ph, %123 + %.sroa.1316.066 = phi i16 [ %65, %.preheader.lr.ph ], [ %74, %123 ] + %.sroa.011.065 = phi ptr [ %61, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %123 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %123 ] + %.sroa.914.063 = phi i64 [ %60, %.preheader.lr.ph ], [ %78, %123 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -4558,7 +4516,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.not12.i.i = icmp eq i16 %88, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %125 +.thread49.loopexit: ; preds = %123 %.pre = load i64, ptr %6, align 8, !alias.scope !762, !noalias !764 br label %.thread49 @@ -4578,88 +4536,85 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. 92: ; preds = %.thread49 %93 = shl i64 %.sroa.479.0.copyload, 5 - %94 = add i64 %93, 32 - %95 = add i64 %.sroa.479.0.copyload, 17 - %96 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %94, i64 %95) - %97 = extractvalue { i64, i1 } %96, 0 - %98 = extractvalue { i64, i1 } %96, 1 - %99 = icmp ult i64 %97, 9223372036854775793 - %100 = xor i1 %98, true - call void @llvm.assume(i1 %100), !noalias !772 - call void @llvm.assume(i1 %99), !noalias !772 - %101 = icmp eq i64 %97, 0 - br i1 %101, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit, label %102 - -102: ; preds = %92 - %103 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %103), !noalias !772 - %104 = sub nuw nsw i64 -32, %93 - %105 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %104 - call void @__rust_dealloc(ptr noundef nonnull %105, i64 noundef %97, i64 noundef 16) #52, !noalias !773 + %94 = add i64 %93, 47 + %95 = and i64 %94, -32 + %96 = add i64 %.sroa.479.0.copyload, 17 + %97 = add nuw i64 %96, %95 + %98 = icmp ult i64 %97, 9223372036854775793 + call void @llvm.assume(i1 %98), !noalias !772 + %99 = icmp eq i64 %97, 0 + br i1 %99, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit, label %100 + +100: ; preds = %92 + %101 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %101), !noalias !772 + %102 = sub nsw i64 0, %95 + %103 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %102 + call void @__rust_dealloc(ptr noundef nonnull %103, i64 noundef %97, i64 noundef 16) #52, !noalias !773 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %108, %.lr.ph.i.i ], [ %85, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %106, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %106 = add i64 %.sroa.7.013.i.i, 16 - %107 = add i64 %106, %.sroa.0.014.i.i - %108 = and i64 %107, %55 - %109 = getelementptr inbounds i8, ptr %59, i64 %108 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %109, align 1, !noalias !755 - %110 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %111 = bitcast <16 x i1> %110 to i16 - %.not.i.i = icmp eq i16 %111, 0 + %.sroa.0.014.i.i = phi i64 [ %106, %.lr.ph.i.i ], [ %85, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %104, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %104 = add i64 %.sroa.7.013.i.i, 16 + %105 = add i64 %104, %.sroa.0.014.i.i + %106 = and i64 %105, %55 + %107 = getelementptr inbounds i8, ptr %59, i64 %106 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %107, align 1, !noalias !755 + %108 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %109 = bitcast <16 x i1> %108 to i16 + %.not.i.i = icmp eq i16 %109, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %85, %._crit_edge ], [ %108, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %88, %._crit_edge ], [ %111, %.lr.ph.i.i ] - %112 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !302 - %113 = zext nneg i16 %112 to i64 - %114 = add i64 %.sroa.0.0.lcssa.i.i, %113 - %115 = and i64 %114, %55 - %116 = getelementptr inbounds i8, ptr %59, i64 %115 - %117 = load i8, ptr %116, align 1, !noalias !782, !noundef !4 - %118 = icmp sgt i8 %117, -1 - br i1 %118, label %119, label %125 - -119: ; preds = %._crit_edge.i.i - %120 = load <16 x i8>, ptr %59, align 16, !noalias !783 - %121 = icmp slt <16 x i8> %120, zeroinitializer - %122 = bitcast <16 x i1> %121 to i16 - %.not.i.i.i = icmp ne i16 %122, 0 - %123 = call i16 @llvm.cttz.i16(i16 %122, i1 true), !range !302 - %124 = zext nneg i16 %123 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %85, %._crit_edge ], [ %106, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %88, %._crit_edge ], [ %109, %.lr.ph.i.i ] + %110 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !302 + %111 = zext nneg i16 %110 to i64 + %112 = add i64 %.sroa.0.0.lcssa.i.i, %111 + %113 = and i64 %112, %55 + %114 = getelementptr inbounds i8, ptr %59, i64 %113 + %115 = load i8, ptr %114, align 1, !noalias !782, !noundef !4 + %116 = icmp sgt i8 %115, -1 + br i1 %116, label %117, label %123 + +117: ; preds = %._crit_edge.i.i + %118 = load <16 x i8>, ptr %59, align 16, !noalias !783 + %119 = icmp slt <16 x i8> %118, zeroinitializer + %120 = bitcast <16 x i1> %119 to i16 + %.not.i.i.i = icmp ne i16 %120, 0 + %121 = call i16 @llvm.cttz.i16(i16 %120, i1 true), !range !302 + %122 = zext nneg i16 %121 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !772 - br label %125 - -125: ; preds = %119, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %124, %119 ], [ %115, %._crit_edge.i.i ] - %126 = getelementptr inbounds i8, ptr %59, i64 %.0.i.i.i6 - %127 = lshr i64 %84, 57 - %128 = trunc i64 %127 to i8 - %129 = add i64 %.0.i.i.i6, -16 - %130 = and i64 %129, %55 - store i8 %128, ptr %126, align 1, !noalias !782 - %gep = getelementptr i8, ptr %invariant.gep, i64 %130 - store i8 %128, ptr %gep, align 1, !noalias !782 - %131 = load ptr, ptr %0, align 8, !alias.scope !762, !noalias !764, !nonnull !4, !noundef !4 + br label %123 + +123: ; preds = %117, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %122, %117 ], [ %113, %._crit_edge.i.i ] + %124 = getelementptr inbounds i8, ptr %59, i64 %.0.i.i.i6 + %125 = lshr i64 %84, 57 + %126 = trunc i64 %125 to i8 + %127 = add i64 %.0.i.i.i6, -16 + %128 = and i64 %127, %55 + store i8 %126, ptr %124, align 1, !noalias !782 + %gep = getelementptr i8, ptr %invariant.gep, i64 %128 + store i8 %126, ptr %gep, align 1, !noalias !782 + %129 = load ptr, ptr %0, align 8, !alias.scope !762, !noalias !764, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %77, -1 %.neg28.i.i = shl i64 %.neg.i.i, 5 - %132 = getelementptr inbounds i8, ptr %131, i64 %.neg28.i.i + %130 = getelementptr inbounds i8, ptr %129, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = shl i64 %.neg29.i.i, 5 - %133 = getelementptr inbounds i8, ptr %59, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %133, ptr noundef nonnull align 1 dereferenceable(32) %132, i64 32, i1 false), !noalias !772 + %131 = getelementptr inbounds i8, ptr %59, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %131, ptr noundef nonnull align 1 dereferenceable(32) %130, i64 32, i1 false), !noalias !772 %.not = icmp eq i64 %78, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -134: ; preds = %14 +132: ; preds = %14 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %3, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17hac5579da31a2540cE", i64 noundef 32, ptr noundef nonnull @"_ZN4core3ptr76drop_in_place$LT$$LP$usize$C$std..thread..JoinHandle$LT$$LP$$RP$$GT$$RP$$GT$17hbb0b54a97b5af02aE.llvm.13045902235258919337") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit: ; preds = %102, %92, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i, %11, %134 - %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %134 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %92 ], [ -9223372036854775807, %102 ] +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit: ; preds = %100, %92, %.thread49, %38, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i, %11, %132 + %.sroa.0.0.i = phi i64 [ %13, %11 ], [ -9223372036854775807, %132 ], [ %40, %38 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %92 ], [ -9223372036854775807, %100 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret i64 %.sroa.0.0.i } @@ -4696,7 +4651,7 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %.0.i = select i1 %20, i64 %19, i64 %23 %24 = lshr i64 %.0.i, 1 %.not.i = icmp ugt i64 %11, %24 - br i1 %.not.i, label %25, label %142 + br i1 %.not.i, label %25, label %137 25: ; preds = %17 %26 = add nuw i64 %.0.i, 1 @@ -4790,11 +4745,11 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %70 = xor i16 %69, -1 br label %.preheader -.preheader: ; preds = %.preheader.lr.ph, %133 - %.sroa.1316.066 = phi i16 [ %70, %.preheader.lr.ph ], [ %79, %133 ] - %.sroa.011.065 = phi ptr [ %66, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %133 ] - %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %133 ] - %.sroa.914.063 = phi i64 [ %65, %.preheader.lr.ph ], [ %83, %133 ] +.preheader: ; preds = %.preheader.lr.ph, %128 + %.sroa.1316.066 = phi i16 [ %70, %.preheader.lr.ph ], [ %79, %128 ] + %.sroa.011.065 = phi ptr [ %66, %.preheader.lr.ph ], [ %.sroa.011.1.lcssa, %128 ] + %.sroa.512.064 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.512.1.lcssa, %128 ] + %.sroa.914.063 = phi i64 [ %65, %.preheader.lr.ph ], [ %83, %128 ] %.not.not.i57 = icmp eq i16 %.sroa.1316.066, 0 br i1 %.not.not.i57, label %.noexc2, label %._crit_edge @@ -4842,7 +4797,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.not12.i.i = icmp eq i16 %93, 0 br i1 %.not12.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i -.thread49.loopexit: ; preds = %133 +.thread49.loopexit: ; preds = %128 %.pre = load i64, ptr %8, align 8, !alias.scope !834, !noalias !836 br label %.thread49 @@ -4861,98 +4816,91 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br i1 %96, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit, label %97 97: ; preds = %.thread49 - %98 = add i64 %.sroa.479.0.copyload, 1 - %99 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %98, i64 192) - %100 = extractvalue { i64, i1 } %99, 1 - %101 = xor i1 %100, true - call void @llvm.assume(i1 %101), !noalias !844 - %102 = extractvalue { i64, i1 } %99, 0 - %103 = add i64 %.sroa.479.0.copyload, 17 - %104 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %102, i64 %103) - %105 = extractvalue { i64, i1 } %104, 0 - %106 = extractvalue { i64, i1 } %104, 1 - %107 = icmp ult i64 %105, 9223372036854775793 - %108 = xor i1 %106, true - call void @llvm.assume(i1 %108), !noalias !844 - call void @llvm.assume(i1 %107), !noalias !844 - %109 = icmp eq i64 %105, 0 - br i1 %109, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit, label %110 - -110: ; preds = %97 - %111 = icmp ne ptr %.sroa.078.0.copyload, null - call void @llvm.assume(i1 %111), !noalias !844 - %112 = sub nsw i64 0, %102 - %113 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %112 - call void @__rust_dealloc(ptr noundef nonnull %113, i64 noundef %105, i64 noundef 16) #52, !noalias !845 + %98 = mul i64 %.sroa.479.0.copyload, 192 + %99 = add i64 %98, 207 + %100 = and i64 %99, -64 + %101 = add i64 %.sroa.479.0.copyload, 17 + %102 = add nuw i64 %101, %100 + %103 = icmp ult i64 %102, 9223372036854775793 + call void @llvm.assume(i1 %103), !noalias !844 + %104 = icmp eq i64 %102, 0 + br i1 %104, label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit, label %105 + +105: ; preds = %97 + %106 = icmp ne ptr %.sroa.078.0.copyload, null + call void @llvm.assume(i1 %106), !noalias !844 + %107 = sub nsw i64 0, %100 + %108 = getelementptr inbounds i8, ptr %.sroa.078.0.copyload, i64 %107 + call void @__rust_dealloc(ptr noundef nonnull %108, i64 noundef %102, i64 noundef 16) #52, !noalias !845 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit .lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.sroa.0.014.i.i = phi i64 [ %116, %.lr.ph.i.i ], [ %90, %._crit_edge ] - %.sroa.7.013.i.i = phi i64 [ %114, %.lr.ph.i.i ], [ 0, %._crit_edge ] - %114 = add i64 %.sroa.7.013.i.i, 16 - %115 = add i64 %114, %.sroa.0.014.i.i - %116 = and i64 %115, %60 - %117 = getelementptr inbounds i8, ptr %64, i64 %116 - %.0.copyload.i9.i.i = load <16 x i8>, ptr %117, align 1, !noalias !827 - %118 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer - %119 = bitcast <16 x i1> %118 to i16 - %.not.i.i = icmp eq i16 %119, 0 + %.sroa.0.014.i.i = phi i64 [ %111, %.lr.ph.i.i ], [ %90, %._crit_edge ] + %.sroa.7.013.i.i = phi i64 [ %109, %.lr.ph.i.i ], [ 0, %._crit_edge ] + %109 = add i64 %.sroa.7.013.i.i, 16 + %110 = add i64 %109, %.sroa.0.014.i.i + %111 = and i64 %110, %60 + %112 = getelementptr inbounds i8, ptr %64, i64 %111 + %.0.copyload.i9.i.i = load <16 x i8>, ptr %112, align 1, !noalias !827 + %113 = icmp slt <16 x i8> %.0.copyload.i9.i.i, zeroinitializer + %114 = bitcast <16 x i1> %113 to i16 + %.not.i.i = icmp eq i16 %114, 0 br i1 %.not.i.i, label %.lr.ph.i.i, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %._crit_edge - %.sroa.0.0.lcssa.i.i = phi i64 [ %90, %._crit_edge ], [ %116, %.lr.ph.i.i ] - %.lcssa.i.i = phi i16 [ %93, %._crit_edge ], [ %119, %.lr.ph.i.i ] - %120 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !302 - %121 = zext nneg i16 %120 to i64 - %122 = add i64 %.sroa.0.0.lcssa.i.i, %121 - %123 = and i64 %122, %60 - %124 = getelementptr inbounds i8, ptr %64, i64 %123 - %125 = load i8, ptr %124, align 1, !noalias !854, !noundef !4 - %126 = icmp sgt i8 %125, -1 - br i1 %126, label %127, label %133 - -127: ; preds = %._crit_edge.i.i - %128 = load <16 x i8>, ptr %64, align 16, !noalias !855 - %129 = icmp slt <16 x i8> %128, zeroinitializer - %130 = bitcast <16 x i1> %129 to i16 - %.not.i.i.i = icmp ne i16 %130, 0 - %131 = call i16 @llvm.cttz.i16(i16 %130, i1 true), !range !302 - %132 = zext nneg i16 %131 to i64 + %.sroa.0.0.lcssa.i.i = phi i64 [ %90, %._crit_edge ], [ %111, %.lr.ph.i.i ] + %.lcssa.i.i = phi i16 [ %93, %._crit_edge ], [ %114, %.lr.ph.i.i ] + %115 = call i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true), !range !302 + %116 = zext nneg i16 %115 to i64 + %117 = add i64 %.sroa.0.0.lcssa.i.i, %116 + %118 = and i64 %117, %60 + %119 = getelementptr inbounds i8, ptr %64, i64 %118 + %120 = load i8, ptr %119, align 1, !noalias !854, !noundef !4 + %121 = icmp sgt i8 %120, -1 + br i1 %121, label %122, label %128 + +122: ; preds = %._crit_edge.i.i + %123 = load <16 x i8>, ptr %64, align 16, !noalias !855 + %124 = icmp slt <16 x i8> %123, zeroinitializer + %125 = bitcast <16 x i1> %124 to i16 + %.not.i.i.i = icmp ne i16 %125, 0 + %126 = call i16 @llvm.cttz.i16(i16 %125, i1 true), !range !302 + %127 = zext nneg i16 %126 to i64 call void @llvm.assume(i1 %.not.i.i.i), !noalias !844 - br label %133 - -133: ; preds = %127, %._crit_edge.i.i - %.0.i.i.i6 = phi i64 [ %132, %127 ], [ %123, %._crit_edge.i.i ] - %134 = getelementptr inbounds i8, ptr %64, i64 %.0.i.i.i6 - %135 = lshr i64 %89, 57 - %136 = trunc i64 %135 to i8 - %137 = add i64 %.0.i.i.i6, -16 - %138 = and i64 %137, %60 - store i8 %136, ptr %134, align 1, !noalias !854 - %gep = getelementptr i8, ptr %invariant.gep, i64 %138 - store i8 %136, ptr %gep, align 1, !noalias !854 - %139 = load ptr, ptr %0, align 8, !alias.scope !834, !noalias !836, !nonnull !4, !noundef !4 + br label %128 + +128: ; preds = %122, %._crit_edge.i.i + %.0.i.i.i6 = phi i64 [ %127, %122 ], [ %118, %._crit_edge.i.i ] + %129 = getelementptr inbounds i8, ptr %64, i64 %.0.i.i.i6 + %130 = lshr i64 %89, 57 + %131 = trunc i64 %130 to i8 + %132 = add i64 %.0.i.i.i6, -16 + %133 = and i64 %132, %60 + store i8 %131, ptr %129, align 1, !noalias !854 + %gep = getelementptr i8, ptr %invariant.gep, i64 %133 + store i8 %131, ptr %gep, align 1, !noalias !854 + %134 = load ptr, ptr %0, align 8, !alias.scope !834, !noalias !836, !nonnull !4, !noundef !4 %.neg.i.i = xor i64 %82, -1 %.neg28.i.i = mul i64 %.neg.i.i, 192 - %140 = getelementptr inbounds i8, ptr %139, i64 %.neg28.i.i + %135 = getelementptr inbounds i8, ptr %134, i64 %.neg28.i.i %.neg29.i.i = xor i64 %.0.i.i.i6, -1 %.neg30.i.i = mul i64 %.neg29.i.i, 192 - %141 = getelementptr inbounds i8, ptr %64, i64 %.neg30.i.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(192) %141, ptr noundef nonnull align 1 dereferenceable(192) %140, i64 192, i1 false), !noalias !844 + %136 = getelementptr inbounds i8, ptr %64, i64 %.neg30.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(192) %136, ptr noundef nonnull align 1 dereferenceable(192) %135, i64 192, i1 false), !noalias !844 %.not = icmp eq i64 %83, 0 br i1 %.not, label %.thread49.loopexit, label %.preheader -142: ; preds = %17 +137: ; preds = %17 call fastcc void @_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %5, ptr nonnull @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h10514aaa5edb721aE", i64 noundef 192, ptr noundef nonnull @"_ZN4core3ptr61drop_in_place$LT$$LP$i32$C$signal_hook_registry..Slot$RP$$GT$17h51b5c433024602b1E.llvm.13045902235258919337") br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit -_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit: ; preds = %110, %97, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i, %13, %142 - %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %142 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %97 ], [ 16, %110 ] - %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %142 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %97 ], [ -9223372036854775807, %110 ] - %143 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 - %144 = insertvalue { i64, i64 } %143, i64 %.sroa.4.0.i, 1 +_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h852b9ab860adec93E.exit: ; preds = %105, %97, %.thread49, %41, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i, %13, %137 + %.sroa.4.0.i = phi i64 [ %16, %13 ], [ undef, %137 ], [ %.sroa.6.0.i.i3, %41 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ 16, %.thread49 ], [ 16, %97 ], [ 16, %105 ] + %.sroa.0.0.i = phi i64 [ %15, %13 ], [ -9223372036854775807, %137 ], [ %43, %41 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h7686955d5e162f58E.exit.thread.i.i ], [ -9223372036854775807, %.thread49 ], [ -9223372036854775807, %97 ], [ -9223372036854775807, %105 ] + %138 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 + %139 = insertvalue { i64, i64 } %138, i64 %.sroa.4.0.i, 1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) - ret { i64, i64 } %144 + ret { i64, i64 } %139 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: readwrite) uwtable