Commit graph

286700 commits

Author SHA1 Message Date
The Miri Cronjob Bot
4b995e72b6 Preparing for merge from rustc 2025-04-19 04:52:37 +00:00
Ralf Jung
46994aaccc
Merge pull request #4279 from rust-lang/rustup-2025-04-18
Automatic Rustup
2025-04-18 06:37:34 +00:00
The Miri Cronjob Bot
dc21c77ae6 Merge from rustc 2025-04-18 05:01:10 +00:00
Alex Crichton
19e44d463b Don't warn about v128 in wasm ABI transition
This has other warnings if necessary and doesn't need extra warnings
from this FCW.

cc #138762
2025-04-22 15:11:23 -07:00
bors
6a0bd27619 Auto merge of #139997 - matthiaskrgr:rollup-a1fe5zg, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #137881 (Add `copy_within` to `IndexSlice`)
 - #138599 (avoid overflow when generating debuginfo for expanding recursive types)
 - #139934 (Update `compiler-builtins` to 0.1.155)
 - #139976 (run-make: drop `os_pipe` workaround now that `anonymous_pipe` is stable on beta)
 - #139989 (tests: adjust 101082 test for LLVM 21 fix)
 - #139991 (remove stray file)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-18 10:37:11 +00:00
The Miri Cronjob Bot
378886f772 Preparing for merge from rustc 2025-04-18 04:54:04 +00:00
Matthias Krüger
1b524214e2
Rollup merge of #139991 - tshepang:stray, r=Kobzol
remove stray file
2025-04-18 05:17:55 +02:00
Matthias Krüger
1b03b826c4
Rollup merge of #139989 - durin42:llvm-21-issue-101082, r=cuviper
tests: adjust 101082 test for LLVM 21 fix

Fixes #139987.
2025-04-18 05:17:54 +02:00
Matthias Krüger
095486e125
Rollup merge of #139976 - jieyouxu:plumbing, r=Kobzol
run-make: drop `os_pipe` workaround now that `anonymous_pipe` is stable on beta

Follow-up to #137537 where I had to include a temporary dep on `os_pipe` before `anonymous_pipe` was stabilized. Now that `anonymous_pipe` is stable on beta, we can get rid of this workaround.

Closes #137532. (Final cleanup item)

r? `@Kobzol`
2025-04-18 05:17:54 +02:00
Matthias Krüger
af61fdf7d5
Rollup merge of #139934 - tgross35:update-builtins, r=tgross35
Update `compiler-builtins` to 0.1.155

Includes the following changes:

* Replace `#[naked]` with `#[unsafe(naked)]` [1] [2]
* Replace `bl!` with `asm_sym` [3]

[1]: https://github.com/rust-lang/compiler-builtins/pull/817
[2]: https://github.com/rust-lang/compiler-builtins/pull/821
[3]: https://github.com/rust-lang/compiler-builtins/pull/820

try-job: armhf-gnu
try-job: aarch64-apple
try-job: dist-apple-various
2025-04-18 05:17:53 +02:00
Matthias Krüger
68b439c63b
Rollup merge of #138599 - adwinwhite:recursive-overflow, r=wesleywiser
avoid overflow when generating debuginfo for expanding recursive types

Fixes #135093
Fixes #121538
Fixes #107362
Fixes #100618
Fixes #115994

The overflow happens because expanding recursive types keep creating new nested types when recurring into sub fields.
I fixed that by returning an empty stub node when expanding recursion is detected.
2025-04-18 05:17:53 +02:00
Matthias Krüger
484abe9f77
Rollup merge of #137881 - Jarcho:index_slice_ex, r=wesleywiser
Add `copy_within` to `IndexSlice`
2025-04-18 05:17:50 +02:00
bors
1f76d219c9 Auto merge of #139992 - matthiaskrgr:rollup-ak3uibu, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #139351 (Autodiff batching2)
 - #139483 (f*::NAN: guarantee that this is a quiet NaN)
 - #139498 (Ignore zero-sized types in wasm future-compat warning)
 - #139967 (Introduce and use specialized `//@ ignore-auxiliary` for test support files instead of using `//@ ignore-test`)
 - #139969 (update libc)
 - #139971 (Make C string merging test work on MIPS)
 - #139974 (Change `InterpCx::instantiate*` function visibility to pub)
 - #139977 (Fix drop handling in `hint::select_unpredictable`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-17 21:30:51 +00:00
Matthias Krüger
dc2d273acd
Rollup merge of #139977 - Amanieu:select_unpredictable_drop, r=RalfJung
Fix drop handling in `hint::select_unpredictable`

This intrinsic doesn't drop the value that is not selected so this is manually done in the public function that wraps the intrinsic.
2025-04-17 21:53:27 +02:00
Matthias Krüger
e5ba69b927
Rollup merge of #139974 - Patrick-6:change-visibility, r=RalfJung
Change `InterpCx::instantiate*` function visibility to pub

For some ongoing work in Miri we need to be able to access `instantiate_from_current_frame_and_normalize_erasing_regions` and `instantiate_from_frame_and_normalize_erasing_regions` on `InterpCx`.

r? `@RalfJung`
2025-04-17 21:53:27 +02:00
Matthias Krüger
18f6c595ee
Rollup merge of #139971 - LukasWoodtli:gardena/lw/fix-cstring-merging-test, r=wesleywiser
Make C string merging test work on MIPS

Assembly for MIPS uses, by convention, a different prefix for local anonymous variables.
2025-04-17 21:53:26 +02:00
Matthias Krüger
4c92186f21
Rollup merge of #139969 - psumbera:libc-rust-analyzer, r=lnicola
update libc

This is needed for https://github.com/rust-lang/rust/pull/138699#discussion_r2048603474
2025-04-17 21:53:26 +02:00
Matthias Krüger
026d56b0f6
Rollup merge of #139967 - jieyouxu:auxiliary, r=wesleywiser
Introduce and use specialized `//@ ignore-auxiliary` for test support files instead of using `//@ ignore-test`

### Summary

Add a semantically meaningful directive for ignoring test *auxiliary* files. This is for auxiliary files that *participate* in actual tests but should not be built by `compiletest` (i.e. these files are involved through `mod xxx;` or `include!()` or `#[path = "xxx"]`, etc.).

### Motivation

A specialized directive like `//@ ignore-auxiliary` makes it way easier to audit disabled tests via `//@ ignore-test`.
  - These support files cannot use the canonical `auxiliary/` dir because they participate in module resolution or are included, or their relative paths can be important for test intention otherwise.

Follow-up to:
- #139705
- #139783
- #139740

See also discussions in:

- [#t-compiler > Directive name for non-test aux files?](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Directive.20name.20for.20non-test.20aux.20files.3F/with/512773817)
- [#t-compiler > Handling disabled `//@ ignore-test` tests](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Handling.20disabled.20.60.2F.2F.40.20ignore-test.60.20tests/with/512005974)
- [#t-compiler/meetings > [steering] 2025-04-11 Dealing with disabled tests](https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bsteering.5D.202025-04-11.20Dealing.20with.20disabled.20tests/with/511717981)

### Remarks on remaining unconditionally disabled tests under `tests/`

After this PR, against commit 79a272c640, only **14** remaining test files are disabled through `//@ ignore-test`:

<details>
<summary>Remaining `//@ ignore-test` files under `tests/`</summary>

```
tests/debuginfo/drop-locations.rs
4://@ ignore-test (broken, see #128971)

tests/rustdoc/macro-document-private-duplicate.rs
1://@ ignore-test (fails spuriously, see issue #89228)

tests/rustdoc/inline_cross/assoc-const-equality.rs
3://@ ignore-test (FIXME: #125092)

tests/ui/match/issue-27021.rs
7://@ ignore-test (#54987)

tests/ui/match/issue-26996.rs
7://@ ignore-test (#54987)

tests/ui/issues/issue-49298.rs
9://@ ignore-test (#54987)

tests/ui/issues/issue-59756.rs
2://@ ignore-test (rustfix needs multiple suggestions)

tests/ui/precondition-checks/write.rs
5://@ ignore-test (unimplemented)

tests/ui/precondition-checks/read.rs
5://@ ignore-test (unimplemented)

tests/ui/precondition-checks/write_bytes.rs
5://@ ignore-test (unimplemented)

tests/ui/explicit-tail-calls/drop-order.rs
2://@ ignore-test: tail calls are not implemented in rustc_codegen_ssa yet, so this causes 🧊

tests/ui/panics/panic-short-backtrace-windows-x86_64.rs
3://@ ignore-test (#92000)

tests/ui/json/json-bom-plus-crlf-multifile-aux.rs
3://@ ignore-test Not a test. Used by other tests

tests/ui/traits/next-solver/object-soundness-requires-generalization.rs
2://@ ignore-test (see #114196)
```
</details>

Of these, most are either **unimplemented**, or **spurious**, or **known-broken**. The outstanding one is `tests/ui/json/json-bom-plus-crlf-multifile-aux.rs` which I did not want to touch in *this* PR -- that aux file has load-bearing BOM and carriage returns and byte offset matters. I think those test files that require special encoding / BOM probably are better off as `run-make` tests. See #139968 for that aux file.

### Review advice

- Best reviewed commit-by-commit.
- The directive name diverged from the most voted `//@ auxiliary` because I think that's easy to confuse with `//@ aux-{crate,dir}`.

r? compiler
2025-04-17 21:53:25 +02:00
Matthias Krüger
8b7a2897c8
Rollup merge of #139498 - alexcrichton:wasm-zst-safe, r=wesleywiser
Ignore zero-sized types in wasm future-compat warning

This commit fixes a false positive of the warning triggered for #138762 and the fix is to codify that zero-sized types are "safe" in both the old and new ABIs.
2025-04-17 21:53:24 +02:00
Matthias Krüger
b6e48d3850
Rollup merge of #139483 - RalfJung:nan, r=tgross35
f*::NAN: guarantee that this is a quiet NaN

I think we should guarantee that this is a quiet NaN. This then implies that programs not using `f*::from_bits` (or unsafe type conversions) are guaranteed to only work with quiet NaNs. It would be awkward if people start to write `0.0 / 0.0` instead of using the constant just because they want to get a guaranteed-quiet NaN.

This is a `@rust-lang/libs-api` change. The definition of this constant currently is `0.0 / 0.0`, which is already guaranteed to be a quiet NaN. So all this does is forward that guarantee to our users.
2025-04-17 21:53:24 +02:00
Matthias Krüger
87a163523f
Rollup merge of #139351 - EnzymeAD:autodiff-batching2, r=oli-obk
Autodiff batching2

~I will rebase it once my first PR landed.~ done.
This autodiff batch mode is more similar to scalar autodiff, since it still only takes one shadow argument.
However, that argument is supposed to be `width` times larger.

r? `@oli-obk`

Tracking:

- https://github.com/rust-lang/rust/issues/124509
2025-04-17 21:53:23 +02:00
Tshepang Mbambo
b8c043f07e remove stray file 2025-04-17 21:37:03 +02:00
Augie Fackler
d3b167493e tests: adjust 101082 test for LLVM 21 fix
Fixes #139987.
2025-04-17 15:11:21 -04:00
Trevor Gross
7d6f41b08e Update compiler-builtins to 0.1.155
Includes the following changes:

* Replace `#[naked]` with `#[unsafe(naked)]` [1] [2]
* Replace `bl!` with `asm_sym` [3]

[1]: https://github.com/rust-lang/compiler-builtins/pull/817
[2]: https://github.com/rust-lang/compiler-builtins/pull/821
[3]: https://github.com/rust-lang/compiler-builtins/pull/820
2025-04-17 19:08:27 +00:00
Ralf Jung
765d4b29af
Merge pull request #4278 from RalfJung/cron-test-done
remove test trigger fron cron job
2025-04-17 18:44:09 +00:00
Ralf Jung
817e72521f
Merge pull request #4277 from rust-lang/rustup-2025-04-17
Automatic Rustup
2025-04-17 18:27:58 +00:00
Ralf Jung
e3b01c7749 remove test trigger fron cron job 2025-04-17 20:16:53 +02:00
The Miri Cronjob Bot
2602dd93a6 Merge from rustc 2025-04-17 17:59:31 +00:00
Ed Page
aa8670f6f8 fix(test): Expose '--no-capture', deprecating '--nocapture'
This improves consistency with commonly expected CLI conventions,
avoiding a common stutter people make when running tests (trying what
they expect and then having to check the docs to then user whats
accepted).

An alternative could have been to take a value, like `--capture <value>` (e.g. `pytest` does this).
Overall, we're shifting focus for features to custom test harnesses (see #134283).
Most of `pytest`s modes will likely be irrelevant in that situation.
As for the rest, its too early to tell which, if any, may be relevant,
so we're sticking with this small, quality of life improvement.

By deprecating `--nocapture`, we intend that custom test harnesses do
not need to support it for reasons outside of their own compatibility
requirements, much like the deprecation in #134283

I'm punting for now on the naming of `RUST_TEST_NOCAPTURE`.
I feel like T-testing-devex should do a wider look at environment
variables role in lib`test` before evaluating whether to
- Deprecate it in favor of the user passing CLI flags or the test runner
  providing its own config
- Deprecate in favor of `RUST_TEST_NO_CAPTURE`
- Deprecate in favor of `RUST_TEST_CAPTURE`

Other CLI flags were evaluated for casing consistency:
- `--logfile` has the same problem but was deprecated in #134283

Fixes #133073
2025-04-17 13:30:59 -05:00
Ed Page
11f7290c9f refactor(test): Decouple parsing from help generation
This will help with hiding some options in `--help`
2025-04-17 13:30:59 -05:00
The Miri Cronjob Bot
edb3aaf655 Preparing for merge from rustc 2025-04-17 17:50:48 +00:00
bors
a15cce2690 Auto merge of #139979 - matthiaskrgr:rollup-7wu5169, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #139774 (Fix replacing supertrait aliases in `ReplaceProjectionWith`)
 - #139850 (Hide unstable print kinds within emit_unknown_print_request_help in stable channel)
 - #139870 (add retries to remove and create dir all)
 - #139902 (do not emit `OpaqueCast` projections with `-Znext-solver`)
 - #139931 (bootstrap: enable zlib for LLVM for Windows GNU)
 - #139935 (Upgrade to `rustc-rayon-core` 0.5.1)
 - #139943 (rustdoc: Support inlined cross-crate re-exported trait aliases)
 - #139961 (Two `rustc_const_eval` cleanups)
 - #139962 (opt-dist: add a flag for running tests)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-17 16:33:06 +00:00
Matthias Krüger
6922524035
Rollup merge of #139962 - ognevny:opt-dist-tests, r=Kobzol
opt-dist: add a flag for running tests

when using `opt-dist local` user probably won't need to run tests (for various reasons). currently the only way to disable them is to set `TRY_DIST_BUILD=1`, which is not obvious and can be bad for non-CI envronments (as I guess)

possibly the `run_tests` name can be confusing too...

r? Kobzol

try-job: dist-x86_64-linux
try-job: dist-x86_64-msvc
2025-04-17 17:40:31 +02:00
Matthias Krüger
8281a54a1b
Rollup merge of #139961 - nnethercote:two-rustc_const_eval-cleanups, r=oli-obk
Two `rustc_const_eval` cleanups

r? ``@lcnr``
2025-04-17 17:40:31 +02:00
Matthias Krüger
7a4525c883
Rollup merge of #139943 - fmease:rustdoc-ixcre-trait-aliases, r=GuillaumeGomez
rustdoc: Support inlined cross-crate re-exported trait aliases

Previously we'd just drop them. As a result of this PR, [`core::ptr::Thin`](https://doc.rust-lang.org/nightly/core/ptr/traitalias.Thin.html) will be admitted into the `std` façade!

Also, render the where clause *after* the bounds / the `=`, not before them, as it should be.

r? rustdoc
2025-04-17 17:40:30 +02:00
Matthias Krüger
b79996d97d
Rollup merge of #139935 - cuviper:rustc-rayon-core-0.5.1, r=lqd
Upgrade to `rustc-rayon-core` 0.5.1

* [Fix a race with deadlock detection](https://github.com/rust-lang/rustc-rayon/pull/15)
* [Cherry-pick changes from upstream rayon-core](https://github.com/rust-lang/rustc-rayon/pull/16)
  - This also removes a few dependencies from rustc's tidy list.
2025-04-17 17:40:30 +02:00
Matthias Krüger
dce750644f
Rollup merge of #139931 - ognevny:bootstrap-llvm-zlib, r=Kobzol
bootstrap: enable zlib for LLVM for Windows GNU

when compiling target LLVM with `opt-dist local` on Windows/MinGW, profraw files are being compressed with zlib, so compiling without it will make `llvm-profdata` complain about lacking of zlib support. this error is shown:

`profile uses zlib compression but the profile reader was built without zlib support`

example from llvm test suite: 76b5fcbf97/llvm/test/tools/llvm-profdata/nocompress.test (L15).

implementation of step 3. from https://rust-lang.zulipchat.com/#narrow/channel/122651-general/topic/experiment.20with.20.60opt-dist.20local.60.20in.20MSYS2/near/512393873

r? Kobzol
2025-04-17 17:40:29 +02:00
Matthias Krüger
67e2358fbb
Rollup merge of #139902 - lcnr:no-opaque-cast-projection, r=oli-obk
do not emit `OpaqueCast` projections with `-Znext-solver`

We normalize opaque types in their defining scope if the new solver is enabled. This means projections do not contain any 'revealable' opaque types we need to worry about. We either have a type which has been normalized by writeback or we need to normalize it anyways.

r? ```@compiler-errors``` ```@oli-obk```
2025-04-17 17:40:28 +02:00
Matthias Krüger
cecc7a490a
Rollup merge of #139870 - Shourya742:2025-04-15-add-retries-to-remove_and_create_dir_all, r=jieyouxu
add retries to remove and create dir all

closes: #139230

r? ```@jieyouxu```
2025-04-17 17:40:28 +02:00
Matthias Krüger
d2db1c1df9
Rollup merge of #139850 - xizheyin:issue-138698, r=jieyouxu
Hide unstable print kinds within emit_unknown_print_request_help in stable channel

Fixes #138698

We need to get the channel from `matches`. However, since `matches`(Line 1169) is constructed after `rustc_optgroups` (Line1165, where `RustcOptGroup::value_hint` is generated, i.e. what `rustc --print print` prints), I've left it unchanged here for now.

2da29dbe8f/compiler/rustc_driver_impl/src/lib.rs (L1161-L1169)

There is actually a way to manually parse the `--crate-name` parameter, but I'm afraid that's an unorthodox practice. So I conservatively just modified `emit_unknown_print_request_help` to print different parameters depending on whether they are nightly or not when passing the error parameter.

r? ```@jieyouxu```
2025-04-17 17:40:27 +02:00
Matthias Krüger
da43826398
Rollup merge of #139774 - compiler-errors:supertrait-alias, r=lcnr
Fix replacing supertrait aliases in `ReplaceProjectionWith`

The new solver has a procedure called `predicates_for_object_candidate`, which elaborates the super-bounds and item-bounds that are required to hold for a dyn trait to implement something via a built-in object impl.

In that procedure, there is a folder called `ReplaceProjectionWith` which is responsible for replacing projections that reference `Self`, so that we don't encounter cycles when we then go on to normalize those projections in the process of proving these super-bounds.

That folder had a few problems: Firstly, it wasn't actually checking that this was a super bound originating from `Self`. Secondly, it only accounted for a *single* projection type def id, but trait objects can have multiple (i.e. `trait Foo<A, B>: Bar<A, Assoc = A> + Bar<B, Assoc = B>`).

To fix the first, it's simple enough to just add an equality check for the self ty. To fix the second, I implemented a matching step that's very similar to the `projection_may_match` check we have for upcasting, since on top of having multiple choices, we need to deal with both non-structural matches and ambiguity.

This probably lacks a bit of documentation, but I think it works pretty well.

Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/171

r? lcnr
2025-04-17 17:40:27 +02:00
Amanieu d'Antras
e5e5fb9d80 Fix drop handling in hint::select_unpredictable
This intrinsic doesn't drop the value that is not selected so this is
manually done in the public function that wraps the intrinsic.
2025-04-17 17:30:53 +02:00
Jieyou Xu
83af9f57c1
run-make: drop os_pipe workaround now that anonymous_pipe is stable on beta 2025-04-17 23:23:30 +08:00
Alex Crichton
f9091e24a0 Ignore zero-sized types in wasm future-compat warning
This commit fixes a false positive of the warning triggered for #138762
and the fix is to codify that zero-sized types are "safe" in both the
old and new ABIs.
2025-04-17 07:42:55 -07:00
Ralf Jung
2a94b1c2bf
Merge pull request #4276 from RalfJung/auto-sync
ci.yml: always create sync PR when there's any difference
2025-04-17 14:40:27 +00:00
Patrick-6
50cf102311 Change function visibility to pub 2025-04-17 16:23:44 +02:00
Ralf Jung
8c9a9a7716 for testing, run the CI job an extra time today 2025-04-17 16:14:19 +02:00
Ralf Jung
9cd4757f59 ci.yml: always create sync PR when there's any difference 2025-04-17 16:14:19 +02:00
Lukas Woodtli
7a5a884275 Make C string merging test work on MIPS
Assembly for MIPS uses, by convention, a different prefix for local
anonymous variables.
2025-04-17 16:08:22 +02:00
xizheyin
8562110e0d Hide unstable print kinds within emit_unknown_print_request_help in stable channel
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-04-17 22:02:31 +08:00