Commit Graph

290443 Commits

Author SHA1 Message Date
Trevor Gross
77ddf1ac6b Rollup merge of #141591 - marcoieni:fix-llvm-test-coverage, r=Kobzol
ci: fix llvm test coverage

try-job: x86_64-gnu-llvm-19-1
try-job: x86_64-gnu-llvm-20-1
2025-05-27 20:28:33 -04:00
Trevor Gross
e0278ed5af Rollup merge of #141551 - compiler-errors:hir-lints, r=BoxyUwU
Make two transmute-related MIR lints into HIR lint

Make `PTR_TO_INTEGER_TRANSMUTE_IN_CONSTS` (rust-lang/rust#130540) and `UNNECESSARY_TRANSMUTES` (rust-lang/rust#136083) into "normal" HIR-based lints.

Funny enough this came up in the review of the latter (https://github.com/rust-lang/rust/pull/136083#issuecomment-2614301413), but I guess it just was overlooked.

But anywyas, there's no reason for these to be MIR lints; in fact, it makes the suggestions for them a bit more complicated than necessary.

Note that there's probably a few more simplifications and improvements to be done here. Follow-ups can be done in a separate PR, especially if they're about the messaging and suggestions themselves, which I didn't write.
2025-05-27 20:28:32 -04:00
Trevor Gross
a8c7a1e29b Rollup merge of #141517 - lolbinarycat:rustdoc-doctest-tooltip-ignore-141092, r=notriddle
rustdoc: use descriptive tooltip if doctest is conditionally ignored

fixes https://github.com/rust-lang/rust/issues/141092

here's what it looks like now:
![screenshot](https://github.com/user-attachments/assets/71e679fe-8828-439d-a2ce-b9187ad3aeea)
2025-05-27 20:28:32 -04:00
Trevor Gross
ee4efa1f86 Rollup merge of #141252 - dianqk:gvn-repeat-index, r=saethlin
gvn: bail out unavoidable non-ssa locals in repeat

Fixes #141251.

We cannot transform `*elem` to `array[idx1]` in the following code, as `idx1` has already been modified.

```rust
    mir! {
        let array;
        let elem;
        {
            array = [*val; 5];
            elem = &array[idx1];
            idx1 = idx2;
            RET = *elem;
            Return()
        }
    }
```

Perhaps I could transform it to `array[0]`, but I prefer the conservative approach.

r? mir-opt
2025-05-27 20:28:31 -04:00
Trevor Gross
0c2fbe53a6 Rollup merge of #140894 - Urgau:check-cfg-rustdoc, r=GuillaumeGomez
Make check-cfg diagnostics work in `#[doc(cfg(..))]`

This PR makes it so that the check-cfg `unexpected_cfgs` lint, is correctly emitted in `rustdoc`'s `#[doc(cfg(..))]`.

This is achieved by adding a custom trait to `cfg_matches` (the method that emits the lint) which permits `rustc` and `rustdoc` to each have their way to emitting lints (via buffered lints/AST for `rustc` and via `TyCtxt`/HIR for `rustdoc`).

The reason this is required is because buffered lints operates on the AST but `rustdoc` uses the HIR and by the time `rustdoc` calls `cfg_matches` we are way passed the point where buffered lints have been drain and emitted.

Best reviewed commit by commit.

r? `@jieyouxu` (for the compiler part)
r? `@GuillaumeGomez` (for the rustdoc part)
2025-05-27 20:28:30 -04:00
Trevor Gross
743d2527a2 Rollup merge of #140367 - folkertdev:asm-cfg, r=nnethercote
add `asm_cfg`: `#[cfg(...)]` within `asm!`

tracking issue: https://github.com/rust-lang/rust/issues/140364
blocked on: https://github.com/rust-lang/rust/pull/140490

This feature was discussed in https://github.com/rust-lang/rust/issues/140279. It allows configuring templates and operands in the assembly macros, for example:

```rust
asm!( // or global_asm! or naked_asm!
    "nop",
    #[cfg(target_feature = "sse2")]
    "nop",
    // ...
    #[cfg(target_feature = "sse2")]
    a = const 123, // only used on sse2
);
```

r? `@tgross35`

cc `@traviscross` `@Amanieu`

Now builds on https://github.com/rust-lang/rust/pull/140490, which should be merged first.
2025-05-27 20:28:30 -04:00
bors
45f256d9d7 Auto merge of #141662 - matthiaskrgr:rollup-9kt4zj7, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#141312 (Add From<TryLockError> for io::Error)
 - rust-lang/rust#141495 (Rename `{GenericArg,Term}::unpack()` to `kind()`)
 - rust-lang/rust#141602 (triagebot: label LLVM submodule changes with `A-LLVM`)
 - rust-lang/rust#141632 (remove `visit_mt` from `ast::mut_visit`)
 - rust-lang/rust#141640 (test: convert version_check ui test to run-make)
 - rust-lang/rust#141645 (bump fluent-* crates)
 - rust-lang/rust#141650 (coverage: Revert "unused local file IDs" due to empty function names)
 - rust-lang/rust#141654 (tests: mark option-niche-eq as fixed on LLVM 21)

Failed merges:

 - rust-lang/rust#141430 (remove `visit_clobber` and move `DummyAstNode` to `rustc_expand`)
 - rust-lang/rust#141636 (avoid some usages of `&mut P<T>` in AST visitors)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-27 18:59:47 +00:00
Matthias Krüger
c7d0a61e22 Rollup merge of #141654 - durin42:randomly-fixed-test, r=jieyouxu
tests: mark option-niche-eq as fixed on LLVM 21

Some combination of recent Rust changes (between 3d86494a0d and aa57e46e24 from what I can tell) and changes in LLVM 21 (not recently, as best I can tell) have caused this test to start showing the behavior we want, so it's time to move this test to a proper place and mark it as fixed on LLVM 21.

~~Probably "fixes" rust-lang/rust#49892, but I'll let others make that call.~~

Closes rust-lang/rust#49892 unless we want to break out a dedicated issue for `Option<bool>::eq` on LLVM 20 (seems low-value).

`@rustbot` label llvm-main
2025-05-27 20:57:58 +02:00
Matthias Krüger
003fbf1fad Rollup merge of #141650 - Zalathar:revert-unused-local-file, r=Zalathar
coverage: Revert "unused local file IDs" due to empty function names

The changes to coverage metadata generation in rust-lang/rust#140847 appear to be the most likely cause of the `function name is empty` errors reported in rust-lang/rust#141577.

If that guess is correct, great. If not, no big deal.

---

This reverts commit 3b22c21dd8, reversing changes made to 5f292eea6d.

r? ghost
2025-05-27 20:57:57 +02:00
Matthias Krüger
043e498062 Rollup merge of #141645 - klensy:fluent-b, r=jieyouxu
bump fluent-* crates

This bumps fluent-* crates, switching to more up-to-date deps, reducing number of old ones.

changelogs is pure refactoring:
https://github.com/projectfluent/fluent-rs/blob/fluent-bundle%400.16.0/fluent-bundle/CHANGELOG.md
https://github.com/projectfluent/fluent-rs/blob/fluent-bundle%400.16.0/fluent-syntax/CHANGELOG.md
2025-05-27 20:57:57 +02:00
Matthias Krüger
09e643f963 Rollup merge of #141640 - Fabian-Gruenbichler:mr/test-version-check-rpath-false, r=jieyouxu
test: convert version_check ui test to run-make

else it breaks with `rpath=false`.

Fixes: rust-lang/rust#141579
2025-05-27 20:57:56 +02:00
Matthias Krüger
7807f5f0cb Rollup merge of #141632 - fee1-dead-contrib:push-txmttkxvwqxl, r=oli-obk
remove `visit_mt` from `ast::mut_visit`

doesn't look like anyone is using it.
2025-05-27 20:57:55 +02:00
Matthias Krüger
732f671c53 Rollup merge of #141602 - jieyouxu:llvm-submodule, r=apiraino
triagebot: label LLVM submodule changes with `A-LLVM`

Fixes rust-lang/rust#141601.

r? `@apiraino`
2025-05-27 20:57:55 +02:00
Matthias Krüger
16af814a4e Rollup merge of #141495 - compiler-errors:rename-unpack, r=fmease
Rename `{GenericArg,Term}::unpack()` to `kind()`

A well-deserved rename IMO.

r? `@oli-obk` or `@lcnr` (or anyone)

cc `@rust-lang/types,` but I'd be surprised if this is controversial.
2025-05-27 20:57:54 +02:00
Matthias Krüger
88b12f3649 Rollup merge of #141312 - cberner:filelock_from, r=joshtriplett
Add From<TryLockError> for io::Error

Adds a `From` impl to make error propagation easier, as discussed in the tracking issue

`TryLockError` is unstable under the "file_lock" feature. The related tracking issue is https://github.com/rust-lang/rust/issues/130994

This PR also cleanups the Windows implementation of `try_lock()` and `try_lock_shared()` as [discussed here](https://github.com/rust-lang/rust/pull/140718#discussion_r2076678485)
2025-05-27 20:57:53 +02:00
bors
c583fa6d84 Auto merge of #141644 - compiler-errors:rollup-gl5hize, r=compiler-errors
Rollup of 17 pull requests

Successful merges:

 - rust-lang/rust#140591 (Fix malformed suggestion for E0061 when method is a macro token in macro context)
 - rust-lang/rust#141536 (Improve `ambiguous_wide_pointer_comparisons` lint compare diagnostics)
 - rust-lang/rust#141552 (Pull out dedicated `cfg_version` syntax test from feature gate test)
 - rust-lang/rust#141556 (bootstrap: translate Windows paths in a way that works for both Cygwin and MSYS2)
 - rust-lang/rust#141563 (Remove out-of-date `noop_*` names.)
 - rust-lang/rust#141568 (dist: make sure llvm-project submodule is present)
 - rust-lang/rust#141580 (Use more detailed spans in dyn compat errors within bodies)
 - rust-lang/rust#141582 (intrinsics, ScalarInt: minor cleanup)
 - rust-lang/rust#141584 (Support `opaque_types_defined_by` for `SyntheticCoroutineBody`)
 - rust-lang/rust#141587 (Add missing edition directives for async-await tests)
 - rust-lang/rust#141594 (Add `generic_arg_infer` test)
 - rust-lang/rust#141596 (rustc book: fix erratic sentence by making it more simple)
 - rust-lang/rust#141599 (Remove an unnecessary use of `Box::into_inner`.)
 - rust-lang/rust#141611 (Update mdbook to 0.4.51)
 - rust-lang/rust#141616 (Remove spastorino from vacations)
 - rust-lang/rust#141623 (use custom types to clarify arguments to `emit_ptr_va_arg`)
 - rust-lang/rust#141635 (further dedup `WalkItemKind` for `mut_visit` and `visit`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-27 15:43:55 +00:00
Augie Fackler
a963e6fc38 tests: mark option-niche-eq as fixed on LLVM 21
Some combination of recent Rust changes (between 3d86494a0d and
aa57e46e24 from what I can tell) and changes in LLVM 21 (not recently,
as best I can tell) have caused this test to start showing the behavior
we want, so it's time to move this test to a proper place and mark it as
fixed on LLVM 21.
2025-05-27 11:20:52 -04:00
Zalathar
3f526eeec4 coverage: Revert "unused local file IDs" due to empty function names
This reverts commit 3b22c21dd8, reversing
changes made to 5f292eea6d.
2025-05-27 23:33:29 +10:00
bors
642e49bfed Auto merge of #141641 - marcoieni:codebuild-ghcr-pr-job, r=Kobzol
ci: use ghcr registry for x86_64-gnu-tools job
2025-05-27 12:30:52 +00:00
Jieyou Xu
e25cf45daa triagebot: label src/llvm-project and rustc_{llvm, codegen_llvm} changes with A-LLVM 2025-05-27 19:52:59 +08:00
Michael Goulet
5f3ae06db0 Fix some var names 2025-05-27 11:14:47 +00:00
Michael Goulet
29c3babd7c Rename unpack to kind 2025-05-27 11:14:45 +00:00
klensy
e6312c9232 bump fluent-* crates 2025-05-27 14:11:14 +03:00
Michael Goulet
d7e961a4c9 Rollup merge of #141635 - fee1-dead-contrib:push-lmyymwotrspk, r=oli-obk
further dedup `WalkItemKind` for `mut_visit` and `visit`

also some drive-by fixes.

r? oli-obk
2025-05-27 13:01:44 +02:00
Michael Goulet
f0ee1d7100 Rollup merge of #141623 - folkertdev:va-arg-explicit-types, r=workingjubilee
use custom types to clarify arguments to `emit_ptr_va_arg`

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

split out of https://github.com/rust-lang/rust/pull/141622

r? ``@workingjubilee``
``@rustbot`` label: +F-c_variadic
2025-05-27 13:01:43 +02:00
Michael Goulet
1aa6a27ea6 Rollup merge of #141616 - spastorino:remove-spastorino-on-vacations, r=spastorino
Remove spastorino from vacations
2025-05-27 13:01:43 +02:00
Michael Goulet
761dbc788d Rollup merge of #141611 - ehuss:update-mdbook, r=Mark-Simulacrum
Update mdbook to 0.4.51

This fixes a silly regression introduced in 0.4.50 that broke the search hotkey (https://github.com/rust-lang/rust/pull/141457).

Changelog: https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-0451
2025-05-27 13:01:42 +02:00
Michael Goulet
2de2e652ad Rollup merge of #141599 - nnethercote:rm-Box-into_inner, r=fmease,chenyukang
Remove an unnecessary use of `Box::into_inner`.

r? ```@chenyukang```
2025-05-27 13:01:42 +02:00
Michael Goulet
4b47bd439e Rollup merge of #141596 - tshepang:patch-2, r=Urgau
rustc book: fix erratic sentence by making it more simple
2025-05-27 13:01:41 +02:00
Michael Goulet
6344245e4f Rollup merge of #141594 - BoxyUwU:another_gai_test, r=jieyouxu
Add `generic_arg_infer` test

I think most of our existing tests around behaviour of repeat expr inferred counts fail by not having enough inference progress, rather than by having enough inference progress but the element not actually implementing `Copy`.
2025-05-27 13:01:41 +02:00
Michael Goulet
38d18626b1 Rollup merge of #141587 - ferrocene:lw-yurotqzwvwlw, r=jieyouxu
Add missing edition directives for async-await tests

These tests specifically test 2015 edition behavior
2025-05-27 13:01:40 +02:00
Michael Goulet
9d46af12e0 Rollup merge of #141584 - compiler-errors:typing-env-synthetic-body, r=lcnr
Support `opaque_types_defined_by` for `SyntheticCoroutineBody`

We create a synthetic MIR body for the `AsyncFnOnce` impl for async closures. That body goes through all passes that a regular body does, including promotion.

Promotion sometimes requires computing that the type of an rvalue is `Freeze`, which requires computing the typing env of a body. This requires calling `opaque_types_defined_by` on the body's def id, which leads to an ICE today since we don't expect that query to be called for synthetic bodies.

While we could fix this by, for example, computing the typeck root of the body before calling a `TypingEnv` constructor, I think it's appropriate to do a more general fix here since I think it's reasonable that other passes might do analysis too.

Fixes rust-lang/rust#141466

r? ```@lcnr``` or ```@oli-obk```
2025-05-27 13:01:40 +02:00
Michael Goulet
fb4cc991c0 Rollup merge of #141582 - RalfJung:cleanup, r=bjorn3
intrinsics, ScalarInt: minor cleanup

Taken out of https://github.com/rust-lang/rust/pull/141507 while we resolve technical disagreements in that PR.

r? ``@bjorn3``
2025-05-27 13:01:39 +02:00
Michael Goulet
fbac805425 Rollup merge of #141580 - oli-obk:early-dyn-catches-the-incompat, r=compiler-errors
Use more detailed spans in dyn compat errors within bodies

Within bodies we can employ the full dyn compat check query instead of only doing the minimal hir ty lowerer one. This in turn gives us better spans and also silences many follow-up duplicate or bogus errors.

alternative to https://github.com/rust-lang/rust/pull/141439, tho I think I could turn the delayed bug from that one into a bug now instead of having an error code path.

r? `@compiler-errors`
cc `@fmease`
2025-05-27 13:01:38 +02:00
Michael Goulet
2c5361a309 Rollup merge of #141568 - onur-ozkan:141393-fix, r=Kobzol
dist: make sure llvm-project submodule is present

Zero-config `x install` fails when bootstrap tries to copy files from the LLVM submodule because it's not properly initialized/handled. This diff handles that.

Fixes https://github.com/rust-lang/rust/issues/141393
2025-05-27 13:01:38 +02:00
Michael Goulet
7acdffb6e4 Rollup merge of #141563 - nnethercote:rm-noop, r=petrochenkov
Remove out-of-date `noop_*` names.

`mut_visit.rs` has a single function with a `noop_` prefix: `noop_filter_map_expr`. This commit renames as `walk_filter_map_expr` which is consistent with other functions in this file.

The commit also removes out-of-date comments that refer to `noop_*` methods.

r? `@petrochenkov`
2025-05-27 13:01:37 +02:00
Michael Goulet
f1371a8891 Rollup merge of #141556 - jeremyd2019:patch-1, r=jieyouxu
bootstrap: translate Windows paths in a way that works for both Cygwin and MSYS2

Cygwin defaults to rooting Windows paths in /cygdrive/X, while MSYS2 configures them to be /X.  Regardless of configuration, drives are always accessible as /proc/cygdrive/X, so use that.

If there are other shells on Windows that are supported and use /X style paths, perhaps something more complicated needs to be done.

r? `@jieyouxu`

`@Berrysoft` `@mati865`
2025-05-27 13:01:37 +02:00
Michael Goulet
b7854c65a9 Rollup merge of #141552 - jieyouxu:cfg-version-tests, r=est31
Pull out dedicated `cfg_version` syntax test from feature gate test

Tracking issue: rust-lang/rust#64796.
Closes rust-lang/rust#141452, as a follow-up to https://github.com/rust-lang/rust/pull/141413#discussion_r2104490809 (point 3 of that is probably too pedantic).

The feature gate test was dual-purposing causing feature gate errors to distract from syntax exercises.

``@rustbot`` label +F-cfg_version
r? ``@est31``
2025-05-27 13:01:36 +02:00
Michael Goulet
a0d77f37f3 Rollup merge of #141536 - Urgau:ambi_wide_ptr-cmp-diag, r=fee1-dead
Improve `ambiguous_wide_pointer_comparisons` lint compare diagnostics

This PR improves the `ambiguous_wide_pointer_comparisons` lint compare diagnostics: `cmp`/`partial_cmp`, but also the operators `<`/`>`/`>=`/`<=`, by:
1. removing the reference to `std::ptr::addr_eq` which only works for equality
2. and adding an `#[expect]` suggestion for keeping the current behavior

Fixes rust-lang/rust#141510
2025-05-27 13:01:36 +02:00
Michael Goulet
77e35944af Rollup merge of #140591 - Kivooeo:new-fix-five, r=davidtwco
Fix malformed suggestion for E0061 when method is a macro token in macro context

fixes #140512

before
```rust
3  -         <Self>::$method(8)
3  +         <Self>::<Self>::$method(8, /* u8 */)
```
now
```rust
3  |         <Self>::$method(8, /* u8 */)
   |                          ++++++++++
```
2025-05-27 13:01:35 +02:00
MarcoIeni
7314994008 ci: use ghcr registry for x86_64-gnu-tools job 2025-05-27 11:23:05 +02:00
bors
0fc6f1672b Auto merge of #141634 - Kobzol:try-perf, r=pietroalbini
Fix CI for unrolled builds on the `try-perf` branch

That branch is essentially the same as the `try` branch, it also needs S3 permissions. While at it, I cleaned up secret loading a bit.

Long term, we should move rollup unrolling from rustc-perf to bors, so that we can have only a single try branch.

The AWS Terraform configuration will also have to be changed to provide the secrets (the `bors` environment) also for the `try-perf` branch.

r? `@marcoieni`
2025-05-27 09:19:15 +00:00
Nicholas Nethercote
89c21f7c1a Remove out-of-date noop_* names.
`mut_visit.rs` has a single function with a `noop_` prefix:
`noop_filter_map_expr`. This commit renames as `walk_filter_map_expr`
which is consistent with other functions in this file.

The commit also removes out-of-date comments that refer to `noop_*`
methods.
2025-05-27 19:16:11 +10:00
Fabian Grünbichler
dd148a0696 test: convert version_check ui test to run-make
else it breaks with `rpath=false`.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2025-05-27 11:12:15 +02:00
Oli Scherer
3fff727e87 Use more detailed spans in dyn compat errors within bodies 2025-05-27 08:18:11 +00:00
Folkert de Vries
c7c0194d98 move asm parsing code into rustc_parse 2025-05-27 09:44:10 +02:00
Folkert de Vries
e3bbbeeafd support #[cfg(...)] on arguments to the asm! macros 2025-05-27 09:44:04 +02:00
Deadbeef
e0d4cf38f4 further dedup WalkItemKind for mut_visit and visit
also some drive-by fixes.
2025-05-27 14:54:02 +08:00
Jakub Beránek
7fae5efa4d Fix CI for unrolled builds on the try-perf branch
That branch is essentially the same as the `try` branch, it also needs S3 permissions.

Long term, we should move rollup unrolling from rustc-perf to bors, so that we can have only a single try branch.
2025-05-27 08:44:51 +02:00
Deadbeef
7fdf35ed1c remove visit_mt from ast::mut_visit
doesn't look like anyone is using it.
2025-05-27 14:24:18 +08:00