Commit Graph

49949 Commits

Author SHA1 Message Date
bors fefce3cecd Auto merge of #146018 - lambdageek:add-winres-version, r=wesleywiser
compiler: Add Windows resources to rustc-main and rustc_driver

Adds Windows resources with the rust version information to rustc-main.exe and rustc_driver.dll

Invokes `rc.exe` directly, rather than using one of the crates from the ecosystem to avoid adding dependencies.

A new internal `rustc_windows_rc` crate has the common build script machinery for locating `rc.exe` and constructing the resource script
2025-09-09 03:56:41 +00:00
bors e9b6085088 Auto merge of #146188 - dpaoliello:tracing, r=Kobzol
Update tracing and fix binary regression

Previous attempts (rust-lang/rust#127316, rust-lang/rust#134770) saw binary size regressions, this was root caused to <https://github.com/tokio-rs/tracing/pull/2553> which changed the behavior of the `max_level_info` feature flag to match the docs (i.e., that flag only applies for debug builds and `release_max_level_info` applies for release builds).

This change bumps the `tracing` version and sets both `max_level_info` and `release_max_level_info` when to match rustc's own `max_level_info`.
2025-09-09 00:47:03 +00:00
bors 9c27f27ea3 Auto merge of #140375 - lcnr:subrelations-infcx, r=BoxyUwU
eagerly compute `sub_unification_table` again

Previously called `sub_relations`. We still only using them for diagnostics right now. This mostly reverts rust-lang/rust#119989. Necessary for type inference guidance due to not-yet defined opaque types, cc https://github.com/rust-lang/trait-system-refactor-initiative/issues/182.

We could use them for cycle detection in generalization and it seems desirable to do so in the future. However, this is unsound with the old trait solver as its cache does not track these `sub_unification_table` in any way.

We now properly track the `sub_unification_table` when canonicalizing so using them in the new solver is totally sound and the performance impact is far more manageable than I thought back in rust-lang/rust#119989.

r? `@compiler-errors`
2025-09-08 19:39:36 +00:00
bors a78f9aa87f Auto merge of #146333 - matthiaskrgr:rollup-ib80jyw, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - rust-lang/rust#146111 (Migrate more things in the new solver to specific `DefId`s)
 - rust-lang/rust#146298 (GVN: Ensure indirect is first projection in try_as_place.)
 - rust-lang/rust#146299 (docs(std): add error docs for path canonicalize)
 - rust-lang/rust#146310 (Allow static regions in `type_name`.)
 - rust-lang/rust#146313 (Some `rustc_middle` cleanups)
 - rust-lang/rust#146319 (Fix typo in default.rs)
 - rust-lang/rust#146320 (rustc-dev-guide subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-08 16:29:57 +00:00
Daniel Paoliello 266f8c9c00 Update tracing, again 2025-09-08 09:23:37 -07:00
Matthias Krüger 2eab500413 Rollup merge of #146313 - nnethercote:rustc_middle-ty-cleanups-2, r=lcnr
Some `rustc_middle` cleanups

Minor improvements I found while looking through this code.

r? `@BoxyUwU`
2025-09-08 16:34:58 +02:00
Matthias Krüger 00bffaaf23 Rollup merge of #146310 - nnethercote:fix-146249, r=lcnr
Allow static regions in `type_name`.

Fixes rust-lang/rust#146249.

r? `@lcnr`
2025-09-08 16:34:57 +02:00
Matthias Krüger 9a1feef5d8 Rollup merge of #146298 - cjgillot:gvn-derefer, r=nnethercote
GVN: Ensure indirect is first projection in try_as_place.

I haven't found any report for this bug on existing code, but managed to trigger it with rust-lang/rust#143333
2025-09-08 16:34:56 +02:00
Matthias Krüger 1e46fa94a3 Rollup merge of #146111 - ChayimFriedman2:more-ns-specific-defid, r=lcnr
Migrate more things in the new solver to specific `DefId`s

Continuation of https://github.com/rust-lang/rust/pull/145377. I migrated the rest of the types, except aliases.

Aliases are problematic because opaques and associated types share the same type in the new solver. `@jackh726,` `@lcnr,` `@ShoyuVanilla` I'd like to hear ideas here. Anyway, even if we do nothing with them we already got a substantial improvement.

r? types
2025-09-08 16:34:55 +02:00
bors 68baa87ba6 Auto merge of #146165 - folkertdev:c-variadic-errors-take-2, r=lcnr
improve c-variadic error reporting

tracking issue: https://github.com/rust-lang/rust/issues/44930

The parts of https://github.com/rust-lang/rust/pull/143546 that don't require any particular knowledge about c-variadic functions.

This prepares the way for rejecting c-variadic functions that are also coroutines, safe functions, or associated functions.
2025-09-08 13:18:04 +00:00
lcnr b51a3a565a review 2025-09-08 14:17:56 +02:00
lcnr f514586408 optimize CanonicalVarValues::instantiate 2025-09-08 14:17:56 +02:00
lcnr 28a0e77d13 pass sub_relations into canonical queries 2025-09-08 14:17:56 +02:00
lcnr 2cb04b960f inline CanonicalTyVarKind 2025-09-08 14:17:56 +02:00
lcnr 67965f817d eagerly compute sub_relations again 2025-09-08 14:17:56 +02:00
Nicholas Nethercote 9a52a8354e Allow static regions in type_name.
Fixes #146249.
2025-09-08 19:35:47 +10:00
bors a09fbe2c83 Auto merge of #145910 - saethlin:ignore-intrinsic-calls, r=cjgillot
Ignore intrinsic calls in cross-crate-inlining cost model

I noticed in a side project that a function which just compares to `[u64; 2]` for equality is not cross-crate-inlinable. That was surprising to me because I didn't think that code contained a function call, but of course our array comparisons are lowered to an intrinsic. Intrinsic calls don't make a function no longer a leaf, so it makes sense to add this as an exception to the "only leaves" cross-crate-inline heuristic.

This is the useful compare link: https://perf.rust-lang.org/compare.html?start=7cb1a81145a739c4fd858abe3c624ce8e6e5f9cd&end=c3f0a64dbf9fba4722dacf8e39d2fe00069c995e&stat=instructions%3Au because it disables CGU merging in both commits, so effects that cause changes in the sysroot to perturb partitioning downstream are excluded. Perturbations to what is and isn't cross-crate-inlinable in the sysroot has chaotic effects on what items are in which CGUs after merging. It looks like before this PR by sheer luck some of the CGUs dirtied by the patch in eza incr-unchanged happened to be merged together, and with this PR they are not.

The perf runs on this PR point to a nice runtime performance improvement.
2025-09-08 03:03:21 +00:00
bors 2f3f27bf79 Auto merge of #145541 - cjgillot:dest-prop-live-range, r=Amanieu
Reimplement DestinationPropagation according to live ranges.

This PR reimplements DestinationPropagation as a problem of merging live-ranges of locals. We merge locals that have disjoint live-ranges. This allows merging several locals in the same round by updating live range information.

Live ranges are mainly computed using the `MaybeLiveLocals` analysis. The subtlety is that we split each statement and terminator in 2 positions. The first position is the regular statement. The second position is a shadow, which is always more live. It encodes partial writes and dead writes as a local being live for half a statement. This half statement ensures that writes conflict with another local's writes and regular liveness.

r? `@Amanieu`
2025-09-07 23:36:21 +00:00
Nicholas Nethercote a171ec3cf0 Move describe_as_module from rustc_middle::print to rustc:middle::query.
That way it doesn't need to be exported.
2025-09-08 06:34:39 +10:00
Nicholas Nethercote 1e679154da Move rustc_middle::MaxUniverse to rustc_infer.
Because `rust_infer` is the only crate that uses it.
2025-09-08 06:34:32 +10:00
Nicholas Nethercote 006c85d017 Make some matches non-exhaustive.
Exhaustive match isn't necessary for these trivial cases, and some
similar nearby methods are non-exhaustive.
2025-09-08 06:31:59 +10:00
Matthias Krüger 36557d1046 Rollup merge of #146297 - cjgillot:may-observe-address, r=saethlin
Introduce PlaceContext::may_observe_address.

A small utility method to avoid open-coding the logic in several MIR opts.
2025-09-07 20:02:29 +02:00
Matthias Krüger 92bad93f06 Rollup merge of #146209 - bjorn3:lto_refactors5, r=dianqk
Misc LTO cleanups

Follow up to https://github.com/rust-lang/rust/pull/145955.

* Remove want_summary argument from `prepare_thin`.
   Since https://github.com/rust-lang/rust/pull/133250 ThinLTO summary writing is instead done by `llvm_optimize`.
* Two minor cleanups
2025-09-07 20:02:27 +02:00
Camille Gillot 5d0e66d451 Use rustc_data_structures::union_find. 2025-09-07 16:46:34 +00:00
Camille Gillot 28ff5cf502 Simplify candidate collection. 2025-09-07 16:45:34 +00:00
Camille Gillot 99f6bcf380 Unify a source with all possible destinations. 2025-09-07 16:45:00 +00:00
Camille Gillot 4e9dd1b67b Do not use prepend to avoid quadratic behaviour. 2025-09-07 16:36:30 +00:00
Camille Gillot de7c633ee5 Simplify VisitPlacesWith. 2025-09-07 16:36:22 +00:00
Camille Gillot b9262bce67 Use regular MaybeLiveLocals. 2025-09-07 16:35:30 +00:00
Camille GILLOT 9b8a719ae4 Reimplement DestinationPropagation according to live ranges. 2025-09-07 16:24:46 +00:00
Camille GILLOT 2ff92e83af Introduce fast insertion at extremities to IntervalSet. 2025-09-07 16:06:40 +00:00
bors 55b9b4d1e1 Auto merge of #146289 - cjgillot:gvn-aggregate, r=dianqk
GVN: Allow reusing aggregates if LHS is not a simple local.

This resolves a FIXME in the code. I don't see a reason not to allow this.
2025-09-07 14:02:09 +00:00
Camille GILLOT 91241a1d25 Ensure indirect is first projection in try_as_place. 2025-09-07 13:55:01 +00:00
Camille GILLOT 4e7a068c9a Introduce PlaceContext::may_observe_address. 2025-09-07 13:51:53 +00:00
bors fbd8f95118 Auto merge of #146292 - matthiaskrgr:rollup-bkjs887, r=matthiaskrgr
Rollup of 2 pull requests

Successful merges:

 - rust-lang/rust#146254 (Use `Itertools::all_equal_value()` where applicable)
 - rust-lang/rust#146290 (Revert "Add LSX accelerated implementation for source file analysis")

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-07 07:28:43 +00:00
Matthias Krüger 1b492b0c54 Rollup merge of #146290 - heiher:r-src-analysis-lsx, r=lqd
Revert "Add LSX accelerated implementation for source file analysis"

This reverts commit 5b43244ac5 to fix native build failures on LoongArch.

Link: https://github.com/rust-lang/rust/pull/145963#issuecomment-3263195096
Link: https://github.com/rust-lang/rust/pull/145963#issuecomment-3263420700
2025-09-07 08:18:59 +02:00
Matthias Krüger cb8b5fa4e2 Rollup merge of #146254 - yotamofek:pr/itertools-all-equal-value, r=cjgillot
Use `Itertools::all_equal_value()` where applicable

Just a small cleanup.
We already have `itertools` as a dep in these crates, so might as well use another of its features.
Makes the code simpler IMHO :)
2025-09-07 08:18:59 +02:00
bors ebdf2abea4 Auto merge of #146271 - niacdoial:improperctypes-refactor1, r=tgross35
lint ImproperCTypes: refactor linting architecture (part 1)

This is the first PR in an effort to split  rust-lang/rust#134697 into individually-mergeable parts.

This one focuses on properly packaging the lint and its tests, as well as properly separate the "linting" and "type-checking" code.

There is exactly one user-visible change: the safety of `Option<Box<FFISafePointee>>` is now the same in `extern` blocks and function definitions: it is safe.

r? `@tgross35` because you are already looking at the original
2025-09-07 04:17:27 +00:00
WANG Rui 58e2cd4263 Revert "Add LSX accelerated implementation for source file analysis"
This reverts commit 5b43244ac5 to fix
native build failures on LoongArch.
2025-09-07 11:27:20 +08:00
Camille GILLOT 52f74a5162 Allow simplifying aggregates if LHS is not a simple local. 2025-09-07 03:23:23 +00:00
bors f4b2f68e04 Auto merge of #146285 - matthiaskrgr:rollup-oaokoo3, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#146200 (Simplify rustdoc-gui tester by calling directly browser-ui-test)
 - rust-lang/rust#146236 (gpu offload: change suspicious map into filter)
 - rust-lang/rust#146240 (DynamicConfig: use canonical clone impl)
 - rust-lang/rust#146251 (rustc_middle: clippy fixes)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-07 01:04:57 +00:00
Matthias Krüger 019486082d Rollup merge of #146251 - hkBst:clippy-fix-8, r=cjgillot
rustc_middle: clippy fixes

Fixes for:
```text
warning: bound is defined in more than one place
warning: empty line after doc comment
```
2025-09-06 23:49:54 +02:00
Matthias Krüger bb27a2b93d Rollup merge of #146240 - hkBst:query-1, r=cjgillot
DynamicConfig: use canonical clone impl

Fixes clippy warning:
```text
warning: non-canonical implementation of `clone` on a `Copy` type
  --> compiler/rustc_query_impl/src/lib.rs:60:29
   |
60 |       fn clone(&self) -> Self {
   |  _____________________________^
61 | |         DynamicConfig { dynamic: self.dynamic }
62 | |     }
   | |_____^ help: change this to: `{ *self }`
```
2025-09-06 23:49:54 +02:00
Matthias Krüger 1123d49090 Rollup merge of #146236 - hkBst:gpu-1, r=ZuseZ4
gpu offload: change suspicious map into filter

Fixes clippy warning:
```text
warning: this call to `map()` won't have an effect on the call to `count()`
   --> compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs:194:25
    |
194 |       let num_ptr_types = types
    |  _________________________^
195 | |         .iter()
196 | |         .map(|&x| matches!(cx.type_kind(x), rustc_codegen_ssa::common::TypeKind::Pointer))
197 | |         .count();
    | |________________^
    |
    = help: make sure you did not confuse `map` with `filter`, `for_each` or `inspect`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_map
    = note: `-W clippy::suspicious-map` implied by `-W clippy::suspicious`
    = help: to override `-W clippy::suspicious` add `#[allow(clippy::suspicious_map)]`
```
2025-09-06 23:49:53 +02:00
bors 76863e3404 Auto merge of #146282 - tgross35:rollup-0n5tjnm, r=tgross35
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#139524 (Add socket extensions for cygwin)
 - rust-lang/rust#145940 (single buffer for exponent fmt of integers)
 - rust-lang/rust#146206 (identity uses are ok, even if there are no defining uses)
 - rust-lang/rust#146272 (Update comment for `-Werror` on LLVM builds)
 - rust-lang/rust#146280 (Make `LetChainsPolicy` public for rustfmt usage)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-06 21:47:58 +00:00
niacdoial 20f050b444 ImproperCTypes: redo state tracking
No changes should be visible by rustc users
This is just some architecture changes to the type checking to
facilitate FFI-safety decisions that depend on how the type is used
(the change here is not complete, there are still bits of "legacy" state
passing for this, but since this is a retconned commit, I can tell you
those bits will disappear before the end of the commit chain)
(there is at least one bit where the decision making code is weird, but
that this is because we do not want to change the lint's behaviour this
early in the chain)
2025-09-06 22:00:28 +02:00
niacdoial 050c119784 ImproperCTypes: re-separate linting and checking
no visible changes to rust users, just making the inner architecture of
the ImproperCTypes lints more sensible, with a clean separation between
the struct (now singular) that interacts with the linting system
and the struct (now singular) that visits the types to check FFI-safety
2025-09-06 21:46:33 +02:00
niacdoial 33943d1832 ImproperCTypes: more pre-emptive cleanup
Mainly, we realise that the non-null assumption on a Box<_> argument
does not depend on what side of the FFI boundary the function is on.
And anyway, this is not the way to deal with this assumption being maybe violated.
2025-09-06 21:46:33 +02:00
niacdoial 0c0e764ff7 ImproperCTypes: move code and tests into proper directories 2025-09-06 21:46:33 +02:00
Trevor Gross f338542c42 Rollup merge of #146280 - mohe2015:public-for-rustfmt-forks, r=lqd
Make `LetChainsPolicy` public for rustfmt usage

Related to https://github.com/rust-lang/rust/pull/138511. To call `Parser::parse_expr_cond` from [rustfmt forks for custom macro formatting](https://github.com/tucant/rustfmt/blob/30c83df9e1db10007bdd16dafce8a86b404329b2/src/parse/macros/html.rs#L57) you need to pass this enum so it would be nice if it could be public.

Thank you.
2025-09-06 14:39:06 -04:00