Skip to content

Rollup of 12 pull requests#157149

Merged
rust-bors[bot] merged 40 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-JIG4HGr
May 30, 2026
Merged

Rollup of 12 pull requests#157149
rust-bors[bot] merged 40 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-JIG4HGr

Conversation

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

ajasad25 and others added 30 commits May 22, 2026 15:32
And reduce visibility of functions only used within the crate.
cg_clif needs this as it passes inline assembly to an external assembler,
producing a separate object file. Currently it emits multiple
CompiledModules, but this is not compatible with using the codegen
coordinator of cg_ssa.
…guous_assoc_item`

Moreover, in `probe_single_bound_for_assoc_item` unconditionally return
an `Err(_)` if there's more than a single bound (aka ambiguity) instead
of returning the first bound in some cases. This avoids triggering a
debug assertion later on ("not enough bound vars"). See the added test
for details.
The type's been stable for over 6 weeks now, so let's use it!  It's better for cases like this one where it's stored in a data structure.

Probably won't be materially faster, but does make the variant slightly smaller and lets some more things be `Copy`.
…n()` syntax registrations of it, they are never used
…_traits, r=cjgillot

Remove `will_cache_on_disk_for_key_fn`

Refactors `QueryVtables` and removes `will_cache_on_disk_for_key_fn` as unnecessary indirection.

Based and blocked on rust-lang#154576.

Expecting perf improvements.
Misc improvements to coroutine transform code

Several quality-of-life improvements:

A dedicated mir-opt directory for coroutines, there are very few tests right now, but more should come.

A dedicated pretty-printer for coroutine layout. In particular, it does not rely on `Ty as Debug` which has unstable output. This is important for async fns which capture opaque types, in particular other async fns.

A drive-by simplification.

Last, I change how the coroutine entry block is inserted. The current implementation shifts everything by 1. I prefer swapping with the current entry, which makes debugging and MIR diffing much easier.
@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 cf39dc6 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 12 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
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors treeopen

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 30, 2026

Tree is now open for merging.

@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: 00df16e (00df16efb6255756ec32ef5c52502735108b36cc, parent: 6eda7419e71fdbc1185ed5be7e6bff1a474ab5cd)

@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 12m 47s
Pushing a857d06 to main...

@rust-bors rust-bors Bot merged commit a857d06 into rust-lang:main May 30, 2026
14 checks passed
@rustbot rustbot added this to the 1.98.0 milestone May 30, 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 6eda741 (parent) -> a857d06 (this PR)

Test differences

Show 98 test diffs

Stage 1

  • [crashes] tests/crashes/139387.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/async_closure_fake_read_for_by_move.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/async_closure_shims.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/async_drop_live_dead.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/async_drop_mir_pin.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/building/async_await.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/building/coroutine.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/coroutine/async_await.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/async_closure_fake_read_for_by_move.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/async_closure_shims.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/async_drop_live_dead.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/async_drop_mir_pin.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/coroutine.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_drop_cleanup.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_storage_dead_unwind.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_tiny.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/coroutine_drop_cleanup.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/coroutine_storage_dead_unwind.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/coroutine_tiny.rs: pass -> [missing] (J0)
  • [mir-opt] tests/mir-opt/inline/inline_coroutine_body.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/inline_coroutine_body.rs: pass -> [missing] (J0)
  • [ui] tests/ui/associated-type-bounds/return-type-notation/path-ambiguous-late-bound-vars.rs: [missing] -> pass (J0)
  • [ui] tests/ui/async-await/async-fn/closure-arg-type-mismatch.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-deref-pattern-assignment.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrowck-for-loop-deref-pattern-assignment.rs: pass -> [missing] (J0)

Stage 2

  • [mir-opt] tests/mir-opt/async_closure_fake_read_for_by_move.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/async_closure_shims.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/async_drop_live_dead.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/async_drop_mir_pin.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/building/async_await.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/building/coroutine.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/coroutine/async_await.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/async_closure_fake_read_for_by_move.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/async_closure_shims.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/async_drop_live_dead.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/async_drop_mir_pin.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/coroutine.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_drop_cleanup.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_storage_dead_unwind.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine/coroutine_tiny.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/coroutine_drop_cleanup.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/coroutine_storage_dead_unwind.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/coroutine_tiny.rs: pass -> [missing] (J1)
  • [mir-opt] tests/mir-opt/inline/inline_coroutine_body.rs: [missing] -> pass (J1)
  • [mir-opt] tests/mir-opt/inline_coroutine_body.rs: pass -> [missing] (J1)
  • [ui] tests/ui/associated-type-bounds/return-type-notation/path-ambiguous-late-bound-vars.rs: [missing] -> pass (J2)
  • [ui] tests/ui/async-await/async-fn/closure-arg-type-mismatch.rs: [missing] -> pass (J3)
  • [ui] tests/ui/borrowck/borrowck-deref-pattern-assignment.rs: [missing] -> pass (J3)
  • [ui] tests/ui/borrowck/borrowck-for-loop-deref-pattern-assignment.rs: pass -> [missing] (J3)
  • [crashes] tests/crashes/139387.rs: ignore (ignored if rustc wasn't built with debug assertions) -> [missing] (J4)
  • [ui] tests/ui/associated-type-bounds/return-type-notation/path-ambiguous-late-bound-vars.rs: [missing] -> ignore (ignored if rustc wasn't built with debug assertions) (J4)
  • [crashes] tests/crashes/139387.rs: pass -> [missing] (J5)

Additionally, 46 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 a857d063c754e3b09a74baf67d319cea3c0e0264 --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-loongarch64-linux: 1h 14m -> 1h 53m (+51.5%)
  2. x86_64-msvc-ext3: 1h 24m -> 1h 57m (+37.9%)
  3. dist-various-1: 57m 33s -> 1h 16m (+33.2%)
  4. optional-x86_64-gnu-parallel-frontend: 2h 6m -> 2h 47m (+32.8%)
  5. x86_64-gnu-nopt: 1h 51m -> 2h 26m (+31.6%)
  6. x86_64-msvc-2: 1h 27m -> 1h 53m (+29.3%)
  7. dist-armv7-linux: 1h 14m -> 1h 34m (+26.6%)
  8. x86_64-msvc-ext2: 1h 28m -> 1h 50m (+25.4%)
  9. dist-powerpc64-linux-gnu: 1h 14m -> 1h 31m (+22.4%)
  10. dist-aarch64-apple: 1h 43m -> 2h 4m (+20.3%)
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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#153497 Use trait_object_dummy_self more & heavily fix+update rel… f9e0f128f66c4c533f53655b87c290af77c62424 (link)
#154591 Remove will_cache_on_disk_for_key_fn 1db3db9c1f8187f0b9d02ed2bd2165a777e3f91a (link)
#155638 Fix tupled closure signature in AsyncFn arg mismatch diag… dd09ae782a01b04f847edfeeb26b8c47ba23282a (link)
#156672 Misc improvements to coroutine transform code a5d8fe7d27789db7b58cd7c203b4bf5d7fad5290 (link)
#156826 style: Clarify nullary call and () no-break rule applies … 4bb28cd0d0cef1301424c7018dca78a702516d0f (link)
#157004 Remove unused functions in value_analysis.rs a0a1d61c651722a2032803b2040d16c2a3f79273 (link)
#157027 HIR ty lowering: Move some things into submodules cf3f390c3aab801a2642e214d4b36b8895343430 (link)
#157032 Fixed more &x ->&mut x suggestions 5529a899be5bc21d3a0ba4d2b3c6e57675428ffa (link)
#157033 Note irrefutable while let in loop type errors eaf8441554f0b268bfba55d6f3f81eb73a9ba43c (link)
#157051 Allow two object files for a single CGU in CompiledModule 8c61f8b5e5fa9a1526855e873c19554fd72b3a19 (link)
#157100 Some more per owner things 2c7190bed6a64f27c3ae6bd145eaec324ba81abf (link)
#157139 compiler: ops::RangeInclusiverange::RangeInclusive 6134b2d6519d617ed5406220668fd522ae3a2afd (link)

previous master: 6eda7419e7

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

@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (a857d06): comparison URL.

Overall result: ✅ improvements - 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
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.1%] 1
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 1.1%, secondary 2.3%)

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

mean range count
Regressions ❌
(primary)
1.1% [1.0%, 1.1%] 2
Regressions ❌
(secondary)
4.0% [0.8%, 9.7%] 12
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.5% [-9.4%, -1.3%] 3
All ❌✅ (primary) 1.1% [1.0%, 1.1%] 2

Cycles

Results (secondary 4.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)
4.4% [2.2%, 8.8%] 12
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

Results (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
Regressions ❌
(secondary)
0.0% [0.0%, 0.1%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.0% [-0.0%, -0.0%] 2
All ❌✅ (primary) - - 0

Bootstrap: 518.609s -> 523.807s (1.00%)
Artifact size: 400.72 MiB -> 400.75 MiB (0.01%)

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-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-style Relevant to the style team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.