Commit graph

165409 commits

Author SHA1 Message Date
Ralf Jung
78bdd86c67 miri: also detect aliasing of in-place argument and return place 2025-08-22 10:21:33 +02:00
Jacob Pratt
0fcf80c055
Rollup merge of #145704 - marcoieni:no-windows-disk-cleanup, r=jieyouxu
ci: don't cleanup windows disk
2025-08-21 17:57:57 -04:00
Jacob Pratt
01f353af05
Rollup merge of #145703 - Gelbpunkt:ci-llvm-mips, r=Kobzol
Remove MIPS targets from CI LLVM platforms

All of these were demoted to tier 3 a while ago and we aren't building LLVM for them anymore.
2025-08-21 17:57:57 -04:00
Jacob Pratt
5619a465ac
Rollup merge of #145648 - bjorn3:tidy_deps_stricter, r=davidtwco
Add two tidy dependency checks

Deny duplicate dependencies for the standard library as it would almost certainly bloat executables. And deny proc-macro dependencies for the standard library as they would break cross-compilation.
2025-08-21 17:57:53 -04:00
Jacob Pratt
02deabb779
Rollup merge of #145137 - Kmeakin:km/optimize-slice-index-panicking, r=jhpratt
Consolidate panicking functions in `slice/index.rs`

Consolidate all the panicking functions in `slice/index.rs` to use a single `slice_index_fail` function, similar to how it is done in `str/traits.rs`.

Split off from https://github.com/rust-lang/rust/pull/145024
2025-08-21 17:57:51 -04:00
Jacob Pratt
32975fe542
Rollup merge of #144541 - folkertdev:c-variadic-same-program-multiple-abis-arm, r=RalfJung,davidtwco
c-variadic: multiple ABIs in the same program for arm

similar to https://github.com/rust-lang/rust/pull/144379, but for arm, requested in https://github.com/rust-lang/rust/pull/144066.

Quoting https://github.com/rust-lang/reference/issues/1946#issuecomment-3124555690

> `"aapcs"` specifically refers to the soft-float ABI where floating-point values are passed in integer registers.

However for c-variadic functions, `aapcs` behaves the same as `C`:

https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst#65parameter-passing

> A variadic function is always marshaled as for the base standard.

https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst#7the-standard-variants

> This section applies only to non-variadic functions. For a variadic function the base standard is always used both for argument passing and result return.

---

I also noticed that rustc currently emit more instructions than clang for c-variadic functions on arm, see https://godbolt.org/z/hMce9rnTh. I'll fix that separately. (edit: https://github.com/rust-lang/rust/pull/144549)

try-job: armhf-gnu
r? `@RalfJung`
2025-08-21 17:57:49 -04:00
bors
6ba0ce4094 Auto merge of #145647 - RalfJung:miri, r=RalfJung
miri subtree update

Subtree update of `miri` to 980da679e4.

Created using https://github.com/rust-lang/josh-sync.

r? `@ghost`
2025-08-21 10:10:42 +00:00
Karl Meakin
377a0c88a9 Consolidate panicking functions in slice/index.rs
Consolidate all the panicking functions in `slice/index.rs` to use a single
`slice_index_fail` function, similar to how it is done in `str/traits.rs`.
2025-08-21 11:07:25 +01:00
MarcoIeni
e073f905fb
ci: don't cleanup windows disk 2025-08-21 10:56:48 +02:00
Jens Reidel
a75aed356a
Remove MIPS targets from CI LLVM platforms
All of these were demoted to tier 3 a while ago and we aren't building
LLVM for them anymore.

Signed-off-by: Jens Reidel <adrian@travitia.xyz>
2025-08-21 09:04:35 +02:00
Jacob Pratt
2032ede072
Rollup merge of #145654 - Kobzol:gcc-ci-root, r=jieyouxu
Download CI GCC into the correct directory

While doing various experiments with stage3 cross-compilations, I realized that bootstrap is unable to download LLVM from CI for a non-host target, which is quite annoying. Fixing this for LLVM will take some work, but in the meantime we can easily fix this for `download-ci-gcc`, which was implemented in a much more self-contained way.
2025-08-21 01:12:23 -04:00
Jacob Pratt
5ea203adc7
Rollup merge of #145650 - GuillaumeGomez:fix-js-search-scripts-path, r=fmease
Fix JS search scripts path

`rootPath` always end with a `/` so we should not add one. Interestingly enough, it only triggers the bug on a website (like https://doc.rust-lang.org/nightly/std/).

Follow-up of https://github.com/rust-lang/rust/pull/144476.
Fixes rust-lang/rust#145646.

cc `````@notriddle`````
r? `````@fmease`````
2025-08-21 01:12:22 -04:00
Jacob Pratt
25b81bf5ad
Rollup merge of #145590 - nnethercote:ModKind-Inline, r=petrochenkov
Prevent impossible combinations in `ast::ModKind`.

`ModKind::Loaded` has an `inline` field and a `had_parse_error` field. If the `inline` field is `Inline::Yes` then `had_parse_error` must be `Ok(())`.

This commit moves the `had_parse_error` field into the `Inline::No` variant. This makes it impossible to create the nonsensical combination of `inline == Inline::Yes` and `had_parse_error = Err(_)`.

r? ```@Urgau```
2025-08-21 01:12:19 -04:00
Jacob Pratt
62582eb78e
Rollup merge of #145390 - joshtriplett:rustc-diag-value-earlier, r=lcnr
Shorten some dependency chains in the compiler

(I recommend reviewing this commit by commit.)

One of the long dependency chains in the compiler is:
- Many things depend on `rustc_errors`.
- `rustc_errors` depended on many things prior to this PR, including `rustc_target`, `rustc_type_ir`, `rustc_hir`, and `rustc_lint_defs`.
- `rustc_lint_defs` depended on `rustc_hir` prior to this PR.
- `rustc_hir` depends on `rustc_target`.
- `rustc_target` is large and takes a while.

This PR breaks that chain, through a few steps:
- The `IntoDiagArgs` trait, from `rustc_errors`, moves earlier in the dependency chain. This allows `rustc_errors` to stop depending on a pile of crates just to implement `IntoDiagArgs` for their types.
- Split `rustc_hir_id` out of `rustc_hir`, so crates that just need `HirId` and similar don't depend on all of `rust_hir` (and thus `rustc_target`).
- Make `rustc_lint_defs` stop depending on `rustc_hir`.
2025-08-21 01:12:17 -04:00
Jacob Pratt
b0dd772ce1
Rollup merge of #145256 - GuillaumeGomez:bootstrap-test-codegen-backend, r=Kobzol,bjorn3
Add new `--test-codegen-backend` bootstrap option

This new bootstrap command line flag allows to do:

```shell
./x.py test tests/ui/intrinsics/panic-uninitialized-zeroed.rs --stage 1 -j8 --test-codegen-backend gcc
```

This is the last step before running it into the CI.

Supersedes rust-lang/rust#144687.

r? ``````@Kobzol``````
2025-08-21 01:12:15 -04:00
Josh Triplett
e46ec741a1 Update test output for change to number of crates 2025-08-20 15:03:57 -07:00
bors
e8a792daf5 Auto merge of #145645 - Kobzol:uplift-fix, r=jieyouxu
Fix rustc uplifting (take two)

The rustc uplifting logic is really annoying.. https://github.com/rust-lang/rust/pull/145557 was not enough to fix it.

Consider https://github.com/rust-lang/rust/issues/145534#issuecomment-3201868888: in this situation, we do a stage3 build of a cross-compiled rustc (it happens because we run `x test --stage 2`, which mistakenly builds a stage3 rustc, but it doesn't matter what casuses it, what matters is that the stage3 build isn't working).

Currently, a stage3 cross-compiled build of rustc works like this:
1) stage0 (host) -> stage1 (host)
2) stage1 (host) -> stage2 (host)
3) stage2 (host) -> stage3 (target)

The problem is that in the uplifting logic, I assumed that we will have a stage2 (target) rustc available, which we can uplift. And that would indeed be an ideal solution. But currently, we will actually build a stage2 (*host*) rustc, and only then start the cross-compilation. So the uplifting is broken.

I spend a couple of hours trying to fix this, and do the uplifting "from the other direction", so that already when we assemble a stage3 rustc, we notice that an uplift should happen, and we only build stage1 (host) rustc, which also helps avoid one needless rustc build. However, this was relatively complicated and would require larger changes that I was not confident landing at this time.

So instead I decided to do a much simpler fix, and just disable rustc uplifting when cross-compiling. Since we currently do the `stage2 (host) -> stage3 (target)` step, it should not actually affect stage3 cross-compiled builds in any way (I hope..), and should only affect stage4+ builds, about which I don't really care (the only change there should be more rustc builds). For normal builds, the stage2 host rustc should (hopefully) always be present, so we shouldn't run into this issue.

Eventually, I would like to remove rustc uplifting completely. However, `x test --stage 2` on CI still currently builds a stage3 rustc for some reason, and if we removed uplifting completely, even for non-cross-compiled builds, that would cause an additional rustc build, and that's not great. So for now let's just allow uplifting for non-cross-compiled builds.

Fixes rust-lang/rust#145534.

r? `@jieyouxu`
2025-08-20 12:10:34 +00:00
Guillaume Gomez
e1045c219b Fix JS search scripts path 2025-08-20 12:57:28 +02:00
Jakub Beránek
29f0d8b142
Download CI GCC into the correct directory 2025-08-20 12:36:05 +02:00
Guillaume Gomez
e4cdc0f56e Split compiletest --codegen-backend into two options --default-codegen-backend and --override-codegen-backend 2025-08-20 12:19:20 +02:00
Guillaume Gomez
5a451b8c1c Add new --test-codegen-backend bootstrap option 2025-08-20 12:19:19 +02:00
bjorn3
30fa518c61 tidy: Add check against proc macros as standard library dependencies
They would break cross-compilation.
2025-08-20 10:02:14 +00:00
bjorn3
812c93e7ee tidy: Add a check that there are no duplicate runtime dependencies 2025-08-20 09:56:42 +00:00
Ralf Jung
46765526e3
Merge pull request #4532 from rust-lang/rustup-2025-08-20
Automatic Rustup
2025-08-20 08:14:57 +00:00
Ralf Jung
5556212823 allow cfg(bootstrap) 2025-08-20 09:40:57 +02:00
Ralf Jung
1a798a8e27 bless new tests 2025-08-20 09:40:34 +02:00
Ralf Jung
1d39d00afc add back cfg(bootstrap), it is still needed 2025-08-20 09:35:03 +02:00
Jakub Beránek
f254075e95
Disable rustc uplifting during cross-compilation 2025-08-20 08:52:14 +02:00
The Miri Cronjob Bot
8d09fb5e6d Merge ref 'f605b57042' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: f605b57042
Filtered ref: c69d2743ed4676c4529ebb60b258f6c1273c9145

This merge was created using https://github.com/rust-lang/josh-sync.
2025-08-20 05:01:50 +00:00
The Miri Cronjob Bot
49329f0d8a Prepare for merging from rust-lang/rust
This updates the rust-version file to f605b57042.
2025-08-20 04:54:10 +00:00
Jacob Pratt
816f098464
Rollup merge of #145626 - folkertdev:prefetch-fallback, r=Amanieu
add a fallback implementation for the `prefetch_*` intrinsics

related ACP: https://github.com/rust-lang/libs-team/issues/638

The fallback is to just ignore the arguments. That is a valid implementation because this intrinsic is just a hint.

I also added the `miri::intrinsic_fallback_is_spec` annotation, so that miri now supports these operations. A prefetch intrinsic call is valid on any pointer. (specifically LLVM guarantees this https://llvm.org/docs/LangRef.html#llvm-prefetch-intrinsic)

Next, I made the `LOCALITY` argument a const generic. That argument must be const (otherwise LLVM crashes), but that was not reflected in the type.

Finally, with these changes, the intrinsic can be safe and `const` (a prefetch at const evaluation time is just a no-op).

cc `@Amanieu`
r? `@RalfJung`
2025-08-20 00:46:02 -04:00
Jacob Pratt
a8feea8fc5
Rollup merge of #145359 - GuillaumeGomez:correctly-pick-search.js, r=lolbinarycat
Fix bug where `rustdoc-js` tester would not pick the right `search.js` file if there is more than one

It happened to me quite a few times recently when I worked on the search index:
1. I make a change in search.js
2. I run `rustdoc-js` tests
3. nothing changes

So my solution was to simply remove the folder, but it's really suboptimal. With this PR, it now picks the most recently modified file.

cc ```@lolbinarycat```
2025-08-20 00:45:56 -04:00
Jacob Pratt
7b7ad4d4df
Rollup merge of #145252 - shepmaster:demote-x86_64-apple-darwin-to-tier-2, r=Kobzol,madsmtm
Demote x86_64-apple-darwin to Tier 2 with host tools

Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2.

This implements the decision from https://github.com/rust-lang/rfcs/pull/3841.
2025-08-20 00:45:55 -04:00
Jacob Pratt
1e6df58e77
Rollup merge of #140794 - karolzwolak:allow-unused-doc-65464, r=davidtwco
mention lint group in default level lint note

### Summary

This PR updates lint diagnostics so that default-level notes now mention the lint group they belong to, if any.
Fixes: rust-lang/rust#65464.

### Example

```rust
fn main() {
    let x = 5;
}
```

Before:

```
= note: `#[warn(unused_variables)]` on by default
```

After:

```
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
```

### Unchanged Cases

Messages remain the same when the lint level is explicitly set, e.g.:

* Attribute on the lint `#[warn(unused_variables)]`:

  ```
  note: the lint level is defined here
  LL | #[warn(unused_variables)]
     |        ^^^^^^^^^^^^^^^^
  ```
* Attribute on the group `#[warn(unused)]:`:

  ```
  = note: `#[warn(unused_variables)]` implied by `#[warn(unused)]`
  ```
* CLI option `-W unused`:

  ```
  = note: `-W unused-variables` implied by `-W unused`
  = help: to override `-W unused` add `#[allow(unused_variables)]`
  ```
* CLI option `-W unused-variables`:

  ```
  = note: requested on the command line with `-W unused-variables`
  ```
2025-08-20 00:45:53 -04:00
Jacob Pratt
9a1ab5e402
Rollup merge of #140314 - lolbinarycat:rustdoc-js-scrape-examples-typecheck, r=notriddle
Rustdoc: typecheck scrape-examples.js

more typechecking progress, this time we're mostly held back by the fact that `document.querySelectorAll` can't return nice types if its given a compound query (see the issue linked in a code comment).

Additionally, it seems like the generated `data-locs` attribute has fields that are never used by anything?

r? ```@notriddle```
2025-08-20 00:45:52 -04:00
bors
f605b57042 Auto merge of #145601 - jieyouxu:rollup-t5mbqhc, r=jieyouxu
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#145538 (bufreader::Buffer::backshift: don't move the uninit bytes)
 - rust-lang/rust#145542 (triagebot: Don't warn no-mentions on subtree updates)
 - rust-lang/rust#145549 (Update rust maintainers in openharmony.md)
 - rust-lang/rust#145550 (Avoid using `()` in `derive(From)` output.)
 - rust-lang/rust#145556 (Allow stability attributes on extern crates)
 - rust-lang/rust#145560 (Remove unused `PartialOrd`/`Ord` from bootstrap)
 - rust-lang/rust#145568 (ignore frontmatters in `TokenStream::new`)
 - rust-lang/rust#145571 (remove myself from some adhoc-groups and pings)
 - rust-lang/rust#145576 (Add change tracker entry for `--timings`)
 - rust-lang/rust#145578 (Add VEXos "linked files" support to `armv7a-vex-v5`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-08-19 23:52:06 +00:00
Folkert de Vries
d25910eaeb
make prefetch intrinsics safe 2025-08-20 00:35:42 +02:00
Jakub Beránek
0079da4862
Add snapshot tests for stage 3 compiler builds 2025-08-19 23:36:43 +02:00
Urgau
31bcc9bbc2 Enable triagebot [review-changes-since] feature 2025-08-19 22:20:57 +02:00
Karol Zwolak
d14b83e378 bless tests with new lint messages 2025-08-19 21:27:10 +02:00
bors
05f5a58e84 Auto merge of #145600 - jieyouxu:rollup-jw0bpnt, r=jieyouxu
Rollup of 15 pull requests

Successful merges:

 - rust-lang/rust#145338 (actually provide the correct args to coroutine witnesses)
 - rust-lang/rust#145429 (Couple of codegen_fn_attrs improvements)
 - rust-lang/rust#145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
 - rust-lang/rust#145464 (Stabilize `const_pathbuf_osstring_new` feature)
 - rust-lang/rust#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
 - rust-lang/rust#145486 (Fix `unicode_data.rs` mention message)
 - rust-lang/rust#145490 (Trace some basic I/O operations in bootstrap)
 - rust-lang/rust#145493 (remove `should_render` in `PrintAttribute` derive)
 - rust-lang/rust#145500 (Port must_use to the new target checking)
 - rust-lang/rust#145505 (Simplify span caches)
 - rust-lang/rust#145510 (Visit and print async_fut local for async drop.)
 - rust-lang/rust#145511 (Rust build fails on OpenBSD after using file_lock feature)
 - rust-lang/rust#145532 (resolve: debug for block module)
 - rust-lang/rust#145533 (Reorder `lto` options from most to least optimizing)
 - rust-lang/rust#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-08-19 19:26:10 +00:00
Folkert de Vries
51df7aabbe
add a fallback implementation for the prefetch_* intrinsics
The fallback is to just ignore the arguments. That is a valid implementation because this intrinsic is just a hint.

I also added `miri::intrinsic_fallback_is_spec` annotation, so that miri now supports these operations. A prefetch intrinsic call is valid on any pointer.
2025-08-19 21:17:49 +02:00
bjorn3
129b0a2ecd Support weak definitions
When a symbol only has a weak definition, this definition will be
picked. When a symbol has both a weak and a regular definition, the
regular definition will be picked instead.
2025-08-19 14:56:24 +00:00
Guillaume Gomez
2ebe679d18 Strenghten rustdoc js tester file macthing regex 2025-08-19 15:08:57 +02:00
Guillaume Gomez
77d6ee0f35 Fix bug where rustdoc-js tester would not pick the right search.js file if there is more than one 2025-08-19 15:08:34 +02:00
Johannes Hostert
b734547022
God bless the tests 2025-08-19 14:46:33 +02:00
Johannes Hostert
b4876bf3e2
link to TB doc in unsafe-code-guidelines 2025-08-19 14:34:28 +02:00
Nicholas Nethercote
bfd5d59f97 Prevent impossible combinations in ast::ModKind.
`ModKind::Loaded` has an `inline` field and a `had_parse_error` field.
If the `inline` field is `Inline::Yes` then `had_parse_error` must be
`Ok(())`.

This commit moves the `had_parse_error` field into the `Inline::No`
variant. This makes it impossible to create the nonsensical combination
of `inline == Inline::Yes` and `had_parse_error = Err(_)`.
2025-08-19 21:57:31 +10:00
许杰友 Jieyou Xu (Joe)
4a4247adc8
Rollup merge of #145576 - jieyouxu:bootstrap-timings, r=Kobzol
Add change tracker entry for `--timings`

Follow-up to rust-lang/rust#145379. Forgor when reviewing.

r? `@Kobzol`
2025-08-19 19:50:07 +08:00
许杰友 Jieyou Xu (Joe)
07518a7a25
Rollup merge of #145560 - Kobzol:bootstrap-remove-ord, r=jieyouxu
Remove unused `PartialOrd`/`Ord` from bootstrap

It was just wasting compile-time. There is one remaining "old" bootstrap test that uses the `Ord` impl on one test step, I'll remove that later.
2025-08-19 19:50:04 +08:00