Commit Graph

300840 Commits

Author SHA1 Message Date
Jakub Beránek
e68f5fe9ed Implement check::RustAnalyzer using the tool_check_step macro 2025-07-20 22:49:46 +02:00
Ralf Jung
d2be1c8d00 Option::as_slice: fix comment 2025-07-20 22:39:10 +02:00
Ralf Jung
7bf2dd6295 update lockfile 2025-07-20 22:27:43 +02:00
Ralf Jung
3f9be406a6 fix handling of base address for TypeId allocations 2025-07-20 22:14:27 +02:00
Marijn Schouten
f147716e7d flt2dec: use fill instead of loop 2025-07-20 18:45:11 +00:00
Michael Goulet
1e96d7a553 Consider param-env for fast path 2025-07-20 17:45:01 +00:00
Scott McMurray
41ce1ed252 Ban projecting into SIMD types [MCP838] 2025-07-20 10:22:09 -07:00
ognevnydemon
6fd83ea5e5 opt-dist: change build_dir field to be an actual build dir
make it configurable so users can set build.build-dir option in bootstrap.toml
2025-07-20 20:19:11 +03:00
Scott McMurray
f790042c6a Update Miri Tests 2025-07-20 10:15:14 -07:00
Scott McMurray
493fd9a541 Update cranelift tests 2025-07-20 10:15:14 -07:00
Scott McMurray
25a804ab06 ...and wasm tests too 2025-07-20 10:15:14 -07:00
Scott McMurray
08b816ff18 So many test updates x_x 2025-07-20 10:15:14 -07:00
bors
9982d6462b Auto merge of #143861 - rust-lang:cargo_update, r=clubby789
Weekly `cargo update`

Automation to keep dependencies in `Cargo.lock` current.
r? dep-bumps

The following is the output from `cargo update`:

```txt

compiler & tools dependencies:
     Locking 15 packages to latest compatible versions
    Updating chrono-tz v0.10.3 -> v0.10.4
    Removing chrono-tz-build v0.4.1
    Updating clap v4.5.40 -> v4.5.41
    Updating clap_builder v4.5.40 -> v4.5.41
    Updating clap_derive v4.5.40 -> v4.5.41
    Updating crc32fast v1.4.2 -> v1.5.0
    Updating derive_setters v0.1.7 -> v0.1.8
    Updating libredox v0.1.4 -> v0.1.6
    Updating measureme v12.0.1 -> v12.0.3
    Removing parse-zoneinfo v0.3.1
      Adding phf v0.12.1
      Adding phf_shared v0.12.1
    Updating rustix v1.0.7 -> v1.0.8
    Updating serde_json v1.0.140 -> v1.0.141
    Updating sysinfo v0.36.0 -> v0.36.1
    Updating wasi-preview1-component-adapter-provider v34.0.1 -> v34.0.2
    Updating winnow v0.7.11 -> v0.7.12
note: pass `--verbose` to see 39 unchanged dependencies behind latest

library dependencies:
     Locking 0 packages to latest compatible versions
note: pass `--verbose` to see 3 unchanged dependencies behind latest

rustbook dependencies:
     Locking 13 packages to latest compatible versions
    Updating ammonia v4.1.0 -> v4.1.1
    Updating cc v1.2.29 -> v1.2.30
    Updating clap v4.5.40 -> v4.5.41
    Updating clap_builder v4.5.40 -> v4.5.41
    Updating clap_complete v4.5.54 -> v4.5.55
    Updating clap_derive v4.5.40 -> v4.5.41
    Updating crc32fast v1.4.2 -> v1.5.0
    Updating html5ever v0.31.0 -> v0.35.0
    Updating markup5ever v0.16.2 -> v0.35.0
    Updating match_token v0.1.0 -> v0.35.0
    Updating rustix v1.0.7 -> v1.0.8
    Updating serde_json v1.0.140 -> v1.0.141
    Updating winnow v0.7.11 -> v0.7.12
```
2025-07-20 16:53:07 +00:00
Nadrieril
3567ab19a0 Don't consider unstable fields always-inhabited
This reverts the hack in https://github.com/rust-lang/rust/pull/133889
now that `Pin`'s field is no longer public.
2025-07-20 18:23:18 +02:00
bors
0864097cd3 Auto merge of #144219 - GuillaumeGomez:rollup-ha29sql, r=GuillaumeGomez
Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#143282 (Add `uX::strict_sub_signed`)
 - rust-lang/rust#143423 (address clippy formatting nits)
 - rust-lang/rust#143720 (Allow `Rvalue::Repeat` to return true in `rvalue_creates_operand` too)
 - rust-lang/rust#144011 (bootstrap: Don't trigger an unnecessary LLVM build from check builds)
 - rust-lang/rust#144112 (bootstrap: Ignore `rust.debuginfo-level-tests` for codegen tests)
 - rust-lang/rust#144125 (Add new `ignore-backends` and `needs-backends` tests annotations)
 - rust-lang/rust#144143 (Fix `-Ctarget-feature`s getting ignored after `crt-static`)
 - rust-lang/rust#144150 (tests: assembly: cstring-merging: Disable GlobalMerge pass)
 - rust-lang/rust#144190 (Give a message with a span on MIR validation error)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-20 13:52:48 +00:00
Guillaume Gomez
ae3708e4b2 Rollup merge of #144190 - scottmcm:spanned-errors-in-mir-validation, r=RalfJung
Give a message with a span on MIR validation error

It was handy to get a source+line link for rust-lang/rust#143833, even if it's just to the function and not necessarily to the statement.

r? mir
2025-07-20 15:34:08 +02:00
Guillaume Gomez
8e7601e10e Rollup merge of #144150 - Gelbpunkt:globalmerge, r=Mark-Simulacrum
tests: assembly: cstring-merging: Disable GlobalMerge pass

The test relies on LLVM not merging all the globals into one and would currently otherwise fail on powerpc64le.

See https://github.com/llvm/llvm-project/blob/release/20.x/llvm/lib/CodeGen/GlobalMerge.cpp and here's the assembly generated prior to disabling the pass:

<details>

<summary>Expand me</summary>

```asm
	.abiversion 2
	.file	"cstring_merging.5aa81ea7b99b31fe-cgu.0"
	.section	.text.cstr,"ax",``@progbits``
	.globl	cstr
	.p2align	4
	.type	cstr,``@function``
cstr:
.Lfunc_begin0:
	.cfi_startproc
.Lfunc_gep0:
	addis 2, 12, .TOC.-.Lfunc_gep0@ha
	addi 2, 2, .TOC.-.Lfunc_gep0@l
.Lfunc_lep0:
	.localentry	cstr, .Lfunc_lep0-.Lfunc_gep0
	addis 3, 2, .L_MergedGlobals@toc@ha
	li 4, 4
	addi 3, 3, .L_MergedGlobals@toc@l
	addi 3, 3, 4
	blr
	.long	0
	.quad	0
.Lfunc_end0:
	.size	cstr, .Lfunc_end0-.Lfunc_begin0
	.cfi_endproc

	.section	.text.manual_cstr,"ax",``@progbits``
	.globl	manual_cstr
	.p2align	4
	.type	manual_cstr,``@function``
manual_cstr:
.Lfunc_begin1:
	.cfi_startproc
.Lfunc_gep1:
	addis 2, 12, .TOC.-.Lfunc_gep1@ha
	addi 2, 2, .TOC.-.Lfunc_gep1@l
.Lfunc_lep1:
	.localentry	manual_cstr, .Lfunc_lep1-.Lfunc_gep1
	addis 3, 2, .L_MergedGlobals@toc@ha
	li 4, 4
	addi 3, 3, .L_MergedGlobals@toc@l
	addi 3, 3, 8
	blr
	.long	0
	.quad	0
.Lfunc_end1:
	.size	manual_cstr, .Lfunc_end1-.Lfunc_begin1
	.cfi_endproc

	.type	CSTR,``@object``
	.section	.data.rel.ro.CSTR,"aw",``@progbits``
	.globl	CSTR
	.p2align	3, 0x0
CSTR:
	.quad	.L_MergedGlobals
	.size	CSTR, 8

	.type	.L_MergedGlobals,``@object``
	.section	.rodata..L_MergedGlobals,"a",``@progbits``
.L_MergedGlobals:
	.asciz	"foo"
	.asciz	"bar"
	.asciz	"baz"
	.size	.L_MergedGlobals, 12

.set .Lanon.a643e9a6bba67b7953be2b5f96e0e802.0, .L_MergedGlobals
	.size	.Lanon.a643e9a6bba67b7953be2b5f96e0e802.0, 4
.set .Lanon.a643e9a6bba67b7953be2b5f96e0e802.1, .L_MergedGlobals+4
	.size	.Lanon.a643e9a6bba67b7953be2b5f96e0e802.1, 4
.set .Lanon.a643e9a6bba67b7953be2b5f96e0e802.2, .L_MergedGlobals+8
	.size	.Lanon.a643e9a6bba67b7953be2b5f96e0e802.2, 4
	.ident	"rustc version 1.90.0-dev"
	.section	".note.GNU-stack","",``@progbits``
```

</details>
2025-07-20 15:34:08 +02:00
Guillaume Gomez
1e6ef245cd Rollup merge of #144143 - Gelbpunkt:target-features-crt-static, r=RalfJung
Fix `-Ctarget-feature`s getting ignored after `crt-static`

The current behaviour introduced by commit a50a3b8e31 would discard any target features specified after `crt-static` (the only member of `RUSTC_SPECIFIC_FEATURES`). This is because it returned instead of continuing processing the next feature.

I wasn't entirely sure how the regression test should look like, but this one should do. If anyone has some suggestions, I'm happy to learn, it's my first test :)

I've confirmed that the test fails without the fix on `powerpc64le-unknown-linux-musl` and `x86_64-unknown-linux-gnu`.

cc ``@RalfJung``
2025-07-20 15:34:07 +02:00
Guillaume Gomez
2abca9c43f Rollup merge of #144125 - GuillaumeGomez:new-annotations, r=Kobzol
Add new `ignore-backends` and `needs-backends` tests annotations

Part of https://github.com/rust-lang/compiler-team/issues/891.

Next step will be to add these annotations in the files where either the output is different based on the codegen (like `asm` tests) or that are known to fail in the GCC backend.

cc `@oli-obk` `@antoyo`
r? `@Kobzol`
2025-07-20 15:34:07 +02:00
Guillaume Gomez
cb6542e7e3 Rollup merge of #144112 - Enselic:no-debuginfo-in-codegen, r=Mark-Simulacrum
bootstrap: Ignore `rust.debuginfo-level-tests` for codegen tests

As dicussed in https://github.com/rust-lang/rust/issues/61117#issuecomment-495587364, codegen tests typically depend on the raw LLVM IR output and are sensitive to debuginfo level. So do not apply `rust.debuginfo-level-tests` for codegen tests.

Before this commit:

    $ ./x test --set rust.debuginfo-level-tests=2 tests/codegen --force-rerun
    test result: FAILED. 654 passed; 136 failed; 75 ignored; 0 measured; 0 filtered out; finished in 3.22s

After this commit:

    $ ./x test --set rust.debuginfo-level-tests=2 tests/codegen --force-rerun
    NOTE: ignoring `rust.debuginfo-level-tests=2` for codegen tests
    test result: ok. 790 passed; 0 failed; 75 ignored; 0 measured; 0 filtered out; finished in 3.21s

### Run this in CI?

Maybe it will make sense to add this to CI later but I think it is too early to do now before more non-codegen tests work with `rust.debuginfo-level-tests=2`.
2025-07-20 15:34:06 +02:00
Guillaume Gomez
2a4a4112b3 Rollup merge of #144011 - Zalathar:check-compiler-no-llvm, r=Kobzol
bootstrap: Don't trigger an unnecessary LLVM build from check builds

Coming back to r-l/r development after a few weeks away, I found a major regression in my dev workflows: running `x check compiler` (either manually or via rust-analyzer) would have the side-effect of building LLVM, even though that shouldn't be necessary.

For my main build directory this would be a minor annoyance, but for my separate rust-analyzer build directory it's a huge problem because it causes a completely separate build of LLVM, which takes a long time and should be completely unnecessary.

---

After some investigation, I tracked down the problem to the `can_skip_build` check in this code:

3014e79f9c/src/bootstrap/src/core/build_steps/compile.rs (L1382-L1396)

Historically, this would skip the LLVM build for stage 0 check builds. But after the recent stage 0 std redesign and some associated check stage renumbering (e.g. rust-lang/rust#143048), the condition `builder.top_stage == build_stage` is now false, because `top_stage` is 1 (due to the renumbering) but `build_stage` is 0 (because a “stage 1” non-library check build still uses the stage 0 compiler).

---

Because this is a critical contributor roadblock for me, I have tried to fix this in a relatively narrow way. It's possible that all of this surrounding logic could be greatly simplified (especially in light of the stage redesign changes), but I didn't want this fix to be held back by scope creep.

---

(Zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Bootstrap.20incorrectly.20building.20LLVM.20for.20check.20builds/near/528991035)
2025-07-20 15:34:06 +02:00
Guillaume Gomez
2461d6ccb8 Rollup merge of #143720 - scottmcm:rvalue-always-operand, r=lcnr
Allow `Rvalue::Repeat` to return true in `rvalue_creates_operand` too

The conversation in https://github.com/rust-lang/rust/pull/143502#discussion_r2189410911 made be realize how easy this is to handle, since the only possibilty is ZSTs -- everything else ends up with the destination being `LocalKind::Memory` and thus doesn't call `codegen_rvalue_operand` at all.

This gets us perilously close to a world where `rvalue_creates_operand` only ever returns true.  (See rust-lang/rust#143860 for more.)
2025-07-20 15:34:05 +02:00
Guillaume Gomez
5ba1251b55 Rollup merge of #143423 - hkBst:clippy-fix-1, r=workingjubilee
address clippy formatting nits

- int_log10.rs: change top level doc comments to outer
- collect.rs: remove empty line after doc comment
- clippy fix: markdown indentation for indented items after line break: a markdown list item continued over multiples lines, but those following lines which are part of the same item are not indented
- clippy fix: bound in one place: when there is a bound in angle brackets and another bound on the same variable in a where clause
2025-07-20 15:34:04 +02:00
Guillaume Gomez
0162cc50e3 Rollup merge of #143282 - nxsaken:strict_sub_signed, r=jhpratt
Add `uX::strict_sub_signed`

rust-lang/rust#116090 missed `strict_sub_signed`, adding it here.
Part of rust-lang/rust#118260.

r? ``@m-ou-se``
2025-07-20 15:34:04 +02:00
Camille GILLOT
7da6fd1221 Lower extra lifetimes before normal generic params. 2025-07-20 13:21:22 +00:00
Camille GILLOT
313dff14b9 Add test. 2025-07-20 13:21:22 +00:00
Nadrieril
e9fb744207 Add test 2025-07-20 14:49:43 +02:00
Guillaume Gomez
4a35a9f074 Add new needs-backends tests annotations 2025-07-20 14:44:01 +02:00
Guillaume Gomez
9944139f70 Add new ignore-backends tests annotations 2025-07-20 14:43:59 +02:00
Laurențiu Nicola
fa0320d077 Merge pull request #20255 from A4-Tacks/deref-intranstive
Fix ide-assist: generate Deref transitive
2025-07-20 10:54:35 +00:00
Laurențiu Nicola
2eaba02b39 Merge pull request #20265 from ChayimFriedman2/cfg-select
feat: Support `cfg_select!`
2025-07-20 10:48:40 +00:00
bors
ca9eecda36 Auto merge of #144208 - matthiaskrgr:rollup-wrli87h, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#141260 (Allow volatile access to non-Rust memory, including address 0)
 - rust-lang/rust#143604 (Stabilize `const_float_round_methods`)
 - rust-lang/rust#143988 ([rustdoc] Make aliases search support partial matching)
 - rust-lang/rust#144078 (Fix debuginfo-lto-alloc.rs test)
 - rust-lang/rust#144111 (Remove deprecated `MaybeUninit` slice methods)
 - rust-lang/rust#144116 (Fixes for LLVM 21)
 - rust-lang/rust#144134 (Cleanup unicode table gen)
 - rust-lang/rust#144142 (Add implicit sized bound to trait ascription types)
 - rust-lang/rust#144148 (Remove pretty print hack for async blocks)
 - rust-lang/rust#144169 (interpret: fix TypeId pointers being considered data pointers)
 - rust-lang/rust#144196 (Initialize mingw for the runner's user)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-20 10:06:53 +00:00
bjorn3
fdf8bdb7a2 Remove the ptr_unique lang item
Miri no longer uses it.
2025-07-20 09:50:58 +00:00
Chayim Refael Friedman
8b6559b05b Support cfg_select! 2025-07-20 11:56:45 +03:00
Matthias Krüger
faefaa0aef Rollup merge of #144196 - ChrisDenton:init-mingw, r=mati865
Initialize mingw for the runner's user

This is apparently the more proper fix to https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Spurious.20bors.20CI.20failures/near/528915775

But let's see if it works.
2025-07-20 08:56:11 +02:00
Matthias Krüger
72588c8eb0 Rollup merge of #144169 - RalfJung:type-id-fix, r=oli-obk
interpret: fix TypeId pointers being considered data pointers

Fixes https://github.com/rust-lang/miri/issues/4477
r? ````@oli-obk````
2025-07-20 08:56:10 +02:00
Matthias Krüger
82c48e1c69 Rollup merge of #144148 - compiler-errors:async-print-hack, r=lqd
Remove pretty print hack for async blocks

I introduced this hack 3 years ago, but it's not needed anymore, probably due to https://github.com/rust-lang/rust/pull/104321.
2025-07-20 08:56:10 +02:00
Matthias Krüger
23c81a75e1 Rollup merge of #144142 - compiler-errors:itib, r=fmease
Add implicit sized bound to trait ascription types

r? ```@fmease``` or reassign

Thanks for catching this :)

Fixes rust-lang/rust#144135
2025-07-20 08:56:09 +02:00
Matthias Krüger
9a927a2f03 Rollup merge of #144134 - hkBst:cleanup-unicode-table-gen, r=Mark-Simulacrum
Cleanup unicode table gen

Fixing clippy warnings and moving to edition 2024.
2025-07-20 08:56:09 +02:00
Matthias Krüger
d24684ef4f Rollup merge of #144116 - nikic:llvm-21-fixes, r=dianqk
Fixes for LLVM 21

This fixes compatibility issues with LLVM 21 without performing the actual upgrade. Split out from https://github.com/rust-lang/rust/pull/143684.

This fixes three issues:
 * Updates the AMDGPU data layout for address space 8.
 * Makes emit-arity-indicator.rs a no_core test, so it doesn't fail on non-x86 hosts.
 * Explicitly sets the exception model for wasm, as this is no longer implied by `-wasm-enable-eh`.
2025-07-20 08:56:08 +02:00
Matthias Krüger
5e5ac49bbb Rollup merge of #144111 - clarfonthey:maybe-uninit-deprecated, r=jhpratt
Remove deprecated `MaybeUninit` slice methods

These were left in to make migration a bit easier, although they should be removed now since they were never stable.
2025-07-20 08:56:08 +02:00
Matthias Krüger
bfcfde97c2 Rollup merge of #144078 - bjorn3:fix_test, r=compiler-errors
Fix debuginfo-lto-alloc.rs test

This should have used build-pass rather than check-pass.
2025-07-20 08:56:07 +02:00
Matthias Krüger
dda505850a Rollup merge of #143988 - GuillaumeGomez:alias-inexact, r=lolbinarycat
[rustdoc] Make aliases search support partial matching

Fixes rust-lang/rust#140782.

To make this work, I moved aliases into the `searchIndex` like any other item. It links to the "original" item with a new `original` field. No so great part is that we need to have some fields like `bitIndex` to be set on the alias to make the description load to work but I consider it minor enough to be ok.

This PR voluntarily doesn't handle de-prioritization of aliases as ```@lolbinarycat``` wished to work on this so I'll leave them this part. 😉

cc ```@lolbinarycat```
2025-07-20 08:56:06 +02:00
Matthias Krüger
a8c2e540ec Rollup merge of #143604 - nxsaken:const_float_round_methods, r=RalfJung
Stabilize `const_float_round_methods`

Closes rust-lang/rust#141555, waiting for FCP.
2025-07-20 08:56:06 +02:00
Matthias Krüger
6d7d366fd3 Rollup merge of #141260 - LuigiPiucco:volatile-null, r=RalfJung
Allow volatile access to non-Rust memory, including address 0

This PR relaxes the `ub_check` in the `read_volatile`/`write_volatile` pointer operations to allow passing null. This is needed to support processors which hard-code peripheral registers on address 0, like the AVR chip ATtiny1626. LLVM understands this as valid and handles it correctly, as tested in my [PR to add a note about it](6387c82255 (diff-81bbb96298c32fa901beb82ab3b97add27a410c01d577c1f8c01000ed2055826)) (rustc generates the same LLVM IR as expected there when this PR is applied, and consequently the same AVR assembly).

Follow-up and implementation of the discussions in:
- https://internals.rust-lang.org/t/pre-rfc-conditionally-supported-volatile-access-to-address-0/12881/7
- https://github.com/Rahix/avr-device/pull/185;
- [#t-lang > Adding the possibility of volatile access to address 0](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Adding.20the.20possibility.20of.20volatile.20access.20to.20address.200/with/513303502)
- https://discourse.llvm.org/t/rfc-volatile-access-to-non-dereferenceable-memory-may-be-well-defined/86303

r? ````@RalfJung````

Also fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/29 (about as good as it'll get, null will likely never be a "normal" address in Rust)
2025-07-20 08:56:05 +02:00
bors
81af9d4569 Auto merge of #144068 - dianqk:update-llvm, r=cuviper
Update LLVM submodule

Fixes for https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fllvm/topic/Backporting.20LLVM.20fix.20for.20Wasm.20EH.3F/near/528879210.
2025-07-20 06:45:43 +00:00
Ralf Jung
c9f96487ce Merge pull request #4485 from rust-lang/rustup-2025-07-20
Automatic Rustup
2025-07-20 06:05:35 +00:00
The Miri Cronjob Bot
c3175802c5 Merge from rustc 2025-07-20 05:08:02 +00:00
The Miri Cronjob Bot
329fda0bc9 Preparing for merge from rustc 2025-07-20 05:00:42 +00:00
Scott McMurray
4b8f869c63 Split repeat-operand codegen test
Looks like the output it's looking for can be in different orders, so separate tests will fix that.
2025-07-19 20:50:02 -07:00