Skip to content

Rollup of 5 pull requests - #160070

Closed
JonathanBrouwer wants to merge 20 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-ALUQLqB
Closed

Rollup of 5 pull requests#160070
JonathanBrouwer wants to merge 20 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-ALUQLqB

Conversation

@JonathanBrouwer

@JonathanBrouwer JonathanBrouwer commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

SomeFlyingThing and others added 20 commits July 23, 2026 18:32
Coercing the fn item `bar` to a fn pointer while `Foo::value` holds the
associated-type projection `<<T as Func>::Ret as Id>::Assoc` used to ICE
during normalization ("maybe try to call `try_normalize_erasing_regions`
instead"). It now reports the ordinary `u32: Id` trait-bound error instead
of crashing.
The carets should ideally point to the path, not the entire attribute,
but that's hard to achieve with the current code structure.
The carets already point to just the attribute path, which is what we
want.
…result-bounds, r=Darksonn

Hint that memchr returns an in-bounds index

`memchr_aligned` always returns an index within the input slice, but that fact was not visible to callers after inlining. Record the invariant with `assert_unchecked` so LLVM can simplify callers such as `str::find(char)`

 In x86_64 codegen, `find(char)` shrank from 463 to 377 bytes.
Add regression test for rust-lang#132767

Closes rust-lang#132767. Coercing a fn item to a fn pointer with an associated type projection used to ICE during normalization. now errors with E0277.
…est, r=GuillaumeGomez

Update `browser-ui-test` version to `0.25.0`

With this new version we should be able to finally add a regression test for [the "code copy" ](rust-lang#158137).

r? ghost
Improve consistency of attribute error messages (part 2)

A sequel to rust-lang#159755.

r? @estebank
…-fn-turbofish, r=estebank

Fix associated function suggestion for generic ADTs

Fixes rust-lang#159813

r? @estebank
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Jul 28, 2026
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Jul 28, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never p=5

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple,x86_64-mingw-1,i686-msvc-*

@rust-bors

rust-bors Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 94eceec has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors Bot added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jul 28, 2026
@rust-bors rust-bors Bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 28, 2026
@rust-bors

rust-bors Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

⌛ Trying commit 94eceec with merge bfd6e8f

To cancel the try build, run the command @bors try cancel.

Workflow: https://github.com/rust-lang/rust/actions/runs/30358955527

rust-bors Bot pushed a commit that referenced this pull request Jul 28, 2026
Rollup of 5 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple
try-job: x86_64-mingw-1
try-job: i686-msvc-*
@rust-bors

rust-bors Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

⌛ Testing commit 94eceec with merge af2a4ae...

Workflow: https://github.com/rust-lang/rust/actions/runs/30360358806

rust-bors Bot pushed a commit that referenced this pull request Jul 28, 2026
…uwer

Rollup of 5 pull requests

Successful merges:

 - #159784 (Hint that memchr returns an in-bounds index)
 - #160027 (Add regression test for #132767)
 - #160030 (Update `browser-ui-test` version to `0.25.0`)
 - #160046 (Improve consistency of attribute error messages (part 2))
 - #160056 (Fix associated function suggestion for generic ADTs)
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-llvm-21-3 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

---- [codegen] tests/codegen-llvm/lib-optimizations/memchr-result.rs stdout ----
------FileCheck stdout------------------------------

------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/lib-optimizations/memchr-result.rs:15:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: phi { i64, i64 }
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/memchr-result/memchr-result.ll:114:16: note: found here
 %.pn.us.i.i = phi { i64, i64 } [ %16, %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i ], [ %13, %bb26.us.i.i ]
               ^~~~~~~~~~~~~~~~

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/memchr-result/memchr-result.ll
Check file: /checkout/tests/codegen-llvm/lib-optimizations/memchr-result.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
        .
        .
        .
       14:  
       15: bb5.i.i.i: ; preds = %start 
       16:  %_12.i.i.i = icmp samesign ult i32 %needle, 2048 
       17:  %0 = trunc i32 %needle to i8 
       18:  %_5.i.i.i.i = and i8 %0, 63 
       19:  %last1.i.i.i.i = or disjoint i8 %_5.i.i.i.i, -128 
       20:  %_10.i.i.i.i = lshr i32 %needle, 6 
       21:  %1 = trunc i32 %_10.i.i.i.i to i8 
       22:  %_8.i.i.i.i = and i8 %1, 63 
       23:  %last2.i.i.i.i = or disjoint i8 %_8.i.i.i.i, -128 
       24:  %_14.i.i.i.i = lshr i32 %needle, 12 
       25:  %2 = trunc i32 %_14.i.i.i.i to i8 
       26:  %_12.i.i.i.i = and i8 %2, 63 
       27:  %last3.i.i.i.i = or disjoint i8 %_12.i.i.i.i, -128 
       28:  %_18.i.i.i.i = lshr i32 %needle, 18 
       29:  %last4.i.i.i.i = or disjoint i32 %_18.i.i.i.i, 240 
       30:  br i1 %_12.i.i.i, label %bb1.i.i.i.i, label %bb2.i.i.i.i 
       31:  
       32: bb1.i.i.i.i: ; preds = %bb5.i.i.i 
       33:  %3 = or disjoint i32 %_10.i.i.i.i, 192 
       34:  br label %bb21.lr.ph.split.i.i 
       35:  
       36: bb2.i.i.i.i: ; preds = %bb5.i.i.i 
       37:  %_13.i.i.i = icmp samesign ult i32 %needle, 65536 
       38:  br i1 %_13.i.i.i, label %bb3.i.i.i.i, label %bb4.i.i.i.i 
       39:  
       40: bb3.i.i.i.i: ; preds = %bb2.i.i.i.i 
       41:  %4 = or disjoint i32 %_14.i.i.i.i, 224 
       42:  br label %bb21.lr.ph.split.i.i 
       43:  
       44: bb4.i.i.i.i: ; preds = %bb2.i.i.i.i 
       45:  %5 = zext i8 %last1.i.i.i.i to i32 
       46:  %6 = shl nuw i32 %5, 24 
       47:  br label %bb21.lr.ph.split.i.i 
       48:  
       49: bb21.lr.ph.split.i.i: ; preds = %bb4.i.i.i.i, %bb3.i.i.i.i, %bb1.i.i.i.i, %start 
       50:  %utf8_encoded.sroa.13.0.i.i = phi i32 [ 0, %bb1.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ %6, %bb4.i.i.i.i ], [ 0, %start ] 
       51:  %utf8_encoded.sroa.11.0.i.i = phi i8 [ 0, %bb1.i.i.i.i ], [ %last1.i.i.i.i, %bb3.i.i.i.i ], [ %last2.i.i.i.i, %bb4.i.i.i.i ], [ 0, %start ] 
       52:  %utf8_encoded.sroa.8.0.i.i = phi i8 [ %last1.i.i.i.i, %bb1.i.i.i.i ], [ %last2.i.i.i.i, %bb3.i.i.i.i ], [ %last3.i.i.i.i, %bb4.i.i.i.i ], [ 0, %start ] 
       53:  %utf8_encoded.sroa.0.0.i.i = phi i32 [ %3, %bb1.i.i.i.i ], [ %4, %bb3.i.i.i.i ], [ %last4.i.i.i.i, %bb4.i.i.i.i ], [ %needle, %start ] 
       54:  %len.sroa.0.04.i.i.i = phi i64 [ 2, %bb1.i.i.i.i ], [ 3, %bb3.i.i.i.i ], [ 4, %bb4.i.i.i.i ], [ 1, %start ] 
       55:  %utf8_encoded.sroa.11.0.insert.ext.i.i = zext i8 %utf8_encoded.sroa.11.0.i.i to i32 
       56:  %utf8_encoded.sroa.11.0.insert.shift.i.i = shl nuw nsw i32 %utf8_encoded.sroa.11.0.insert.ext.i.i, 16 
       57:  %utf8_encoded.sroa.11.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.11.0.insert.shift.i.i, %utf8_encoded.sroa.13.0.i.i 
       58:  %utf8_encoded.sroa.8.0.insert.ext.i.i = zext i8 %utf8_encoded.sroa.8.0.i.i to i32 
       59:  %utf8_encoded.sroa.8.0.insert.shift.i.i = shl nuw nsw i32 %utf8_encoded.sroa.8.0.insert.ext.i.i, 8 
       60:  %utf8_encoded.sroa.8.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.11.0.insert.insert.i.i, %utf8_encoded.sroa.8.0.insert.shift.i.i 
       61:  %utf8_encoded.sroa.0.0.insert.ext.i.i = and i32 %utf8_encoded.sroa.0.0.i.i, 255 
       62:  %utf8_encoded.sroa.0.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.8.0.insert.insert.i.i, %utf8_encoded.sroa.0.0.insert.ext.i.i 
       63:  %7 = getelementptr inbounds nuw i8, ptr %_5.i, i64 24 
       64:  store ptr %haystack.0, ptr %7, align 8, !alias.scope !7, !noalias !10 
       65:  %8 = getelementptr inbounds nuw i8, ptr %_5.i, i64 32 
       66:  store i64 %haystack.1, ptr %8, align 8, !alias.scope !7, !noalias !10 
       67:  %9 = getelementptr inbounds nuw i8, ptr %_5.i, i64 16 
       68:  %10 = getelementptr inbounds nuw i8, ptr %_5.i, i64 40 
       69:  store i64 %haystack.1, ptr %10, align 8, !alias.scope !7, !noalias !10 
       70:  %11 = getelementptr inbounds nuw i8, ptr %_5.i, i64 5 
       71:  store i32 %utf8_encoded.sroa.0.0.insert.insert.i.i, ptr %11, align 1, !alias.scope !7, !noalias !10 
       72:  tail call void @llvm.experimental.noalias.scope.decl(metadata !12) 
       73:  %12 = getelementptr i8, ptr %11, i64 %len.sroa.0.04.i.i.i 
       74:  %_55.i.i = getelementptr i8, ptr %12, i64 -1 
       75:  %last_byte.us.i.pre.i = load i8, ptr %_55.i.i, align 1, !alias.scope !12, !noalias !15 
       76:  br label %bb21.us.i.i 
       77:  
       78: bb21.us.i.i: ; preds = %bb21.us.i.i.backedge, %bb21.lr.ph.split.i.i 
       79:  %_20.02628.us.i.i = phi i64 [ 0, %bb21.lr.ph.split.i.i ], [ %_20.0.us.i.i, %bb21.us.i.i.backedge ] 
       80:  %new_len.us.i.i = sub nuw i64 %haystack.1, %_20.02628.us.i.i 
       81:  %_50.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_20.02628.us.i.i 
       82:  %_58.us.i.i = icmp ult i64 %new_len.us.i.i, 16 
       83:  br i1 %_58.us.i.i, label %bb25.us.i.i, label %bb26.us.i.i 
       84:  
       85: bb26.us.i.i: ; preds = %bb21.us.i.i 
       86: ; call core::slice::memchr::memchr_aligned 
       87:  %13 = tail call { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr14memchr_aligned(i8 noundef %last_byte.us.i.pre.i, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %_50.us.i.i, i64 noundef %new_len.us.i.i), !noalias !17 
       88:  br label %bb27.us.i.i 
       89:  
       90: bb25.us.i.i: ; preds = %bb21.us.i.i 
       91:  %_44.not.i.us.i.i = icmp eq i64 %new_len.us.i.i, 0 
       92:  br i1 %_44.not.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb3.i.us.i.i 
       93:  
       94: bb3.i.us.i.i: ; preds = %bb25.us.i.i, %bb5.i.us.i.i 
       95:  %i.sroa.0.05.i.us.i.i = phi i64 [ %_11.0.i.us.i.i, %bb5.i.us.i.i ], [ 0, %bb25.us.i.i ] 
       96:  %14 = getelementptr inbounds nuw i8, ptr %_50.us.i.i, i64 %i.sroa.0.05.i.us.i.i 
       97:  %_8.i.us.i.i = load i8, ptr %14, align 1, !alias.scope !18, !noalias !17, !noundef !21 
       98:  %_7.i.us.i.i = icmp eq i8 %_8.i.us.i.i, %last_byte.us.i.pre.i 
       99:  br i1 %_7.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb5.i.us.i.i 
      100:  
      101: bb5.i.us.i.i: ; preds = %bb3.i.us.i.i 
      102:  %_11.0.i.us.i.i = add nuw nsw i64 %i.sroa.0.05.i.us.i.i, 1 
      103:  %exitcond.not.i.us.i.i = icmp eq i64 %_11.0.i.us.i.i, %new_len.us.i.i 
      104:  br i1 %exitcond.not.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb3.i.us.i.i 
      105:  
      106: _RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i: ; preds = %bb5.i.us.i.i, %bb3.i.us.i.i, %bb25.us.i.i 
      107:  %i.sroa.0.0.lcssa.i.us.i.i = phi i64 [ 0, %bb25.us.i.i ], [ %new_len.us.i.i, %bb5.i.us.i.i ], [ %i.sroa.0.05.i.us.i.i, %bb3.i.us.i.i ] 
      108:  %_0.sroa.0.0.i.us.i.i = phi i64 [ 0, %bb25.us.i.i ], [ 0, %bb5.i.us.i.i ], [ 1, %bb3.i.us.i.i ] 
      109:  %15 = insertvalue { i64, i64 } poison, i64 %_0.sroa.0.0.i.us.i.i, 0 
      110:  %16 = insertvalue { i64, i64 } %15, i64 %i.sroa.0.0.lcssa.i.us.i.i, 1 
      111:  br label %bb27.us.i.i 
      112:  
      113: bb27.us.i.i: ; preds = %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, %bb26.us.i.i 
      114:  %.pn.us.i.i = phi { i64, i64 } [ %16, %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i ], [ %13, %bb26.us.i.i ] 
not:15                    !~~~~~~~~~~~~~~~                                                                                                      error: no match expected
      115:  %result.sroa.0.0.us.i.i = extractvalue { i64, i64 } %.pn.us.i.i, 0 
      116:  %17 = trunc nuw i64 %result.sroa.0.0.us.i.i to i1 
      117:  br i1 %17, label %bb28.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      118:  
      119: bb28.us.i.i: ; preds = %bb27.us.i.i 
      120:  %result.sroa.8.0.us.i.i = extractvalue { i64, i64 } %.pn.us.i.i, 1 
      121:  %cond.us.i.i = icmp ult i64 %result.sroa.8.0.us.i.i, %new_len.us.i.i 
      122:  tail call void @llvm.assume(i1 %cond.us.i.i) 
      123:  %_19.0.us.i.i = add i64 %_20.02628.us.i.i, 1 
      124:  %_20.0.us.i.i = add i64 %_19.0.us.i.i, %result.sroa.8.0.us.i.i 
      125:  store i64 %_20.0.us.i.i, ptr %9, align 8, !alias.scope !12, !noalias !15 
      126:  %_21.not.us.i.i = icmp ult i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      127:  %_66.not.us.i.i = icmp ugt i64 %_20.0.us.i.i, %haystack.1 
      128:  %or.cond38.i.i = or i1 %_21.not.us.i.i, %_66.not.us.i.i 
      129:  br i1 %or.cond38.i.i, label %bb13.us.i.i, label %bb31.us.i.i 
      130:  
      131: bb31.us.i.i: ; preds = %bb28.us.i.i 
      132:  %_27.0.us.i.i = sub nuw i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      133:  %_74.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_27.0.us.i.i 
      134:  %bcmp.us.i.i = call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(1) %_74.us.i.i, ptr noundef nonnull dereferenceable(1) %11, i64 %len.sroa.0.04.i.i.i), !noalias !22 
      135:  %_32.us.i.i = icmp eq i32 %bcmp.us.i.i, 0 
      136:  br i1 %_32.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit, label %bb21.us.i.i.backedge 
      137:  
      138: bb13.us.i.i: ; preds = %bb28.us.i.i 
      139:  br i1 %_66.not.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit, label %bb21.us.i.i.backedge 
      140:  
      141: bb21.us.i.i.backedge: ; preds = %bb13.us.i.i, %bb31.us.i.i 
      142:  br label %bb21.us.i.i 
      143:  
      144: _RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit: ; preds = %bb27.us.i.i, %bb31.us.i.i, %bb13.us.i.i 
      145:  %self.sroa.4.0.i = phi i64 [ undef, %bb27.us.i.i ], [ %_27.0.us.i.i, %bb31.us.i.i ], [ undef, %bb13.us.i.i ] 
      146:  %.sink.i.i = phi i64 [ 0, %bb27.us.i.i ], [ 1, %bb31.us.i.i ], [ 0, %bb13.us.i.i ] 
      147:  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %_5.i), !noalias !4 
      148:  %18 = insertvalue { i64, i64 } poison, i64 %.sink.i.i, 0 
      149:  %19 = insertvalue { i64, i64 } %18, i64 %self.sroa.4.0.i, 1 
      150:  ret { i64, i64 } %19 
      151: } 
      152:  
      153: ; Function Attrs: nonlazybind uwtable 
      154: define { i1, i8 } @rfind_byte(ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1, i8 noundef %needle) unnamed_addr #0 { 
      155: start: 
      156: ; call core::slice::memchr::memrchr_aligned 
      157:  %2 = tail call { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr15memrchr_aligned(i8 noundef %needle, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1) 
      158:  %3 = extractvalue { i64, i64 } %2, 0 
      159:  %4 = trunc nuw i64 %3 to i1 
      160:  br i1 %4, label %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i, label %_RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      161:  
      162: _RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i: ; preds = %start 
      163:  %5 = extractvalue { i64, i64 } %2, 1 
      164:  %cond.i = icmp ult i64 %5, %1 
      165:  tail call void @llvm.assume(i1 %cond.i) 
      166:  %6 = getelementptr inbounds nuw i8, ptr %0, i64 %5 
      167:  %_0.i.i = load i8, ptr %6, align 1, !noundef !21 
      168:  br label %_RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      169:  
      170: _RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit: ; preds = %start, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i 
      171:  %_0.sroa.3.0.i = phi i8 [ %_0.i.i, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i ], [ undef, %start ] 
      172:  %7 = insertvalue { i1, i8 } poison, i1 %4, 0 
      173:  %8 = insertvalue { i1, i8 } %7, i8 %_0.sroa.3.0.i, 1 
      174:  ret { i1, i8 } %8 
      175: } 
      176:  
      177: ; Function Attrs: nounwind nonlazybind uwtable 
      178: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      179:  
      180: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      181: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #2 
      182:  
      183: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      184: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #2 
      185:  
      186: ; core::slice::memchr::memrchr_aligned 
      187: ; Function Attrs: nonlazybind uwtable 
      188: declare { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr15memrchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      189:  
      190: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      191: declare void @llvm.assume(i1 noundef) #3 
      192:  
      193: ; core::slice::memchr::memchr_aligned 
      194: ; Function Attrs: nonlazybind uwtable 
      195: declare { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr14memchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      196:  
      197: ; Function Attrs: nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) 
      198: declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #4 
      199:  
      200: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      201: declare void @llvm.experimental.noalias.scope.decl(metadata) #5 
      202:  
      203: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      204: attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      205: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
      206: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      207: attributes #4 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } 
      208: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      209:  
      210: !llvm.module.flags = !{!0, !1, !2} 
      211: !llvm.ident = !{!3} 
      212:  
      213: !0 = !{i32 8, !"PIC Level", i32 2} 
      214: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
        .
        .
        .
>>>>>>

------------------------------------------

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-21/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/memchr-result/memchr-result.ll" "/checkout/tests/codegen-llvm/lib-optimizations/memchr-result.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/lib-optimizations/memchr-result.rs:15:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: phi { i64, i64 }
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/memchr-result/memchr-result.ll:114:16: note: found here
 %.pn.us.i.i = phi { i64, i64 } [ %16, %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i ], [ %13, %bb26.us.i.i ]
               ^~~~~~~~~~~~~~~~

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/lib-optimizations/memchr-result/memchr-result.ll
Check file: /checkout/tests/codegen-llvm/lib-optimizations/memchr-result.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
        .
        .
        .
       14:  
       15: bb5.i.i.i: ; preds = %start 
       16:  %_12.i.i.i = icmp samesign ult i32 %needle, 2048 
       17:  %0 = trunc i32 %needle to i8 
       18:  %_5.i.i.i.i = and i8 %0, 63 
       19:  %last1.i.i.i.i = or disjoint i8 %_5.i.i.i.i, -128 
       20:  %_10.i.i.i.i = lshr i32 %needle, 6 
       21:  %1 = trunc i32 %_10.i.i.i.i to i8 
       22:  %_8.i.i.i.i = and i8 %1, 63 
       23:  %last2.i.i.i.i = or disjoint i8 %_8.i.i.i.i, -128 
       24:  %_14.i.i.i.i = lshr i32 %needle, 12 
       25:  %2 = trunc i32 %_14.i.i.i.i to i8 
       26:  %_12.i.i.i.i = and i8 %2, 63 
       27:  %last3.i.i.i.i = or disjoint i8 %_12.i.i.i.i, -128 
       28:  %_18.i.i.i.i = lshr i32 %needle, 18 
       29:  %last4.i.i.i.i = or disjoint i32 %_18.i.i.i.i, 240 
       30:  br i1 %_12.i.i.i, label %bb1.i.i.i.i, label %bb2.i.i.i.i 
       31:  
       32: bb1.i.i.i.i: ; preds = %bb5.i.i.i 
       33:  %3 = or disjoint i32 %_10.i.i.i.i, 192 
       34:  br label %bb21.lr.ph.split.i.i 
       35:  
       36: bb2.i.i.i.i: ; preds = %bb5.i.i.i 
       37:  %_13.i.i.i = icmp samesign ult i32 %needle, 65536 
       38:  br i1 %_13.i.i.i, label %bb3.i.i.i.i, label %bb4.i.i.i.i 
       39:  
       40: bb3.i.i.i.i: ; preds = %bb2.i.i.i.i 
       41:  %4 = or disjoint i32 %_14.i.i.i.i, 224 
       42:  br label %bb21.lr.ph.split.i.i 
       43:  
       44: bb4.i.i.i.i: ; preds = %bb2.i.i.i.i 
       45:  %5 = zext i8 %last1.i.i.i.i to i32 
       46:  %6 = shl nuw i32 %5, 24 
       47:  br label %bb21.lr.ph.split.i.i 
       48:  
       49: bb21.lr.ph.split.i.i: ; preds = %bb4.i.i.i.i, %bb3.i.i.i.i, %bb1.i.i.i.i, %start 
       50:  %utf8_encoded.sroa.13.0.i.i = phi i32 [ 0, %bb1.i.i.i.i ], [ 0, %bb3.i.i.i.i ], [ %6, %bb4.i.i.i.i ], [ 0, %start ] 
       51:  %utf8_encoded.sroa.11.0.i.i = phi i8 [ 0, %bb1.i.i.i.i ], [ %last1.i.i.i.i, %bb3.i.i.i.i ], [ %last2.i.i.i.i, %bb4.i.i.i.i ], [ 0, %start ] 
       52:  %utf8_encoded.sroa.8.0.i.i = phi i8 [ %last1.i.i.i.i, %bb1.i.i.i.i ], [ %last2.i.i.i.i, %bb3.i.i.i.i ], [ %last3.i.i.i.i, %bb4.i.i.i.i ], [ 0, %start ] 
       53:  %utf8_encoded.sroa.0.0.i.i = phi i32 [ %3, %bb1.i.i.i.i ], [ %4, %bb3.i.i.i.i ], [ %last4.i.i.i.i, %bb4.i.i.i.i ], [ %needle, %start ] 
       54:  %len.sroa.0.04.i.i.i = phi i64 [ 2, %bb1.i.i.i.i ], [ 3, %bb3.i.i.i.i ], [ 4, %bb4.i.i.i.i ], [ 1, %start ] 
       55:  %utf8_encoded.sroa.11.0.insert.ext.i.i = zext i8 %utf8_encoded.sroa.11.0.i.i to i32 
       56:  %utf8_encoded.sroa.11.0.insert.shift.i.i = shl nuw nsw i32 %utf8_encoded.sroa.11.0.insert.ext.i.i, 16 
       57:  %utf8_encoded.sroa.11.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.11.0.insert.shift.i.i, %utf8_encoded.sroa.13.0.i.i 
       58:  %utf8_encoded.sroa.8.0.insert.ext.i.i = zext i8 %utf8_encoded.sroa.8.0.i.i to i32 
       59:  %utf8_encoded.sroa.8.0.insert.shift.i.i = shl nuw nsw i32 %utf8_encoded.sroa.8.0.insert.ext.i.i, 8 
       60:  %utf8_encoded.sroa.8.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.11.0.insert.insert.i.i, %utf8_encoded.sroa.8.0.insert.shift.i.i 
       61:  %utf8_encoded.sroa.0.0.insert.ext.i.i = and i32 %utf8_encoded.sroa.0.0.i.i, 255 
       62:  %utf8_encoded.sroa.0.0.insert.insert.i.i = or disjoint i32 %utf8_encoded.sroa.8.0.insert.insert.i.i, %utf8_encoded.sroa.0.0.insert.ext.i.i 
       63:  %7 = getelementptr inbounds nuw i8, ptr %_5.i, i64 24 
       64:  store ptr %haystack.0, ptr %7, align 8, !alias.scope !7, !noalias !10 
       65:  %8 = getelementptr inbounds nuw i8, ptr %_5.i, i64 32 
       66:  store i64 %haystack.1, ptr %8, align 8, !alias.scope !7, !noalias !10 
       67:  %9 = getelementptr inbounds nuw i8, ptr %_5.i, i64 16 
       68:  %10 = getelementptr inbounds nuw i8, ptr %_5.i, i64 40 
       69:  store i64 %haystack.1, ptr %10, align 8, !alias.scope !7, !noalias !10 
       70:  %11 = getelementptr inbounds nuw i8, ptr %_5.i, i64 5 
       71:  store i32 %utf8_encoded.sroa.0.0.insert.insert.i.i, ptr %11, align 1, !alias.scope !7, !noalias !10 
       72:  tail call void @llvm.experimental.noalias.scope.decl(metadata !12) 
       73:  %12 = getelementptr i8, ptr %11, i64 %len.sroa.0.04.i.i.i 
       74:  %_55.i.i = getelementptr i8, ptr %12, i64 -1 
       75:  %last_byte.us.i.pre.i = load i8, ptr %_55.i.i, align 1, !alias.scope !12, !noalias !15 
       76:  br label %bb21.us.i.i 
       77:  
       78: bb21.us.i.i: ; preds = %bb21.us.i.i.backedge, %bb21.lr.ph.split.i.i 
       79:  %_20.02628.us.i.i = phi i64 [ 0, %bb21.lr.ph.split.i.i ], [ %_20.0.us.i.i, %bb21.us.i.i.backedge ] 
       80:  %new_len.us.i.i = sub nuw i64 %haystack.1, %_20.02628.us.i.i 
       81:  %_50.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_20.02628.us.i.i 
       82:  %_58.us.i.i = icmp ult i64 %new_len.us.i.i, 16 
       83:  br i1 %_58.us.i.i, label %bb25.us.i.i, label %bb26.us.i.i 
       84:  
       85: bb26.us.i.i: ; preds = %bb21.us.i.i 
       86: ; call core::slice::memchr::memchr_aligned 
       87:  %13 = tail call { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr14memchr_aligned(i8 noundef %last_byte.us.i.pre.i, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %_50.us.i.i, i64 noundef %new_len.us.i.i), !noalias !17 
       88:  br label %bb27.us.i.i 
       89:  
       90: bb25.us.i.i: ; preds = %bb21.us.i.i 
       91:  %_44.not.i.us.i.i = icmp eq i64 %new_len.us.i.i, 0 
       92:  br i1 %_44.not.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb3.i.us.i.i 
       93:  
       94: bb3.i.us.i.i: ; preds = %bb25.us.i.i, %bb5.i.us.i.i 
       95:  %i.sroa.0.05.i.us.i.i = phi i64 [ %_11.0.i.us.i.i, %bb5.i.us.i.i ], [ 0, %bb25.us.i.i ] 
       96:  %14 = getelementptr inbounds nuw i8, ptr %_50.us.i.i, i64 %i.sroa.0.05.i.us.i.i 
       97:  %_8.i.us.i.i = load i8, ptr %14, align 1, !alias.scope !18, !noalias !17, !noundef !21 
       98:  %_7.i.us.i.i = icmp eq i8 %_8.i.us.i.i, %last_byte.us.i.pre.i 
       99:  br i1 %_7.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb5.i.us.i.i 
      100:  
      101: bb5.i.us.i.i: ; preds = %bb3.i.us.i.i 
      102:  %_11.0.i.us.i.i = add nuw nsw i64 %i.sroa.0.05.i.us.i.i, 1 
      103:  %exitcond.not.i.us.i.i = icmp eq i64 %_11.0.i.us.i.i, %new_len.us.i.i 
      104:  br i1 %exitcond.not.i.us.i.i, label %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, label %bb3.i.us.i.i 
      105:  
      106: _RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i: ; preds = %bb5.i.us.i.i, %bb3.i.us.i.i, %bb25.us.i.i 
      107:  %i.sroa.0.0.lcssa.i.us.i.i = phi i64 [ 0, %bb25.us.i.i ], [ %new_len.us.i.i, %bb5.i.us.i.i ], [ %i.sroa.0.05.i.us.i.i, %bb3.i.us.i.i ] 
      108:  %_0.sroa.0.0.i.us.i.i = phi i64 [ 0, %bb25.us.i.i ], [ 0, %bb5.i.us.i.i ], [ 1, %bb3.i.us.i.i ] 
      109:  %15 = insertvalue { i64, i64 } poison, i64 %_0.sroa.0.0.i.us.i.i, 0 
      110:  %16 = insertvalue { i64, i64 } %15, i64 %i.sroa.0.0.lcssa.i.us.i.i, 1 
      111:  br label %bb27.us.i.i 
      112:  
      113: bb27.us.i.i: ; preds = %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i, %bb26.us.i.i 
      114:  %.pn.us.i.i = phi { i64, i64 } [ %16, %_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr12memchr_naive.exit.us.i.i ], [ %13, %bb26.us.i.i ] 
not:15                    !~~~~~~~~~~~~~~~                                                                                                      error: no match expected
      115:  %result.sroa.0.0.us.i.i = extractvalue { i64, i64 } %.pn.us.i.i, 0 
      116:  %17 = trunc nuw i64 %result.sroa.0.0.us.i.i to i1 
      117:  br i1 %17, label %bb28.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      118:  
      119: bb28.us.i.i: ; preds = %bb27.us.i.i 
      120:  %result.sroa.8.0.us.i.i = extractvalue { i64, i64 } %.pn.us.i.i, 1 
      121:  %cond.us.i.i = icmp ult i64 %result.sroa.8.0.us.i.i, %new_len.us.i.i 
      122:  tail call void @llvm.assume(i1 %cond.us.i.i) 
      123:  %_19.0.us.i.i = add i64 %_20.02628.us.i.i, 1 
      124:  %_20.0.us.i.i = add i64 %_19.0.us.i.i, %result.sroa.8.0.us.i.i 
      125:  store i64 %_20.0.us.i.i, ptr %9, align 8, !alias.scope !12, !noalias !15 
      126:  %_21.not.us.i.i = icmp ult i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      127:  %_66.not.us.i.i = icmp ugt i64 %_20.0.us.i.i, %haystack.1 
      128:  %or.cond38.i.i = or i1 %_21.not.us.i.i, %_66.not.us.i.i 
      129:  br i1 %or.cond38.i.i, label %bb13.us.i.i, label %bb31.us.i.i 
      130:  
      131: bb31.us.i.i: ; preds = %bb28.us.i.i 
      132:  %_27.0.us.i.i = sub nuw i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      133:  %_74.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_27.0.us.i.i 
      134:  %bcmp.us.i.i = call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(1) %_74.us.i.i, ptr noundef nonnull dereferenceable(1) %11, i64 %len.sroa.0.04.i.i.i), !noalias !22 
      135:  %_32.us.i.i = icmp eq i32 %bcmp.us.i.i, 0 
      136:  br i1 %_32.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit, label %bb21.us.i.i.backedge 
      137:  
      138: bb13.us.i.i: ; preds = %bb28.us.i.i 
      139:  br i1 %_66.not.us.i.i, label %_RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit, label %bb21.us.i.i.backedge 
      140:  
      141: bb21.us.i.i.backedge: ; preds = %bb13.us.i.i, %bb31.us.i.i 
      142:  br label %bb21.us.i.i 
      143:  
      144: _RINvMNtCs5NAXmrz6ehv_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit: ; preds = %bb27.us.i.i, %bb31.us.i.i, %bb13.us.i.i 
      145:  %self.sroa.4.0.i = phi i64 [ undef, %bb27.us.i.i ], [ %_27.0.us.i.i, %bb31.us.i.i ], [ undef, %bb13.us.i.i ] 
      146:  %.sink.i.i = phi i64 [ 0, %bb27.us.i.i ], [ 1, %bb31.us.i.i ], [ 0, %bb13.us.i.i ] 
      147:  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %_5.i), !noalias !4 
      148:  %18 = insertvalue { i64, i64 } poison, i64 %.sink.i.i, 0 
      149:  %19 = insertvalue { i64, i64 } %18, i64 %self.sroa.4.0.i, 1 
      150:  ret { i64, i64 } %19 
      151: } 
      152:  
      153: ; Function Attrs: nonlazybind uwtable 
      154: define { i1, i8 } @rfind_byte(ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1, i8 noundef %needle) unnamed_addr #0 { 
      155: start: 
      156: ; call core::slice::memchr::memrchr_aligned 
      157:  %2 = tail call { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr15memrchr_aligned(i8 noundef %needle, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1) 
      158:  %3 = extractvalue { i64, i64 } %2, 0 
      159:  %4 = trunc nuw i64 %3 to i1 
      160:  br i1 %4, label %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i, label %_RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      161:  
      162: _RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i: ; preds = %start 
      163:  %5 = extractvalue { i64, i64 } %2, 1 
      164:  %cond.i = icmp ult i64 %5, %1 
      165:  tail call void @llvm.assume(i1 %cond.i) 
      166:  %6 = getelementptr inbounds nuw i8, ptr %0, i64 %5 
      167:  %_0.i.i = load i8, ptr %6, align 1, !noundef !21 
      168:  br label %_RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      169:  
      170: _RINvMNtCs5NAXmrz6ehv_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit: ; preds = %start, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i 
      171:  %_0.sroa.3.0.i = phi i8 [ %_0.i.i, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i ], [ undef, %start ] 
      172:  %7 = insertvalue { i1, i8 } poison, i1 %4, 0 
      173:  %8 = insertvalue { i1, i8 } %7, i8 %_0.sroa.3.0.i, 1 
      174:  ret { i1, i8 } %8 
      175: } 
      176:  
      177: ; Function Attrs: nounwind nonlazybind uwtable 
      178: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      179:  
      180: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      181: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #2 
      182:  
      183: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      184: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #2 
      185:  
      186: ; core::slice::memchr::memrchr_aligned 
      187: ; Function Attrs: nonlazybind uwtable 
      188: declare { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr15memrchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      189:  
      190: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      191: declare void @llvm.assume(i1 noundef) #3 
      192:  
      193: ; core::slice::memchr::memchr_aligned 
      194: ; Function Attrs: nonlazybind uwtable 
      195: declare { i64, i64 } @_RNvNtNtCs5NAXmrz6ehv_4core5slice6memchr14memchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      196:  
      197: ; Function Attrs: nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) 
      198: declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #4 
      199:  
      200: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      201: declare void @llvm.experimental.noalias.scope.decl(metadata) #5 
      202:  
      203: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      204: attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      205: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
      206: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      207: attributes #4 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } 
      208: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      209:  
      210: !llvm.module.flags = !{!0, !1, !2} 
      211: !llvm.ident = !{!3} 
      212:  
      213: !0 = !{i32 8, !"PIC Level", i32 2} 
      214: !1 = !{i32 2, !"RtLibUseGOT", i32 1} 
        .
        .
        .
>>>>>>
------------------------------------------

---- [codegen] tests/codegen-llvm/lib-optimizations/memchr-result.rs stdout end ----

failures:
    [codegen] tests/codegen-llvm/lib-optimizations/memchr-result.rs

test result: FAILED. 975 passed; 1 failed; 173 ignored; 0 measured; 0 filtered out; finished in 17.07s

@rust-bors rust-bors Bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 28, 2026
@rust-bors

rust-bors Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

PR #159784, which is a member of this rollup, was unapproved.

This rollup was thus unapproved.

Auto build was cancelled due to unapproval. Cancelled workflows:

@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jul 28, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors try cancel

@rust-bors

rust-bors Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Try build cancelled. Cancelled workflows:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) rollup A PR which is a rollup T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants