Skip to content

Automatic Rustup - #5281

Open
workflows-miri[bot] wants to merge 31 commits into
masterfrom
rustup-2026-08-24
Open

Automatic Rustup#5281
workflows-miri[bot] wants to merge 31 commits into
masterfrom
rustup-2026-08-24

Conversation

@workflows-miri

Copy link
Copy Markdown

Merge ref 'da5114692c9e' from rust-lang/rust

Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: rust-lang/rust@da51146
Filtered ref: 3c152ff
Upstream diff: rust-lang/rust@c656540...da51146

This merge was created using https://github.com/rust-lang/josh-sync.

folkertdev and others added 30 commits August 13, 2026 12:49
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 1e5ee356374211706221b71b6106d297a646ee57
Filtered ref: b4f59cc8a0c6987c83a832bc4976a5d6a1d9d821
Upstream diff: rust-lang/rust@fcbe791...1e5ee35

This merge was created using https://github.com/rust-lang/josh-sync.
Installing cargo tools (`cargo install`) without locked dependencies exposes users to supply-chain attacks to all the dependencies of the tool (https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/). Using `cargo install --locked` reduces this risk to a compromise of the tool itself, while using the locked and hashed version of the dependencies.

I went through all `rg "cargo install"` hits in the repository and added `--locked` to all but explanatory examples. I validated that those tools publish functioning `Cargo.lock`s with https://gist.github.com/konstin/ef3412518e207bea6035a1bd01f3821b.
chore: bump to cc@1.4.3 for rustc_llvm and library



### What is this?

Old cc-rs derives this from the `-Clto` rustflag on its own.
`cc@1.2.39` starts gating that behind `-Clinker-plugin-lto`,
which bootstrap doesn't pass.
Therefore,
we need to pass this flag explicitly to keep LTO mode

Previous efforts:

* rust-lang/rust#146186
* rust-lang/rust#155438

I personally want this because of cc 1.3.0+ has the support of Cargo `-Ztrim-paths`,
which helps what I am experimenting in <rust-lang/rust#161049>.

### How to review

Commit by commit. 

To keep commits bisect-able,
I added the first commit without cc bump.
clang should be fine with duplicate `-flto` flags.

One thing I am not certain is whether we should probe `-flto` flag in this case,
or just make this fail if `-flto` isn't supported.
(I assume `-flto` is quote widely supported)

r? Kobzol

---

🤖 **LLM disclosure:** I used LLM for the experiment of <rust-lang/rust#161049>, but not the bootstrap LTO change in this PR.
Fix ordering for `default impl` check in the new solver

The second commit of rust-lang/rust#160605 moved the `default impl` check later, for better performance, which introduced a regression. This commit moves the check a little earlier, so it is after the `args_may_unify` call (thus retaining the perf benefit) but before the `probe_trait_candidate` (which has side-effects).

The check is now duplicated in three `GoalKind::consider_impl_candidate` methods, which is unfortunate, but it fits in with the existing duplicated code in those methods. And it means another copy of the check (in `try_assemble_bounds_via_registered_opaques`) can be removed.

Fixes rust-lang/rust#160994.

r? @lcnr
add a cache to the `WfPredicates` visitor





Part of speeding up compiling `ReShell` with `-Znext-solver`, see rust-lang/trait-system-refactor-initiative#272 and [#t-types/trait-system-refactor > more &#96;reshell&#96; slowness](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/more.20.60reshell.60.20slowness/with/616484452).

The PR changes the `WfPredicates` visitor to only collect new bounds for unique types. That is, if we have a type like:

```
type T0 = Map<Then<Whitespace, Whitespace>>
type T1 = Map<Then<T0, T0>>
type T2 = Map<Then<T1, T1>>
...
type T_N = Map<Then<T_N-1, T_N-1>>
```

etc., the visitor used to end up collecting one WF obligation for each path from `T_N` to its `Whitespace` leaves, even though WF of a type (I believe) doesn't depend on the path the visitor took to get there, which allows us to deduplicate by Ty. Not deduplicating caused us to go O(2^N) here.

next-solver is still about ~5x slower than the old solver on the third reproducer due to some other hidden quadratics, and fixing that seems to be more involved, but I think this PR will still be ✨ An Improvement.

r? lcnr
Fix checking of LLVM prebuilt status

This regressed in rust-lang/rust#160916.

I'll start from the end. There was a pre-existing bug (fixed by the second commit of this PR), where if we do `x check library`, we have `builder.kind == Kind::Check`, but we are actually building things (like the compiler) during that bootstrap invocation. But bootstrap was only checking the builder kind before, and in that case it would skip building LLVM, *unless* it was already built locally previously. On PR CI, and perhaps always (because build steps executed during check likely only occur during `x check library`, which requires *building* the compiler anyway), the LLVM was built locally anyway, so this bug was hidden away. This also removes an unnecessary LLVM build when running Clippy on the rustc_private tools.

However, after rust-lang/rust#160916, this was no longer case, because it stopped treating locally built LLVM as being prebuilt (which, in and of itself, is kinda a bug). Because when we check the compiler, we want to avoid building (and checking out!) LLVM. Before rust-lang/rust#160916, bootstrap considered a *previously locally built* LLVM to be available as a prebuilt `llvm-config`, and in that case configured `LLVM_CONFIG` for `rustc_llvm`. Because all PR CI bootstrap invocations that do `check` actually built LLVM prior doing a build, this worked, somehow, but broke after my PR.

Should unblock rust-lang/rust#161466.

r? jieyouxu
…rrowckDomain, r=cjgillot

Remove `impl DebugWithContext for BorrowckDomain`

Only `iterate_to_fixpoint` requires `Domain: DebugWithContext<Self>`; `visit_results` does not. And `Borrowck` is an unusual analysis that never calls `iterate_to_fixpoint`; instead its results are composed from the results of the three sub-analyses.

r? @cjgillot
…nna-kruppe

Doclink to `char::REPLACEMENT_CHARACTER` instead of `std::char::REPLACEMENT_CHARACTER`.

Doclink to the associated const on primitive `char`, not the deprecated free const in the `core::char`/`std::char` modules.
…ertdev

Install cargo tools with locked dependencies

Installing cargo tools (`cargo install`) without locked dependencies exposes users to supply-chain attacks to all the dependencies of the tool (https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/). Using `cargo install --locked` reduces this risk to a compromise of the tool itself, while using the locked and hashed version of the dependencies.

I went through all `rg "cargo install"` hits in the repository and added `--locked` to all but explanatory examples (such as cargo's docs on `cargo install` itself). I validated that those tools publish functioning `Cargo.lock`s with https://gist.github.com/konstin/bcb1169c1c1120c259dca64e777a64d0.
enable next solver in Miri

This was disabled in rust-lang/rust#160619, apparently because some tests failed. But I can't reproduce those test failures locally.

Fixes #5269
Landing this here because rustc CI is where this used to break, and also Miri got broken again so we can't do syncs currently.

Cc @Kivooeo r? @lcnr
Revert #161236 (Download auto jobs in citool in parallel)

I think that this might have caused [this failure](rust-lang/rust#161260 (comment)).

It's not worth debugging things like that over parallelizing this...

r? jieyouxu
rename `T-libs-api` to `T-libs` in issue templates

Since they were merged with rust-lang/rfcs#3984.
…uwer

Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#161475 (Fix checking of LLVM prebuilt status)
 - rust-lang/rust#161269 (Remove `impl DebugWithContext for BorrowckDomain`)
 - rust-lang/rust#161419 (Doclink to `char::REPLACEMENT_CHARACTER` instead of `std::char::REPLACEMENT_CHARACTER`.)
 - rust-lang/rust#161428 (Install cargo tools with locked dependencies)
 - rust-lang/rust#161502 (Clean up a few `_inner` functions after `ensure_sufficient_stack`)
 - rust-lang/rust#161507 (Remove useless `!fields.is_empty()` check)
 - rust-lang/rust#161512 (enable next solver in Miri)
 - rust-lang/rust#161516 (Revert rust-lang/rust#161236 (Download auto jobs in citool in parallel))
 - rust-lang/rust#161518 (rename `T-libs-api` to `T-libs` in issue templates)
Optimize `DeepRejectCtxt`



Details in individual commits.

r? @jdonszelmann
…oxyUwU

Reject non-constructor self types in const-arg tuple-call lowering



Turning on `min_generic_const_args` makes `tracing` stop compiling. Its logging macros expand a field name to something like `FieldName<{ FieldName::len(stringify!(field)) }>`, and under mgca a braced call in const-arg position gets lowered as a tuple constructor. So lowering tries to resolve the bare self type `FieldName` (written without its `const N`), which kicks off an `E0107 "missing generics"` cascade pointing deep into macro code. But `FieldName::len(..)` is just an associated fn, not a constructor, so lowering it like a `TupleCall` was wrong in the first place. See rust-lang/rust#157152.

Only an enum can host a tuple-variant ctor, so for any other self type that can't (struct, union, primitive, foreign type) the call has to be an assoc fn and needs wrapping in `const { ... }`. We catch those from the self type's resolution before lowering it and emit the existing "complex const arguments must be placed inside of a `const` block" error, which is the message you'd want anyway. Enums, aliases, `Self` and type params get left alone since they might resolve to an enum. tbh the bare generic *enum* case (`Option::Some(0)`) still E0107s, and imo that's better as a follow-up since catching it needs the variant type before lowering. Tests cover struct/union/primitive/foreign plus the wrapped forms that compile, and I checked it against the real `tracing` 0.1.44 crate too. 

_fwiw just the code changes and tests were implemented with AI help and I verified/reproduced/tested everything locally before sending to remote._
…able-minification, r=lolbinarycat

compiletest: forward disable-minification from bootstrap

`build.docs-minification = false` was already honored when building docs through bootstrap's doc steps, but compiletest-driven rustdoc suites always generated minified CSS/JS.

Bootstrap now forwards `--disable-minification` to compiletest when docs minification is disabled, and compiletest passes `-Zunstable-options --disable-minification` to rustdoc for HTML/JS/JSON/UI doc generation.

Fixes rust-lang/rust#142737.
…mu001999

Extend `dropping_{references,copy_types}` lints to `drop_in_place`

This PR extends the `dropping_{references,copy_types}` lints to also check for calls to `std::ptr::drop_in_place` and `<*mut _>::drop_in_place`.

It also extends the `undropped_manually_drops` lint.

Fixes rust-lang/rust#160127
cc @theemathas
Add floating point inline ASM support for SPARC

This PR adds support for floating point registers to SPARC inline ASM.

Ping target maintainers: @psumbera @kulikjak @jonathanpallant @mvolfik @he32 @0323pin @semarie

Tracking issues:
f16 inline ASM: rust-lang/rust#125398 (part of rust-lang/rust#116909)
SPARC inline ASM: rust-lang/rust#93335
…Simulacrum

feat: add symmetric PartialEq impls for Vec, &[T], &mut [T] versus Cow<'_, [T]>

add the missing reverse `PartialEq<Cow<'_, [U]>>` impls for `Vec<T, A>`, `&[T]`, and `&mut [T]`, essentially mirroring the existing forwards in `library/alloc/src/vec/partial_eq.rs`

partially addresses rust-lang/rust#152830. The `VecDeque` half of that issue is being handled separately by rust-lang/rust#152972, so there is no overlap with this PR

also fyi: verified locally with `./x test library/alloctests --stage 1` and the new `test_partial_eq_cow_symmetric` test passes alongside the existing alloc test suite
…anBrouwer

Derive `GenericTypeVisitable` for `RegionConstraint` _correctly_

The derive added in rust-lang/rust#160164 was incorrect -- it resulted in an overflow during trait solving. This is because `#[derive(GenericTypeVisitable)]` automatically adds a `: GenericTypeVisitable` bound to every field of a type -- in this case, `Box<[RegionConstraint<I>]>: GenericTypeVisitable<V>`.

To fix this, I added a `#[generic_type_visitable(bounds(..))]` attribute to the derive macro, which allows overriding the added bounds.

I also made the derive macro no longer a no-op in rustc, so that errors like this can be caught on r-l/r CI in the future.

Best reviewed commit-by-commit.

cc @ChayimFriedman2
…white

be more permissive wrt overflow and and improve diagnostics

This builds on rust-lang/rust#160632

Previously we only showed a single root goal for the FCW. It was difficult to find out how the goal overflowed.
We display a proving chain now which should help users identify relevant types or auto traits.

This will affect perf for crates emitting the FCW. E.g. `calimero-store` goes from 4.7s -> 5.7s in local testing since it emits thousands of FCWs internally. The FCW is a mitigation of future hard error and authors are expected to resolve it so it's probably acceptable. It doesn't affect crates without the FCW.

r? lcnr
Add regression test for gce dependency ICE in non-gce crate

Closes rust-lang/rust#128525
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#161558 (stdarch subtree update)
 - rust-lang/rust#159887 (compiletest: forward disable-minification from bootstrap)
 - rust-lang/rust#160229 (Extend `dropping_{references,copy_types}` lints to `drop_in_place`)
 - rust-lang/rust#160949 (Add floating point inline ASM support for SPARC)
 - rust-lang/rust#156160 (feat: add symmetric PartialEq impls for Vec, &[T], &mut [T] versus Cow<'_, [T]>)
 - rust-lang/rust#160914 (Derive `GenericTypeVisitable` for `RegionConstraint` _correctly_)
 - rust-lang/rust#161341 (be more permissive wrt overflow and and improve diagnostics)
 - rust-lang/rust#161530 (Add regression test for gce dependency ICE in non-gce crate)
Update LLVM submodule to latest `release/23.x` branch



This pulls in rust-lang/llvm-project#199 which updates the revision of LLVM 23 to the latest copy of the release branch, just past the rc3 release.
This updates the rust-version file to da5114692c9ebe46b869488c5f34f92eb10b98c1.
@rustbot rustbot added the S-waiting-on-review Status: Waiting for a review to complete label Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: Waiting for a review to complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants