Commit graph

146835 commits

Author SHA1 Message Date
Jubilee
01263c45d0
Rollup merge of #122892 - lovesegfault:versioned-vendor, r=onur-ozkan
fix(bootstrap/dist): use versioned dirs when vendoring

Currently, if you attempt to run ui tests in a vendored build, you will
see this failure

```
---- [ui] tests/ui/issues/issue-21763.rs stdout ----
diff of stderr:

8          = note: required because it appears within the type `(Rc<()>, Rc<()>)`
9          = note: required for `hashbrown::raw::RawTable<(Rc<()>, Rc<()>)>` to implement `Send`
10      note: required because it appears within the type `hashbrown::map::HashMap<Rc<()>, Rc<()>, RandomState>`
-         --> $HASHBROWN_SRC_LOCATION
+         --> /rust/deps/hashbrown/src/map.rs:190:12
12      note: required because it appears within the type `HashMap<Rc<()>, Rc<()>>`
13        --> $SRC_DIR/std/src/collections/hash/map.rs:LL:COL
14      note: required by a bound in `foo`
```

This happens because the code that attempts to remap
`HASHBROWN_SRC_LOCATION` expects it to be under `hashbrown-$version`,
which is the case in a normal cargo registry, but not when vendoring, where
by default crates may not have the version in their directory name.

This change passes `--versioned-dirs` to `cargo vendor` to enforce that
every crate includes the version in the subdir name, which fixes the ui
test and brings `--enable-vendor` builds closer to normal ones.
2024-03-25 14:35:35 -07:00
bors
35936c4839 Auto merge of #123041 - RalfJung:miri, r=RalfJung
Miri subtree update

r? `@ghost`
2024-03-25 18:20:03 +00:00
Ralf Jung
0d4ef69d66 support '--sysroot=' form of setting the sysroot as well 2024-03-25 17:33:02 +01:00
Ralf Jung
d8be714fee Merge from rustc 2024-03-25 17:17:57 +01:00
Ralf Jung
5b1319c754 Preparing for merge from rustc 2024-03-25 17:17:55 +01:00
bors
60b5ca6275 Auto merge of #123036 - matthiaskrgr:rollup-dj8hra4, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #122842 (Don't emit an error about failing to produce a file with a specific name if user never gave an explicit name)
 - #122881 (Delegation: fix ICE on `bound_vars` divergence)
 - #122910 (Validate that we're only matching on unit struct for path pattern)
 - #122970 (Use `chunk_by` when building `ReverseSccGraph`)
 - #122988 (add even more tests! )
 - #122999 (Fix unpretty UI test when /tmp does not exist)
 - #123001 (Rename `{enter,exit}_lint_attrs` to `check_attributes{,_post}`)
 - #123022 (Add `async-closures/once.rs` back to cranelift tests)
 - #123034 (Add a bunch of needs-unwind annotations to tests)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-03-25 16:16:59 +00:00
Matthias Krüger
10daf8aa99
Rollup merge of #123001 - Alexendoo:check-attributes, r=oli-obk
Rename `{enter,exit}_lint_attrs` to `check_attributes{,_post}`

Several places in Clippy want to check all the attributes of a node, we end up using `hir().attrs()` from several different `check_` functions (e.g. [in our doc lints](95c62ffae9/clippy_lints/src/doc/mod.rs (L396))) but this is error prone, we recently found that doc lints weren't triggering on struct fields for example

I went to add a `check_attributes` function but realised `enter_lint_attrs` is already this, the rename is to encourage their use

Also removes `LateContextAndPass::visit_attribute` since it's unused - `visit_attribute` for HIR visitors is only called by `hir().walk_attributes()` which lint passes do not use
2024-03-25 17:05:35 +01:00
Matthias Krüger
ded16b3a97
Rollup merge of #122842 - pacak:explicit_name, r=michaelwoerister
Don't emit an error about failing to produce a file with a specific name if user never gave an explicit name

Fixes #122509

You can ask `rustc` to produce some intermediate results with `--emit foo`, this operation comes in two flavors: `--emit asm` and `--emit asm=foo.s`. First one produces one or more `.s` files without any name guarantees, second one renames it into `foo.s`. Second version only works when compiler produces a single file - for asm files this means using a single compilation unit for example.

In case compilation produced more than a single file `rustc` runs following check to emit some warnings:

```rust
            if crate_output.outputs.contains_key(&output_type) {
                // 2) Multiple codegen units, with `--emit foo=some_name`. We have
                //    no good solution for this case, so warn the user.
                sess.dcx().emit_warn(errors::IgnoringEmitPath { extension });
            } else if crate_output.single_output_file.is_some() {
                // 3) Multiple codegen units, with `-o some_name`. We have
                //    no good solution for this case, so warn the user.
                sess.dcx().emit_warn(errors::IgnoringOutput { extension });
            } else {
                // 4) Multiple codegen units, but no explicit name. We
                //    just leave the `foo.0.x` files in place.
                // (We don't have to do any work in this case.)
            }
```

Comment in the final `else` branch implies that if user didn't ask for a specific name - there's no need to emit warnings. However because of the internal representation of `crate_output.outputs` - this doesn't work as expected: if user asked to produce an asm file without giving it an implicit name it will contain `Some(None)`.

To fix the problem new code actually checks if user gave an explicit name. I think this was an original intentional behavior, at least comments imply that.
2024-03-25 17:05:32 +01:00
bors
cb7c63606e Auto merge of #123030 - GuillaumeGomez:rustdoc-sysroot-out-of-arg-file, r=notriddle
Move `--sysroot` argument out of the argument file to fix miri issue

Fixes https://github.com/rust-lang/miri/issues/3404.

For now, miri needs this argument to be moved out of the arg file so they can update it if needed.

cc `@RalfJung`

r? `@notriddle`
2024-03-25 14:09:33 +00:00
bors
c4611708bd Auto merge of #3413 - RalfJung:cargo-miri-misc, r=RalfJung
phase_rustdoc: add a heuristic to make us more certain that this is really rustdoc

Also add anyhow to test-cargo-miri; it has a custom build probe and is widely used so let's make sure the build script does not fail.
2024-03-25 13:51:23 +00:00
Ralf Jung
98e1cbbc02 phase_rustdoc: add a heuristic to make us more certain that this is really rustdoc 2024-03-25 14:40:32 +01:00
Ralf Jung
8afc4862d0 test-cargo-miri: test anyhow 2024-03-25 14:23:42 +01:00
Guillaume Gomez
8c219af8bf Move --sysroot argument out of the argument file to fix miri issue 2024-03-25 12:06:47 +01:00
Ralf Jung
89a32d7b5f CONTRIBUTING: vsocde settings: add --all-targets 2024-03-25 11:21:01 +01:00
Matthias Krüger
fbb81fa89c
Rollup merge of #122982 - Zalathar:bootstrap-coverage-docs, r=onur-ozkan
Add more comments to the bootstrap code that handles `tests/coverage`

At the bootstrap level, coverage tests are a bit more complicated than other test suites, because we want to run the same set of test files in multiple different modes, in a way that's convenient and flexible when invoked manually.

This PR adds a few more comments to explain what's going on.
2024-03-25 11:00:12 +01:00
bors
fa374a8071 Auto merge of #122951 - Nilstrieb:nodejs20, r=Kobzol
Update upload-artifact to v4

This contains a breaking change around artifact merging no longer being done. This was not relied on, so it's fine.
2024-03-25 04:39:30 +00:00
Zalathar
1bbab7148b Add more comments to the bootstrap code that handles tests/coverage 2024-03-25 15:31:33 +11:00
bors
0824b300eb Auto merge of #122658 - cuviper:gccjit-archive, r=Mark-Simulacrum
ci: Build gccjit from a git archive

A full `git clone` of GCC includes quite a lot of history, and it's
completely unnecessary for building it in CI. We can use a GitHub
archive URL to get a simple tarball that is much faster to download.

Also, the `gcc-build` directory can be removed after install to reduce
the image size even further.
2024-03-24 18:15:27 +00:00
bors
dcddf24626 Auto merge of #3402 - RalfJung:miri-script, r=RalfJung
miri script: build with stable toolchain

`./miri toolchain` sets up a `rustup override miri`. But then if something goes wrong and the `miri` toolchain doesn't work, one can't even run `./miri toolchain` again as building miri-script needs a toolchain...

So let's always use stable to build miri-script, making it override-independent. I assume everyone will have that installed.
2024-03-24 16:08:43 +00:00
Matthias Krüger
5281fe29cc
Rollup merge of #122962 - jieyouxu:stamp-rmake-support-lib, r=onur-ozkan
Track run-make-support lib in common inputs stamp

So that when the support library gets modified, `run-make` tests are forced to re-run instead of being still ignored as if nothing changed.

Fixes #122961.
2024-03-24 17:08:17 +01:00
Matthias Krüger
3fe9f66133
Rollup merge of #122737 - ytmimi:conditionally_ignore_fatal_diagnostic, r=davidtwco
conditionally ignore fatal diagnostic in the SilentEmitter

This change is primarily meant to allow rustfmt to ignore all diagnostics when using the `SilentEmitter`. Back in #121301 the `SilentEmitter` was shared between rustc and rustfmt. This changed rustfmt's behavior from ignoring all diagnostic to emitting fatal diagnostics, which lead to https://github.com/rust-lang/rustfmt/issues/6109.

These changes allow rustfmt to maintain its previous behaviour when using the `SilentEmitter`, while allowing rustc code to still emit fatal diagnostics.
2024-03-24 17:08:15 +01:00
bors
f97f448d4e Auto merge of #3406 - RalfJung:many-seeds, r=RalfJung
many-seeds: propagate failure properly

This may help explain https://github.com/rust-lang/miri/issues/3405.
2024-03-24 15:13:47 +00:00
Ralf Jung
a12decc07a desperate hack: hard-code bash path on Windows 2024-03-24 16:07:20 +01:00
Alex Macleod
2cb53473d9 Rename {enter,exit}_lint_attrs to check_attributes{,_post} 2024-03-24 14:57:57 +00:00
Ralf Jung
805f6eed46 try to fix many-seeds tests on Windows 2024-03-24 15:43:06 +01:00
bors
624af51813 Auto merge of #3398 - tiif:add_libc_fs_test, r=RalfJung
Add libc direct test for shims and update CONTRIBUTING.md

Add more ``libc`` direct test for shims as mentioned in #3179.

Changes:
- Added ``libc`` direct tests for ``rename`` and ``ftruncate64``
- Added the command for running ``pass-dep`` test in ``CONTRIBUTING.md``
2024-03-24 14:16:48 +00:00
tiif
04a69e4cf4 Add libc test for rename and ftruncate 2024-03-24 22:00:16 +08:00
Ralf Jung
acf3f52b7b miri-script/toolchain: make new_commit logic easier to follow 2024-03-24 14:49:46 +01:00
Ralf Jung
fdb561309d many-seeds: propagate failure properly 2024-03-24 14:45:32 +01:00
Ralf Jung
04b523ff34 CI tweaks and show which stable Rust we are using 2024-03-24 14:31:44 +01:00
Ralf Jung
1dd13ca1b1 miri script: build with stable toolchain 2024-03-24 10:39:48 +01:00
Ralf Jung
070e8ceab3 Merge from rustc 2024-03-24 10:38:05 +01:00
Ralf Jung
2e464c2560 Preparing for merge from rustc 2024-03-24 10:38:04 +01:00
Jubilee
862d870070
Rollup merge of #122762 - RoboSchmied:RoboSchmied-typo, r=workingjubilee
fix typo of endianness

fix typo
endianess -> endianness
2024-03-23 22:59:41 -07:00
Matthias Krüger
73038c0874
Rollup merge of #122840 - GuillaumeGomez:rustdoc-test-too-many-args, r=notriddle,Urgau,jieyouxu
`rustdoc --test`: Prevent reaching the maximum size of command-line by using files for arguments if there are too many

Fixes #122722.

Thanks to this I discovered that rust was using ``@`` to add arguments from a file, quite convenient.

If there are too many `cfg` arguments given to `rustdoc --test`, it'll now put them into a temporary file and passing it as argument to the rustc command.

I added a test with 100_000 `cfg` arguments to ensure it'll not break again.

r? `@notrid`
2024-03-24 01:05:53 +01:00
bors
2f090c30dd Auto merge of #122629 - RalfJung:assert-unsafe-precondition, r=saethlin
refactor check_{lang,library}_ub: use a single intrinsic

This enacts the plan I laid out [here](https://github.com/rust-lang/rust/pull/122282#issuecomment-1996917998): use a single intrinsic, called `ub_checks` (in aniticpation of https://github.com/rust-lang/compiler-team/issues/725), that just exposes the value of `debug_assertions` (consistently implemented in both codegen and the interpreter). Put the language vs library UB logic into the library.

This makes it easier to do something like https://github.com/rust-lang/rust/pull/122282 in the future: that just slightly alters the semantics of `ub_checks` (making it more approximating when crates built with different flags are mixed), but it no longer affects whether these checks can happen in Miri or compile-time.

The first commit just moves things around; I don't think these macros and functions belong into `intrinsics.rs` as they are not intrinsics.

r? `@saethlin`
2024-03-23 21:11:00 +00:00
许杰友 Jieyou Xu (Joe)
894555ff8e
Track run-make-support lib in common inputs stamp 2024-03-23 20:09:51 +00:00
Guillaume Gomez
5fab0162cc Add Rustdoc into run-make-support 2024-03-23 20:13:14 +01:00
bors
e50ab29471 Auto merge of #122952 - RalfJung:miri, r=RalfJung
Miri subtree update

r? `@ghost`
2024-03-23 18:38:18 +00:00
Ralf Jung
bb4ef1a5fb disable RUST_BACKTRACE in CI, set it inside the test harness instead 2024-03-23 19:12:06 +01:00
Ralf Jung
3d6fcea417 when a test fails, repeat the target after the failure report 2024-03-23 18:59:15 +01:00
Ralf Jung
987ef4c922 move assert_unsafe_preconditions to its own file
These macros and functions are not intrinsics, after all.
2024-03-23 18:44:17 +01:00
Nilstrieb
24a0d7daff Update upload-artifact to v4
This contains a breaking change around artifact merging no longer being
done. This was not relied on, so it's fine.
2024-03-23 17:06:02 +01:00
bors
020bbe46bd Auto merge of #122947 - matthiaskrgr:rollup-10j7orh, r=matthiaskrgr
Rollup of 11 pull requests

Successful merges:

 - #120577 (Stabilize slice_split_at_unchecked)
 - #122698 (Cancel `cargo update` job if there's no updates)
 - #122780 (Rename `hir::Local` into `hir::LetStmt`)
 - #122915 (Delay a bug if no RPITITs were found)
 - #122916 (docs(sync): normalize dot in fn summaries)
 - #122921 (Enable more mir-opt tests in debug builds)
 - #122922 (-Zprint-type-sizes: print the types of awaitees and unnamed coroutine locals.)
 - #122927 (Change an ICE regression test to use the original reproducer)
 - #122930 (add panic location to 'panicked while processing panic')
 - #122931 (Fix some typos in the pin.rs)
 - #122933 (tag_for_variant follow-ups)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-03-23 15:58:17 +00:00
bors
59b29455c1 Auto merge of #3385 - Zoxc:read-types, r=RalfJung
Report retags as distinct from real memory accesses for data races

This changes the error reporting for data races such that reference invariants are no longer reported as real read and writes.

Before:
```
Data race detected between (1) non-atomic write on thread `unnamed-6` and (2) non-atomic read on thread `unnamed-5` at alloc1034971+0x10c. (2) just happened here
```

After:
```
Data race detected between (1) non-atomic write on thread `unnamed-8` and (2) shared reference invariant on thread `unnamed-6` at alloc1018329+0x190. (2) just happened here
```

Non-atomic read accesses from the *other* thread don't have this information tracked so those are called `some potential non-atomic read access` here.
2024-03-23 15:37:02 +00:00
John Kåre Alsaker
2d610f7473 Report retags as distinct from real memory accesses for data races 2024-03-23 15:29:05 +01:00
Guillaume Gomez
773084ff2f Rename RustdocTestOptions into IndividualTestOptions 2024-03-23 15:00:37 +01:00
Matthias Krüger
99e34b4f7a
Rollup merge of #122780 - GuillaumeGomez:rename-hir-local, r=oli-obk
Rename `hir::Local` into `hir::LetStmt`

Follow-up of #122776.

As discussed on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Improve.20naming.20of.20.60ExprKind.3A.3ALet.60.3F).

I made this change into a separate PR because I'm less sure about this change as is. For example, we have `visit_local` and `LocalSource` items. Is it fine to keep these two as is (I supposed it is but I prefer to ask) or not? Having `Node::Local(LetStmt)` makes things more explicit but is it going too far?

r? ```@oli-obk```
2024-03-23 15:00:18 +01:00
bors
d6eb0f5a09 Auto merge of #122582 - scottmcm:swap-intrinsic-v2, r=oli-obk
Let codegen decide when to `mem::swap` with immediates

Making `libcore` decide this is silly; the backend has so much better information about when it's a good idea.

Thus this PR introduces a new `typed_swap` intrinsic with a fallback body, and replaces that fallback implementation when swapping immediates or scalar pairs.

r? oli-obk

Replaces #111744, and means we'll never need more libs PRs like #111803 or #107140
2024-03-23 13:57:55 +00:00
Guillaume Gomez
86fe40021f Put temporary directory into one common function 2024-03-23 14:52:49 +01:00