Skip to content

Rollup of 8 pull requests - #163300

Merged
rust-bors[bot] merged 17 commits into
rust-lang:mainfrom
jhpratt:rollup-YeWyO3j
Sep 25, 2026
Merged

rust-bors[bot] merged 17 commits into
rust-lang:mainfrom
jhpratt:rollup-YeWyO3j

Conversation

@jhpratt

@jhpratt jhpratt commented Sep 25, 2026

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

sjwang05 and others added 17 commits June 7, 2026 01:51
… tidy

We ship the entire library workspace in the rust-src component, so even
if the standard library doesn't depend on a crate, having it in the
library workspace still increases the amount of storage a rust install
takes. And for cg_clif I personally want to keep deps to a minimum even
those not for the backend itself.
Some pauth tests have ended up failing since they were not run in CI.
Make them run and make them pass.
Some were wholly unused, others were unused other than as dev-deps but
specified as regular dependencies. This cleans things up a little bit.

I used an LLM to smoke out the candidates for this cleanup, but the rest
was done by hand.
…r=Enselic

tests: Run more pauth tests in CI and make them pass

Some pauth tests have ended up failing since they were not run in CI.
Make them run and make them pass.

This is a follow up to: rust-lang#161183
add a leak check test

it's jank

r? types
cleanup: clean up more dependencies that are unused

Some were wholly unused, others were unused other than as dev-deps but specified as regular dependencies. This cleans things up a little bit.

I used an LLM to smoke out the candidates for this cleanup, but the rest was done by hand.
…out, r=Kivooeo

Avoid computing layout of enums with non-int discriminants

Currently, enums with explicit non-int discriminants, such as `1..=10`, correctly error with E0308 and E0732 during typeck. However, `layout_of` never sees this error, since `AdtDef::discriminants()` falls back to a default value when `eval_explicit_discr` returns an `Err`, causing the layout of the enum to be broken. If this enum then appears in a promoted, we expect CTFE to fail; however, since `layout_of` technically "succeeded," just with a broken layout, our enum isn't in `allowed_in_infallible`, so CTFE expects it to succeed. CTFE failing then causes us to ICE with `"interpret const eval failure of...which is not in required_consts"`.

This PR modifies `layout_of_uncached` in `compiler/rustc_ty_utils/src/layout.rs` to typeck all explicit enum discriminants before computing layout, and early-returns with a `LayoutError::ReferncesError` if eval fails. CTFE then sees this `LayoutError` as `allowed_in_infallible`, avoiding the ICE.

fixes rust-lang#138660
Do not increase recursion depth for coroutine witness and rigid opaques when proving auto traits

With deeply nested async calls, we can easily overflow evaluating auto trait goals as shown in rust-lang#159228.
Users have no choice but increase the per-crate `recursion_limit` which is bad for compilation time/RSS. And downstream users may encounter the same warnings when calling library async functions.

We mitigate that by no longer increasing recursion depth for coroutine witness and rigid opaques when proving auto traits. See the comments for why it's okay to do so.
This fix actually makes the required depth a third of what it was before for async calls.

I've checked locally that `bors` and `triagebot` no longer have FCWs.

r? lcnr
fix and test `va_arg` on `f128` on `x86`

tracking issue: rust-lang#116909

Or well, maybe not fix but clarify. There are no actual behavioral changes, but I do think the new code is more correct.

The clang logic for `va_arg` is kind of (weirdly) complicated. `EmitVAArg` looks simple, but the complexity is hiding in the "messing with TypeInfo" bit:

https://github.com/llvm/llvm-project/blob/0e2786dcb5b28f754a1144c27e708d1c42676af9/clang/lib/CodeGen/Targets/X86.cpp#L1080-L1101

```c++
RValue X86_32ABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
                                QualType Ty, AggValueSlot Slot) const {

  auto TypeInfo = getContext().getTypeInfoInChars(Ty);

  CCState State(*const_cast<CGFunctionInfo *>(CGF.CurFnInfo));
  ABIArgInfo AI = classifyArgumentType(Ty, State, /*ArgIndex*/ 0);
  // Empty records are ignored for parameter passing purposes.
  if (AI.isIgnore())
    return Slot.asRValue();

  // x86-32 changes the alignment of certain arguments on the stack.
  //
  // Just messing with TypeInfo like this works because we never pass
  // anything indirectly.
  TypeInfo.Align = CharUnits::fromQuantity(
                getTypeStackAlignInBytes(Ty, TypeInfo.Align.getQuantity()));

  return emitVoidPtrVAArg(CGF, VAListAddr, Ty, /*Indirect*/ false, TypeInfo,
                          CharUnits::fromQuantity(4),
                          /*AllowHigherAlign*/ true, Slot);
}
```

Relevant for us is that it makes an exception for `f128`, for which a higher align (16, instead of the slot size of 4) is used.

https://github.com/llvm/llvm-project/blob/0e2786dcb5b28f754a1144c27e708d1c42676af9/clang/lib/CodeGen/Targets/X86.cpp#L575-L583

```c++
unsigned X86_32ABIInfo::getTypeStackAlignInBytes(QualType Ty,
                                                 unsigned Align) const {
  // Otherwise, if the alignment is less than or equal to the minimum ABI
  // alignment, just use the default; the backend will handle this.
  if (Align <= MinABIStackAlignInBytes)
    return 0; // Use default alignment.

  if (Ty->isFloat128Type())
    return 16;
```

Our code does not have this `TypeInfo` idea, and it's not correct in general to just use `AllowHigherAlign::Yes`. But using it only for `f128` works. We don't need to consider more complicated cases like structs containing `f128` fields.

The code here used `is_like_windows` before. I'm not exactly sure why, the behavior is the same for all accepted types, except now `f128`. But windows does not have that type, so its (c-variadic) ABI is just an LLVM fabrication. The x86 code does not seem to make a distinction based on the ABI, so having the same behavior across targets seems best to me.

`va_arg` to fetch an `i128` argument is currently broken in clang. `i128` on the target is apparently a clang extension anyway, so kind of low priority. `f128` I only fixed somewhat recently in llvm/llvm-project#218017.

r? beetrees or @tgross35

(this may cause a small conflict with rust-lang#163021)
Add regression test for hang on mutually recursive trait impls

Fixes rust-lang#143018,  it no longer hangs, it hung on nightlies through 2026-08-08 and terminates with an error from 2026-08-11
…clubby789

Check the entire library and cg_clif workspaces for permitted deps in tidy

We ship the entire library workspace in the rust-src component, so even if the standard library doesn't depend on a crate, having it in the library workspace still increases the amount of storage a rust install takes. And for cg_clif I personally want to keep deps to a minimum even those not for the backend itself.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Sep 25, 2026
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool 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-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Sep 25, 2026
@jhpratt

jhpratt commented Sep 25, 2026

Copy link
Copy Markdown
Member Author

@bors r+ p=5 force

@rust-bors

rust-bors Bot commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 6c8f6bd has been approved by jhpratt

It is now in the queue for this repository.

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

This comment has been minimized.

@rust-bors rust-bors Bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Sep 25, 2026
@rust-bors

rust-bors Bot commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: jhpratt
Duration: 3h 9m 19s
Pushing 4e701dc to main...

@rust-bors
rust-bors Bot merged commit 4e701dc into rust-lang:main Sep 25, 2026
14 checks passed
@rustbot rustbot added this to the 1.100.0 milestone Sep 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor
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 7618355 (parent) -> 4e701dc (this PR)

Test differences

Show 109 test diffs

Stage 1

  • [ui (polonius)] tests/ui/enum-discriminant/non-int-discriminant-promoted-ice-138660.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/enum-discriminant/size-of-discriminant-no-cycle.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/higher-ranked/leak-check/constraint-from-nested-projection.rs#next: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/higher-ranked/leak-check/constraint-from-nested-projection.rs#old: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/statics/crt-static-pauthtest.rs: ignore (only executed when the ABI is pauthtest) -> pass (J0)
  • [ui (polonius)] tests/ui/target_modifiers/incompatible_pauth.rs#error_generated: ignore (only executed when the ABI is pauthtest) -> pass (J0)
  • [ui (polonius)] tests/ui/target_modifiers/incompatible_pauth.rs#ok: ignore (only executed when the ABI is pauthtest) -> pass (J0)
  • [ui (polonius)] tests/ui/target_modifiers/incompatible_pauth.rs#ok_last_one_wins: ignore (only executed when the ABI is pauthtest) -> pass (J0)
  • [ui (polonius)] tests/ui/target_modifiers/incompatible_pauth.rs#ok_reverse_order: ignore (only executed when the ABI is pauthtest) -> pass (J0)
  • [ui (polonius)] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#current: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#next: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/traits/next-solver/overflow/dont-lower-depth-for-witness-and-rigid-opaque.rs: [missing] -> pass (J0)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#ALL: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DEFAULT: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_AUTH_TRAPS: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_CALLS: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_INDIRCT_GOTOS: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_INTRINSICS: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_JUMP: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_RETURNS: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_TYPEINFO: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_VT_PTR_ADDR: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_VT_PTR_TYPE: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#NONE: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O0_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O0_PAUTH-ELF-GOT: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_PAUTH-ELF-GOT: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O0_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O3_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH-ADDR-DISC: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH-NO-INIT-FINI: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH-ADDR-DISC: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH-NO-INIT-FINI: ignore (only executed when the ABI is pauthtest) -> pass (J1)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> ignore (ignored when the LLVM version 21.1.2 is older than 22.0.0) (J3)
  • [assembly] tests/assembly-llvm/pauth-basic.rs#aarch64_unknown_linux_pauthtest: ignore (only executed when the ABI is pauthtest) -> pass (J4)
  • [ui] tests/ui/enum-discriminant/non-int-discriminant-promoted-ice-138660.rs: [missing] -> pass (J6)
  • [ui] tests/ui/enum-discriminant/size-of-discriminant-no-cycle.rs: [missing] -> pass (J6)
  • [ui] tests/ui/higher-ranked/leak-check/constraint-from-nested-projection.rs#next: [missing] -> pass (J6)
  • [ui] tests/ui/higher-ranked/leak-check/constraint-from-nested-projection.rs#old: [missing] -> pass (J6)
  • [ui] tests/ui/statics/crt-static-pauthtest.rs: ignore (only executed when the ABI is pauthtest) -> pass (J6)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok: ignore (only executed when the ABI is pauthtest) -> pass (J6)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok_reverse_order: ignore (only executed when the ABI is pauthtest) -> pass (J6)
  • [ui] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#current: [missing] -> pass (J6)
  • [ui] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#next: [missing] -> pass (J6)
  • [ui] tests/ui/traits/next-solver/overflow/dont-lower-depth-for-witness-and-rigid-opaque.rs: [missing] -> pass (J6)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J8)

Stage 2

  • [assembly] tests/assembly-llvm/pauth-basic.rs#aarch64_unknown_linux_pauthtest: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#ALL: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DEFAULT: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_AUTH_TRAPS: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_CALLS: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_INDIRCT_GOTOS: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_INTRINSICS: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_JUMP: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_RETURNS: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_TYPEINFO: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_VT_PTR_ADDR: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#DISABLE_VT_PTR_TYPE: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-attr-cli-flags.rs#NONE: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O0_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c.rs#O3_PAUTH-ELF-GOT: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O0_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O3_NO_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-weak-global.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH-ADDR-DISC: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O0_PAUTH-NO-INIT-FINI: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH-ADDR-DISC: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [codegen] tests/codegen-llvm/pauth/pauth-init-fini.rs#O3_PAUTH-NO-INIT-FINI: ignore (only executed when the ABI is pauthtest) -> pass (J2)
  • [crashes] tests/crashes/138660.rs: pass -> [missing] (J5)
  • [ui] tests/ui/statics/crt-static-pauthtest.rs: ignore (only executed when the ABI is pauthtest) -> pass (J7)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#error_generated: ignore (only executed when the ABI is pauthtest) -> pass (J7)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok_last_one_wins: ignore (only executed when the ABI is pauthtest) -> pass (J7)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok_reverse_order: ignore (only executed when the ABI is pauthtest) -> pass (J7)
  • [ui] tests/ui/statics/crt-static-pauthtest.rs: ignore (only executed when the ABI is pauthtest) -> ignore (backend gcc cannot build for target aarch64-unknown-linux-pauthtest) (J9)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#error_generated: ignore (only executed when the ABI is pauthtest) -> ignore (gcc backend is marked as ignore) (J9)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok: ignore (only executed when the ABI is pauthtest) -> ignore (gcc backend is marked as ignore) (J9)
  • [ui] tests/ui/target_modifiers/incompatible_pauth.rs#ok_last_one_wins: ignore (only executed when the ABI is pauthtest) -> ignore (gcc backend is marked as ignore) (J9)
  • [ui] tests/ui/enum-discriminant/non-int-discriminant-promoted-ice-138660.rs: [missing] -> pass (J10)
  • [ui] tests/ui/enum-discriminant/size-of-discriminant-no-cycle.rs: [missing] -> pass (J10)
  • [ui] tests/ui/higher-ranked/leak-check/constraint-from-nested-projection.rs#old: [missing] -> pass (J10)
  • [ui] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#current: [missing] -> pass (J10)
  • [ui] tests/ui/traits/mutually-recursive-impls-hang-143018.rs#next: [missing] -> pass (J10)
  • [ui] tests/ui/traits/next-solver/overflow/dont-lower-depth-for-witness-and-rigid-opaque.rs: [missing] -> pass (J10)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> pass (J11)
  • [codegen] tests/codegen-llvm/pauth/pauth-extern-c-direct-indirect-call.rs#O3_PAUTH: ignore (only executed when the ABI is pauthtest) -> ignore (ignored when the LLVM version 21.1.2 is older than 22.0.0) (J12)

(and 7 additional test diffs)

Additionally, 2 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 4e701dc6ba63a40c908a173df269a55e1fd6297e --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. dist-x86_64-solaris: 1h 7m -> 1h 47m (+59.2%)
  2. dist-sparcv9-solaris: 1h 5m -> 1h 40m (+54.0%)
  3. dist-x86_64-musl: 1h 32m -> 2h 21m (+52.3%)
  4. dist-s390x-linux: 1h 3m -> 1h 30m (+41.9%)
  5. test-i686-msvc: 2h 25m -> 1h 26m (-40.7%)
  6. dist-i686-mingw: 56m 8s -> 33m 25s (-40.5%)
  7. dist-x86_64-netbsd: 1h 7m -> 1h 33m (+38.9%)
  8. dist-various-2: 36m 21s -> 49m 46s (+36.9%)
  9. test-armhf-gnu: 1h 30m -> 58m 5s (-36.0%)
  10. test-x86_64-gnu-llvm-21-1: 1h 1m -> 40m 32s (-33.8%)
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
Copy Markdown
Collaborator

Finished benchmarking commit (4e701dc): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -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
Regressions ❌
(secondary)
0.3% [0.2%, 0.3%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -2.1%)

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.1% [-2.1%, -2.1%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.1% [-2.1%, -2.1%] 1

Cycles

Results (primary 0.5%, secondary 1.4%)

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

mean range count
Regressions ❌
(primary)
2.2% [2.2%, 2.3%] 2
Regressions ❌
(secondary)
3.0% [2.1%, 5.8%] 4
Improvements ✅
(primary)
-2.8% [-2.8%, -2.8%] 1
Improvements ✅
(secondary)
-1.9% [-3.3%, -0.5%] 2
All ❌✅ (primary) 0.5% [-2.8%, 2.3%] 3

Binary size

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

Bootstrap: 492.862s -> 488.984s (-0.79%)
Artifact size: 406.26 MiB -> 406.31 MiB (0.01%)

@rust-bors

rust-bors Bot commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#162228 tests: Run more pauth tests in CI and make them pass 78d920d239d90b0f3cab9fde5c79891b03cae07e
(link)
#163271 add a leak check test e92643bb23ab1aae007977168a7cb811764dacd0
(link)
#163282 cleanup: clean up more dependencies that are unused 80a753ac86e2319e4715a474ab95ea29415d268c
(link)
#157562 Avoid computing layout of enums with non-int discriminants 4ac299f9537e1826bb2283943c5f73ccea4764cc
(link)
#162275 Do not increase recursion depth for coroutine witness and r… c7715e20ee0aafbbcce328e4384d49a6d00a836a
(link)
#163037 fix and test va_arg on f128 on x86 7b53237b209a475fead25530b560c6937bf1458a
(link)
#163114 Add regression test for hang on mutually recursive trait im… 8a325b163a166454969d40efb168adab412fbf47
(link)
#163255 Check the entire library and cg_clif workspaces for permitt… 92365ff4000d4a037d322b85ef7893703dc24bdb
(link)

parent commit: 7618355fd7

In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: @rust-timer triage $SHA $SHA $SHA..., or run @rust-timer triage all to benchmark all rollup members.

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. A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup 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-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.