Skip to content

Rollup of 19 pull requests - #161337

Closed
jhpratt wants to merge 62 commits into
rust-lang:mainfrom
jhpratt:rollup-09UGBaN
Closed

Rollup of 19 pull requests#161337
jhpratt wants to merge 62 commits into
rust-lang:mainfrom
jhpratt:rollup-09UGBaN

Conversation

@jhpratt

@jhpratt jhpratt commented Aug 19, 2026

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

Embers-of-the-Fire and others added 30 commits May 21, 2026 15:14
Signed-off-by: Embers-of-the-Fire <stellarishs@163.com>
Add focused Miri coverage for the if-let closure capture change, demonstrating UB at closure construction when partial pattern capture reborrows dangling references.

Assisted-by: OpenAI:gpt-5.5
Signed-off-by: Embers-of-the-Fire <stellarishs@163.com>
… orphan check

`emit_orphan_check_error` already special-cases non-local types that
appear in a foreign trait's own parameter position (as opposed to
Self): for Slice, Array, and Tuple, the label reads "this is
not defined in the current crate because this is a foreign trait"
instead of naming the type. The Adt arm and the primitive/catch-all
arm never checked this and always named the type instead, even in the
same non-Self position.

This produced a confusing diagnostic for impls like

    impl PartialEq for u32 {}

where Rhs defaults to Self (u32), so both the Self label and
the Rhs label read `u32` is not defined in the current crate,
with the second one visually landing under PartialEq since the
defaulted Rhs has no span of its own.

Extend the existing is_foreign check to the Adt and catch-all arms
so all four cases behave consistently.

Addresses rust-lang#160648
This was already possible via `./x fix -- --allow-dirty`, but forwarding the
argument from bootstrap is more user-friendly.
This commit is an initial implementation of the `FnPtr` trait as
described in the `fn_static` tracking issue, which consists of moving
the internally unstable `core::marker::FnPtr` to `core::ops::FnPtr`, as
well as changing the API. Because `NonNull` is used in the new `as_ptr`
signature, it was also turned into a proper lang item.
Rust only supports the windowed Xtensa calling convention on all
upstream targets (esp32 family). Mark windowed and exception as
ABI-required features so a mismatched -Ctarget-cpu cannot silently
change the ABI.

Discussion: rust-lang#160530 (comment)
Rust currently supports a single Xtensa ABI, so apply the same spec
checks as wasm: unspecified llvm_abiname, no floatabi, no rustc_abi,
and unspecified or other cfg_abi.
under the next solver a closure whose signature doesnt match emitted two errors at the same span. the trait goal `C: FnMut(&i32)` failed, and the `<C as FnOnce<..>>::Output == bool` projection goal resting on it failed out of that same unification. the old solver collapses both into a single `type mismatch in closure arguments`, so the projection error was noise.

suppress a projection error when another error at the same span is a trait goal it rests on. ambiguity errors are exempt, they get merged into one diagnostic whose notes list every constraint the annotation has to satisfy, so their projections still say something the trait error doesnt.
elaborating `cond` reaches supertraits, so a projection resting on a supertrait got suppressed even when that supertrait holds and the projection had failed for its own reasons. that dropped a real error, on the old solver too.

require the trait goal the projection rests on to be unproven before treating the trait error as covering it.
…ieyouxu

[compiletest] Use the correct rustc lib directory for query_rustc_output

ui-fulldeps tests are built with the stage0 compiler, but invoke the stage1 compiler to determine target features. This caused segfaults on my machine, as the stage1 compiler (which uses LLVM 23) was run with the stage0 lib directory (which has LLVM 22):

```
Testing stage0 with compiletest suite=ui-fulldeps mode=ui (aarch64-apple-darwin)
FATAL: failed to run DYLD_LIBRARY_PATH="/Users/keljonathan/code/rust/build/aarch64-apple-darwin/stage0/lib:/Users/keljonathan/code/rust/build/aarch64-apple-darwin/bootstrap-tools/aarch64-apple-darwin/release/build/run_make_support/1bb3eeb38bc010bc/out" RUSTC_BOOTSTRAP="1" "/Users/keljonathan/code/rust/build/aarch64-apple-darwin/stage1/bin/rustc" "-Crpath" "-Cdebuginfo=0" "-Alinker_messages" "--print=all-target-specs-json" "-Zunstable-options"
--- stdout

--- stderr
error: rustc interrupted by SIGSEGV, printing backtrace
```

<details><summary>Backtrace</summary>
<p>

```
0   librustc_driver-18049a207bb38ba8.dy 0x000000010e09e9b8 _RNvNtCsfNrGi27GPxl_17rustc_driver_impl14signal_handler17print_stack_trace + 140
1   libsystem_platform.dylib            0x0000000184c7d744 _sigtramp + 56
2   libLLVM.dylib                       0x000000011a9e22e0 _ZNK4llvm15MCSubtargetInfo13checkFeaturesENS_9StringRefE + 40
3   librustc_driver-18049a207bb38ba8.dy 0x000000010e44c798 LLVMRustHasFeature + 104
4   librustc_driver-18049a207bb38ba8.dy 0x000000010e3c4e34 _RINvXs0_NtNtNtCsk8HLZXaYIk4_4core4iter8adapters3mapINtB6_3MapINtNtB8_7flatten7FlatMapINtNtB8_6filter6FilterINtNtNtBc_5slice4iter4IterTReNtNtCs79s86CIooN0_12rustc_target15target_features9StabilityRSB28_EENCINvNtCses5MBT5CPFU_17rustc_codegen_ssa15target_features24internal_target_featuresKj2_NCNvNtCsgXm2bqwPj4W_18rustc_codegen_llvm9llvm_util13target_config0NCB4G_s_0E0EIBO_INtNtNtNtCs99cPMl0y5Ob_3std11collections4hash3set8IntoIterB28_ENCNCB3h_s_00ENCB3h_s_0ENCINvXs8_NtCsdLs5ZkLaCXa_9hashbrown3setINtB7v_7HashSetNtNtCsSGoTcZpb2F_10rustc_span6symbol6SymbolNtCs5ZGGmiYplBm_10rustc_hash13FxBuildHasherEINtNtNtBa_6traits7collect6ExtendB8e_E6extendBX_E0ENtNtB9I_8iterator8Iterator4folduNCINvNvBar_8for_each4callTB8e_uENCINvXs1i_NtB7x_3mapINtBbD_7HashMapB8e_uB8V_EIB9E_Bbm_E6extendBN_E0E0EB4K_ + 880
5   librustc_driver-18049a207bb38ba8.dy 0x000000010e2ad884 _RINvXs1i_NtCsdLs5ZkLaCXa_9hashbrown3mapINtB7_7HashMapNtNtCsSGoTcZpb2F_10rustc_span6symbol6SymboluNtCs5ZGGmiYplBm_10rustc_hash13FxBuildHasherEINtNtNtNtCsk8HLZXaYIk4_4core4iter6traits7collect6ExtendTBP_uEE6extendINtNtNtB2m_8adapters3map3MapINtNtB3r_7flatten7FlatMapINtNtB3r_6filter6FilterINtNtNtB2o_5slice4iter4IterTReNtNtCs79s86CIooN0_12rustc_target15target_features9StabilityRSB52_EENCINvNtCses5MBT5CPFU_17rustc_codegen_ssa15target_features24internal_target_featuresKj2_NCNvNtCsgXm2bqwPj4W_18rustc_codegen_llvm9llvm_util13target_config0NCB7A_s_0E0EIB3n_INtNtNtNtCs99cPMl0y5Ob_3std11collections4hash3set8IntoIterB52_ENCNCB6b_s_00ENCB6b_s_0ENCINvXs8_NtB9_3setINtBaq_7HashSetBP_B1x_EIB2g_BP_E6extendB3O_E0EEB7E_ + 344
6   librustc_driver-18049a207bb38ba8.dy 0x000000010e2b1ec4 _RINvXs8_NtCsdLs5ZkLaCXa_9hashbrown3setINtB6_7HashSetNtNtCsSGoTcZpb2F_10rustc_span6symbol6SymbolNtCs5ZGGmiYplBm_10rustc_hash13FxBuildHasherEINtNtNtNtCsk8HLZXaYIk4_4core4iter6traits7collect6ExtendBO_E6extendINtNtNtB2k_8adapters7flatten7FlatMapINtNtB3m_6filter6FilterINtNtNtB2m_5slice4iter4IterTReNtNtCs79s86CIooN0_12rustc_target15target_features9StabilityRSB4G_EENCINvNtCses5MBT5CPFU_17rustc_codegen_ssa15target_features24internal_target_featuresKj2_NCNvNtCsgXm2bqwPj4W_18rustc_codegen_llvm9llvm_util13target_config0NCB7e_s_0E0EINtNtB3m_3map3MapINtNtNtNtCs99cPMl0y5Ob_3std11collections4hash3set8IntoIterB4G_ENCNCB5P_s_00ENCB5P_s_0EEB7i_ + 68
7   librustc_driver-18049a207bb38ba8.dy 0x000000010e2bfa90 _RINvNtCses5MBT5CPFU_17rustc_codegen_ssa15target_features24internal_target_featuresKj2_NCNvNtCsgXm2bqwPj4W_18rustc_codegen_llvm9llvm_util13target_config0NCB1o_s_0EB1s_ + 148
8   librustc_driver-18049a207bb38ba8.dy 0x000000010e2fb918 _RNvNtCsgXm2bqwPj4W_18rustc_codegen_llvm9llvm_util13target_config + 68
9   librustc_driver-18049a207bb38ba8.dy 0x000000010e292fb0 _RNvNtCs6x0lOIkloew_15rustc_interface4util17add_configuration + 48
10  librustc_driver-18049a207bb38ba8.dy 0x000000010e06b204 _RINvMs_Csfkr8sXZt4uY_10scoped_tlsINtB5_9ScopedKeyNtCsSGoTcZpb2F_10rustc_span14SessionGlobalsE3setNCNCNCINvNtCs6x0lOIkloew_15rustc_interface4util26run_in_thread_with_globalsNCINvB1G_31run_in_thread_pool_with_globalsNCINvNtB1I_9interface12run_compileruNCNvCsfNrGi27GPxl_17rustc_driver_impl12run_compiler0Es0_0uE0uE000uEB44_ + 1112
11  librustc_driver-18049a207bb38ba8.dy 0x000000010e090914 _RINvCsSGoTcZpb2F_10rustc_span27create_session_globals_thenuNCNCNCINvNtCs6x0lOIkloew_15rustc_interface4util26run_in_thread_with_globalsNCINvB14_31run_in_thread_pool_with_globalsNCINvNtB16_9interface12run_compileruNCNvCsfNrGi27GPxl_17rustc_driver_impl12run_compiler0Es0_0uE0uE000EB3s_ + 168
12  librustc_driver-18049a207bb38ba8.dy 0x000000010e07823c _RINvNtNtCs99cPMl0y5Ob_3std3sys9backtrace28___rust_begin_short_backtraceNCNCINvNtCs6x0lOIkloew_15rustc_interface4util26run_in_thread_with_globalsNCINvB1e_31run_in_thread_pool_with_globalsNCINvNtB1g_9interface12run_compileruNCNvCsfNrGi27GPxl_17rustc_driver_impl12run_compiler0Es0_0uE0uE00uEB3C_ + 112
13  librustc_driver-18049a207bb38ba8.dy 0x000000010e04efa4 _RNSNvYNCINvNtNtCs99cPMl0y5Ob_3std6thread9lifecycle15spawn_uncheckedNCNCINvNtCs6x0lOIkloew_15rustc_interface4util26run_in_thread_with_globalsNCINvB1a_31run_in_thread_pool_with_globalsNCINvNtB1c_9interface12run_compileruNCNvCsfNrGi27GPxl_17rustc_driver_impl12run_compiler0Es0_0uE0uE00uEs_0INtNtNtCsk8HLZXaYIk4_4core3ops8function6FnOnceuE9call_once6vtableB3y_ + 208
14  librustc_driver-18049a207bb38ba8.dy 0x0000000111697118 _RNvNvMs0_NtNtNtCs99cPMl0y5Ob_3std3sys6thread4unixNtB7_6Thread3new12thread_start + 392
15  libsystem_pthread.dylib             0x0000000184c73c58 _pthread_start + 136
16  libsystem_pthread.dylib             0x0000000184c6ec1c thread_start + 8

note: we would appreciate a report at https://github.com/rust-lang/rust
help: you can increase rustc's stack size by setting RUST_MIN_STACK=33554432

thread 'main' (3571716) panicked at src/tools/compiletest/src/common.rs:1209:9:
fatal error
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/panicking.rs:679:5
   1: core::panicking::panic_fmt
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/core/src/panicking.rs:80:14
   2: query_rustc_output
             at ./src/tools/compiletest/src/diagnostics.rs:14:9
   3: new
             at ./src/tools/compiletest/src/common.rs:925:77
   4: {closure#0}
             at ./src/tools/compiletest/src/common.rs:792:41
   5: {closure#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once_lock.rs:321:50
   6: {closure#0}<compiletest::common::TargetCfgs, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>, !>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once_lock.rs:543:19
   7: {closure#0}<std::sync::once_lock::{impl#0}::initialize::{closure_env#0}<compiletest::common::TargetCfgs, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>, !>>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once.rs:226:40
   8: <std::sys::sync::once::queue::Once>::call
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sys/sync/once/queue.rs:225:21
   9: call_once_force<std::sync::once_lock::{impl#0}::initialize::{closure_env#0}<compiletest::common::TargetCfgs, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>, !>>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once.rs:226:20
  10: initialize<compiletest::common::TargetCfgs, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>, !>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once_lock.rs:542:19
  11: get_or_try_init<compiletest::common::TargetCfgs, std::sync::once_lock::{impl#0}::get_or_init::{closure_env#0}<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>, !>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once_lock.rs:410:14
  12: get_or_init<compiletest::common::TargetCfgs, compiletest::common::{impl#5}::target_cfgs::{closure_env#0}>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/std/src/sync/once_lock.rs:321:20
  13: target_cfgs
             at ./src/tools/compiletest/src/common.rs:792:26
  14: prepare_conditions
             at ./src/tools/compiletest/src/directives/cfg.rs:121:23
  15: load
             at ./src/tools/compiletest/src/directives.rs:50:29
  16: collect_and_make_tests
             at ./src/tools/compiletest/src/lib.rs:186:17
  17: run_tests
             at ./src/tools/compiletest/src/lib.rs:103:22
  18: main
             at ./src/tools/compiletest/src/cli.rs:30:5
  19: call_once<fn(), ()>
             at /rustc/08d5b675a9b2abdca5e2fe4eabe0e07bbda15d49/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
```

</p>
</details>

Note that `DYLD_LIBRARY_PATH` contains `rust/build/aarch64-apple-darwin/stage0/lib`, while the compiler we're executing is `rust/build/aarch64-apple-darwin/stage1/bin/rustc`.

This PR fixes the issue by providing compiletest with the correct lib directory to use when querying the stage1 compiler.

I expect the problem will go away again once rust-lang#161325 is merged and stage0 and stage1 use the same LLVM version, but this PR ensures it won't be a problem for the next LLVM bump.

I encountered a similar issue building the unstable book, which I am planning to submit a followup PR for.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Aug 19, 2026
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-core-stubs` A-testsuite Area: The testsuite used to check the correctness of rustc 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 PG-exploit-mitigations Project group: Exploit mitigations 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-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Aug 19, 2026
@jhpratt

jhpratt commented Aug 19, 2026

Copy link
Copy Markdown
Member Author

@bors r+ p=5

@rust-bors

rust-bors Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 41025d7 has been approved by jhpratt

It is now in the queue for this repository.

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

Copy link
Copy Markdown
Collaborator

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

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

@jhpratt jhpratt closed this Aug 19, 2026
@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 Aug 19, 2026
@rust-bors

rust-bors Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

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

This rollup was thus unapproved.

@jhpratt
jhpratt deleted the rollup-09UGBaN branch August 19, 2026 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-core-stubs` A-testsuite Area: The testsuite used to check the correctness of rustc 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 PG-exploit-mitigations Project group: Exploit mitigations rollup A PR which is a rollup S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. 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-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer 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. 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.