Commit graph

299799 commits

Author SHA1 Message Date
Matthias Krüger
1a686c669e
Rollup merge of #141219 - Amanieu:leak_alloc, r=joboet
Change `{Box,Arc,Rc,Weak}::into_raw` to only work with `A = Global`

Also applies to `Vec::into_raw_parts`.

The expectation is that you can round-trip these methods with `from_raw`, but this is only true when using the global allocator. With custom allocators you should instead be using `into_raw_with_allocator` and `from_raw_in`.

The implementation of `Box::leak` is changed to use `Box::into_raw_with_allocator` and explicitly leak the allocator (which was already the existing behavior). This is because, for `leak` to be safe, the allocator must not free its underlying backing store. The `Allocator` trait only guarantees that allocated memory remains valid until the allocator is dropped.
2025-07-02 19:29:34 +02:00
Matthias Krüger
7c9a03b969
Rollup merge of #138340 - oli-obk:one-size-fits-all, r=m-ou-se
Remove some unsized tuple impls now that we don't support unsizing tuples anymore

Since https://github.com/rust-lang/rust/pull/137728 there is no sound way to create unsized tuples anymore. While we can't remove them from the language (tried here: https://github.com/rust-lang/rust/pull/138093) due to people using `PhantomData<(T, U)>` where `U: ?Sized` (they'd have to use `(PhantomData<T>, PhantomData<U>)` now), we can remove the impls from libcore I believe.

r? libs I guess?
2025-07-02 19:29:34 +02:00
Matthias Krüger
e0499e4583
Rollup merge of #131923 - ranger-ross:impl-copy-hash-interrorkind, r=tgross35
Derive `Copy` and `Hash` for `IntErrorKind`

This PR derives `Copy` and `Hash` for `IntErrorKind` to make it easier to work with. (see #131826)

I think an argument could be made to also derive `PartialOrd` + `Ord` as well given that other error kinds in the std like [`io::ErrorKind`](https://doc.rust-lang.org/src/std/io/error.rs.html#212-428) do this. Granted these seem much less useful for errors.

Fixes https://github.com/rust-lang/rust/issues/131826
2025-07-02 19:29:33 +02:00
Matthias Krüger
c572231fb9
Rollup merge of #143274 - marcoieni:optional-jobs, r=Kobzol
ci: support optional jobs

try-job: optional-mingw-check-1
2025-07-02 19:28:09 +02:00
Matthias Krüger
7fa00aa75f
Rollup merge of #143258 - compiler-errors:disambiguator-state, r=oli-obk
Don't recompute `DisambiguatorState` for every RPITIT in trait definition

The `associated_type_for_impl_trait_in_trait` currently needs to rerun the `RPITVisitor` for every RPITIT to compute its disambiguator.

Instead of synthesizing all of the RPITITs def ids one at a time in different queries, just synthesize them inside of the `associated_types_for_impl_traits_in_associated_fn` query. There we can just share the same `DisambiguatorState` for all the RPITITs in one function signature.

r? ``````@Zoxc`````` or ``````@oli-obk`````` cc rust-lang/rust#140453
2025-07-02 19:28:08 +02:00
Matthias Krüger
df7cac9e03
Rollup merge of #143232 - jieyouxu:compiletest-maintenance-3, r=Kobzol
[COMPILETEST-UNTANGLE 3/N] Use "directives" consistently within compiletest

Instead of using *both* "headers" and "directives" within compiletest to refer to the same thing. This of course induces some churn, but it's been bugging me for a while, and I rather do the self-consistency changes now than later.

The first commit tries to be mostly move-only to help per-file git history.

I intend to revisit rustc-dev-guide's testing docs, but I don't want to do it on rust-lang/rust side because it would need syncing and might conflict.
2025-07-02 19:28:07 +02:00
Matthias Krüger
3ff0aa530d
Rollup merge of #143231 - xizheyin:143152, r=fee1-dead
Suggest use another lifetime specifier instead of underscore lifetime

cc rust-lang/rust#143152

r? compiler
2025-07-02 19:28:07 +02:00
Matthias Krüger
4f44014c5c
Rollup merge of #143194 - folkertdev:fix-single-element-simd-bitcast, r=workingjubilee
fix bitcast of single-element SIMD vectors

in effect this reverts https://github.com/rust-lang/rust/pull/142768 and adds additional tests. That PR relaxed the conditions on an early return in an incorrect way that would create broken LLVM IR.

https://godbolt.org/z/PaaGWTv5a

```rust
#![feature(repr_simd)]

#[repr(simd)]
#[derive(Clone, Copy)]
struct S([i64; 1]);

#[no_mangle]
pub extern "C" fn single_element_simd(b: S) -> i64 {
    unsafe { std::mem::transmute(b) }
}
```
at the time of writing generates this LLVM IR, where the type of the return is different from the function's return type.

```llvm
define noundef i64 ``````@single_element_simd(<1`````` x i64> %b) unnamed_addr {
start:
  ret <1 x i64> %b
}
```

The test output is actually the same for the existing tests, showing that the change didn't actually matter for any tested behavior. It is probably a bit faster to do the early return, but, well, it's incorrect in general.

zullip thread: [#t-compiler > Is transmuting a &#96;T&#96; to &#96;Tx1&#96; (one-element SIMD vector) UB?](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Is.20transmuting.20a.20.60T.60.20to.20.60Tx1.60.20.28one-element.20SIMD.20vector.29.20UB.3F/with/526262799)
cc ``````@sayantn``````
r? ``````@scottmcm``````
2025-07-02 19:28:06 +02:00
Matthias Krüger
453a2a9102
Rollup merge of #142886 - Enselic:aarch64-panic, r=cuviper
ci: aarch64-gnu: Stop skipping `panic_abort_doc_tests`

The skipped test passes since `nightly-2024-11-29`. See https://github.com/rust-lang/rust/issues/123733#issuecomment-2928770365 and https://github.com/rust-lang/rust/issues/123733#issuecomment-2929091266 for more info.

Let's stop skipping it to increase the chance of detecting a regression.

r? ``````@cuviper`````` who added the skip in https://github.com/rust-lang/rust/pull/123828

Also see https://github.com/rust-lang/rust/pull/142304 for an alternative regression test that I am hoping to also land in the near future to complement the test we now stop skipping, but I need to investigate that setup more.
2025-07-02 19:28:06 +02:00
Matthias Krüger
d5658d33de
Rollup merge of #142321 - ostylk:fix/ppc64_abi, r=workingjubilee
Expose elf abi on ppc64 targets

Fixes https://github.com/rust-lang/rust/issues/60617 (after MCP https://github.com/rust-lang/compiler-team/issues/885 is accepted) by exposing the abi information on ppc64 targets.
Conditional compilation can now use `cfg(target_abi = "elfv1")` or `cfg(target_abi = "elfv2")` to determine the abi in use.

Technical details are included in the other PR https://github.com/rust-lang/rust/pull/142598
2025-07-02 19:28:05 +02:00
Matthias Krüger
6a31e693eb
Rollup merge of #142138 - ashivaram23:vec_into_chunks, r=scottmcm
Add `Vec::into_chunks`

Tracking issue rust-lang/rust#142137
2025-07-02 19:28:04 +02:00
Matthias Krüger
0d5af18c14
Rollup merge of #141847 - xizheyin:141837, r=jhpratt
Explain `TOCTOU` on the top of `std::fs`, and reference it in functions

Fixes rust-lang/rust#141837

r? ``````@workingjubilee``````
2025-07-02 19:28:03 +02:00
bors
1ce9c977ff Auto merge of #143214 - camsteffen:remove-let-chains-feature, r=est31
Remove let_chains unstable feature

Per https://github.com/rust-lang/rust/issues/53667#issuecomment-3016742982 (but then I also noticed rust-lang/rust#140722)

This replaces the feature gate with a parser error that says let chains require 2024.

A lot of tests were using the unstable feature. I either added edition:2024 to the test or split out the parts that require 2024.
2025-07-02 17:18:47 +00:00
Bastian Kersting
8a0d8dde44 Make the enum check work for negative discriminants
The discriminant check was not working correctly for negative numbers.
This change fixes that by masking out the relevant bits correctly.
2025-07-02 20:02:27 +03:00
Michael Goulet
0330525b1c Explicitly handle all nodes in generics_of when computing parent 2025-07-02 16:55:18 +00:00
binarycat
1d3cbb3a1c bootstrap: add CONFIG_CHANGE_HISTORY entry for build.tidy-extra-checks 2025-07-02 10:56:22 -05:00
binarycat
90b2d24692 bootstrap: add build.tidy-extra-checks option 2025-07-02 10:53:55 -05:00
Ralf Jung
8362508989 miri: improve errors for type validity assertion failures 2025-07-02 17:47:46 +02:00
Philipp Krones
8b034bc598
Add Triagebot's concern capability to the Clippy repository (#14916)
This is a newly added triagebot capability, which allows registering and
then resolving concerns with an issue or a pull request. The concerns
are gathered by Triagebot in the issue/PR summary.

Concerns are different from notes: when a concern is resolved, it is
striked through in the issue/PR summary, and a link to the comment
resolving it is also added, whereas a note can only be removed and then
disappears from the summary.

The `has-concerns` label, which must be created at the time of merging
this change, will be automatically set on issues/PRs that have
unresolved concerns, and cleared when all concerns are resolved.

changelog: none
2025-07-02 15:24:32 +00:00
Shoyu Vanilla
4cfc341451 fix: Honor rust-analyzer.cargo.noDeps option when fetching sysroot metadata 2025-07-03 00:16:05 +09:00
Oli Scherer
845d9ff963 Remove some unsized tuple impls now that we don't support unsizing tuples anymore 2025-07-02 14:17:54 +00:00
A4-Tacks
625b73b8b0
Fix AsMut::as_mut name 2025-07-02 21:55:55 +08:00
Pavel Grigorenko
2ab641d75e bootstrap: validate rust.codegen-backends & targer.<triple>.codegen-backends 2025-07-02 16:55:47 +03:00
Samuel Tardieu
fc076315d2
Add Triagebot's concern capability to the Clippy repository
This is a newly added triagebot capability, which allows registering and
then resolving concerns with an issue or a pull request. The concerns
are gathered by Triagebot in the issue/PR summary.

Concerns are different from notes: when a concern is resolved, it is
striked through in the issue/PR summary, and a link to the comment
resolving it is also added, whereas a note can only be removed and then
disappears from the summary.

The `has-concerns` label, which must be created at the time of merging
this change, will be automatically set on issues/PRs that have
unresolved concerns, and cleared when all concerns are resolved.
2025-07-02 15:51:16 +02:00
Samuel Tardieu
8e4b5448cf
use ui_test dependency builder for test dependencies (#14883)
changelog: none

This tries to make progress on
https://github.com/rust-lang/rust/issues/78717 by using the ui_test
dependency handling instead of linking in the dependencies of clippy
itself with the tests. This partially reverts
https://github.com/rust-lang/rust-clippy/pull/11045. However, we still
use the old style of dealing with dependencies for clippy's own crates
and the "internal" tests, as otherwise those would get rebuilt which
takes too long.
2025-07-02 13:44:39 +00:00
Ralf Jung
143c05af80
Merge pull request #4438 from RalfJung/genmc-conditional-import
use more clever approach for genmc conditional import
2025-07-02 13:42:11 +00:00
Ralf Jung
8fc0fd5a80 use more clever approach for genmc conditional import 2025-07-02 15:16:03 +02:00
Ralf Jung
de1278bd16 interpret: move the native call preparation logic into Miri 2025-07-02 14:25:11 +02:00
Jakub Beránek
7d35f2f8c0 Use non-global interner in test_string_interning in bootstrap 2025-07-02 14:25:05 +02:00
bors
b94bd12401 Auto merge of #142978 - Kobzol:query-hit, r=oli-obk
Add new self-profiling event to cheaply aggregate query cache hit counts

Self-profile can record various types of things, some of them are not enabled, like query cache hits. Rustc currently records cache hits as "instant" measureme events, which records the thread ID, current timestamp, and constructs an individual event for each such cache hit. This is incredibly expensive, in a small hello world benchmark that just depends on serde, it makes compilation with nightly go from ~3s (with `-Zself-profile`) to ~15s (with `-Zself-profile -Zself-profile-events=default,query-cache-hit`).

We'd like to add query cache hits to rustc-perf (https://github.com/rust-lang/rustc-perf/pull/2168), but there we only need the actualy cache hit counts, not the timestamp/thread ID metadata associated with it.

This PR adds a new `query-cache-hit-count` event. Instead of generating individual instant events, it simply aggregates cache hit counts per *query invocation* (so a combination of a query and its arguments, if I understand it correctly) using an atomic counter. At the end of the compilation session, these counts are then dumped to the self-profile log using integer events (in a similar fashion as how we record artifact sizes). I suppose that we could dedup the query invocations in rustc directly, but I don't think it's really required. In local experiments with the hello world + serde case, the query invocation records generated ~30 KiB more data in the self-profile, which was ~10% increase in this case.

With this PR, the overhead of `-Zself-profile` seems to be the same as before, at least on my machine, so I also enabled query cache hit counts by default when self profiling is enabled.

We should also modify `analyzeme`, specifically [this](https://github.com/rust-lang/measureme/blob/master/analyzeme/src/analysis.rs#L139), and make it load the integer events with query cache hit counts. I can do that as a follow-up, it's not required to be done in sync with this PR, and it doesn't require changes in rustc.

CC `@cjgillot`

r? `@oli-obk`
2025-07-02 11:41:14 +00:00
Marijn Schouten
626ca82faf byte-addresses memory -> byte-addressed memory 2025-07-02 11:18:02 +00:00
Ralf Jung
5ce7a04910
Merge pull request #4437 from RalfJung/env-cleanup
skip env var memory for leak check
2025-07-02 10:40:11 +00:00
Jakub Beránek
3f3c498137
Apply review comments 2025-07-02 12:18:56 +02:00
Ralf Jung
510040fb44 skip env var memory for leak check 2025-07-02 12:12:24 +02:00
Samuel Tardieu
8bd580b80e Add track_caller attributes to trace origin of Clippy lints
This allows the use of `-Z track-diagnostics` to see the origin of
Clippy lints emission, as is already the case for lints coming from
rustc.
2025-07-02 11:50:25 +02:00
Samuel Tardieu
b4d35fde7e Add track_caller attributes to trace origin of Clippy lints
This allows the use of `-Z track-diagnostics` to see the origin of
Clippy lints emission, as is already the case for lints coming from
rustc.
2025-07-02 11:50:25 +02:00
Camille GILLOT
992fa62118 Hash resolutions. 2025-07-02 09:14:34 +00:00
Camille GILLOT
a0dc0b549d Do not depend on FOREVER_RED_NODE. 2025-07-02 09:14:33 +00:00
Chris Denton
6671d9b92a
Rename mingw-check-tidy to tidy 2025-07-02 08:48:20 +00:00
Jakub Beránek
b49ca021e1
Use portable AtomicU64 2025-07-02 10:04:35 +02:00
Jakub Beránek
e6c64df274
Add cross-compilation check tests 2025-07-02 09:18:53 +02:00
Jakub Beránek
07a1b82442
Add bootstrap tool check test 2025-07-02 09:17:50 +02:00
Jakub Beránek
c17da9ebc2
Add Rust Analyzer check tests 2025-07-02 09:15:08 +02:00
Jakub Beránek
029304e4a6
Add codegen check tests 2025-07-02 09:13:44 +02:00
Jakub Beránek
a7c625146e
Add compiletest check tests 2025-07-02 09:12:37 +02:00
Jakub Beránek
4dfa59dcfb
Add snapshot tests for checking compiler, library and rustc tools 2025-07-02 09:10:39 +02:00
Jakub Beránek
3c391a6394
Automatically derive stage in step metadata where possible 2025-07-02 09:02:48 +02:00
Ralf Jung
0d43e2fe2b
Merge pull request #4406 from Stypox/tracing
Add tracing_chrome under "tracing" feature
2025-07-02 06:55:58 +00:00
Ralf Jung
0234984e27
Merge pull request #4436 from rust-lang/rustup-2025-07-02
Automatic Rustup
2025-07-02 06:37:56 +00:00
Ralf Jung
d2f2271ccd rename show_error -> fatal_error 2025-07-02 08:31:21 +02:00