Skip to content

Conversation

samueltardieu
Copy link
Member

@samueltardieu samueltardieu commented Aug 26, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Enselic and others added 21 commits August 22, 2025 17:27
To reduce risk of regressing on generating debuginfo e.g. in the form of
ICE:s. This will also ensure that future ui tests support different
debuginfo levels.

When I looked at run time for different CI jobs, **x86_64-gnu-debug**
was far from the bottle neck, so it should be fine to make it perform
more work.
This issue has been fixed by
<rust-lang#145763>.
It no longer fails with an error locally.
This commit implements more conformant, more comprehensive RISC-V ELF
flags handling when generating certain object files directly from rustc.

*   Use "zca" instead of "c"
    The "Zca" extension (a subset of "C") is the minimal configuration
    for compressed instructions to set `EF_RISCV_RVC` flag.
*   Set TSO flag from "ztso"
    The "Ztso" extension denotes that the program depends on the RVTSO
    (Total Store Ordering) memory consistency model, which is stronger
    than the standard RVWMO (Weak Memory Ordering) consistency model and
    on ELF targets, we need to set `EF_RISCV_TSO` flag.
Turn "any heap allocators" into "any heap allocator".
…r=davidtwco

ci: Begin running ui tests with `rust.debuginfo-level-tests=1`

To reduce risk of regressing on generating debuginfo e.g. in the form of ICE:s. This will also ensure that future ui tests work with different debuginfo levels. See rust-lang#61117.

When I looked at run time for different CI jobs, **x86_64-gnu-debug** was far from the bottleneck, so it should be fine to make it perform more work.

A handful of tests are failing so we need to force debuginfo=0 on those for now.

We'll start small with debuginfo=1. We'll step up to debuginfo=2 once most (all?) tests can handle debuginfo=1. There are more failures with debuginfo=2 than with debuginfo=1.
…bzol

Improve dist for gnullvm hosts

LLVM tools cross-compilation has been fixed by rust-lang#145763 and LLVM downloading from CI no longer causes build error, so let's enable them both.
…szelmann

Use attribute name in message for "outer attr used as inner attr" errors
…objs, r=WaffleLapkin

rustc_codegen_ssa: More comprehensive RISC-V ELF flags

This change implements more conformant, more comprehensive RISC-V ELF flags handling when generating certain object files directly from rustc.

*   Use `"zca"` instead of `"c"`
    The "Zca" extension (a subset of "C") is the minimal configuration for compressed instructions to set `EF_RISCV_RVC` flag.
*   Set TSO flag from `"ztso"`
    The "Ztso" extension denotes that the program depends on the RVTSO (Total Store Ordering) memory consistency model, which is stronger than the standard RVWMO (Weak Memory Ordering) consistency model and on ELF targets, we need to set `EF_RISCV_TSO` flag.
Enable building/disting standard library in stage 0

After the stage0 redesign, building a stage0 library no longer is a thing, because the stage0 compiler normally cannot build libstd anymore. However, there are valid use-cases for having the ability to quickly cross-compile libstd for different targets, when the stage0 compiler is e.g. a stable released version, and you want to cross-compile libstd from the same sources of that compiler.

This PR allows that, as long as you set `build.local-rebuild = true`, which promises bootstrap that the stage0 compiler actually comes from in-tree sources, and can thus compile libstd.

The change needed to enable this is very minimal, so I think that it is worth it to allow this use-case to work.

Fixes: rust-lang#145587
Fixes: rust-lang#145859
Related issue: rust-lang#94781

r? `@jieyouxu`
…ackends, r=Kobzol

bootstrap: Don't panic if codegen-backends is set to empty

It fixes a bug we encountered in our last GCC backend sync: https://github.com/rust-lang/rustc_codegen_gcc/actions/runs/17214525469/job/48834700055?pr=753#step:18:595

In short, we used to have in `bootstrap.toml` an empty `rust.codegen-backends = []`, triggering the `unwrap`. We fixed it in rust-lang/rustc_codegen_gcc@ad99858.

r? `@Kobzol`
…2, r=jieyouxu

platform-support: Fix LoongArch32 host column
…ign-item, r=bjorn3

add a flag to codegen fn attrs for foreign items

r? `@ghost`

refiled to rerun CI
…ardieu

Fix typo in comment of library/alloc/src/raw_vec/mod.rs

Turn "any heap allocators" into "any heap allocator".

Shoutout to [Let's Read OSS](https://github.com/stoeckmann/lets-read-oss).
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc 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-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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 Aug 26, 2025
@rustbot rustbot added the rollup A PR which is a rollup label Aug 26, 2025
@samueltardieu
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Aug 26, 2025

📌 Commit cefa84a has been approved by samueltardieu

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 26, 2025
@samueltardieu
Copy link
Member Author

(4 "never" PR are waiting in the queue, but this PR includes 2 "maybe" PR older than the first "never")

@bors
Copy link
Collaborator

bors commented Aug 26, 2025

⌛ Testing commit cefa84a with merge 176d8db...

@bors
Copy link
Collaborator

bors commented Aug 27, 2025

☀️ Test successful - checks-actions
Approved by: samueltardieu
Pushing 176d8db to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Aug 27, 2025
@bors bors merged commit 176d8db into rust-lang:master Aug 27, 2025
11 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Aug 27, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#144499 ci: Begin running ui tests with `rust.debuginfo-level-tests… e73dad34e3caa7b143646739c24cf923b10459da (link)
#145790 Improve dist for gnullvm hosts f2dfff09558c4c2d99a2d31d03b102eb8386ba18 (link)
#145792 Use attribute name in message for "outer attr used as inner… 09b5fbdbd4f689a1d7c5fc334b91040aa645e055 (link)
#145840 rustc_codegen_ssa: More comprehensive RISC-V ELF flags 4bce276862fddf2142d41ab9ae68bea6b94da2cb (link)
#145876 Enable building/disting standard library in stage 0 6114bef52805f433a2b41d84237a155735db22cf (link)
#145887 bootstrap: Don't panic if codegen-backends is set to empty 954553876bb7dd767c86518d3d06807c21410a98 (link)
#145888 platform-support: Fix LoongArch32 host column fcf7c8e8da5935588ca8b30007fbd0a1240e67a5 (link)
#145892 add a flag to codegen fn attrs for foreign items 069989def96a5c7fd3a820edfe39b4aff53e8283 (link)
#145901 Fix typo in comment of library/alloc/src/raw_vec/mod.rs d1ee565d3d3ac91878f9d7dd0285cefa3603ecfb (link)

previous master: 160e7623e8

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

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 160e762 (parent) -> 176d8db (this PR)

Test differences

Show 20000 test diffs

Stage 2

  • [ui] tests/ui/associated-types/associated-types-eq-3.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-types/associated-types-no-suitable-supertrait.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-types/impl-wf-cycle-3.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-types/impl-wf-cycle-5.rs: [missing] -> pass (J0)
  • [ui] tests/ui/associated-types/issue-54108.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.rs: [missing] -> pass (J0)
  • [ui] tests/ui/async-await/issue-68523.rs: [missing] -> pass (J0)
  • [ui] tests/ui/blind/blind-item-block-item-shadow.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-assign-to-andmut-in-borrowed-loc.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-issue-2657-1.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-lend-flow-loop.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-loan-blocks-move-cc.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-storage-dead.rs: [missing] -> pass (J0)
  • [ui] tests/ui/check-cfg/exhaustive-names.rs: [missing] -> pass (J0)
  • [ui] tests/ui/check-cfg/unexpected-cfg-name.rs: [missing] -> pass (J0)
  • [ui] tests/ui/closures/coerce-unsafe-to-closure.rs: [missing] -> pass (J0)
  • [ui] tests/ui/codegen/rvalue-mut-ref-box-drop.rs: [missing] -> pass (J0)
  • [ui] tests/ui/codemap_tests/tab_2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/coercion/mut-trait-coercion-8248.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/early/trivial-const-arg-macro-res-error.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/integer-literal-generic-arg-in-where-clause.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/unexpected-fn-item-in-array.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/type-dependent/issue-61936.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/type-dependent/issue-71382.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const_prop/unsized-local-ice.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/const-eval-fail-too-big.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/const-eval/index_out_of_bounds.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/precise-drop-allow-const-fn-unstable.rs#not_allow: [missing] -> pass (J0)
  • [ui] tests/ui/consts/refs-to-cell-in-final.rs: [missing] -> pass (J0)
  • [ui] tests/ui/coroutine/async-coroutine-issue-67158.rs: [missing] -> pass (J0)
  • [ui] tests/ui/diagnostic-width/E0271.rs#unicode: [missing] -> pass (J0)
  • [ui] tests/ui/drop/explicit-drop-call-error.rs: [missing] -> pass (J0)
  • [ui] tests/ui/drop/issue-103107.rs: [missing] -> pass (J0)
  • [ui] tests/ui/dst/issue-90528-unsizing-suggestion-3.rs: [missing] -> pass (J0)
  • [ui] tests/ui/empty/no-link.rs: [missing] -> pass (J0)
  • [ui] tests/ui/enum-discriminant/wrapping_niche.rs: [missing] -> pass (J0)
  • [ui] tests/ui/error-codes/E0433.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/env-flag.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-abi-avr-interrupt.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-abi-x86-interrupt.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-offset-of-enum.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/defining-use-uncaptured-non-universal-region-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/impl-trait/issues/issue-70877.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/issue-4865-1.rs: [missing] -> pass (J0)
  • [ui] tests/ui/intrinsics/reify-intrinsic.rs: [missing] -> pass (J0)
  • [ui] tests/ui/invalid-self-argument/bare-fn.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-49934-errors.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-7364.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lifetimes/mismatched-lifetime-syntaxes-details/static.rs: [missing] -> pass (J0)
  • [ui] tests/ui/linkage-attr/linkage1.rs: [missing] -> pass (J0)
  • [ui] tests/ui/linkage-attr/raw-dylib/windows/link-ordinal-too-large.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lint/forbid-group-group-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-int.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lint/non-local-defs/exhaustive-trait.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lint/rfc-2383-lint-reason/fulfilled_expectation_late_lints.rs: [missing] -> pass (J0)
  • [ui] tests/ui/liveness/liveness-move-in-loop.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/issue-112342-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/macro-delimiter-significance.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/macro-path.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/macro-rules-as-derive-or-attr-issue-132928.rs: [missing] -> pass (J0)
  • [ui] tests/ui/methods/inherent-methods-same-name.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mir/mir_dynamic_drops_2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/moves/move-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/moves/no-capture-arc.rs: [missing] -> pass (J0)
  • [ui] tests/ui/never_type/span-bug-issue-121445.rs: [missing] -> pass (J0)
  • [ui] tests/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs: [missing] -> pass (J0)
  • [ui] tests/ui/panic-runtime/unwind-interleaved.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parallel-rustc/export-symbols-deadlock-issue-118205-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/attribute/attr-before-eof.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/issues/issue-84148-1.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/underscore-suffix-for-string.rs: [missing] -> pass (J0)
  • [ui] tests/ui/precondition-checks/copy.rs#null_dst: [missing] -> pass (J0)
  • [ui] tests/ui/privacy/issue-11593.rs: [missing] -> pass (J0)
  • [ui] tests/ui/proc-macro/proc-macro-attributes.rs: [missing] -> pass (J0)
  • [ui] tests/ui/process/issue-16272.rs: [missing] -> pass (J0)
  • [ui] tests/ui/regions/regions-close-over-type-parameter-successfully.rs: [missing] -> pass (J0)
  • [ui] tests/ui/regions/regions-outlives-projection-trait-def.rs: [missing] -> pass (J0)
  • [ui] tests/ui/rfcs/rfc-2008-non-exhaustive/variants_same_crate.rs: [missing] -> pass (J0)
  • [ui] tests/ui/rfcs/rfc-2396-target_feature-11/issue-108655-inline-always-closure.rs: [missing] -> pass (J0)
  • [ui] tests/ui/rfcs/rfc-2497-if-let-chains/no-double-assigments.rs: [missing] -> pass (J0)
  • [ui] tests/ui/rust-2021/generic-type-collision.rs: [missing] -> pass (J0)
  • [ui] tests/ui/self/arbitrary-self-from-method-substs-ice.rs: [missing] -> pass (J0)
  • [ui] tests/ui/self/arbitrary_self_types_raw_pointer_struct.rs: [missing] -> pass (J0)
  • [ui] tests/ui/self/self-ctor-nongeneric.rs: [missing] -> pass (J0)
  • [ui] tests/ui/simd/type-generic-monomorphisation-empty.rs: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/issue-35376.rs: [missing] -> pass (J0)
  • [ui] tests/ui/structs-enums/struct-rec/issue-84611.rs: [missing] -> pass (J0)
  • [ui] tests/ui/suggestions/incorrect-variant-literal.rs: [missing] -> pass (J0)
  • [ui] tests/ui/symbol-names/issue-60925.rs#legacy: [missing] -> pass (J0)
  • [ui] tests/ui/trait-bounds/mismatch-fn-trait.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/default-method-body-is-const-with-staged-api.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/non-const-op-in-closure-in-const.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/index-trait-multiple-impls-15734.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/type-alias-enum-variants/enum-variant-priority-higher-than-other-inherent.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/gather-locals-twice.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/issue-87872-missing-inaccessible-field-literal.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/typeck-unsafe-always-share.rs: [missing] -> pass (J0)
  • [ui] tests/ui/unsized/issue-71659.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/where-clauses/cfg_attribute.rs#a: [missing] -> pass (J0)
  • [ui] tests/ui/where-clauses/unsupported_attribute.rs: [missing] -> pass (J0)

(and 19894 additional test diffs)

Additionally, 6 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 176d8dbce6a7a7a4541d1c980d4a85dfb76ce1f1 --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. pr-check-1: 1350.3s -> 1723.9s (27.7%)
  2. x86_64-gnu-llvm-19: 3583.8s -> 2847.5s (-20.5%)
  3. x86_64-gnu-debug: 6679.2s -> 8020.5s (20.1%)
  4. x86_64-rust-for-linux: 2539.0s -> 3032.7s (19.4%)
  5. dist-aarch64-apple: 7339.8s -> 5986.9s (-18.4%)
  6. aarch64-gnu-llvm-19-2: 2257.6s -> 2570.4s (13.9%)
  7. i686-gnu-1: 7531.0s -> 8454.2s (12.3%)
  8. i686-gnu-nopt-1: 7439.7s -> 8197.4s (10.2%)
  9. x86_64-gnu-miri: 4564.7s -> 4998.1s (9.5%)
  10. x86_64-gnu-distcheck: 5172.6s -> 5659.7s (9.4%)
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 (176d8db): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

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
Regressions ❌
(secondary)
0.4% [0.4%, 0.4%] 2
Improvements ✅
(primary)
-0.3% [-0.5%, -0.2%] 10
Improvements ✅
(secondary)
-0.3% [-0.3%, -0.3%] 1
All ❌✅ (primary) -0.3% [-0.5%, -0.2%] 10

Max RSS (memory usage)

Results (primary -1.5%, secondary -0.4%)

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.3% [0.8%, 4.8%] 8
Improvements ✅
(primary)
-1.5% [-1.5%, -1.5%] 1
Improvements ✅
(secondary)
-3.2% [-3.9%, -2.1%] 8
All ❌✅ (primary) -1.5% [-1.5%, -1.5%] 1

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

Binary size

Results (primary 0.0%, secondary 0.7%)

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

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

Bootstrap: 466.645s -> 467.709s (0.23%)
Artifact size: 391.15 MiB -> 391.16 MiB (0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. 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-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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.