Skip to content

Rollup of 9 pull requests #143667

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 31 commits into from
Jul 9, 2025
Merged

Rollup of 9 pull requests #143667

merged 31 commits into from
Jul 9, 2025

Conversation

tgross35
Copy link
Contributor

@tgross35 tgross35 commented Jul 9, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

xizheyin and others added 30 commits July 3, 2025 23:11
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
`conv-bits-runtime-const` gates `f16` and `f128` tests behind `x86_64`,
but this isn't always accurate. In particular, x86 `MinGW` has an ABI
bug [1] which means things work when linked to our Rust math libraries
but don't work with host libraries. RUST-143405 slightly adjusts which
targets we provide `f16` and `f128` symbols for and effectively removes
MinGW from that list, meaning host libraries start getting linked,
meaning `f16` and `f128` tests start to fail.

Account for this by changing the gates in one such test to
`cfg(target_has_reliable_{f16,f128})` which is the way we should be
gating all behavior related to the types going forward.

`rustfmt` also seems to have formatted the macros which is fine.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054
The endianness can change the test expectation for the enum check.
This change is fixing the failing tests on big endian by changing
the tests so that they behave the same as on little endian.
The loop that writes the keys in each section of bootstrap.toml
accumulates all the commented lines before a given key and emits them
when it reaches the next key in the section.  This ends up dropping
lines accumulated for the last key
That step should be responsible for building the tool, not performing side-effects. Also, only copy the tool to the `self-contained` directory, not to the `rustlib/<target>/bin` directory.
move common code to a helper function

Co-Authored-By: Kobzol <berykubik@gmail.com>
Hopefully this will make tracing calls be optimized out properly when tracing is disabled
…r, r=jieyouxu

Simplify LLVM bitcode linker in bootstrap and add tests for it

This PR tries to simplify the `LlvmBitcodeLinker` step a little bit, and add tests for it. It also adds tests for `LldWrapper`.

r? `@jieyouxu`
Remove false label when `self` resolve failure does not relate to macro

Fixes rust-lang#143134

In the first commit, I did some code-clean, moving `suggest*` to `suggestions/` dir.
In the second, commit, I added ui test.
In the third, I change the code, and present the test result.

r? compiler
Respect endianness correctly in CheckEnums test suite

The endianness can change the test expectation for the enum check. This change is fixing the failing tests on big endian by changing the tests so that they behave the same as on little endian.

Fixes rust-lang#143332.
clippy fix: indentation

Fixes indentation of markdown comments.
…eyouxu

tests: Use `cfg_target_has_reliable_f16_f128` in `conv-bits-runtime-const`

`conv-bits-runtime-const` gates `f16` and `f128` tests behind `x86_64`, but this isn't always accurate. In particular, x86 `MinGW` has an ABI bug [1] which means things work when linked to our Rust math libraries but don't work with host libraries. RUST-143405 slightly adjusts which targets we provide `f16` and `f128` symbols for and effectively removes MinGW from that list, meaning host libraries start getting linked, meaning `f16` and `f128` tests start to fail.

Account for this by changing the gates in one such test to `cfg(target_has_reliable_{f16,f128})` which is the way we should be gating all behavior related to the types going forward.

`rustfmt` also seems to have formatted the macros which is fine.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054
…e, r=davidtwco

Don't call `predicates_of` on a dummy obligation cause's body id

See the test for a brief explanation

Fixes rust-lang#143481.
…=RalfJung

Fix perf regression caused by tracing

See rust-lang#143334, this is another alternative that may be worth benchmarking as suggested in rust-lang#143334 (comment).

r? ``@RalfJung``
…vidtwco

More carefully consider span context when suggesting remove `&mut`

Use `find_ancestor_inside` to compute a relative span that is macro-aware, rather than falling back to using BytePos arithmetic which is wrong for `&mut`.

Fixes rust-lang#143523
…y, r=Kobzol

configure.py: Write last key in each section

The loop that writes the keys in each section of bootstrap.toml accumulates all the commented lines before a given key and emits them when it reaches the next key in the section.  This ends up dropping lines accumulated for the last key

Fixes rust-lang#143605
@rustbot rustbot added 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 Jul 9, 2025
@tgross35
Copy link
Contributor Author

tgross35 commented Jul 9, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jul 9, 2025

📌 Commit 45b63a4 has been approved by tgross35

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 Jul 9, 2025
@bors
Copy link
Collaborator

bors commented Jul 9, 2025

⌛ Testing commit 45b63a4 with merge 558d253...

@bors
Copy link
Collaborator

bors commented Jul 9, 2025

☀️ Test successful - checks-actions
Approved by: tgross35
Pushing 558d253 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jul 9, 2025
@bors bors merged commit 558d253 into rust-lang:master Jul 9, 2025
12 checks passed
@rustbot rustbot added this to the 1.90.0 milestone Jul 9, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#142357 Simplify LLVM bitcode linker in bootstrap and add tests for… a598d53e0b592192541d7537e3fbee42e3f4a6d9 (link)
#143177 Remove false label when self resolve failure does not rel… 1307440602906c9146239db7e09d120147879cd1 (link)
#143339 Respect endianness correctly in CheckEnums test suite 0bd1ef5e19644a3419266ff626a5cdda13857c5a (link)
#143426 clippy fix: indentation 40cc2e7b5320487ceda8cf7896aa1bbc1f332a35 (link)
#143475 tests: Use cfg_target_has_reliable_f16_f128 in `conv-bits… 6bacf2e0742ccc15f884dd303321ff28293ad82b (link)
#143499 Don't call predicates_of on a dummy obligation cause's bo… 42636724b3293c513e4e73002b14810acaa283df (link)
#143520 Fix perf regression caused by tracing 45ab0f5bc2356809ba944ce9c376f6bf64b5955c (link)
#143532 More carefully consider span context when suggesting remove… 71da656be0290603b62a69bc5976767a0deaf5c9 (link)
#143606 configure.py: Write last key in each section 82d49ac88bab4ada46ecb201038d3ccdbdb1a86f (link)

previous master: d350797b7e

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 Jul 9, 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 d350797 (parent) -> 558d253 (this PR)

Test differences

Show 196 test diffs

Stage 0

  • core::builder::tests::snapshot::build_compiler_tools: [missing] -> pass (J2)
  • core::builder::tests::snapshot::build_compiler_tools_cross: [missing] -> pass (J2)

Stage 1

  • [ui] tests/ui/mir/enum/convert_non_enum_break.rs: pass -> [missing] (J1)
  • [ui] tests/ui/mir/enum/convert_non_enum_niche_break.rs: pass -> [missing] (J1)
  • [ui] tests/ui/mir/enum/convert_non_enum_niche_ok.rs: pass -> [missing] (J1)
  • [ui] tests/ui/mir/enum/convert_non_enum_ok.rs: pass -> [missing] (J1)
  • [ui] tests/ui/mir/enum/convert_non_integer_break.rs: [missing] -> pass (J1)
  • [ui] tests/ui/mir/enum/convert_non_integer_niche_break.rs: [missing] -> pass (J1)
  • [ui] tests/ui/mir/enum/convert_non_integer_niche_ok.rs: [missing] -> pass (J1)
  • [ui] tests/ui/mir/enum/convert_non_integer_ok.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/false-self-in-macro-issue-143134.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/suggest-builder-fn.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/suggest-constructor-cycle-error.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/suggest-import-without-clobbering-attrs.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/suggest-path-for-tuple-struct.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/suggest-path-instead-of-mod-dot-item.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/suggestions/suggest-builder-fn.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/suggestions/suggest-constructor-cycle-error.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/suggestions/suggest-import-without-clobbering-attrs.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/suggestions/suggest-path-for-tuple-struct.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/suggestions/suggest-path-instead-of-mod-dot-item.rs: [missing] -> pass (J1)
  • [ui] tests/ui/suggestions/suggest-remove-refs-6.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/error-reporting/ambiguity-in-dropck-err-reporting.rs: [missing] -> pass (J1)

Stage 2

  • [ui] tests/ui/mir/enum/convert_non_enum_break.rs: pass -> [missing] (J0)
  • [ui] tests/ui/mir/enum/convert_non_enum_niche_break.rs: pass -> [missing] (J0)
  • [ui] tests/ui/mir/enum/convert_non_enum_niche_ok.rs: pass -> [missing] (J0)
  • [ui] tests/ui/mir/enum/convert_non_enum_ok.rs: pass -> [missing] (J0)
  • [ui] tests/ui/mir/enum/convert_non_integer_break.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mir/enum/convert_non_integer_niche_break.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mir/enum/convert_non_integer_niche_ok.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mir/enum/convert_non_integer_ok.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/false-self-in-macro-issue-143134.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/suggest-builder-fn.rs: pass -> [missing] (J0)
  • [ui] tests/ui/resolve/suggest-constructor-cycle-error.rs: pass -> [missing] (J0)
  • [ui] tests/ui/resolve/suggest-import-without-clobbering-attrs.rs: pass -> [missing] (J0)
  • [ui] tests/ui/resolve/suggest-path-for-tuple-struct.rs: pass -> [missing] (J0)
  • [ui] tests/ui/resolve/suggest-path-instead-of-mod-dot-item.rs: pass -> [missing] (J0)
  • [ui] tests/ui/resolve/suggestions/suggest-builder-fn.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/suggestions/suggest-constructor-cycle-error.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/suggestions/suggest-import-without-clobbering-attrs.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/suggestions/suggest-path-for-tuple-struct.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/suggestions/suggest-path-instead-of-mod-dot-item.rs: [missing] -> pass (J0)
  • [ui] tests/ui/suggestions/suggest-remove-refs-6.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/error-reporting/ambiguity-in-dropck-err-reporting.rs: [missing] -> pass (J0)

Additionally, 152 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 558d25371fe1cc3d907ebcfc4e12d3c27acbe2b7 --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-apple-various: 6233.3s -> 8204.4s (31.6%)
  2. dist-x86_64-apple: 9286.7s -> 6877.3s (-25.9%)
  3. x86_64-apple-2: 5646.5s -> 4570.7s (-19.1%)
  4. pr-check-2: 2662.0s -> 2219.6s (-16.6%)
  5. x86_64-gnu-llvm-19-1: 3647.2s -> 3310.1s (-9.2%)
  6. dist-aarch64-apple: 5443.3s -> 5870.8s (7.9%)
  7. x86_64-gnu: 7273.3s -> 6761.5s (-7.0%)
  8. i686-gnu-2: 5928.7s -> 5531.3s (-6.7%)
  9. x86_64-rust-for-linux: 2788.3s -> 2605.2s (-6.6%)
  10. dist-x86_64-netbsd: 4902.1s -> 4584.6s (-6.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 (558d253): 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.1% [0.0%, 0.3%] 20
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.8% [-1.1%, -0.0%] 8
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 1.4%, secondary 1.5%)

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

mean range count
Regressions ❌
(primary)
1.4% [1.4%, 1.4%] 1
Regressions ❌
(secondary)
3.6% [1.3%, 5.7%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.9% [-2.2%, -1.5%] 3
All ❌✅ (primary) 1.4% [1.4%, 1.4%] 1

Cycles

Results (secondary -1.7%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.0% [2.6%, 3.8%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.8% [-10.6%, -2.2%] 6
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 465.667s -> 466.487s (0.18%)
Artifact size: 372.26 MiB -> 374.51 MiB (0.60%)

@rustbot rustbot added the perf-regression Performance regression. label Jul 9, 2025
@Kobzol
Copy link
Member

Kobzol commented Jul 9, 2025

The small regression comes from #143520. It is a small win for the CTFE machinery though, and the regressions are only on secondary benchmarks, and are rather small. Marking as triaged.

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Jul 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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.