Skip to content

Rollup of 6 pull requests - #163763

Closed
JonathanBrouwer wants to merge 17 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-i65nyeL
Closed

JonathanBrouwer wants to merge 17 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-i65nyeL

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

malezjaa and others added 17 commits September 23, 2026 18:20
Previously, the calling convention code would not register align 16-byte
scalars to even/odd register pairs.

It seems like GCC does not differentiate between integer and floating
point scalars when calculating whether a scalar is aligned. To our
understanding, the MIPS n64 ABI [1] would require doing so for integer and
floating point parameters respectively [2], but GCC violates the
specification here and will happily pass an f128 in an odd-even floating
point register pair and therefore sometimes shift following integer
arguments due to unnecessary (if the spec is to be believed) inserted integer
padding.

[1]: https://web.archive.org/web/20160121005457/http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf#page=20
[2]: "This requires that they be passed in even-odd floating point
register pairs, even if doing so requires skipping a register parameter"
`MOVDIR64B` and `MOVDIRI` (direct stores of 64 bytes and of a 32/64-bit
integer) are standalone x86 CPUID features, on Intel Tiger Lake and
Sapphire Rapids onwards and AMD Zen 5, that are not part of any psABI
microarchitecture level. They need their own unstable target features,
gated behind `movdir64b_target_feature` and `movdiri_target_feature`.

This is the compiler half of exposing the `_movdir64b`,
`_directstoreu_u32` and `_directstoreu_u64` intrinsics; the stdarch half
is blocked on this landing.

Also update the check-cfg/target_feature UI test reference, which
enumerates the full set of valid target features.
Wire up runtime detection for both features: add them to the
`is_x86_feature_detected!` feature list (gated on
`movdir64b_target_feature` and `movdiri_target_feature`), enable them from
CPUID leaf 7 ECX bits 28 and 27, and add them to the std_detect
x86-specific dump test.
…[T; N], &[T; N] and &mut [T; N]"

Revert "fix stability attributes for VecDeque PartialEq impls"

This reverts commit 9942d36.

Revert "update VecDeque PartialEq stability metadata"

This reverts commit 3d3f2f8.

Revert "update assert-ne-no-invalid-help-issue-146204.stderr for VecDeque PartialEq output"

This reverts commit 8cdd010.

Revert "resolve too_generic_eval_ice stderr conflict"

This reverts commit b50d79a.

Revert "alloc: make VecDeque partial equality symmetric with vec/slice/array"

This reverts commit 835975a.
Rip out old solver coherence

cc [#t-types/call-for-participation > rip out old solver coherence support](https://rust-lang.zulipchat.com/#narrow/channel/618216-t-types.2Fcall-for-participation/topic/rip.20out.20old.20solver.20coherence.20support/with/613938355)

Probably best reviewed commit-by-commit with ignore-whitespace.

rust-lang#160668 replaced the last remaining place where old solver was still used by default in coherence with new solver. This PR removes code that was only used during coherence by the old solver, so now new-solver coherence is the *only* way to do coherence. So we don't confuse users, passing `-Znext-solver=coherence` and `=no` now do the exact same thing.

We also remove tracking intercrate ambiguity causes, since afaict the new solver uses a completely different path.

Everything else is either removing code that is now unreachable, or removing a condition that is now always true.

r? lcnr
…ouxu

regression test for async handler normalization ICE

Closes rust-lang#141850
…ignment, r=folkertdev

callconv: mips64: Match GCC for alignment of 16-byte scalars

Previously, the calling convention code would not register align 16-byte scalars to even/odd register pairs.

It seems like GCC does not differentiate between integer and floating point scalars when calculating whether a scalar is aligned. To our understanding, the MIPS n64 ABI [^1] would require doing so for integer and floating point parameters respectively [^2], but GCC violates the specification here and will happily pass an f128 in an odd-even floating point register pair and therefore sometimes shift following integer arguments due to unnecessary (if the spec is to be believed) inserted integer padding.

[^1]: https://web.archive.org/web/20160121005457/http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf#page=20
[^2]: "This requires that they be passed in even-odd floating point register pairs, even if doing so requires skipping a register parameter"

Fixes rust-lang#161679

r? folkertdev
cc @beetrees
…=folkertdev

Add the `movdir64b` and `movdiri` x86 target features

Adds the unstable `movdir64b` and `movdiri` x86 target features, gated behind `#![feature(movdir64b_target_feature)]` and `#![feature(movdiri_target_feature)]`, and runtime detection with `is_x86_feature_detected!("movdir64b")` / `is_x86_feature_detected!("movdiri")` (CPUID.(EAX=7,ECX=0):ECX[28] and ECX[27]).

`MOVDIR64B` moves 64 bytes from memory to a 64-byte aligned destination as a single direct store; `MOVDIRI` stores a 32- or 64-bit integer as a direct store. Both are on Intel Tiger Lake / Alder Lake and later, Sapphire Rapids and later Xeons, and AMD Zen 5. They're standalone CPUID features that aren't part of any psABI microarchitecture level, so they need their own feature flags.

**This is the compiler half of a two-PR feature, like `clflushopt` in rust-lang#157098.** The `_movdir64b`, `_directstoreu_u32` and `_directstoreu_u64` intrinsics (rust-lang/stdarch#2239) can't compile until these target features exist, so the stdarch PR is blocked on this one merging and syncing into stdarch's pinned toolchain.

- Tracking issue: rust-lang#163741
- Unblocks intrinsics: rust-lang/stdarch#2239

Today the only way to emit these instructions from Rust is `asm!`, which also hides them from LLVM: a copy loop through `llvm.x86.movdir64b` gets unrolled and the source address becomes a displacement, while the `asm!` version stays one instruction per iteration with both addresses in registers.

`movdir64b` and `movdiri` are LLVM's feature names, so they map 1:1 through `to_llvm_features` with no remap entry. I ran the two new feature-gate tests, `check-cfg/target_feature` and `target-feature/invalid-attribute`, the std_detect tests (which report both features as `true` on a Xeon 6975P-C), and tidy locally on x86_64-pc-windows-msvc.

r? @folkertdev
…leq, r=clarfonthey

Revert "implement PartialEq<VecDeque<U>> for Vec<T>, &[T], &mut [T], [T; N], &[T; N] and &mut [T; N]"

This should go through FCP. This is a revert so we can do FCP on the actual PR.

r? joboet
…cs, r=jonathanbrouwer

fix -Z track-diagnostics for errors and lints emitted from rustc_attr_parsing

r? @GuillaumeGomez or perhaps @JonathanBrouwer
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Oct 4, 2026
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Oct 4, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@bors r+ p=5 force

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,test-x86_64-gnu-aux,test-x86_64-msvc-1,test-aarch64-apple-1,test-aarch64-apple-2,test-x86_64-mingw-1,test-i686-msvc,test-armhf-gnu

@rust-bors

rust-bors Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

📌 Commit ea98840 has been approved by JonathanBrouwer

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 Oct 4, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 4, 2026
Rollup of 6 pull requests


try-job: dist-various-1
try-job: test-various
try-job: test-x86_64-gnu-aux
try-job: test-x86_64-msvc-1
try-job: test-aarch64-apple-1
try-job: test-aarch64-apple-2
try-job: test-x86_64-mingw-1
try-job: test-i686-msvc
try-job: test-armhf-gnu
@rust-bors

This comment has been minimized.

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

Rollup of 6 pull requests

Successful merges:

 - #161491 (Rip out old solver coherence)
 - #163223 (regression test for async handler normalization ICE)
 - #163653 (callconv: mips64: Match GCC for alignment of 16-byte scalars)
 - #163742 (Add the `movdir64b` and `movdiri` x86 target features)
 - #163752 (Revert "implement PartialEq<VecDeque<U>> for Vec<T>, &[T], &mut [T], [T; N], &[T; N] and &mut [T; N]")
 - #163755 (fix -Z track-diagnostics for errors and lints emitted from rustc_attr_parsing)
@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job dist-aarch64-linux failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
10 note: the lint level is defined here
11   --> $DIR/track8.rs:4:9
12    |

19 LL |     #[doc(ferris)]
20    |           ^^^^^^
21    |
-    = note: -Ztrack-diagnostics: created at compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20
+    = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20
23    = note: `#[warn(invalid_doc_attributes)]` on by default
24 
25 error[E0539]: malformed `repr` attribute input

30    |        |
31    |        valid arguments are `align`, `packed`, `Rust`, `C`, `simd`, `transparent`, `i8`, `u8`, `i16`, `u16`, `i32`, `u32`, `i64`, `u64`, `i128`, `u128`, `isize` or `usize`
32    |
-    = note: -Ztrack-diagnostics: created at compiler/rustc_attr_parsing/src/attributes/repr.rs:186:23
+    = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/repr.rs:186:23
34    = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>
35 
---
43    = note: `#[warn(unknown_diagnostic_attributes)]` (part of `#[warn(unknown_or_malformed_diagnostic_attributes)]`) on by default
44 
45 warning: unknown `doc` attribute `ferris`

48 LL | #[doc(ferris)]
49    |       ^^^^^^
50    |
-    = note: -Ztrack-diagnostics: created at compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20
+    = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20
52 
---
To only update this specific test, also pass `--test-args track-diagnostics/track8.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/unpacked-dist/rustc-nightly-aarch64-unknown-linux-gnu/rustc/bin/rustc" "/checkout/tests/ui/track-diagnostics/track8.rs" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/unpacked-dist/rustc-nightly-aarch64-unknown-linux-gnu/rustc" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/track-diagnostics/track8" "-Znext-solver=coherence" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "--edition=2015" "-Z" "track-diagnostics"
stdout: none
--- stderr -------------------------------
warning: unreachable configuration predicate
##[warning]  --> /checkout/tests/ui/track-diagnostics/track8.rs:8:5
   |
LL |     _ => {},
   |     - always matches
LL |     _ => {}, //~ WARN unreachable configuration predicate
   |     ^ this configuration predicate is never reached
   |
   = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/cfg_select.rs:178:26
note: the lint level is defined here
  --> /checkout/tests/ui/track-diagnostics/track8.rs:4:9
   |
LL | #![warn(unreachable_cfg_select_predicates)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unknown `doc` attribute `ferris`
##[warning]  --> /checkout/tests/ui/track-diagnostics/track8.rs:16:11
   |
LL |     #[doc(ferris)] //~ WARN unknown `doc` attribute `ferris`
   |           ^^^^^^
   |
   = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20
   = note: `#[warn(invalid_doc_attributes)]` on by default

error[E0539]: malformed `repr` attribute input
##[error]  --> /checkout/tests/ui/track-diagnostics/track8.rs:11:3
   |
LL | #[repr(ferris)] //~ ERROR: malformed `repr` attribute input
   |   ^^^^^------^
   |        |
   |        valid arguments are `align`, `packed`, `Rust`, `C`, `simd`, `transparent`, `i8`, `u8`, `i16`, `u16`, `i32`, `u32`, `i64`, `u64`, `i128`, `u128`, `isize` or `usize`
   |
   = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/repr.rs:186:23
   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html#representations>

warning: unknown diagnostic attribute
##[warning]  --> /checkout/tests/ui/track-diagnostics/track8.rs:12:15
   |
LL | #[diagnostic::ferris] //~ WARN unknown diagnostic attribute
   |               ^^^^^^
   |
   = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/diagnostic/mod.rs:73:66
   = note: `#[warn(unknown_diagnostic_attributes)]` (part of `#[warn(unknown_or_malformed_diagnostic_attributes)]`) on by default

warning: unknown `doc` attribute `ferris`
##[warning]  --> /checkout/tests/ui/track-diagnostics/track8.rs:13:7
   |
LL | #[doc(ferris)] //~ WARN unknown `doc` attribute `ferris`
   |       ^^^^^^
   |
   = note: -Ztrack-diagnostics: created at /rustc-dev/33563d29067267990bfee0f85a4f5afe0e175dc3/compiler/rustc_attr_parsing/src/attributes/doc.rs:695:20

error: aborting due to 1 previous error; 4 warnings emitted
---
    0: Cannot execute tests
    1: Command COMPILETEST_ENABLE_DIST_TESTS=1 python3 /checkout/x.py test --build aarch64-unknown-linux-gnu --stage 0 tests/assembly-llvm tests/codegen-llvm tests/codegen-units tests/incremental tests/mir-opt tests/pretty tests/run-make/glibc-symbols-x86_64-unknown-linux-gnu tests/run-make/rust-lld-x86_64-unknown-linux-gnu-dist tests/ui tests/crashes tests/rustdoc-html [at /checkout/obj] has failed with exit code Some(1)

Stack backtrace:
   0: <anyhow::Error>::msg::<alloc::string::String>
             at /cargo/registry/25cdd57fae9f0462/anyhow-1.0.102/src/backtrace.rs:10:14
   1: <opt_dist::exec::CmdBuilder>::run
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/exec.rs:84:17
   2: opt_dist::tests::run_tests::{closure#1}
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/tests.rs:134:14
   3: opt_dist::tests::with_backed_up_file::<opt_dist::tests::run_tests::{closure#1}>
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/tests.rs:151:15
   4: opt_dist::tests::run_tests
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/tests.rs:104:5
   5: opt_dist::execute_pipeline::{closure#5}
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/main.rs:482:40
   6: <opt_dist::timer::TimerSection>::section::<opt_dist::execute_pipeline::{closure#5}, ()>
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/timer.rs:111:22
   7: opt_dist::execute_pipeline
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/main.rs:482:15
   8: opt_dist::main
             at /rustc/33563d29067267990bfee0f85a4f5afe0e175dc3/src/tools/opt-dist/src/main.rs:552:18
   9: <fn() -> core::result::Result<(), anyhow::Error> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
  10: std::sys::backtrace::__rust_begin_short_backtrace::<fn() -> core::result::Result<(), anyhow::Error>, core::result::Result<(), anyhow::Error>>
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:166:18
  11: std::rt::lang_start::<core::result::Result<(), anyhow::Error>>::{closure#0}
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/rt.rs:206:18
  12: <&dyn core::ops::function::Fn<(), Output = i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe as core::ops::function::FnOnce<()>>::call_once
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:287:21
  13: std::panicking::catch_unwind::do_call::<&dyn core::ops::function::Fn<(), Output = i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe, i32>
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
  14: std::panicking::catch_unwind::<i32, &dyn core::ops::function::Fn<(), Output = i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe>
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
  15: std::panic::catch_unwind::<&dyn core::ops::function::Fn<(), Output = i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe, i32>
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
  16: std::rt::lang_start_internal::{closure#0}
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/rt.rs:175:24
  17: std::panicking::catch_unwind::do_call::<std::rt::lang_start_internal::{closure#0}, isize>
             at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43

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

rust-bors Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 33563d2 failed: CI. Failed job:

@rust-bors rust-bors Bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Oct 4, 2026
@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 4, 2026
@rust-bors

rust-bors Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

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

@rust-bors

rust-bors Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 1d81599 (1d8159954948fd872bcbe0e6678f081e6d1a6585)
Base parent: a639ea0 (a639ea0890c0977b1c45596fd6b5f9a70a1d67da)

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 S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. 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. 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.

9 participants