Skip to content

Rollup of 22 pull requests - #160554

Closed
JonathanBrouwer wants to merge 53 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-clq6Y1g
Closed

Rollup of 22 pull requests#160554
JonathanBrouwer wants to merge 53 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-clq6Y1g

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

bjorn3 and others added 30 commits July 23, 2026 12:14
This will allow introducing a separate incr comp session dir for the
post LTO artifacts in the future. In addition it statically encodes the
lifetime of the incr comp session rather than requiring an enum behind a
mutex stored in the Session.
The guard checked `data_len > u16::MAX`, allowing paths far larger than
`PathBuffer` (a fixed 16384-element array), which the subsequent single
`copy_from` then overflows. Bound against `MAXIMUM_REPARSE_DATA_BUFFER_SIZE`
plus header instead, matching the kernel's limit.
Pure file moves; the module path repointing and platform gating follow
in the next commit. Recorded in .git-blame-ignore-revs so blame skips
the rename.
Select the platform implementation with a cfg_select! in sys::sync::futex,
repoint each one at the pal primitives it uses (time, fuchsia, the windows
api module, hermit_abi), and remove the now-unused futex declarations from
the pal modules. The sync primitives import crate::sys::sync::futex rather
than the crate::sys::futex glob re-export.
Use codegen tail discovery so wrappers such as OsStr keep slice element
metadata without losing offsets for prefixed DSTs. Keep recursion tracking
scoped to the current traversal path.
`rustc_privacy` pulls in all of `rustc_ty_utils`, but only wants
`SpannedTypeVisitor` and `walk_types`. Move those to a small
`rustc_ty_walk` crate.

This allows `rustc_privacy` to start building much sooner.
…which does tracked and untracked borrowing
…afe`

Also renames it to `rustc_specialization_ignore_lifetime_constraints`
There is a `impl PpAnn for TyCtxt`  that is unneeded. None of the big crates (middle, trait_selection) actually do any hir pretty printing so it can be removed and can either be implemented for local structs elsewhere or done by casting to `&dyn PpAnn` instead.
Clarify that slice-tail layout checks apply to the sized prefix rather
than the slice element, and cover zero-sized slice elements in the
type-tree run-make test.
Fixes a small typo in the documentation comment for AllowExprMetavar. 
Changes decrarative to `declarative`.

Change in compiler/rustc_attr_parsing/src/parser.rs: Line 492
Reword the `.expect(...)` messages in the TcpStream/TcpListener doc
examples in library/std/src/net/tcp.rs to follow the 'expect as
precondition' style from the std library guidance (describe why the
operation is expected to succeed, rather than restating the failure).

Examples:
  "set_nodelay call failed"   -> "set_nodelay should succeed"
  "could not set TTL"         -> "set_ttl should succeed"
  "Cannot set non-blocking"   -> "set_nonblocking should succeed"

Doc-only change, no behavior change.
Co-authored-by: Roland Xu <rcu@live.com>
also refactor check-miri a bit to make it easier to read
Using a separate step lets us remove the `default_to_suites_only` hack.
..to `compare_{method,type}_clause_entailment`
@rustbot rustbot added O-wasi Operating system: Wasi, Webassembly System Interface O-wasm Target: WASM (WebAssembly), http://webassembly.org/ O-windows Operating system: Windows S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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 Aug 5, 2026
@rust-bors

rust-bors Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

📌 Commit a9d20c4 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rustbot rustbot added the WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) label Aug 5, 2026
@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 Aug 5, 2026
@rust-bors

rust-bors Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

⌛ Trying commit a9d20c4 with merge 871e284

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

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

rust-bors Bot pushed a commit that referenced this pull request Aug 5, 2026
Rollup of 22 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-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:122:22: note: found here
 %.merged.i.us.i.i = phi { i64, i64 } [ %16, %bb3.i.us.i.i ], [ %11, %bb7.i.us.i.i ], [ %11, %bb5.i.us.i.i ], [ %17, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.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:
<<<<<<
        .
        .
        .
       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 %bb18.lr.ph.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 %bb18.lr.ph.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 %bb18.lr.ph.i.i 
       48:  
       49: bb18.lr.ph.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 i64 %haystack.1, ptr %7, align 8, !alias.scope !7, !noalias !10 
       65:  %8 = getelementptr inbounds nuw i8, ptr %_5.i, i64 40 
       66:  store i64 %haystack.1, ptr %8, align 8, !alias.scope !7, !noalias !10 
       67:  %9 = getelementptr inbounds nuw i8, ptr %_5.i, i64 32 
       68:  store i32 %utf8_encoded.sroa.0.0.insert.insert.i.i, ptr %9, align 8, !alias.scope !7, !noalias !10 
       69:  tail call void @llvm.experimental.noalias.scope.decl(metadata !12) 
       70:  %10 = getelementptr i8, ptr %9, i64 %len.sroa.0.04.i.i.i 
       71:  %_55.i.i = getelementptr i8, ptr %10, i64 -1 
       72:  %last_byte.us.pre.i.i = load i8, ptr %_55.i.i, align 1, !alias.scope !12, !noalias !15 
       73:  br label %bb18.us.i.i 
       74:  
       75: bb18.us.i.i: ; preds = %bb18.us.i.i.backedge, %bb18.lr.ph.i.i 
       76:  %_20.02225.us.i.i = phi i64 [ 0, %bb18.lr.ph.i.i ], [ %_20.0.us.i.i, %bb18.us.i.i.backedge ] 
       77:  %new_len.us.i.i = sub nuw i64 %haystack.1, %_20.02225.us.i.i 
       78:  %_50.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_20.02225.us.i.i 
       79:  %_3.i.us.i.i = icmp samesign ult i64 %new_len.us.i.i, 16 
       80:  br i1 %_3.i.us.i.i, label %bb1.i.us.i.i, label %bb5.i.us.i.i 
       81:  
       82: bb5.i.us.i.i: ; preds = %bb18.us.i.i 
       83: ; call core::slice::memchr::memchr_aligned 
       84:  %11 = tail call { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr14memchr_aligned(i8 noundef %last_byte.us.pre.i.i, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %_50.us.i.i, i64 noundef range(i64 0, -9223372036854775808) %new_len.us.i.i), !noalias !17 
       85:  %12 = extractvalue { i64, i64 } %11, 0 
       86:  %13 = trunc nuw i64 %12 to i1 
       87:  br i1 %13, label %bb7.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
       88:  
       89: bb7.i.us.i.i: ; preds = %bb5.i.us.i.i 
       90:  %14 = extractvalue { i64, i64 } %11, 1 
       91:  %cond.i.us.i.i = icmp ult i64 %14, %new_len.us.i.i 
       92:  tail call void @llvm.assume(i1 %cond.i.us.i.i) 
       93:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
       94:  
       95: bb1.i.us.i.i: ; preds = %bb18.us.i.i 
       96:  %_44.not.i.i.us.i.i = icmp eq i64 %haystack.1, %_20.02225.us.i.i 
       97:  br i1 %_44.not.i.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, label %bb3.i.i.us.i.i 
       98:  
       99: bb3.i.i.us.i.i: ; preds = %bb1.i.us.i.i, %bb5.i.i.us.i.i 
      100:  %i.sroa.0.05.i.i.us.i.i = phi i64 [ %_11.0.i.i.us.i.i, %bb5.i.i.us.i.i ], [ 0, %bb1.i.us.i.i ] 
      101:  %15 = getelementptr inbounds nuw i8, ptr %_50.us.i.i, i64 %i.sroa.0.05.i.i.us.i.i 
      102:  %_8.i.i.us.i.i = load i8, ptr %15, align 1, !alias.scope !18, !noalias !17, !noundef !23 
      103:  %_7.i.i.us.i.i = icmp eq i8 %_8.i.i.us.i.i, %last_byte.us.pre.i.i 
      104:  br i1 %_7.i.i.us.i.i, label %bb3.i.us.i.i, label %bb5.i.i.us.i.i 
      105:  
      106: bb5.i.i.us.i.i: ; preds = %bb3.i.i.us.i.i 
      107:  %_11.0.i.i.us.i.i = add nuw nsw i64 %i.sroa.0.05.i.i.us.i.i, 1 
      108:  %exitcond.not.i.i.us.i.i = icmp eq i64 %_11.0.i.i.us.i.i, %new_len.us.i.i 
      109:  br i1 %exitcond.not.i.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, label %bb3.i.i.us.i.i 
      110:  
      111: bb3.i.us.i.i: ; preds = %bb3.i.i.us.i.i 
      112:  %16 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %i.sroa.0.05.i.i.us.i.i, 1 
      113:  %cond2.i.us.i.i = icmp samesign ult i64 %i.sroa.0.05.i.i.us.i.i, %new_len.us.i.i 
      114:  tail call void @llvm.assume(i1 %cond2.i.us.i.i) 
      115:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      116:  
      117: _RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i: ; preds = %bb5.i.i.us.i.i, %bb1.i.us.i.i 
      118:  %17 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %new_len.us.i.i, 1 
      119:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      120:  
      121: _RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, %bb3.i.us.i.i, %bb7.i.us.i.i, %bb5.i.us.i.i 
      122:  %.merged.i.us.i.i = phi { i64, i64 } [ %16, %bb3.i.us.i.i ], [ %11, %bb7.i.us.i.i ], [ %11, %bb5.i.us.i.i ], [ %17, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i ] 
not:15                          !~~~~~~~~~~~~~~~                                                                                                                                                                error: no match expected
      123:  %18 = extractvalue { i64, i64 } %.merged.i.us.i.i, 0 
      124:  %19 = trunc nuw i64 %18 to i1 
      125:  br i1 %19, label %bb5.us.i.i, label %_RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      126:  
      127: bb5.us.i.i: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      128:  %20 = extractvalue { i64, i64 } %.merged.i.us.i.i, 1 
      129:  %_19.0.us.i.i = add i64 %_20.02225.us.i.i, 1 
      130:  %_20.0.us.i.i = add i64 %_19.0.us.i.i, %20 
      131:  %_21.not.us.i.i = icmp uge i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      132:  %_60.not.us.i.i = icmp ule i64 %_20.0.us.i.i, %haystack.1 
      133:  %or.cond.i.not.i = and i1 %_21.not.us.i.i, %_60.not.us.i.i 
      134:  br i1 %or.cond.i.not.i, label %bb25.us.i.i, label %bb14.us.i.i 
      135:  
      136: bb25.us.i.i: ; preds = %bb5.us.i.i 
      137:  %_27.0.us.i.i = sub nuw i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      138:  %_68.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_27.0.us.i.i 
      139:  %bcmp.us.i.i = call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(1) %_68.us.i.i, ptr noundef nonnull dereferenceable(1) %9, i64 %len.sroa.0.04.i.i.i), !noalias !24 
      140:  %_32.us.i.i = icmp eq i32 %bcmp.us.i.i, 0 
      141:  br i1 %_32.us.i.i, label %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i, label %bb18.us.i.i.backedge 
      142:  
      143: bb14.us.i.i: ; preds = %bb5.us.i.i 
      144:  br i1 %_60.not.us.i.i, label %bb18.us.i.i.backedge, label %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i 
      145:  
      146: bb18.us.i.i.backedge: ; preds = %bb14.us.i.i, %bb25.us.i.i 
      147:  br label %bb18.us.i.i 
      148:  
      149: _RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i: ; preds = %bb14.us.i.i, %bb25.us.i.i 
      150:  %self.sroa.4.0.ph.i = phi i64 [ undef, %bb14.us.i.i ], [ %_27.0.us.i.i, %bb25.us.i.i ] 
      151:  %21 = zext i1 %or.cond.i.not.i to i64 
      152:  br label %_RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      153:  
      154: _RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i 
      155:  %self.sroa.4.0.i = phi i64 [ %self.sroa.4.0.ph.i, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i ], [ undef, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i ] 
      156:  %.sink.i.i = phi i64 [ %21, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i ], [ 0, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i ] 
      157:  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %_5.i), !noalias !4 
      158:  %22 = insertvalue { i64, i64 } poison, i64 %.sink.i.i, 0 
      159:  %23 = insertvalue { i64, i64 } %22, i64 %self.sroa.4.0.i, 1 
      160:  ret { i64, i64 } %23 
      161: } 
      162:  
      163: ; Function Attrs: nonlazybind uwtable 
      164: 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 { 
      165: start: 
      166: ; call core::slice::memchr::memrchr_aligned 
      167:  %2 = tail call { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr15memrchr_aligned(i8 noundef %needle, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1) 
      168:  %3 = extractvalue { i64, i64 } %2, 0 
      169:  %4 = trunc nuw i64 %3 to i1 
      170:  br i1 %4, label %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i, label %_RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      171:  
      172: _RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i: ; preds = %start 
      173:  %5 = extractvalue { i64, i64 } %2, 1 
      174:  %cond.i = icmp ult i64 %5, %1 
      175:  tail call void @llvm.assume(i1 %cond.i) 
      176:  %6 = getelementptr inbounds nuw i8, ptr %0, i64 %5 
      177:  %_0.i.i = load i8, ptr %6, align 1, !noundef !23 
      178:  br label %_RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      179:  
      180: _RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit: ; preds = %start, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i 
      181:  %_0.sroa.3.0.i = phi i8 [ %_0.i.i, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i ], [ undef, %start ] 
      182:  %7 = insertvalue { i1, i8 } poison, i1 %4, 0 
      183:  %8 = insertvalue { i1, i8 } %7, i8 %_0.sroa.3.0.i, 1 
      184:  ret { i1, i8 } %8 
      185: } 
      186:  
      187: ; Function Attrs: nounwind nonlazybind uwtable 
      188: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      189:  
      190: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      191: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #2 
      192:  
      193: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      194: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #2 
      195:  
      196: ; core::slice::memchr::memchr_aligned 
      197: ; Function Attrs: nonlazybind uwtable 
      198: declare { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr14memchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      199:  
      200: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      201: declare void @llvm.assume(i1 noundef) #3 
      202:  
      203: ; core::slice::memchr::memrchr_aligned 
      204: ; Function Attrs: nonlazybind uwtable 
      205: declare { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr15memrchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      206:  
      207: ; Function Attrs: nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) 
      208: declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #4 
      209:  
      210: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      211: declare void @llvm.experimental.noalias.scope.decl(metadata) #5 
      212:  
      213: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      214: attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      215: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
      216: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      217: attributes #4 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } 
      218: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      219:  
      220: !llvm.module.flags = !{!0, !1, !2} 
      221: !llvm.ident = !{!3} 
      222:  
        .
        .
        .
>>>>>>

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

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:122:22: note: found here
 %.merged.i.us.i.i = phi { i64, i64 } [ %16, %bb3.i.us.i.i ], [ %11, %bb7.i.us.i.i ], [ %11, %bb5.i.us.i.i ], [ %17, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.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:
<<<<<<
        .
        .
        .
       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 %bb18.lr.ph.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 %bb18.lr.ph.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 %bb18.lr.ph.i.i 
       48:  
       49: bb18.lr.ph.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 i64 %haystack.1, ptr %7, align 8, !alias.scope !7, !noalias !10 
       65:  %8 = getelementptr inbounds nuw i8, ptr %_5.i, i64 40 
       66:  store i64 %haystack.1, ptr %8, align 8, !alias.scope !7, !noalias !10 
       67:  %9 = getelementptr inbounds nuw i8, ptr %_5.i, i64 32 
       68:  store i32 %utf8_encoded.sroa.0.0.insert.insert.i.i, ptr %9, align 8, !alias.scope !7, !noalias !10 
       69:  tail call void @llvm.experimental.noalias.scope.decl(metadata !12) 
       70:  %10 = getelementptr i8, ptr %9, i64 %len.sroa.0.04.i.i.i 
       71:  %_55.i.i = getelementptr i8, ptr %10, i64 -1 
       72:  %last_byte.us.pre.i.i = load i8, ptr %_55.i.i, align 1, !alias.scope !12, !noalias !15 
       73:  br label %bb18.us.i.i 
       74:  
       75: bb18.us.i.i: ; preds = %bb18.us.i.i.backedge, %bb18.lr.ph.i.i 
       76:  %_20.02225.us.i.i = phi i64 [ 0, %bb18.lr.ph.i.i ], [ %_20.0.us.i.i, %bb18.us.i.i.backedge ] 
       77:  %new_len.us.i.i = sub nuw i64 %haystack.1, %_20.02225.us.i.i 
       78:  %_50.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_20.02225.us.i.i 
       79:  %_3.i.us.i.i = icmp samesign ult i64 %new_len.us.i.i, 16 
       80:  br i1 %_3.i.us.i.i, label %bb1.i.us.i.i, label %bb5.i.us.i.i 
       81:  
       82: bb5.i.us.i.i: ; preds = %bb18.us.i.i 
       83: ; call core::slice::memchr::memchr_aligned 
       84:  %11 = tail call { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr14memchr_aligned(i8 noundef %last_byte.us.pre.i.i, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %_50.us.i.i, i64 noundef range(i64 0, -9223372036854775808) %new_len.us.i.i), !noalias !17 
       85:  %12 = extractvalue { i64, i64 } %11, 0 
       86:  %13 = trunc nuw i64 %12 to i1 
       87:  br i1 %13, label %bb7.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
       88:  
       89: bb7.i.us.i.i: ; preds = %bb5.i.us.i.i 
       90:  %14 = extractvalue { i64, i64 } %11, 1 
       91:  %cond.i.us.i.i = icmp ult i64 %14, %new_len.us.i.i 
       92:  tail call void @llvm.assume(i1 %cond.i.us.i.i) 
       93:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
       94:  
       95: bb1.i.us.i.i: ; preds = %bb18.us.i.i 
       96:  %_44.not.i.i.us.i.i = icmp eq i64 %haystack.1, %_20.02225.us.i.i 
       97:  br i1 %_44.not.i.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, label %bb3.i.i.us.i.i 
       98:  
       99: bb3.i.i.us.i.i: ; preds = %bb1.i.us.i.i, %bb5.i.i.us.i.i 
      100:  %i.sroa.0.05.i.i.us.i.i = phi i64 [ %_11.0.i.i.us.i.i, %bb5.i.i.us.i.i ], [ 0, %bb1.i.us.i.i ] 
      101:  %15 = getelementptr inbounds nuw i8, ptr %_50.us.i.i, i64 %i.sroa.0.05.i.i.us.i.i 
      102:  %_8.i.i.us.i.i = load i8, ptr %15, align 1, !alias.scope !18, !noalias !17, !noundef !23 
      103:  %_7.i.i.us.i.i = icmp eq i8 %_8.i.i.us.i.i, %last_byte.us.pre.i.i 
      104:  br i1 %_7.i.i.us.i.i, label %bb3.i.us.i.i, label %bb5.i.i.us.i.i 
      105:  
      106: bb5.i.i.us.i.i: ; preds = %bb3.i.i.us.i.i 
      107:  %_11.0.i.i.us.i.i = add nuw nsw i64 %i.sroa.0.05.i.i.us.i.i, 1 
      108:  %exitcond.not.i.i.us.i.i = icmp eq i64 %_11.0.i.i.us.i.i, %new_len.us.i.i 
      109:  br i1 %exitcond.not.i.i.us.i.i, label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, label %bb3.i.i.us.i.i 
      110:  
      111: bb3.i.us.i.i: ; preds = %bb3.i.i.us.i.i 
      112:  %16 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %i.sroa.0.05.i.i.us.i.i, 1 
      113:  %cond2.i.us.i.i = icmp samesign ult i64 %i.sroa.0.05.i.i.us.i.i, %new_len.us.i.i 
      114:  tail call void @llvm.assume(i1 %cond2.i.us.i.i) 
      115:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      116:  
      117: _RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i: ; preds = %bb5.i.i.us.i.i, %bb1.i.us.i.i 
      118:  %17 = insertvalue { i64, i64 } { i64 0, i64 poison }, i64 %new_len.us.i.i, 1 
      119:  br label %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      120:  
      121: _RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i, %bb3.i.us.i.i, %bb7.i.us.i.i, %bb5.i.us.i.i 
      122:  %.merged.i.us.i.i = phi { i64, i64 } [ %16, %bb3.i.us.i.i ], [ %11, %bb7.i.us.i.i ], [ %11, %bb5.i.us.i.i ], [ %17, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr12memchr_naive.exit.thread.i.us.i.i ] 
not:15                          !~~~~~~~~~~~~~~~                                                                                                                                                                error: no match expected
      123:  %18 = extractvalue { i64, i64 } %.merged.i.us.i.i, 0 
      124:  %19 = trunc nuw i64 %18 to i1 
      125:  br i1 %19, label %bb5.us.i.i, label %_RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      126:  
      127: bb5.us.i.i: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i 
      128:  %20 = extractvalue { i64, i64 } %.merged.i.us.i.i, 1 
      129:  %_19.0.us.i.i = add i64 %_20.02225.us.i.i, 1 
      130:  %_20.0.us.i.i = add i64 %_19.0.us.i.i, %20 
      131:  %_21.not.us.i.i = icmp uge i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      132:  %_60.not.us.i.i = icmp ule i64 %_20.0.us.i.i, %haystack.1 
      133:  %or.cond.i.not.i = and i1 %_21.not.us.i.i, %_60.not.us.i.i 
      134:  br i1 %or.cond.i.not.i, label %bb25.us.i.i, label %bb14.us.i.i 
      135:  
      136: bb25.us.i.i: ; preds = %bb5.us.i.i 
      137:  %_27.0.us.i.i = sub nuw i64 %_20.0.us.i.i, %len.sroa.0.04.i.i.i 
      138:  %_68.us.i.i = getelementptr inbounds nuw i8, ptr %haystack.0, i64 %_27.0.us.i.i 
      139:  %bcmp.us.i.i = call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(1) %_68.us.i.i, ptr noundef nonnull dereferenceable(1) %9, i64 %len.sroa.0.04.i.i.i), !noalias !24 
      140:  %_32.us.i.i = icmp eq i32 %bcmp.us.i.i, 0 
      141:  br i1 %_32.us.i.i, label %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i, label %bb18.us.i.i.backedge 
      142:  
      143: bb14.us.i.i: ; preds = %bb5.us.i.i 
      144:  br i1 %_60.not.us.i.i, label %bb18.us.i.i.backedge, label %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i 
      145:  
      146: bb18.us.i.i.backedge: ; preds = %bb14.us.i.i, %bb25.us.i.i 
      147:  br label %bb18.us.i.i 
      148:  
      149: _RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i: ; preds = %bb14.us.i.i, %bb25.us.i.i 
      150:  %self.sroa.4.0.ph.i = phi i64 [ undef, %bb14.us.i.i ], [ %_27.0.us.i.i, %bb25.us.i.i ] 
      151:  %21 = zext i1 %or.cond.i.not.i to i64 
      152:  br label %_RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit 
      153:  
      154: _RINvMNtCs3JUZFyWqwTf_4core3stre4findcECseGwaCIodT3Y_13memchr_result.exit: ; preds = %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i 
      155:  %self.sroa.4.0.i = phi i64 [ %self.sroa.4.0.ph.i, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i ], [ undef, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i ] 
      156:  %.sink.i.i = phi i64 [ %21, %_RNvXs_NtNtCs3JUZFyWqwTf_4core3str7patternNtB4_12CharSearcherNtB4_8Searcher10next_match.exit.loopexit.i ], [ 0, %_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr6memchr.exit.us.i.i ] 
      157:  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %_5.i), !noalias !4 
      158:  %22 = insertvalue { i64, i64 } poison, i64 %.sink.i.i, 0 
      159:  %23 = insertvalue { i64, i64 } %22, i64 %self.sroa.4.0.i, 1 
      160:  ret { i64, i64 } %23 
      161: } 
      162:  
      163: ; Function Attrs: nonlazybind uwtable 
      164: 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 { 
      165: start: 
      166: ; call core::slice::memchr::memrchr_aligned 
      167:  %2 = tail call { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr15memrchr_aligned(i8 noundef %needle, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance) %0, i64 noundef range(i64 0, -9223372036854775808) %1) 
      168:  %3 = extractvalue { i64, i64 } %2, 0 
      169:  %4 = trunc nuw i64 %3 to i1 
      170:  br i1 %4, label %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i, label %_RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      171:  
      172: _RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i: ; preds = %start 
      173:  %5 = extractvalue { i64, i64 } %2, 1 
      174:  %cond.i = icmp ult i64 %5, %1 
      175:  tail call void @llvm.assume(i1 %cond.i) 
      176:  %6 = getelementptr inbounds nuw i8, ptr %0, i64 %5 
      177:  %_0.i.i = load i8, ptr %6, align 1, !noundef !23 
      178:  br label %_RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit 
      179:  
      180: _RINvMNtCs3JUZFyWqwTf_4core6optionINtB3_6OptionjE3maphNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0EBT_.exit: ; preds = %start, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i 
      181:  %_0.sroa.3.0.i = phi i8 [ %_0.i.i, %_RNCNvCseGwaCIodT3Y_13memchr_result10rfind_byte0B3_.exit.i ], [ undef, %start ] 
      182:  %7 = insertvalue { i1, i8 } poison, i1 %4, 0 
      183:  %8 = insertvalue { i1, i8 } %7, i8 %_0.sroa.3.0.i, 1 
      184:  ret { i1, i8 } %8 
      185: } 
      186:  
      187: ; Function Attrs: nounwind nonlazybind uwtable 
      188: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 
      189:  
      190: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      191: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #2 
      192:  
      193: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) 
      194: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #2 
      195:  
      196: ; core::slice::memchr::memchr_aligned 
      197: ; Function Attrs: nonlazybind uwtable 
      198: declare { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr14memchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      199:  
      200: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      201: declare void @llvm.assume(i1 noundef) #3 
      202:  
      203: ; core::slice::memchr::memrchr_aligned 
      204: ; Function Attrs: nonlazybind uwtable 
      205: declare { i64, i64 } @_RNvNtNtCs3JUZFyWqwTf_4core5slice6memchr15memrchr_aligned(i8 noundef, ptr noalias nofree noundef nonnull readonly captures(address, read_provenance), i64 noundef range(i64 0, -9223372036854775808)) unnamed_addr #0 
      206:  
      207: ; Function Attrs: nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) 
      208: declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #4 
      209:  
      210: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) 
      211: declare void @llvm.experimental.noalias.scope.decl(metadata) #5 
      212:  
      213: attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      214: attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 
      215: attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } 
      216: attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } 
      217: attributes #4 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } 
      218: attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } 
      219:  
      220: !llvm.module.flags = !{!0, !1, !2} 
      221: !llvm.ident = !{!3} 
      222:  
        .
        .
        .
>>>>>>
------------------------------------------

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

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

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

@rust-bors

rust-bors Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

⌛ Testing commit a9d20c4 with merge 6eefd8c...

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

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

Rollup of 22 pull requests

Successful merges:

 - #158147 (std: fix stack buffer overflow in Windows junction_point)
 - #159784 (Hint that memchr returns an in-bounds index)
 - #160130 (Select cache values to verify by key fingerprint, not value fingerprint)
 - #160343 (Rename `OutlivesPredicate` to `OutlivesClause`)
 - #160360 (Remove rustc_middle dependency on rustc_hir_pretty)
 - #160387 (rustc_codegen_ssa: Correctly apply the static `--jobs-backend` limit to backend parallelism)
 - #160422 (move mir-opt miri tests to CI logic)
 - #160444 (Avoid resolving path keywords outside `TypeNS`)
 - #160510 (Resolver: (un)tracked borrows for `CmRefCell` made safe my unsafe speculative flag)
 - #155424 ([blocked] Link to proposed LLM policy in CONTRIBUTING and pull request template)
 - #158726 (std: move futex implementations into sys::sync::futex)
 - #159225 (Split IncrCompSession out of Session)
 - #159820 (Make the `rustc_unsafe_specialization_marker` attribute actually `unsafe`)
 - #160198 (Rework `smallest_range_containing` to handle duplicates)
 - #160362 (Split `SpannedTypeVisitor` into its own crate, `rustc_ty_walk`)
 - #160390 (autodiff: Handle slice-tailed DSTs in type trees)
 - #160420 (Suggest `cast_signed()` for overflowing signed integer literals)
 - #160520 (Add some tests for specialization)
 - #160522 (fix(bootstrap): Normalize the names of proc macro dependency crates)
 - #160531 (docs: fix typo in AllowExprMetavar comment)
 - #160538 (Update expect messages in tcp.rs doc examples to follow the style guide)
 - #160548 (bootstrap: Register `coverage-map` and `coverage-run` aliases via a separate step)
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors r-

@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. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 5, 2026
@rust-bors

rust-bors Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

This pull request was unapproved.

Auto build was cancelled due to unapproval. Cancelled workflows:

View changes since this unapproval

@rust-bors

rust-bors Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

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

@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 Aug 5, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors try cancel

@rust-bors

rust-bors Bot commented Aug 5, 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 (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-js Area: Rustdoc's JS front-end A-rustdoc-json Area: Rustdoc JSON backend A-rustdoc-search Area: Rustdoc's search feature A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool F-autodiff `#![feature(autodiff)]` O-hermit Operating System: Hermit O-unix Operating system: Unix-like O-wasi Operating system: Wasi, Webassembly System Interface O-wasm Target: WASM (WebAssembly), http://webassembly.org/ O-windows Operating system: Windows rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.