Enforce coroutine-closure layouts are identical by compiler-errors · Pull Request #121122 · rust-lang/rust
rustbot
added
S-waiting-on-review
labels
Feb 15, 2024
bors
added
S-waiting-on-bors
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.labels
Feb 15, 2024bors added a commit to rust-lang-ci/rust that referenced this pull request
Feb 15, 2024…iaskrgr Rollup of 10 pull requests Successful merges: - rust-lang#111106 (Add known issue of let binding to format_args doc) - rust-lang#118749 (Make contributing to windows bindings easier) - rust-lang#120982 (Add APIs for fetching foreign items ) - rust-lang#121022 (rustdoc: cross-crate re-exports: correctly render late-bound params in source order even if early-bound params are present) - rust-lang#121082 (Clarified docs on non-atomic oprations on owned/mut refs to atomics) - rust-lang#121084 (Make sure `tcx.create_def` also depends on the forever red node, instead of just `tcx.at(span).create_def`) - rust-lang#121098 (Remove unnecessary else block from `thread_local!` expanded code) - rust-lang#121105 (Do not report overflow errors on ConstArgHasType goals) - rust-lang#121116 (Reinstate some delayed bugs.) - rust-lang#121122 (Enforce coroutine-closure layouts are identical) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Feb 15, 2024Rollup merge of rust-lang#121122 - compiler-errors:identical-layouts, r=oli-obk Enforce coroutine-closure layouts are identical Enforce that for an async closure, the by-ref and by-move coroutine layouts are identical. This is just a sanity check to make sure that optimizations aren't doing anything fishy. r? oli-obk
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request
Mar 27, 2024…ol, r=oli-obk Make `TyCtxt::coroutine_layout` take coroutine's kind parameter For coroutines that come from coroutine-closures (i.e. async closures), we may have two kinds of bodies stored in the coroutine; one that takes the closure's captures by reference, and one that takes the captures by move. These currently have identical layouts, but if we do any optimization for these layouts that are related to the upvars, then they will diverge -- e.g. rust-lang#120168 (comment). This PR relaxes the assertion I added in rust-lang#121122, and instead make the `TyCtxt::coroutine_layout` method take the `coroutine_kind_ty` argument from the coroutine, which will allow us to differentiate these by-move and by-ref bodies.
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Mar 27, 2024Rollup merge of rust-lang#123021 - compiler-errors:coroutine-layout-lol, r=oli-obk Make `TyCtxt::coroutine_layout` take coroutine's kind parameter For coroutines that come from coroutine-closures (i.e. async closures), we may have two kinds of bodies stored in the coroutine; one that takes the closure's captures by reference, and one that takes the captures by move. These currently have identical layouts, but if we do any optimization for these layouts that are related to the upvars, then they will diverge -- e.g. rust-lang#120168 (comment). This PR relaxes the assertion I added in rust-lang#121122, and instead make the `TyCtxt::coroutine_layout` method take the `coroutine_kind_ty` argument from the coroutine, which will allow us to differentiate these by-move and by-ref bodies.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters