Rollup of 10 pull requests - #162853
Open
Zalathar wants to merge 41 commits into
Open
Rollup of 10 pull requests#162853Zalathar wants to merge 41 commits into
Zalathar wants to merge 41 commits into
Conversation
It makes sense to put the top-level item first, before the use tree within the item. And it makes sense to have a single function-level comment explaining this rather than inline comments at the definition and every call site.
`is_public` is not relevant here.
changes in later commits need this case out of the way
Originally introduced in the Enzyme build and coppied around since, but without effect for a few years by now.
Replace the opaque representation of `PassMode::Cast` with a structured `CastTarget` type that exposes the register layout used by the platform ABI. Add `Uniform`, `Reg`, and `RegKind` types so tools can inspect how arguments are mapped to registers. Add `CastTarget::size()` and `Uniform::reg_count()` helpers. Add a test covering cast on args, returns, mixed register kinds, multiple arguments, and register exhaustion causing stack spill.
Expose argument ABI attributes through a structured type instead of opaque debug strings. ArgAttributes provides accessors for the extension mode (zero/sign-extend) and pointee alignment, which are needed by tools doing their own code generation. This removes all uses of Opaque from the abi module.
BREAKING CHANGE: `ValueAbi` is renamed to `ValueRepr` and the `LayoutShape::abi` field is renamed to `LayoutShape::value_repr`. The old name was misleading: this type does not describe how values are passed in function calls (that is `PassMode`), it is a hint for how backends should represent values (as scalars, vectors, or aggregates). This aligns with the internal rename from `Abi` to `BackendRepr`. Also fixes several doc comments that incorrectly claimed layout fields define calling behavior.
For !needs_drop types, this should allow decoding directly into the arena-allocated slice. For needs_drop types, the arena already collects into a SmallVec<T>, so this avoids an intermediate conversion from Vec<T> to SmallVec<T>.
These impls all match the impl provided by the into-arena macro.
The existing `codec` module contains a sea of impls that is hard to navigate. Extracting the RefDecodable parts into another file should make it easier to keep track of what is where. This commit tries to move everything as-is, so that `git diff --color-moved` can verify that nothing was changed. Subsequent commits will modify the moved code.
- Added and expanded comments - Renamed and clarified the impl-decodable macro - Sorted the macro list of Decodable impls
This commit replaces the existing boilerplate impls and the existing macro with a less confusing macro. Some unused impls have been removed.
It's simpler to make the `decode` method generic over `impl TyDecoder`.
Currently a `NodeId` is stored in a pair with each nested use tree. This commit changes the pair to a named type `UseTreeAndId`. In most places this doesn't make much difference but in the AST visitor it gets rid of several weird special cases.
Cleanups related to RefDecodable - Earlier experiments: rust-lang#162287 --- This PR is a series of cleanups to the RefDecodable trait and its associated impls. Details in individual commits. There should be no change to compiler output. r? nnethercote (or compiler)
…excrichton wasm: fix ABI for enums with integer layout and ZST fields fixes rust-lang#121408 follow-up to rust-lang#162806 Clang is doing something that is rather annoying for us to emulate: like with unions it looks at the structure of the type, not the representation. But in rust an `enum` that is represented as an integer is not considered an `aggregate` at all, yet may still need to be passed as one if it has any (even ZST) fields. r? alexcrichton cc @hanna-kruppe
…ai410 [rustc_public] Enhance PassMode API This change is split into two different commits: 1. [Expand PassMode::Cast with CastTarget](rust-lang@5823ef2): This is basically a 1:1 mapping from the internal compiler representation. 2. [Replace Opaque with ArgAttributes in PassMode](rust-lang@7540529): Expose the non-LLVM specific ArgAttributes information. Leave the internal representation private for now in case we do want to expand its implementation later.
…obzol Offload cmake cleanups r? kobzol Split out of rust-lang#161565, which requires (minor) LLVM changes. These cleanups are valuable on their own already, and shouldn't be blocked. So let's land it, before it get's stale with all the refactoring going on ^^ Copied the disclaimer: I used an llm to implement the fixes, since I still don't like cmake. I confirm that on a high-level these are the right fixes as far as I can tell, and I reviewed/refactored it.
…enkov Add regression test for malformed RPITIT bound ICE with the new solver Fixes rust-lang#156100
Member
Author
|
Rollup of everything. @bors r+ rollup=never p=5 |
Contributor
Member
|
Trying commonly failed jobs |
This comment has been minimized.
This comment has been minimized.
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 16, 2026
Rollup of 10 pull requests try-job: dist-various-1 try-job: test-various try-job: test-x86_64-gnu-aux try-job: test-x86_64-gnu-llvm-21-3 try-job: test-x86_64-msvc-1 try-job: test-aarch64-apple-1 try-job: test-aarch64-apple-2 try-job: test-x86_64-mingw-1 try-job: test-i686-msvc try-job: test-armhf-gnu
Contributor
Member
|
??? |
Contributor
|
⌛ Testing commit 6f81ec1 with merge 92801ed... Workflow: https://github.com/rust-lang/rust/actions/runs/35108417732 |
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 16, 2026
Rollup of 10 pull requests Successful merges: - #156216 (implement const Iterator for Range) - #160697 (rustc: Tweak the effect of `--jobs` on frontend parallelism) - #162748 (Enable LLVM Thin LTO for LoongArch64) - #162769 (Yeet the `DeepRegionResolver` (earlier called `OpportunisticRegionResolver`)) - #162794 (Simplify `ast::UseTreeKind`) - #162800 (Cleanups related to RefDecodable) - #162826 (wasm: fix ABI for enums with integer layout and ZST fields) - #159359 ([rustc_public] Enhance PassMode API) - #162196 (Offload cmake cleanups) - #162818 (Add regression test for malformed RPITIT bound ICE with the new solver)
Collaborator
|
The job Click to see the possible cause of the failure (guessed by this bot)Important For more information how to resolve CI failures of this job, visit this link. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Successful merges:
--jobson frontend parallelism #160697 (rustc: Tweak the effect of--jobson frontend parallelism)DeepRegionResolver(earlier calledOpportunisticRegionResolver) #162769 (Yeet theDeepRegionResolver(earlier calledOpportunisticRegionResolver))ast::UseTreeKind#162794 (Simplifyast::UseTreeKind)r? @ghost
Create a similar rollup