Skip to content

Conversation

@bjorn3
Copy link
Member

@bjorn3 bjorn3 commented Nov 29, 2025

In rust-lang/rfcs#3881 (comment) we are discussing how much this perf hit actually is. It was up to 10% when this optimization was originally done. It is not clear if this is still the case or what exactly is responsible for this big of a hit.

@rustbot rustbot added 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. labels Nov 29, 2025
@bjorn3
Copy link
Member Author

bjorn3 commented Nov 29, 2025

@bors try @rust-timer queue

@rust-timer
Copy link
Collaborator

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

rust-bors bot added a commit that referenced this pull request Nov 29, 2025
[DO NOT MERGE] Check performance hit of emitting full metadata in check mode
@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Nov 29, 2025
@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)
test [crashes] tests/crashes/121575.rs ... ok
test [crashes] tests/crashes/121963.rs ... ok
test [crashes] tests/crashes/121858.rs ... ok
test [crashes] tests/crashes/122259.rs ... ok
2025-11-29T17:50:01.198603Z ERROR compiletest::runtest: fatal error, panic: "crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`."
test [crashes] tests/crashes/122681.rs ... FAILED
test [crashes] tests/crashes/122529.rs ... ok
test [crashes] tests/crashes/122710.rs ... ok
test [crashes] tests/crashes/122903-1.rs ... ok
test [crashes] tests/crashes/123140.rs ... ok
test [crashes] tests/crashes/123157.rs ... ok
2025-11-29T17:50:01.335411Z ERROR compiletest::runtest: fatal error, panic: "crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`."
test [crashes] tests/crashes/123690.rs ... FAILED
test [crashes] tests/crashes/123862.rs ... ignored, ignored if rustc wasn't built with debug assertions
test [crashes] tests/crashes/123629.rs ... ok
test [crashes] tests/crashes/123810.rs ... ok
test [crashes] tests/crashes/123887.rs ... ok
---
test [crashes] tests/crashes/137514.rs ... ignored, ignored if rustc wasn't built with debug assertions
test [crashes] tests/crashes/137467-1.rs ... ok
test [crashes] tests/crashes/137582.rs ... ok
test [crashes] tests/crashes/137467-3.rs ... ok
2025-11-29T17:50:03.632071Z ERROR compiletest::runtest: fatal error, panic: "crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`."
test [crashes] tests/crashes/137916.rs ... FAILED
test [crashes] tests/crashes/137888.rs ... ok
test [crashes] tests/crashes/138088.rs ... ok
test [crashes] tests/crashes/138089.rs ... ok
test [crashes] tests/crashes/138009.rs ... ok
---
test [crashes] tests/crashes/140123-4.rs ... ok
test [crashes] tests/crashes/140123.rs ... ok
test [crashes] tests/crashes/140275.rs ... ok
test [crashes] tests/crashes/140123-3.rs ... ok
2025-11-29T17:50:04.586292Z ERROR compiletest::runtest: fatal error, panic: "crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`."
test [crashes] tests/crashes/140303.rs ... FAILED
test [crashes] tests/crashes/140381.rs ... ok
test [crashes] tests/crashes/140577.rs ... ok
test [crashes] tests/crashes/140850.rs ... ok
test [crashes] tests/crashes/138361.rs ... ok
---

---- [crashes] tests/crashes/122681.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error[E0658]: use of an internal attribute
##[error] --> /checkout/tests/crashes/122681.rs:2:1
  |
2 | #[rustc_layout_scalar_valid_range_start(1)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
---
For more information about an error, try `rustc --explain E0601`.

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

error: crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`.

thread '[crashes] tests/crashes/122681.rs' panicked at src/tools/compiletest/src/runtest/crashes.rs:17:18:
fatal error
stack backtrace:
   5: __rustc::rust_begin_unwind
---
---- [crashes] tests/crashes/122681.rs stdout end ----
---- [crashes] tests/crashes/123690.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error[E0428]: the name `_D8` is defined multiple times
##[error]   --> /checkout/tests/crashes/123690.rs:232:9
    |
215 |         _D8(X),
    |         ------ previous definition of the type `_D8` here
...
232 |         _D8(X),
    |         ^^^^^^ `_D8` redefined here
    |
    = note: `_D8` must be defined only once in the type namespace of this enum

error[E0601]: `main` function not found in crate `123690`
##[error]   --> /checkout/tests/crashes/123690.rs:278:2
---
    |
273 |         V3,
    |         ^^ overflowed on value after 255
    |
    = note: explicitly set `V3 = 0` if that is desired outcome

error[E0081]: discriminant value `0` assigned more than once
##[error]   --> /checkout/tests/crashes/123690.rs:14:5
    |
 14 |     pub enum E2<X> {
    |     ^^^^^^^^^^^^^^
 15 |         V1 { f: bool },
    |         --
    |         |
    |         `0` assigned here
    |         discriminant for `V3` incremented from this startpoint (`V1` + 256 variants later => `V3` = 0)
...
273 |         V3,
    |         -- `0` assigned here

error[E0081]: discriminant value `1` assigned more than once
##[error]   --> /checkout/tests/crashes/123690.rs:14:5
    |
 14 |     pub enum E2<X> {
    |     ^^^^^^^^^^^^^^
 15 |         V1 { f: bool },
    |         --
    |         |
    |         discriminant for `_01` incremented from this startpoint (`V1` + 1 variant later => `_01` = 1)
    |         discriminant for `V4` incremented from this startpoint (`V1` + 257 variants later => `V4` = 1)
 16 |
 17 |         /*_00*/ _01(X),
    |                 --- `1` assigned here
...
274 |         V4,
    |         -- `1` assigned here

error: aborting due to 5 previous errors

Some errors have detailed explanations: E0081, E0370, E0428, E0601.
For more information about an error, try `rustc --explain E0081`.

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

error: crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`.

thread '[crashes] tests/crashes/123690.rs' panicked at src/tools/compiletest/src/runtest/crashes.rs:17:18:
fatal error
stack backtrace:
   5: __rustc::rust_begin_unwind
---
---- [crashes] tests/crashes/123690.rs stdout end ----
---- [crashes] tests/crashes/137916.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error: future cannot be sent between threads safely
##[error]  --> /checkout/tests/crashes/137916.rs:6:5
   |
 6 | /     Box::new(async {
 7 | |         let non_send = null::<()>();
 8 | |         &non_send;
 9 | |         async {}.await
10 | |     })
   | |______^ future created by async block is not `Send`
   |
   = help: within `{async block@/checkout/tests/crashes/137916.rs:6:14: 6:19}`, the trait `Send` is not implemented for `*const ()`
note: future is not `Send` as this value is used across an await
  --> /checkout/tests/crashes/137916.rs:9:18
   |
 7 |         let non_send = null::<()>();
   |             -------- has type `*const ()` which is not `Send`
 8 |         &non_send;
 9 |         async {}.await
   |                  ^^^^^ await occurs here, with `non_send` maybe used later
   = note: required for the cast from `Box<{async block@/checkout/tests/crashes/137916.rs:6:14: 6:19}>` to `Box<dyn Send>`

error: aborting due to 1 previous error


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

error: crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`.

thread '[crashes] tests/crashes/137916.rs' panicked at src/tools/compiletest/src/runtest/crashes.rs:17:18:
fatal error
stack backtrace:
   5: __rustc::rust_begin_unwind
---
---- [crashes] tests/crashes/137916.rs stdout end ----
---- [crashes] tests/crashes/140303.rs stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error[E0670]: `async fn` is not permitted in Rust 2015
##[error] --> /checkout/tests/crashes/140303.rs:4:1
  |
4 | async fn a() -> impl Sized {
  | ^^^^^ to use `async fn`, switch to Rust 2018 or later
  |
  = help: pass `--edition 2024` to `rustc`
  = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
##[error] --> /checkout/tests/crashes/140303.rs:7:1
  |
7 | async fn c(); // kaboom
  | ^^^^^ to use `async fn`, switch to Rust 2018 or later
  |
  = help: pass `--edition 2024` to `rustc`
  = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error: free function without a body
##[error] --> /checkout/tests/crashes/140303.rs:7:1
  |
7 | async fn c(); // kaboom
  | ^^^^^^^^^^^^-
  |             |
  |             help: provide a definition for the function: `{ <body> }`

warning: type parameter `d` should have an upper camel case name
##[warning] --> /checkout/tests/crashes/140303.rs:8:6
  |
8 | fn b<d>(e: d) -> impl Sized
  |      ^ help: convert the identifier to upper camel case: `D`
  |
  = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default

warning: trait `f` should have an upper camel case name
##[warning]  --> /checkout/tests/crashes/140303.rs:14:7
   |
14 | trait f {
   |       ^ help: convert the identifier to upper camel case (notice the capitalization): `F`

warning: associated type `h` should have an upper camel case name
##[warning]  --> /checkout/tests/crashes/140303.rs:15:10
   |
15 |     type h;
   |          ^ help: convert the identifier to upper camel case: `H`

warning: type parameter `d` should have an upper camel case name
##[warning]  --> /checkout/tests/crashes/140303.rs:17:6
   |
17 | impl<d, g> f for d
   |      ^ help: convert the identifier to upper camel case: `D`

warning: type parameter `g` should have an upper camel case name
##[warning]  --> /checkout/tests/crashes/140303.rs:17:9
   |
17 | impl<d, g> f for d
   |         ^ help: convert the identifier to upper camel case: `G`

error[E0601]: `main` function not found in crate `140303`
##[error]  --> /checkout/tests/crashes/140303.rs:22:2
   |
22 | }
---
   |
15 |       type h;
   |       ------ `h` from trait
16 |   }
17 | / impl<d, g> f for d
18 | | where
19 | |     d: Fn() -> g,
20 | |     g: Future,
   | |______________^ missing `h` in implementation

warning: unused variable: `e`
##[warning] --> /checkout/tests/crashes/140303.rs:8:9
  |
8 | fn b<d>(e: d) -> impl Sized
  |         ^ help: if this is intentional, prefix it with an underscore: `_e`
  |
  = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

error: aborting due to 5 previous errors; 6 warnings emitted

Some errors have detailed explanations: E0046, E0601, E0670.
For more information about an error, try `rustc --explain E0046`.

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

error: crashtest no longer crashes/triggers ICE, hooray! Please give it a meaningful name, add a doc-comment to the start of the test explaining why it exists and move it to tests/ui or wherever you see fit. Adding 'Fixes #<issueNr>' to your PR description ensures that the corresponding ticket is auto-closed upon merge. If you want to see verbose output, set `COMPILETEST_VERBOSE_CRASHES=1`.

thread '[crashes] tests/crashes/140303.rs' panicked at src/tools/compiletest/src/runtest/crashes.rs:17:18:
fatal error
stack backtrace:
   5: __rustc::rust_begin_unwind

For more information how to resolve CI failures of this job, visit this link.

@rust-bors
Copy link

rust-bors bot commented Nov 29, 2025

☀️ Try build successful (CI)
Build commit: fbd25dd (fbd25dde0af118f932dcb48e3fb6ff322b35e2ff, parent: 0ad2cd3f1357da47c3eb4acc8224a8f10dd87d0f)

@rust-timer
Copy link
Collaborator

Queued fbd25dd with parent 0ad2cd3, future comparison URL.
There are currently 0 preceding artifacts in the queue.
It will probably take at least ~1.3 hours until the benchmark run finishes.

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

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. S-waiting-on-perf Status: Waiting on a perf run to be completed. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants