Skip to content

Prepare to make rustc_trivial_field_reads usable in user code - #164217

Merged
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
tehforsch:fix-160621
Nov 10, 2026
Merged

rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
tehforsch:fix-160621

Conversation

@tehforsch

@tehforsch tehforsch commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

View all comments

Zulip discussion:
#t-lang > diagnostics attribute to ignore code for unused_code lints
#t-compiler/help > #160621 (Allow ignoring fns for dead code analysis)

Open questions I have:

  1. Some of the Debug impls are not pointed out as usage sites. For example this test:
#[derive(Debug)]
enum TupleVariant {
    Variant1(i32), //~ ERROR: variant `Variant1` is never constructed
    Variant2,
}

fn main() {
	let _ = TupleVariant::Variant2;
}

now loses its the note in the error message:

note: `TupleVariant` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

but in my mind this also makes sense - the Debug impl never constructs that Variant1 and even if rustc_trivial_field_reads is removed from the debug impl, the "variant never constructed" warning would still occur. Note that this doesn't apply to Clone impls, which do technically construct that variant although that brings me to point 2

  1. If I am reading the code right, the whole point of the ignored_variant_stack is to make sure we don't mark a variant of an enum live from within a match arm that matches on that exact enum variant. But isn't that exactly what the Clone impl does? The inner match arm of it would look like Variant1(x) => Variant1(x). I looked into necessary_variants and found that it directly ignores the kind of variant we encounter, namely PatKind::TupleStruct(hir::QPath::TypeRelative(...)) but I don't really understand why and whether that's a bug or whether I am missing something

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. 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. labels Oct 12, 2026
@panstromek

Copy link
Copy Markdown
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 12, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 12, 2026
Prepare to make `rustc_trivial_field_reads` usable in user code
@rust-log-analyzer

This comment has been minimized.

@rust-bors

rust-bors Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: e790d10 (e790d107e7868a817cc9ec9592a9b2d5fc634365)
Base parent: 0093837 (0093837afdf14ec7069c81da19cd51ed7d3476d9)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (e790d10): comparison URL.

Overall result: ❌ regressions - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never rustc-perf
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.3% [0.1%, 0.7%] 47
Regressions ❌
(secondary)
0.4% [0.2%, 0.8%] 19
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.3% [0.1%, 0.7%] 47

Max RSS (memory usage)

Results (primary 5.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
5.1% [5.1%, 5.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 5.1% [5.1%, 5.1%] 1

Cycles

Results (primary 2.6%, secondary 2.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.6% [2.2%, 3.0%] 3
Regressions ❌
(secondary)
2.1% [2.1%, 2.1%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.6% [2.2%, 3.0%] 3

Binary size

Results (secondary 0.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Bootstrap: 488.816s -> 489.518s (0.14%)
Artifact size: 406.86 MiB -> 406.85 MiB (-0.00%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Oct 12, 2026
Comment thread compiler/rustc_passes/src/dead.rs Resolved
@mejrs

mejrs commented Oct 12, 2026

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 12, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 12, 2026
Prepare to make `rustc_trivial_field_reads` usable in user code
@rust-bors

rust-bors Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: a64a0d1 (a64a0d13d3c0d5e6be02384b77719f7a3d8a651f)
Base parent: d64de46 (d64de46d0aab619b69efe68a99d43d11434b6924)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (a64a0d1): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never rustc-perf
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.3% [0.1%, 0.6%] 48
Regressions ❌
(secondary)
0.4% [0.2%, 0.9%] 16
Improvements ✅
(primary)
-0.4% [-0.6%, -0.2%] 3
Improvements ✅
(secondary)
-0.5% [-0.7%, -0.2%] 35
All ❌✅ (primary) 0.2% [-0.6%, 0.6%] 51

Max RSS (memory usage)

Results (secondary 2.8%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.8% [2.8%, 2.8%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Cycles

Results (secondary -1.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.3% [-1.3%, -1.3%] 1
All ❌✅ (primary) - - 0

Binary size

Results (primary 0.1%, secondary 0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.1% [0.0%, 0.2%] 74
Regressions ❌
(secondary)
0.1% [0.0%, 0.2%] 53
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.1% [0.0%, 0.2%] 74

Bootstrap: 490.869s -> 490.424s (-0.09%)
Artifact size: 406.63 MiB -> 406.91 MiB (0.07%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 13, 2026
@mejrs

mejrs commented Oct 13, 2026

Copy link
Copy Markdown
Member

Let's run it again, i think the improvements are spurious.

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 13, 2026
Allow `rustc_trivial_field_reads` on inherent methods

Add test for multiple usage sites
@tehforsch

Copy link
Copy Markdown
Contributor Author

Thanks for the reviews :) Squashed into two commits
r? @mu001999

@rustbot

rustbot commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator

Requested reviewer is already assigned to this pull request.

Please choose another assignee.

@mu001999

This comment was marked as outdated.

1 similar comment
@mu001999

This comment was marked as outdated.

@mu001999

mu001999 commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Thanks! @bors r=mejrs,mu001999 rollup=never

@rust-bors

rust-bors Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 70426a6 has been tentatively approved by mejrs,mu001999

It will be put into the queue for this repository once PR CI succeeds.

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Nov 10, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors rollup=iffy
Perf effect is reasonable enough this can enter a rollup

@rust-bors

rust-bors Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

⌛ Testing commit 70426a6 with merge 2e70d67...

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

rust-bors Bot pushed a commit that referenced this pull request Nov 10, 2026
Prepare to make `rustc_trivial_field_reads` usable in user code



Zulip discussion: 
[#t-lang > diagnostics attribute to ignore code for unused_code lints](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/diagnostics.20attribute.20to.20ignore.20code.20for.20unused_code.20lints/with/614949580)
[#t-compiler/help > #160621 (Allow ignoring fns for dead code analysis)](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.23160621.20.28Allow.20ignoring.20fns.20for.20dead.20code.20analysis.29/with/629007836)

Open questions I have:
1. Some of the `Debug` impls are not pointed out as usage sites. For example this test:
```rust
#[derive(Debug)]
enum TupleVariant {
    Variant1(i32), //~ ERROR: variant `Variant1` is never constructed
    Variant2,
}

fn main() {
	let _ = TupleVariant::Variant2;
}
```
now loses its the note in the error message:
```
note: `TupleVariant` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
```
but in my mind this also makes sense - the `Debug` impl never constructs that `Variant1` and even if `rustc_trivial_field_reads` is removed from the debug impl, the "variant never constructed" warning would still occur. Note that this doesn't apply to `Clone` impls, which do technically construct that variant although that brings me to point 2

2. If I am reading the code right, the whole point of the `ignored_variant_stack` is to make sure we don't mark a variant of an enum live from within a match arm that matches on that exact enum variant. But isn't that exactly what the `Clone` impl does? The inner match arm of it would look like `Variant1(x) => Variant1(x)`. I looked into `necessary_variants` and found that it directly ignores the kind of variant we encounter, namely `PatKind::TupleStruct(hir::QPath::TypeRelative(...))` but I don't really understand why and whether that's a bug or whether I am missing something
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors yield
Yielding to rollup

@rust-bors

rust-bors Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Auto build was cancelled. Cancelled workflows:

The next pull request likely to be tested is #165752.

JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Nov 10, 2026
…1999

Prepare to make `rustc_trivial_field_reads` usable in user code

Zulip discussion:
[#t-lang > diagnostics attribute to ignore code for unused_code lints](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/diagnostics.20attribute.20to.20ignore.20code.20for.20unused_code.20lints/with/614949580)
[#t-compiler/help > rust-lang#160621 (Allow ignoring fns for dead code analysis)](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.23160621.20.28Allow.20ignoring.20fns.20for.20dead.20code.20analysis.29/with/629007836)

Open questions I have:
1. Some of the `Debug` impls are not pointed out as usage sites. For example this test:
```rust
#[derive(Debug)]
enum TupleVariant {
    Variant1(i32), //~ ERROR: variant `Variant1` is never constructed
    Variant2,
}

fn main() {
	let _ = TupleVariant::Variant2;
}
```
now loses its the note in the error message:
```
note: `TupleVariant` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
```
but in my mind this also makes sense - the `Debug` impl never constructs that `Variant1` and even if `rustc_trivial_field_reads` is removed from the debug impl, the "variant never constructed" warning would still occur. Note that this doesn't apply to `Clone` impls, which do technically construct that variant although that brings me to point 2

2. If I am reading the code right, the whole point of the `ignored_variant_stack` is to make sure we don't mark a variant of an enum live from within a match arm that matches on that exact enum variant. But isn't that exactly what the `Clone` impl does? The inner match arm of it would look like `Variant1(x) => Variant1(x)`. I looked into `necessary_variants` and found that it directly ignores the kind of variant we encounter, namely `PatKind::TupleStruct(hir::QPath::TypeRelative(...))` but I don't really understand why and whether that's a bug or whether I am missing something
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Nov 10, 2026
…1999

Prepare to make `rustc_trivial_field_reads` usable in user code

Zulip discussion:
[#t-lang > diagnostics attribute to ignore code for unused_code lints](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/diagnostics.20attribute.20to.20ignore.20code.20for.20unused_code.20lints/with/614949580)
[#t-compiler/help > rust-lang#160621 (Allow ignoring fns for dead code analysis)](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.23160621.20.28Allow.20ignoring.20fns.20for.20dead.20code.20analysis.29/with/629007836)

Open questions I have:
1. Some of the `Debug` impls are not pointed out as usage sites. For example this test:
```rust
#[derive(Debug)]
enum TupleVariant {
    Variant1(i32), //~ ERROR: variant `Variant1` is never constructed
    Variant2,
}

fn main() {
	let _ = TupleVariant::Variant2;
}
```
now loses its the note in the error message:
```
note: `TupleVariant` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
```
but in my mind this also makes sense - the `Debug` impl never constructs that `Variant1` and even if `rustc_trivial_field_reads` is removed from the debug impl, the "variant never constructed" warning would still occur. Note that this doesn't apply to `Clone` impls, which do technically construct that variant although that brings me to point 2

2. If I am reading the code right, the whole point of the `ignored_variant_stack` is to make sure we don't mark a variant of an enum live from within a match arm that matches on that exact enum variant. But isn't that exactly what the `Clone` impl does? The inner match arm of it would look like `Variant1(x) => Variant1(x)`. I looked into `necessary_variants` and found that it directly ignores the kind of variant we encounter, namely `PatKind::TupleStruct(hir::QPath::TypeRelative(...))` but I don't really understand why and whether that's a bug or whether I am missing something
rust-bors Bot pushed a commit that referenced this pull request Nov 10, 2026
…uwer

Rollup of 24 pull requests

Successful merges:

 - #165709 (remove 'x miri' smoke test from PR CI)
 - #164217 (Prepare to make `rustc_trivial_field_reads` usable in user code)
 - #165569 (`Move` trait feature gate)
 - #165575 (Upgrade bundled musl to 1.2.6)
 - #163241 (Add enclosing item context when pointing at `FnMut` bound)
 - #163992 (add `core::arch::{x86, x86_64}::x87_f80`)
 - #165047 (Change the span building of paths from first-to-last to chained)
 - #165458 (fix incorrect byte count suffix on MSVC)
 - #165490 (Mark the compile unit for `-Zdebuginfo-for-profiling`)
 - #165586 (Remove `backend_optimization_level`.)
 - #165646 (fix NumScalableVectors::from_field_count)
 - #165655 (Unignore passing GCC backend tests)
 - #165740 (miri subtree update)
 - #165753 (avoid Terminator:None in MIR inliner)
 - #153261 (Partially stabilize `ptr_alignment_type` as `alignment_type`)
 - #164559 (Windows: fix Dir::remove and Dir::rename following symlinks)
 - #165562 (stop using gce in a test)
 - #165681 (Add safety requirements for Pattern and Searcher)
 - #165682 (interpret: ensure newly created unions have uninit in their padding)
 - #165693 (Move `check_attr` to attribute parsing)
 - #165715 (windows: check for null before wide encoding)
 - #165717 (mpsc_sync::stream_send_recv_stress: wait for all threads to finish)
 - #165733 (docs(num): remove needless whitespaces)
 - #165739 (remove NOP File::flush from fs tests)

Failed merges:

 - #165727 (Normalize "beta release channel" in `const-supertrait-unstable` test)
 - #164218 (Tweak private re-export errors to point at correct span and have more context)
rust-bors Bot pushed a commit that referenced this pull request Nov 10, 2026
…uwer

Rollup of 24 pull requests

Successful merges:

 - #165709 (remove 'x miri' smoke test from PR CI)
 - #164217 (Prepare to make `rustc_trivial_field_reads` usable in user code)
 - #165569 (`Move` trait feature gate)
 - #165575 (Upgrade bundled musl to 1.2.6)
 - #163241 (Add enclosing item context when pointing at `FnMut` bound)
 - #163992 (add `core::arch::{x86, x86_64}::x87_f80`)
 - #165047 (Change the span building of paths from first-to-last to chained)
 - #165458 (fix incorrect byte count suffix on MSVC)
 - #165490 (Mark the compile unit for `-Zdebuginfo-for-profiling`)
 - #165586 (Remove `backend_optimization_level`.)
 - #165646 (fix NumScalableVectors::from_field_count)
 - #165655 (Unignore passing GCC backend tests)
 - #165740 (miri subtree update)
 - #165753 (avoid Terminator:None in MIR inliner)
 - #153261 (Partially stabilize `ptr_alignment_type` as `alignment_type`)
 - #164559 (Windows: fix Dir::remove and Dir::rename following symlinks)
 - #165562 (stop using gce in a test)
 - #165681 (Add safety requirements for Pattern and Searcher)
 - #165682 (interpret: ensure newly created unions have uninit in their padding)
 - #165693 (Move `check_attr` to attribute parsing)
 - #165715 (windows: check for null before wide encoding)
 - #165717 (mpsc_sync::stream_send_recv_stress: wait for all threads to finish)
 - #165733 (docs(num): remove needless whitespaces)
 - #165739 (remove NOP File::flush from fs tests)

Failed merges:

 - #165727 (Normalize "beta release channel" in `const-supertrait-unstable` test)
 - #164218 (Tweak private re-export errors to point at correct span and have more context)
@rust-bors
rust-bors Bot merged commit 0370dc2 into rust-lang:main Nov 10, 2026
14 of 15 checks passed
@rustbot rustbot added this to the 1.102.0 milestone Nov 10, 2026
rust-bors Bot pushed a commit that referenced this pull request Nov 10, 2026
Rollup merge of #164217 - tehforsch:fix-160621, r=mejrs,mu001999

Prepare to make `rustc_trivial_field_reads` usable in user code

Zulip discussion:
[#t-lang > diagnostics attribute to ignore code for unused_code lints](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/diagnostics.20attribute.20to.20ignore.20code.20for.20unused_code.20lints/with/614949580)
[#t-compiler/help > #160621 (Allow ignoring fns for dead code analysis)](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.23160621.20.28Allow.20ignoring.20fns.20for.20dead.20code.20analysis.29/with/629007836)

Open questions I have:
1. Some of the `Debug` impls are not pointed out as usage sites. For example this test:
```rust
#[derive(Debug)]
enum TupleVariant {
    Variant1(i32), //~ ERROR: variant `Variant1` is never constructed
    Variant2,
}

fn main() {
	let _ = TupleVariant::Variant2;
}
```
now loses its the note in the error message:
```
note: `TupleVariant` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
```
but in my mind this also makes sense - the `Debug` impl never constructs that `Variant1` and even if `rustc_trivial_field_reads` is removed from the debug impl, the "variant never constructed" warning would still occur. Note that this doesn't apply to `Clone` impls, which do technically construct that variant although that brings me to point 2

2. If I am reading the code right, the whole point of the `ignored_variant_stack` is to make sure we don't mark a variant of an enum live from within a match arm that matches on that exact enum variant. But isn't that exactly what the `Clone` impl does? The inner match arm of it would look like `Variant1(x) => Variant1(x)`. I looked into `necessary_variants` and found that it directly ignores the kind of variant we encounter, namely `PatKind::TupleStruct(hir::QPath::TypeRelative(...))` but I don't really understand why and whether that's a bug or whether I am missing something
bjorn3 pushed a commit to rust-lang/rustc_codegen_cranelift that referenced this pull request Nov 11, 2026
…uwer

Rollup of 24 pull requests

Successful merges:

 - rust-lang/rust#165709 (remove 'x miri' smoke test from PR CI)
 - rust-lang/rust#164217 (Prepare to make `rustc_trivial_field_reads` usable in user code)
 - rust-lang/rust#165569 (`Move` trait feature gate)
 - rust-lang/rust#165575 (Upgrade bundled musl to 1.2.6)
 - rust-lang/rust#163241 (Add enclosing item context when pointing at `FnMut` bound)
 - rust-lang/rust#163992 (add `core::arch::{x86, x86_64}::x87_f80`)
 - rust-lang/rust#165047 (Change the span building of paths from first-to-last to chained)
 - rust-lang/rust#165458 (fix incorrect byte count suffix on MSVC)
 - rust-lang/rust#165490 (Mark the compile unit for `-Zdebuginfo-for-profiling`)
 - rust-lang/rust#165586 (Remove `backend_optimization_level`.)
 - rust-lang/rust#165646 (fix NumScalableVectors::from_field_count)
 - rust-lang/rust#165655 (Unignore passing GCC backend tests)
 - rust-lang/rust#165740 (miri subtree update)
 - rust-lang/rust#165753 (avoid Terminator:None in MIR inliner)
 - rust-lang/rust#153261 (Partially stabilize `ptr_alignment_type` as `alignment_type`)
 - rust-lang/rust#164559 (Windows: fix Dir::remove and Dir::rename following symlinks)
 - rust-lang/rust#165562 (stop using gce in a test)
 - rust-lang/rust#165681 (Add safety requirements for Pattern and Searcher)
 - rust-lang/rust#165682 (interpret: ensure newly created unions have uninit in their padding)
 - rust-lang/rust#165693 (Move `check_attr` to attribute parsing)
 - rust-lang/rust#165715 (windows: check for null before wide encoding)
 - rust-lang/rust#165717 (mpsc_sync::stream_send_recv_stress: wait for all threads to finish)
 - rust-lang/rust#165733 (docs(num): remove needless whitespaces)
 - rust-lang/rust#165739 (remove NOP File::flush from fs tests)

Failed merges:

 - rust-lang/rust#165727 (Normalize "beta release channel" in `const-supertrait-unstable` test)
 - rust-lang/rust#164218 (Tweak private re-export errors to point at correct span and have more context)
RalfJung pushed a commit to mehmettoplu-rs/miri that referenced this pull request Nov 11, 2026
…uwer

Rollup of 24 pull requests

Successful merges:

 - rust-lang/rust#165709 (remove 'x miri' smoke test from PR CI)
 - rust-lang/rust#164217 (Prepare to make `rustc_trivial_field_reads` usable in user code)
 - rust-lang/rust#165569 (`Move` trait feature gate)
 - rust-lang/rust#165575 (Upgrade bundled musl to 1.2.6)
 - rust-lang/rust#163241 (Add enclosing item context when pointing at `FnMut` bound)
 - rust-lang/rust#163992 (add `core::arch::{x86, x86_64}::x87_f80`)
 - rust-lang/rust#165047 (Change the span building of paths from first-to-last to chained)
 - rust-lang/rust#165458 (fix incorrect byte count suffix on MSVC)
 - rust-lang/rust#165490 (Mark the compile unit for `-Zdebuginfo-for-profiling`)
 - rust-lang/rust#165586 (Remove `backend_optimization_level`.)
 - rust-lang/rust#165646 (fix NumScalableVectors::from_field_count)
 - rust-lang/rust#165655 (Unignore passing GCC backend tests)
 - rust-lang/rust#165740 (miri subtree update)
 - rust-lang/rust#165753 (avoid Terminator:None in MIR inliner)
 - rust-lang/rust#153261 (Partially stabilize `ptr_alignment_type` as `alignment_type`)
 - rust-lang/rust#164559 (Windows: fix Dir::remove and Dir::rename following symlinks)
 - rust-lang/rust#165562 (stop using gce in a test)
 - rust-lang/rust#165681 (Add safety requirements for Pattern and Searcher)
 - rust-lang/rust#165682 (interpret: ensure newly created unions have uninit in their padding)
 - rust-lang/rust#165693 (Move `check_attr` to attribute parsing)
 - rust-lang/rust#165715 (windows: check for null before wide encoding)
 - rust-lang/rust#165717 (mpsc_sync::stream_send_recv_stress: wait for all threads to finish)
 - rust-lang/rust#165733 (docs(num): remove needless whitespaces)
 - rust-lang/rust#165739 (remove NOP File::flush from fs tests)

Failed merges:

 - rust-lang/rust#165727 (Normalize "beta release channel" in `const-supertrait-unstable` test)
 - rust-lang/rust#164218 (Tweak private re-export errors to point at correct span and have more context)
@rust-timer

Copy link
Copy Markdown
Collaborator

Note

This PR was benchmarked as part of triage of its containing rollup: triage URL.

Finished benchmarking commit (b076b10): comparison URL.

Overall result: ❌ regressions - please read:

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.2% [0.1%, 0.3%] 16
Regressions ❌
(secondary)
0.3% [0.1%, 0.9%] 21
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.3% [-0.3%, -0.3%] 2
All ❌✅ (primary) 0.2% [0.1%, 0.3%] 16

Max RSS (memory usage)

Results (primary -2.7%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.7% [-2.7%, -2.7%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.7% [-2.7%, -2.7%] 1

Cycles

This perf run didn't have relevant results for this metric.

Binary size

This perf run didn't have relevant results for this metric.

Artifact size: 406.28 MiB -> 406.40 MiB (0.03%)

github-actions Bot pushed a commit to rust-lang/stdarch that referenced this pull request Nov 12, 2026
…uwer

Rollup of 24 pull requests

Successful merges:

 - rust-lang/rust#165709 (remove 'x miri' smoke test from PR CI)
 - rust-lang/rust#164217 (Prepare to make `rustc_trivial_field_reads` usable in user code)
 - rust-lang/rust#165569 (`Move` trait feature gate)
 - rust-lang/rust#165575 (Upgrade bundled musl to 1.2.6)
 - rust-lang/rust#163241 (Add enclosing item context when pointing at `FnMut` bound)
 - rust-lang/rust#163992 (add `core::arch::{x86, x86_64}::x87_f80`)
 - rust-lang/rust#165047 (Change the span building of paths from first-to-last to chained)
 - rust-lang/rust#165458 (fix incorrect byte count suffix on MSVC)
 - rust-lang/rust#165490 (Mark the compile unit for `-Zdebuginfo-for-profiling`)
 - rust-lang/rust#165586 (Remove `backend_optimization_level`.)
 - rust-lang/rust#165646 (fix NumScalableVectors::from_field_count)
 - rust-lang/rust#165655 (Unignore passing GCC backend tests)
 - rust-lang/rust#165740 (miri subtree update)
 - rust-lang/rust#165753 (avoid Terminator:None in MIR inliner)
 - rust-lang/rust#153261 (Partially stabilize `ptr_alignment_type` as `alignment_type`)
 - rust-lang/rust#164559 (Windows: fix Dir::remove and Dir::rename following symlinks)
 - rust-lang/rust#165562 (stop using gce in a test)
 - rust-lang/rust#165681 (Add safety requirements for Pattern and Searcher)
 - rust-lang/rust#165682 (interpret: ensure newly created unions have uninit in their padding)
 - rust-lang/rust#165693 (Move `check_attr` to attribute parsing)
 - rust-lang/rust#165715 (windows: check for null before wide encoding)
 - rust-lang/rust#165717 (mpsc_sync::stream_send_recv_stress: wait for all threads to finish)
 - rust-lang/rust#165733 (docs(num): remove needless whitespaces)
 - rust-lang/rust#165739 (remove NOP File::flush from fs tests)

Failed merges:

 - rust-lang/rust#165727 (Normalize "beta release channel" in `const-supertrait-unstable` test)
 - rust-lang/rust#164218 (Tweak private re-export errors to point at correct span and have more context)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-fmt Area: `core::fmt` perf-regression Performance regression. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants