so that it is the only pass responsible for elaboration, instead of
splitting this responsibility between the `StateTransform` and
`ElaborateBoxDerefs`.
Check projection types before inlining MIR
Fixes https://github.com/rust-lang/rust/issues/100550
I'm very unhappy with this solution, having to duplicate MIR validation code, but at least it removes the ICE.
r? `@compiler-errors`
A resume place is evaluated and assigned to only after a yield
terminator resumes. Ensure that locals used when evaluating the
resume place are live across the yield.
Elide superfluous storage markers
Follow the existing strategy of omitting the storage markers for temporaries
introduced for internal usage when elaborating derefs and deref projections.
Those temporaries are simple scalars which are used immediately after being
defined and never have their address taken. There is no benefit from storage
markers from either liveness analysis or code generation perspective.
Sync rustc_codegen_cranelift
The main highlights this time are support for parallel compilation of codegen units (by me) and improved windows support (by ``@afonso360)`` In addition ``@afonso360`` added abi-checker to cg_clif's CI. This has already catched an abi compatibility issue with AArch64. The fix has landed on Cranelift's main branch, but doesn't yet have a release. ``@uweigand`` also submitted a couple of PR's that will are prerequisites for supporting IBM's s390x architecture.
r? ``@ghost``
``@rustbot`` label +A-codegen +A-cranelift +T-compiler
rustdoc: ayu code color selector more specific
According to https://github.com/rust-lang/rust/pull/100960#issuecomment-1225970579, this selector is only really intended to apply to item info. However, it's so broad that it's hard to tell when it deliberately applies vs where it accidentally applies.
let-else: break out to one scope higher for let-else
```@est31``` This PR follows up with #99518 which is to break out to the last remainder scope. It breaks to the out-most `region_scope` of the block if the first statement is a `let-else`.
Rollup of 15 pull requests
Successful merges:
- #99993 (linker: Update some outdated comments)
- #100220 (Properly forward `ByRefSized::fold` to the inner iterator)
- #100826 (sugg: take into count the debug formatting)
- #100855 (Extra documentation for new formatting feature)
- #100888 (Coherence negative impls implied bounds)
- #100901 (Make some methods private)
- #100906 (Suggest alternatives when trying to mutate a `HashMap`/`BTreeMap` via indexing)
- #100912 (Diagnose missing includes in run-make tests)
- #100919 (Use par_body_owners for liveness)
- #100922 (Rewrite error index generator to greatly reduce the size of the pages)
- #100926 (Update README.md)
- #100930 (Use `--userns=keep-id` when "docker" is really podman)
- #100938 (rustdoc: remove unused CSS rule)
- #100940 (Do not suggest adding a bound to a opaque type)
- #100945 (Add a missing test case for impl generic mismatch)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup