Skip to content

Rollup of 8 pull requests#157161

Merged
rust-bors[bot] merged 23 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-3MNUPwu
May 30, 2026
Merged

Rollup of 8 pull requests#157161
rust-bors[bot] merged 23 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-3MNUPwu

Conversation

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

saethlin and others added 23 commits May 24, 2026 00:47
* rustdoc: correctly propagate cfgs for glob reexports
* address review feedback, add a comment explaining the test
* empty commit to trigger CI
* empty commit to trigger CI
* fix sorting of features in tests
* assert contents of index.html
…degen Dockerfile for the core tests"

This reverts commit fd0c5f3.
The correct fix was made in PR 157007.
Make hint::cold_path #[cold] so that it works even if the MIR inliner can't inline it

This fixes rust-lang#156859 because the branch weight metadata is actually keyed off seeing a `#[cold]` function call in an arm. We don't need the intrinsic, any `#[cold]` function will do. So if the hint wrapper itself is made `#[cold]`, we will still get the desired effect, and LLVM will clean up the call to an empty function when optimizations are enabled.
Correct and document semantics of `yield` terminator

The current implementation of dataflow for the yield terminator confuses the `drop` target with unwinding. Which is wrong, in particular when implementing async drops.

r? @RalfJung
…acro-expansion, r=Urgau

[rustdoc] Fix foreign items macro expansion

Fixes rust-lang#156486.

The ICE was coming from ast pretty printing not handling `...` (C var args). To handle that, I added a `CVarArgs` variants for all `PatKind` enums.

Second part (and second commits) was to correctly handle foreign items in rustdoc.

r? @Urgau
…zelmann

Revert "drop derive helpers during ast lowering"

Fixes rust-lang#157107
By undoing commit rust-lang@29e9273 from rust-lang#153540

cc @scrabsha @jdonszelmann
…ofiling-switch, r=folkertdev

Rename `-Zdebuginfo-for-profiling` switch

The PR was raised from this [comment](rust-lang#155942 (comment)) from another stabilization PR: rust-lang#155942

I renamed `-Zdebug-info-for-profiling` into `-Zdebuginfo-for-profiling` before stabilization to be consistent with other `debuginfo`-related Rustc flags like `-C split-debuginfo` and `-C debuginfo`.

One important note is that Clang has the [flag](https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fdebug-info-for-profiling) under `-fdebug-info-for-profiling`. I decided that consistency with other Rustc flags is more important here than to be consistent with Clang.

r? folkertdev (as was proposed [here](rust-lang#155942 (comment)))
…mbination, r=GuillaumeGomez

rustdoc: correctly propagate cfgs for glob reexports

This fixes some cases of rustdoc not surfacing the correct required feature combination when using `#[cfg(feature = ...)]` in combination with glob reexports.

See the example cases included as tests.

Here's the generated HTML for those test cases before this change:
<img width="150" height="115" alt="Screenshot_20260528_201140" src="https://github.com/user-attachments/assets/8d611f88-7149-49f6-8ee0-530c049ea858" />

and after:
<img width="225" height="125" alt="Screenshot_20260528_201236" src="https://github.com/user-attachments/assets/85cc07c0-9a9a-455f-8ada-69d44d645516" />

My understanding is that this was basically an off-by-one type of oversight.
We need to update `is_inline` before calling `get_all_import_attributes` to immediately reflect that the outermost import we're processing shall indeed be considered as inline, as it's a glob.
Otherwise, we will end up calling `add_without_unwanted_attributes` with `is_inline == false` on the "intermediate" re-export, which will skip propagating its `cfg`s.

I believe this fixes rust-lang#96166, even though the description there is not super clear on the exact test case they used (there's a snippet but the author says their code is actually different).

Refs rust-lang#43781
@rustbot label +F-doc_cfg
@rustbot r? @GuillaumeGomez
…ng2, r=mejrs

Rewrite the `#[repr]` attribute parser

The `#[repr]` attribute parser was one of the first attribute parsers we made, and didn't use a lot of the awesome infra we have nowadays yet, so in preparation for a new approach I'm trying for rust-lang#156569 I decided to clean it up.

This PR should have no observable effect other than improved diagnostic messages.

r? @mejrs
…llaumeGomez

Revert workaround used to select the gcc codegen in the coretests CI

Now that rust-lang#157007 is merged, this is not needed anymore.

I made a test (see [here](rust-lang#157154 (comment))) to make sure this still uses the GCC codegen.

r? @Kobzol
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label May 30, 2026
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustdoc-json Area: Rustdoc JSON backend 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-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 30, 2026
@rustbot rustbot added 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels May 30, 2026
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never p=5

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple,x86_64-mingw-1,i686-msvc-2

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 30, 2026

📌 Commit 62cc806 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors Bot 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 May 30, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 30, 2026
Rollup of 8 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple
try-job: x86_64-mingw-1
try-job: i686-msvc-2
@rust-bors

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 30, 2026

☀️ Try build successful (CI)
Build commit: af992e2 (af992e29bd4727966f268639e61e34e3bcd93568, parent: a857d063c754e3b09a74baf67d319cea3c0e0264)

@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 May 30, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 30, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 13m 49s
Pushing f8a08b6 to main...

@rust-bors rust-bors Bot merged commit f8a08b6 into rust-lang:main May 30, 2026
14 checks passed
@rustbot rustbot added this to the 1.98.0 milestone May 30, 2026
@rust-timer
Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#156863 Make hint::cold_path #[cold] so that it works even if the M… 95a8ac295f6b33e8acd96e8ccbc30e5776a78649 (link)
#156875 Correct and document semantics of yield terminator bb4f119f9416e89bbb2d9e8e3693a4156621a957 (link)
#156887 Rename -Zdebuginfo-for-profiling switch 8fd83065405a30b12df77afb7c5953b5023f5c66 (link)
#157039 rustdoc: correctly propagate cfgs for glob reexports 15107da3370401db460d317d5f15f3a541206ad4 (link)
#157115 [rustdoc] Fix foreign items macro expansion 6962ba7db706ea35925f68e23c087fe417fe64cb (link)
#157125 Rewrite the #[repr] attribute parser e5f1fe2c4cab1d4f23eb53ed8755fc15913c8d30 (link)
#157150 Revert "drop derive helpers during ast lowering" cf0bbe6d16b860eca434406255e0e5f0d1d65f10 (link)
#157154 Revert workaround used to select the gcc codegen in the cor… 7ce6d9837c9ee19e40d3febc6a3ea925099a0b92 (link)

previous master: c58275e036

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

@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 c58275e (parent) -> f8a08b6 (this PR)

Test differences

Show 46 test diffs

Stage 1

  • [codegen] tests/codegen-llvm/debuginfo-for-profiling.rs#DEBUGINFO: [missing] -> pass (J1)
  • [codegen] tests/codegen-llvm/debuginfo-for-profiling.rs#DEFAULT: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEBUGINFO-AARCH64: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEBUGINFO-X86: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEFAULT-AARCH64: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEFAULT-X86: [missing] -> pass (J2)
  • [codegen] tests/codegen-llvm/hint/cold_path-target_feature.rs: [missing] -> pass (J2)
  • [rustdoc-html] tests/rustdoc-html/macro-expansion/c-var-args.rs: [missing] -> pass (J2)
  • [rustdoc-html] tests/rustdoc-html/reexport/glob-reexport-feature-combination.rs: [missing] -> pass (J2)
  • [rustdoc-json] tests/rustdoc-json/attrs/derive_helper.rs: [missing] -> pass (J2)
  • [codegen] tests/codegen-llvm/hint/cold_path-target_feature.rs: [missing] -> ignore (only executed when the architecture is x86_64) (J5)

Stage 2

  • [rustdoc-html] tests/rustdoc-html/macro-expansion/c-var-args.rs: [missing] -> pass (J0)
  • [rustdoc-html] tests/rustdoc-html/reexport/glob-reexport-feature-combination.rs: [missing] -> pass (J0)
  • [rustdoc-json] tests/rustdoc-json/attrs/derive_helper.rs: [missing] -> pass (J0)
  • [codegen] tests/codegen-llvm/hint/cold_path-target_feature.rs: [missing] -> ignore (only executed when the architecture is x86_64) (J3)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEBUGINFO-AARCH64: [missing] -> pass (J4)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEBUGINFO-X86: [missing] -> pass (J4)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEFAULT-AARCH64: [missing] -> pass (J4)
  • [assembly] tests/assembly-llvm/debuginfo-for-profiling.rs#DEFAULT-X86: [missing] -> pass (J4)
  • [codegen] tests/codegen-llvm/debuginfo-for-profiling.rs#DEBUGINFO: [missing] -> pass (J4)
  • [codegen] tests/codegen-llvm/debuginfo-for-profiling.rs#DEFAULT: [missing] -> pass (J4)
  • [codegen] tests/codegen-llvm/hint/cold_path-target_feature.rs: [missing] -> pass (J6)

Additionally, 24 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 f8a08b688cbe60acc386ed1fbd1b7cbaaf5576b1 --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-gnu-gcc-core-tests: 7m 43s -> 14m 37s (+89.1%)
  2. dist-i686-linux: 1h 6m -> 1h 48m (+63.5%)
  3. x86_64-msvc-ext1: 1h 41m -> 2h 8m (+27.5%)
  4. dist-arm-linux-gnueabi: 1h 10m -> 1h 28m (+24.8%)
  5. pr-check-1: 27m 4s -> 33m 46s (+24.7%)
  6. aarch64-apple: 2h 27m -> 3h 4m (+24.7%)
  7. i686-msvc-2: 2h 11m -> 1h 39m (-24.4%)
  8. x86_64-gnu-llvm-21-2: 1h 34m -> 1h 14m (-21.2%)
  9. dist-x86_64-mingw: 2h 34m -> 2h 3m (-20.1%)
  10. i686-gnu-nopt-2: 2h 12m -> 1h 47m (-19.1%)
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 (f8a08b6): comparison URL.

Overall result: ❌ regressions - please read:

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.2% [0.1%, 0.6%] 15
Regressions ❌
(secondary)
0.5% [0.1%, 2.4%] 18
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.0% [-0.0%, -0.0%] 1
All ❌✅ (primary) 0.2% [0.1%, 0.6%] 15

Max RSS (memory usage)

Results (primary 4.1%, secondary -2.8%)

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

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

Cycles

Results (secondary 4.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)
4.1% [3.6%, 4.6%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

Results (primary 0.0%, secondary 0.0%)

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

Bootstrap: 515.367s -> 511.354s (-0.78%)
Artifact size: 400.82 MiB -> 400.80 MiB (-0.00%)

@Kobzol
Copy link
Copy Markdown
Member

Kobzol commented May 31, 2026

Regression caused by #156875.

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label May 31, 2026
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-rustdoc-json Area: Rustdoc JSON backend 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. perf-regression-triaged The performance regression has been triaged. rollup A PR which is a rollup 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants