Skip to content

Rollup of 9 pull requests #141869

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Jun 1, 2025
Merged

Rollup of 9 pull requests #141869

merged 21 commits into from
Jun 1, 2025

Conversation

GuillaumeGomez
Copy link
Member

@GuillaumeGomez GuillaumeGomez commented Jun 1, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

WaffleLapkin and others added 21 commits April 27, 2025 17:32
1. Better explain what the test tests
2. Test slightly more cases
1. Fix "expected" and the note for the pattern case
2. Add suggestions
it is non-trivial to reproduce this bug through rustdoc,
which uses this function less than clippy,
so the regression test was added as a unit test
instead of an integration test.
This actually fixes a bug where before only 20 arguments could be passed. As far as I can tell, an arbitrary number of arguments is now supported
This is the only change needed to Rust to allow compiling rustfmt for WASI (rustfmt uses some internal rustc crates).
Signed-off-by: onur-ozkan <work@onurozkan.dev>
…elmann

Improve diagnostics for usage of qualified paths within tuple struct exprs/pats

For patterns the old diagnostic was just incorrect, but I also added machine applicable suggestions.

For context, this special cases errors for `<T as Trait>::Assoc(..)` patterns and expressions (latter is just a call). Tuple struct patterns and expressions both live in the value namespace, so they are not forwarded through associated *types*.

r? ``@jdonszelmann``

cc ``@petrochenkov`` in rust-lang#80080 (comment) you were wondering why it doesn't work for types, that's why — tuple patterns are resolved in the value namespace.
terminology: allocated object → allocation

Rust does not have "objects" in memory so "allocated object" is a somewhat odd name. I am not sure where the term comes from. "object" has been used to refer to allocations already [in 1.0 docs](https://doc.rust-lang.org/1.0.0/std/primitive.pointer.html#method.offset); this was apparently later changed to "allocated object".

"Allocation" is already the terminology used in Miri and in the [UCG](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#allocation). We should properly move to that terminology, and avoid any confusion about whether Rust has an object memory model. (It does not. Memory contains untyped bytes.)

Cc ``@rust-lang/opsem`` ``@rust-lang/lang``
…ngjubilee

implement `va_arg` for `powerpc`

tracking issue: rust-lang#44930

The llvm `va_arg` implementation is well-known to have serious limitations. Some planned changes to rust's `VaList` make it much more likely that LLVM miscompiles `va_arg`, so this PR adds support for the various powerpc targets. Now at least the targets that `core` has explicit support for will continue to work.

For `powerpc` (the 32-bit variant) this implementation also fixes a bug where only up to 20 variadic arguments were supported.

Locally (with qemu), these targets now pass the tests in https://github.com/rust-lang/rust/blob/master/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs. That test does not actually run for the powerpc targets in CI though.

The implementation is based on clang:

- handling of big endian architectures https://github.com/llvm/llvm-project/blob/3c8089d1ea53232d5a7cdc33f0cb43ef7d6f723b/clang/lib/CodeGen/ABIInfoImpl.cpp#L191-L193
- 64-bit https://github.com/llvm/llvm-project/blob/3c8089d1ea53232d5a7cdc33f0cb43ef7d6f723b/clang/lib/CodeGen/Targets/PPC.cpp#L969
- 32-bit https://github.com/llvm/llvm-project/blob/3c8089d1ea53232d5a7cdc33f0cb43ef7d6f723b/clang/lib/CodeGen/Targets/PPC.cpp#L430

cc `@daltenty` (target maintainer)
r? `@workingjubilee`
`@rustbot` label: +F-c_variadic
…or_markdown_range-bug-141665, r=GuillaumeGomez

source_span_for_markdown_range: fix utf8 violation

it is non-trivial to reproduce this bug through rustdoc, which uses this function less than clippy, so the regression test was added as a unit test instead of an integration test.

fixes rust-lang#141665

r? ``@GuillaumeGomez``
…home-from-in-tree-consideration, r=clubby789

Exclude `CARGO_HOME` from `generate-copyright` in-tree determination

On Ferrocene, we noticed that in our releases the out-of-tree notices were not being included. When `x.py run generate-copyright` was ran on local development machines, it worked fine.

After some investigations ``@tshepang`` and I determined that the problem was that the cargo registry (located in `CARGO_HOME`) started with the source directory on CI jobs, and was being excluded by this line:

https://github.com/rust-lang/rust/blob/15825b7161f8bd6a3482211fbf6727a52aa1166b/src/tools/generate-copyright/src/cargo_metadata.rs#L85-L88

In Ferrocene's `run.sh` we set `CARGO_HOME` to be `build/cargo-home`: https://github.com/ferrocene/ferrocene/blob/96a45dd9a18c6e54d3cd81750a78fe459fa48af0/ferrocene/ci/run.sh#L34-L46 which caused this issue.

This PR passes the `CARGO_HOME` variable to the `generate-copyright` tool and expands the consideration of in-tree-ness to be aware of `CARGO_HOME`. It is an upstreaming of ferrocene/ferrocene#1491.

## Testing

Run `CARGO_HOME=build/cargo-home ./x.py run generate-copyright` on `master`, then check `build/host/doc/COPYRIGHT` and look for out of tree dependencies (at the bottom).

Then, try running the same command in this branch.
…ce_cell, r=jieyouxu

Drive-by refactor: use `OnceCell` for the reverse region SCC graph

During region inference, the reverse SCC region graph is sometimes computed lazily. This changes the implementation for that from using an `Option` to a `OnceCell` which clearly communicates the intention and simplifies the code somewhat.

There shouldn't be any performance impact, except that this pulls the computation of the reverse SCC graph slightly later than before, and so may avoid computing it in some instances.

Note that this changes a mutable reference into an immutable (interior mutable) one.
Add unimplemented `current_dll_path()` for WASI

This is the only change needed to Rust to allow compiling rustfmt for WASI (rustfmt uses some internal rustc crates).
…mati865

Fix TLS model on bootstrap for cygwin

There aren't other targets that both use emutls and enable `has_thread_local`, so cygwin triggers this bug first.

r? mati865

See: rust-lang#141719 (comment)

``@jeremyd2019`` Could you check if this PR fixes the issue? I just found my pre-built stage-0 rustc was too old to build the current rustc :(
…=jieyouxu

resolve if-let-chain FIXME on bootstrap

self-explanatory
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. 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-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. rollup A PR which is a rollup labels Jun 1, 2025
@GuillaumeGomez
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jun 1, 2025

📌 Commit 90f418f has been approved by GuillaumeGomez

It is now in the queue for this repository.

@bors bors removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 1, 2025
@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jun 1, 2025
@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)
tests/pass-dep/tokio/file-io.rs ... FAILED
tests/pass-dep/libc/mmap.rs ... ok

FAILED TEST: tests/pass-dep/tokio/file-io.rs
command: MIRI_ENV_VAR_TEST="0" MIRI_TEMP="/tmp/miri-uitest-57dq1D" RUST_BACKTRACE="1" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/miri" "--error-format=json" "--sysroot=/checkout/obj/build/x86_64-unknown-linux-gnu/miri-sysroot" "-Dwarnings" "-Dunused" "-Ainternal_features" "-Zui-testing" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/tests/pass-dep/tokio" "tests/pass-dep/tokio/file-io.rs" "-Zmiri-disable-isolation" "--extern" "cfg_if=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libcfg_if-55a32e410325a882.rlib" "--extern" "cfg_if=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libcfg_if-55a32e410325a882.rmeta" "--extern" "getrandom_01=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-77190f9b44a3c009.rlib" "--extern" "getrandom_01=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-77190f9b44a3c009.rmeta" "--extern" "getrandom_02=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-56888fca95a09bf8.rlib" "--extern" "getrandom_02=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-56888fca95a09bf8.rmeta" "--extern" "getrandom_03=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-a8fc577bb44b6d80.rlib" "--extern" "getrandom_03=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libgetrandom-a8fc577bb44b6d80.rmeta" "--extern" "libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/liblibc-dd98cac8117d550a.rlib" "--extern" "libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/liblibc-dd98cac8117d550a.rmeta" "--extern" "num_cpus=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libnum_cpus-7ab8becb6da559b7.rlib" "--extern" "num_cpus=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libnum_cpus-7ab8becb6da559b7.rmeta" "--extern" "page_size=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libpage_size-c34469ad90c5eb76.rlib" "--extern" "page_size=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libpage_size-c34469ad90c5eb76.rmeta" "--extern" "tempfile=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libtempfile-d40c54a83e8abae9.rlib" "--extern" "tempfile=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libtempfile-d40c54a83e8abae9.rmeta" "--extern" "tokio=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libtokio-539f2d149eae570a.rlib" "--extern" "tokio=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps/libtokio-539f2d149eae570a.rmeta" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/x86_64-unknown-linux-gnu/debug/deps" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/miri/debug/deps" "--edition" "2021"

error: test got exit status: 101, but expected 0
 = note: the compiler panicked

error: no output was expected
---
   4: test_create_and_write::{closure#0}
             at tests/pass-dep/tokio/file-io.rs:24:5
   5: main::{closure#0}
             at tests/pass-dep/tokio/file-io.rs:14:29
   6: tokio::runtime::park::CachedParkThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/park.rs:284:60
   7: tokio::task::coop::with_budget::<std::task::Poll<()>, {closure@tokio::runtime::park::CachedParkThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/task/coop/mod.rs:167:5
   8: tokio::task::coop::budget::<std::task::Poll<()>, {closure@tokio::runtime::park::CachedParkThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/task/coop/mod.rs:133:5
   9: tokio::runtime::park::CachedParkThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/park.rs:284:31
  10: tokio::runtime::context::blocking::BlockingRegionGuard::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/context/blocking.rs:66:9
  11: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/scheduler/multi_thread/mod.rs:87:13
  12: tokio::runtime::context::runtime::enter_runtime::<{closure@tokio::runtime::scheduler::multi_thread::MultiThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/context/runtime.rs:65:16
  13: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/scheduler/multi_thread/mod.rs:86:9
  14: tokio::runtime::Runtime::block_on_inner::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/runtime.rs:370:45
  15: tokio::runtime::Runtime::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/runtime.rs:342:13
  16: main
             at tests/pass-dep/tokio/file-io.rs:15:5
  17: <fn() as std::ops::FnOnce<()>>::call_once - shim(fn())
             at /checkout/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
   4: test_create_and_write::{closure#0}
             at tests/pass-dep/tokio/file-io.rs:24:5
   5: main::{closure#0}
             at tests/pass-dep/tokio/file-io.rs:14:29
   6: tokio::runtime::park::CachedParkThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/park.rs:284:60
   7: tokio::task::coop::with_budget::<std::task::Poll<()>, {closure@tokio::runtime::park::CachedParkThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/task/coop/mod.rs:167:5
   8: tokio::task::coop::budget::<std::task::Poll<()>, {closure@tokio::runtime::park::CachedParkThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/task/coop/mod.rs:133:5
   9: tokio::runtime::park::CachedParkThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/park.rs:284:31
  10: tokio::runtime::context::blocking::BlockingRegionGuard::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/context/blocking.rs:66:9
  11: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/scheduler/multi_thread/mod.rs:87:13
  12: tokio::runtime::context::runtime::enter_runtime::<{closure@tokio::runtime::scheduler::multi_thread::MultiThread::block_on<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>::{closure#0}}, ()>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/context/runtime.rs:65:16
  13: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/scheduler/multi_thread/mod.rs:86:9
  14: tokio::runtime::Runtime::block_on_inner::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/runtime.rs:370:45
  15: tokio::runtime::Runtime::block_on::<{async block@tests/pass-dep/tokio/file-io.rs:12:1: 12:15}>
             at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.2/src/runtime/runtime.rs:342:13
  16: main
             at tests/pass-dep/tokio/file-io.rs:15:5
  17: <fn() as std::ops::FnOnce<()>>::call_once - shim(fn())
             at /checkout/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---

Location:
   /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ui_test-0.29.2/src/lib.rs:369

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
error: test failed, to rerun pass `--test ui`

Caused by:
  process didn't exit successfully: `/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/x86_64-unknown-linux-gnu/release/deps/ui-f58affc77002becb` (exit status: 1)
Command has failed. Rerun with -v to see more details.
Build completed unsuccessfully in 0:05:12
  local time: Sun Jun  1 18:16:54 UTC 2025
  network time: Sun, 01 Jun 2025 18:16:54 GMT
##[error]Process completed with exit code 1.
Post job cleanup.

@bors
Copy link
Collaborator

bors commented Jun 1, 2025

⌛ Testing commit 90f418f with merge 99e7c15...

@bors
Copy link
Collaborator

bors commented Jun 1, 2025

☀️ Test successful - checks-actions
Approved by: GuillaumeGomez
Pushing 99e7c15 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 1, 2025
@bors bors merged commit 99e7c15 into rust-lang:master Jun 1, 2025
6 of 10 checks passed
@rustbot rustbot added this to the 1.89.0 milestone Jun 1, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#140370 Improve diagnostics for usage of qualified paths within tup… dee677e998c775eac916dcb9051154bf7fb9babf (link)
#141224 terminology: allocated object → allocation 51f804a5456c5875bcd6938647566f04702c3628 (link)
#141622 implement va_arg for powerpc 17eb9877a33f201e8085433ea421f1c0283f77b6 (link)
#141666 source_span_for_markdown_range: fix utf8 violation f0d939edca9041c7c90e597b151189c232254abf (link)
#141789 Exclude CARGO_HOME from generate-copyright in-tree dete… cb5bf2ffd8b839c68ac94183008f9cab9f3ab726 (link)
#141823 Drive-by refactor: use OnceCell for the reverse region SC… 7ad0c55517be5b5a80ee361aec9107a7f13a2061 (link)
#141834 Add unimplemented current_dll_path() for WASI d16d66ca4cafaf60f1e2f5e9f603c3a4c2396a50 (link)
#141846 Fix TLS model on bootstrap for cygwin 617b7cebb87bf9520da2686fe69a84b0af7c7aa2 (link)
#141852 resolve if-let-chain FIXME on bootstrap f8e313d6b804a5224b5079d9e11871cf0f375c05 (link)

previous master: a88fc0eaae

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

Copy link
Contributor

github-actions bot commented Jun 1, 2025

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing a88fc0e (parent) -> 99e7c15 (this PR)

Test differences

Show 33636 test diffs

Stage 1

  • errors::verify_ast_lowering_async_bound_not_on_trait_32: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_unsupported_clobber_abi_75: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_compiler_builtins_cannot_call_135: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_expected_one_argument_29: [missing] -> pass (J0)
  • errors::verify_parse_missing_fn_params_75: [missing] -> pass (J0)
  • errors::verify_passes_attr_application_struct_enum_union_149: [missing] -> pass (J0)
  • leb128::tests::test_i32_leb128: [missing] -> pass (J0)
  • tests::asm_concat: [missing] -> pass (J0)
  • tests::format_align_fill: [missing] -> pass (J0)
  • cmp::test_user_defined_eq: [missing] -> pass (J1)
  • f32::test_powf: [missing] -> pass (J1)
  • floats::f32::test_fract: [missing] -> pass (J1)
  • floats::f32::test_is_infinite: [missing] -> pass (J1)
  • iter::adapters::flat_map::test_iterator_flat_map: [missing] -> pass (J1)
  • iter::adapters::intersperse::test_try_fold_specialization_intersperse_err: [missing] -> pass (J1)
  • iter::traits::iterator::test_iterator_len: [missing] -> pass (J1)
  • num::i128::test_borrowing_sub: [missing] -> pass (J1)
  • num::i32::test_midpoint: [missing] -> pass (J1)
  • num::test_i8f32: [missing] -> pass (J1)
  • num::test_u16f32: [missing] -> pass (J1)
  • num::u128::test_le: [missing] -> pass (J1)
  • slice::test_rchunks_exact_nth_back: [missing] -> pass (J1)
  • slice::test_remove: [missing] -> pass (J1)
  • slice::test_windows_count: [missing] -> pass (J1)
  • sort::tests::stable::int_edge: [missing] -> pass (J1)
  • str::slice_index::rangefrom_len::index_mut_fail: [missing] -> pass (J1)
  • str::slice_index::rangeto_len::index_fail: [missing] -> pass (J1)
  • str::test_split_char_iterator_inclusive: [missing] -> pass (J1)
  • sys_common::wtf8::tests::code_point_from_char: [missing] -> pass (J1)
  • sys_common::wtf8::tests::wtf8buf_extend: [missing] -> pass (J1)
  • ascii::is_ascii::unaligned_both_long::case04_while_loop: [missing] -> pass (J2)
  • ascii::short::case09_mask_mult_bool_branchy_lookup_table: [missing] -> pass (J2)
  • num::flt2dec::strategy::dragon::bench_big_exact_3: [missing] -> pass (J2)
  • num::int_sqrt::u16_sqrt_uniform: [missing] -> pass (J2)
  • sort::tests::unstable::observable_is_less_random_d2: [missing] -> pass (J2)
  • sort::tests::unstable::panic_retain_orig_set_cell_i32_random_d20: [missing] -> pass (J2)
  • vec::bench_dedup_all_10000: [missing] -> pass (J2)
  • sort::tests::stable::panic_retain_orig_set_string_random_d20: [missing] -> ignore (J4)
  • sort::tests::unstable::correct_f128_random_d20: [missing] -> ignore (J4)
  • sort::tests::unstable::correct_string_descending: [missing] -> ignore (J4)
  • sort::tests::unstable::stability_string_random_s95: [missing] -> ignore (J4)

Stage 2

  • error::verify_middle_layout_references_error_14: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_multiple_main_functions_81: pass -> [missing] (J0)
  • errors::verify_const_eval_unallowed_fn_pointer_call_9: pass -> [missing] (J0)
  • errors::verify_const_eval_unstable_const_trait_11: pass -> [missing] (J0)
  • errors::verify_metadata_multiple_wasm_import_21: pass -> [missing] (J0)
  • errors::verify_parse_extern_item_cannot_be_const_85: pass -> [missing] (J0)
  • errors::verify_passes_lang_item_fn_with_track_caller_110: pass -> [missing] (J0)
  • errors::verify_passes_unused_assign_passed_172: pass -> [missing] (J0)
  • fs::tests::test_file_times_pre_epoch_with_nanos: pass -> [missing] (J0)
  • hir::tests::cast_tup: pass -> [missing] (J0)
  • html::markdown::tests::test_lang_string_tokenizer: pass -> [missing] (J0)
  • layout::tree::tests::prune::should_accept::visible_def_in_seq_len_3: pass -> [missing] (J0)
  • maybe_transmutable::tests::nonzero::should_permit_valid_transmutation: pass -> [missing] (J0)
  • parser::tests::different_note_spanned_8: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_expected_version_literal_22: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_unrecognized_repr_hint_32: pass -> [missing] (J0)
  • session_diagnostics::verify_borrowck_generic_does_not_live_long_enough_2: pass -> [missing] (J0)
  • spec::tests::amdgcn_amd_amdhsa: pass -> [missing] (J0)
  • spec::tests::x86_64_lynx_lynxos178: pass -> [missing] (J0)
  • tests::test_externs_tracking_hash_different_construction_order: pass -> [missing] (J0)
  • arc::panic_no_leak: pass -> [missing] (J1)
  • array::iterator_drops: pass -> [missing] (J1)
  • autotraits::test_btree_set: pass -> [missing] (J1)
  • collections::btree::map::tests::test_append_14: pass -> [missing] (J1)
  • lazy::unsync_once_cell_drop_empty: pass -> [missing] (J1)
  • macros::assert_escape: pass -> [missing] (J1)
  • mpsc_sync::oneshot_multi_task_recv_then_send: pass -> [missing] (J1)
  • num::f64::min: pass -> [missing] (J1)
  • num::test_try_u128u32: pass -> [missing] (J1)
  • num::test_try_u32i128: pass -> [missing] (J1)
  • num::u128::test_isolate_least_significant_one: pass -> [missing] (J1)
  • once_lock::clone: pass -> [missing] (J1)
  • pin::pin_const: pass -> [missing] (J1)
  • slice::test_iter_is_empty: pass -> [missing] (J1)
  • slice::test_swap: pass -> [missing] (J1)
  • str::slice_index::rangeinclusive_exhausted::index_fail: pass -> [missing] (J1)
  • str::slice_index::rangeinclusive_len::pass: pass -> [missing] (J1)
  • string::test_replace_range_out_of_bounds: pass -> [missing] (J1)
  • vec::test_zero_sized_capacity: pass -> [missing] (J1)
  • vec_deque::test_param_taggypar: pass -> [missing] (J1)
  • vec_deque::test_resize_keeps_reserved_space_from_item: pass -> [missing] (J1)
  • os::unix::net::tests::test_unix_datagram_peek_from: pass -> [missing] (J2)
  • pattern::starts_with_str: pass -> [missing] (J2)
  • slice::rotate_huge_by9199_bytes: pass -> [missing] (J2)
  • sort::tests::stable::correct_1k_descending: pass -> [missing] (J2)
  • sort::tests::unstable::deterministic_cell_i32_random_d2: pass -> [missing] (J2)
  • str::bench_contains_equal: pass -> [missing] (J2)
  • str::char_count::ru_small::case02_iter_increment: pass -> [missing] (J2)
  • str::char_indicesator: pass -> [missing] (J2)
  • str::ends_with_ascii_char::short_pile_of_poo: pass -> [missing] (J2)
  • vec::bench_dedup_all_100: pass -> [missing] (J2)
  • vec::bench_dedup_none_10000: pass -> [missing] (J2)
  • backtrace_rs::symbolize::gimli::parse_running_mmaps::check_maps_entry_parsing_32bit: pass -> [missing] (J3)
  • sys::pal::unix::kernel_copy::tests::dont_splice_pipes_from_files: pass -> [missing] (J3)
  • sys::pal::unix::linux::pidfd::tests::test_command_pidfd: pass -> [missing] (J3)
  • sort::tests::unstable::correct_1k_ascending: ignore -> [missing] (J4)
  • sort::tests::unstable::correct_i32_random_z1_03: ignore -> [missing] (J4)
  • sort::tests::unstable::correct_u128_descending: ignore -> [missing] (J4)
  • sort::tests::unstable::panic_retain_orig_set_string_random: ignore -> [missing] (J4)

(and 16662 additional test diffs)

Additionally, 16874 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 99e7c15e81385b38a8186b51edc4577d5d7b5bdd --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. x86_64-apple-2: 1101.1s -> 4449.9s (304.1%)
  2. test-various: 2302.4s -> 4210.9s (82.9%)
  3. x86_64-gnu-aux: 3840.9s -> 5629.2s (46.6%)
  4. dist-arm-linux-musl: 9324.0s -> 5639.5s (-39.5%)
  5. dist-x86_64-illumos: 8744.1s -> 5731.7s (-34.5%)
  6. x86_64-apple-1: 5416.6s -> 6953.5s (28.4%)
  7. dist-apple-various: 7996.2s -> 5854.3s (-26.8%)
  8. dist-x86_64-musl: 9870.1s -> 7400.1s (-25.0%)
  9. aarch64-apple: 5332.6s -> 4157.9s (-22.0%)
  10. dist-x86_64-freebsd: 6096.8s -> 4849.4s (-20.5%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (99e7c15): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

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

Max RSS (memory usage)

Results (secondary -0.1%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.3% [0.6%, 2.7%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.9% [-2.3%, -0.6%] 8
All ❌✅ (primary) - - 0

Cycles

Results (primary -1.0%, secondary -0.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
1.0% [1.0%, 1.0%] 1
Regressions ❌
(secondary)
0.9% [0.6%, 1.1%] 4
Improvements ✅
(primary)
-3.0% [-3.0%, -3.0%] 1
Improvements ✅
(secondary)
-1.0% [-1.9%, -0.5%] 6
All ❌✅ (primary) -1.0% [-3.0%, 1.0%] 2

Binary size

Results (primary -1.1%, secondary 0.6%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

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

Bootstrap: 775.166s -> 774.28s (-0.11%)
Artifact size: 372.23 MiB -> 372.24 MiB (0.00%)

@GuillaumeGomez GuillaumeGomez deleted the rollup-vicg807 branch June 2, 2025 19:29
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request Jun 3, 2025
…llaumeGomez

Rollup of 9 pull requests

Successful merges:

 - rust-lang#140370 (Improve diagnostics for usage of qualified paths within tuple struct exprs/pats)
 - rust-lang#141224 (terminology: allocated object → allocation)
 - rust-lang#141622 (implement `va_arg` for `powerpc`)
 - rust-lang#141666 (source_span_for_markdown_range: fix utf8 violation)
 - rust-lang#141789 (Exclude `CARGO_HOME` from `generate-copyright` in-tree determination)
 - rust-lang#141823 (Drive-by refactor: use `OnceCell` for the reverse region SCC graph)
 - rust-lang#141834 (Add unimplemented `current_dll_path()` for WASI)
 - rust-lang#141846 (Fix TLS model on bootstrap for cygwin)
 - rust-lang#141852 (resolve if-let-chain FIXME on bootstrap)

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) 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.