Commit graph

11611 commits

Author SHA1 Message Date
Oneirical
17b07716f8 rewrite pgo-branch-weights to rmake 2024-06-12 09:40:12 -04:00
bors
3ea5e236ec Auto merge of #125736 - Oneirical:run-make-file-management, r=jieyouxu
run-make-support: add wrapper for `fs` operations

Suggested by #125728.

The point of this wrapper is to stop silent fails caused by forgetting to `unwrap` `fs` functions. However, functions like `fs::read` which return something and get stored in a variable should cause a failure on their own if they are not unwrapped (as the `Result` will be stored in the variable, and something will be done on that `Result` that should have been done to its contents). Is it still pertinent to wrap `fs::read_to_string`, `fs::metadata` and so on?

Closes: https://github.com/rust-lang/rust/issues/125728

try-job: x86_64-msvc
try-job: i686-mingw
2024-06-11 15:50:25 +00:00
Oneirical
c84afee898 Implement fs wrapper for run_make_support 2024-06-11 09:53:31 -04:00
bors
0c960618b5 Auto merge of #126274 - jieyouxu:rollup-uj93sfm, r=jieyouxu
Rollup of 5 pull requests

Successful merges:

 - #126186 (Migrate `run-make/multiple-emits` to `rmake.rs`)
 - #126236 (Delegation: fix ICE on recursive delegation)
 - #126254 (Remove ignore-cross-compile directive from ui/macros/proc_macro)
 - #126258 (Do not define opaque types when selecting impls)
 - #126265 (interpret: ensure we check bool/char for validity when they are used in a cast)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-06-11 13:38:45 +00:00
许杰友 Jieyou Xu (Joe)
cfd48bdd7e
Rollup merge of #126265 - RalfJung:interpret-cast-validity, r=oli-obk
interpret: ensure we check bool/char for validity when they are used in a cast

In general, `Scalar::to_bits` is a bit dangerous as it bypasses all type information. We should usually prefer matching on the type and acting according to that. So I also refactored `unary_op` handling of integers to do that. The remaining `to_bits` uses are operations that just fundamentally don't care about the sign (and only work on integers).

invalid_char_cast.rs is the key new test, the others already passed before this PR.

r? `@oli-obk`
2024-06-11 14:16:47 +01:00
许杰友 Jieyou Xu (Joe)
dea5237c0e
Rollup merge of #126186 - GuillaumeGomez:migrate-run-make-multiple-emits, r=jieyouxu
Migrate `run-make/multiple-emits` to `rmake.rs`

Part of https://github.com/rust-lang/rust/issues/121876.

r? `@jieyouxu`
2024-06-11 14:16:45 +01:00
Guillaume Gomez
e8b04cc95f Migrate run-make/multiple-emits to rmake.rs 2024-06-11 14:09:38 +02:00
Guillaume Gomez
f8e25a687e Add path function to run-make-support 2024-06-11 14:09:38 +02:00
bors
20ba13c38e Auto merge of #125752 - jieyouxu:kaboom, r=Kobzol
run-make: arm command wrappers with drop bombs

This PR is one in a series of cleanups to run-make tests and the run-make-support library.

### Summary

It's easy to forget to actually executed constructed command wrappers, e.g. `rustc().input("foo.rs")` but forget the `run()`, so to help catch these mistakes, we arm command wrappers with drop bombs on construction to force them to be executed by test code.

This PR also removes the `Deref`/`DerefMut` impl for our custom `Command` which derefs to `std::process::Command` because it can cause issues when trying to use a custom command:

```rs
htmldocck().arg().run()
```

fails to compile because the `arg()` is resolved to `std::process::Command::arg`, which returns `&mut std::process::Command` that doesn't have a `run()` command.

This PR also:

- Removes `env_var` on the `impl_common_helper` macro that was wrongly named and is a footgun (no users).
- Bumps the run-make-support library to version `0.1.0`.
- Adds a changelog to the support library.

### Details

Especially for command wrappers like `Rustc`, it's very easy to build up
a command invocation but forget to actually execute it, e.g. by using
`run()`. This commit adds "drop bombs" to command wrappers, which are
armed on command wrapper construction, and only defused if the command
is executed (through `run`, `run_fail`).

If the test writer forgets to execute the command, the drop bomb will
"explode" and panic with an error message. This is so that tests don't
silently pass with constructed-but-not-executed command wrappers.

This PR is best reviewed commit-by-commit.

try-job: x86_64-msvc
2024-06-11 11:29:02 +00:00
Ralf Jung
db44cae343 interpret: ensure we check bool/char for validity when they are used in a cast 2024-06-11 12:16:09 +02:00
许杰友 Jieyou Xu (Joe)
5ec3eef9e7 run-make-support: add changelog 2024-06-11 09:14:29 +00:00
许杰友 Jieyou Xu (Joe)
d308a70890 run-make-support: bump version 2024-06-11 09:14:28 +00:00
许杰友 Jieyou Xu (Joe)
54e704437b run-make-support: arm command with drop bombs
- Update all command wrappers and command construction helpers with
  `#[track_caller]` where suitable to help the drop bomb panic message.
- Remove `Deref`/`DerefMut` for `Command` because it was causing issues
  with resolving to `std::process::Command` in a method call chain.
2024-06-11 09:14:28 +00:00
许杰友 Jieyou Xu (Joe)
a3feeb3afe run-make-support: add drop bomb module 2024-06-11 08:21:10 +00:00
许杰友 Jieyou Xu (Joe)
7255c2825d run-make-support: remove env_var
This is incorrectly named (it's actually `env_clear`), and is itself
a gigantic footgun: removing `TMPDIR` on Unix and `TMP`/`TEMP` on
Windows basically wrecks anything that relies on `std::env::temp_dir`
from functioning correctly. For example, this includes rustc's codegen.
2024-06-11 08:21:10 +00:00
许杰友 Jieyou Xu (Joe)
afce88e2e3
Rollup merge of #126257 - Zalathar:needs-matching-clang, r=jieyouxu
Rename `needs-matching-clang` to `needs-force-clang-based-tests`

This header is much more restrictive than its old name would suggest. As a result, most of the tests that use it don't actually run in any CI jobs.

Mitigation for #126180, though at some point we still need to go back fix the affected tests to actually run.
2024-06-11 09:14:36 +01:00
许杰友 Jieyou Xu (Joe)
61207daf86
Rollup merge of #126253 - Kobzol:run-make-assert-ref-self, r=jieyouxu
Simplify assert matchers in `run-make-support`

See [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/421156-gsoc/topic/Project.3A.20Rewriting.20Makefile.20Tests.20Using.20Rust/near/443922302) for context. This should make it easier to use the matchers.

r? `@jieyouxu`
2024-06-11 09:14:35 +01:00
Zalathar
3923b686c7 Rename needs-matching-clang to needs-force-clang-based-tests
This header is much more restrictive than its old name would suggest. As a
result, most of the tests that use it don't actually run in any CI jobs.
2024-06-11 16:45:51 +10:00
Jakub Beránek
168d5c245f
Take &self in CompletedProcess assert matchers 2024-06-11 08:11:04 +02:00
Matthias Krüger
61eb29e958
Rollup merge of #126211 - lolbinarycat:llvm-outputs-rmake, r=jieyouxu
migrate tests/run-make/llvm-outputs to use rmake.rs

part of #121876

<!--
If this PR is related to an unstable feature or an otherwise tracked effort,
please link to the relevant tracking issue here. If you don't know of a related
tracking issue or there are none, feel free to ignore this.

This PR will get automatically assigned to a reviewer. In case you would like
a specific user to review your work, you can assign it to them by using

    r​? <reviewer name>
-->
2024-06-10 21:12:26 +02:00
Matthias Krüger
07bb7ca9fa
Rollup merge of #126184 - RalfJung:interpret-simd-nonpow2, r=oli-obk
interpret: do not ICE on padded non-pow2 SIMD vectors

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

r? ``@oli-obk``
2024-06-10 21:12:25 +02:00
Matthias Krüger
2d7f7ffba5
Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk
ScalarInt: size mismatches are a bug, do not delay the panic

Cc [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/146212-t-compiler.2Fconst-eval/topic/Why.20are.20ScalarInt.20to.20iN.2FuN.20methods.20fallible.3F)

r? ``@oli-obk``
2024-06-10 21:12:25 +02:00
Ralf Jung
3c57ea0df7 ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
binarycat
91f5530b2d migrate tests/run-make/llvm-outputs to use rmake.rs
part of #121876
2024-06-10 05:30:58 -04:00
bors
a70b2ae577 Auto merge of #126205 - jieyouxu:rollup-s64z5ng, r=jieyouxu
Rollup of 4 pull requests

Successful merges:

 - #126172 (Weekly `cargo update`)
 - #126176 (rustdoc-search: use lowercase, non-normalized name for type search)
 - #126190 (Autolabel run-make tests, remind to update tracking issue)
 - #126194 (Migrate more things to `WinError`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-06-09 21:03:04 +00:00
许杰友 Jieyou Xu (Joe)
cbb986945b
Rollup merge of #126172 - clubby789:cargo-update, r=Mark-Simulacrum
Weekly `cargo update`

Replaces #125562

`r-efi` needs to be bumped in two places.
The `icu4x` dependencies also added a SPDX license identifer, so remove the license checking exception and add `Unicode-3.0` to the list.
2024-06-09 20:54:22 +01:00
许杰友 Jieyou Xu (Joe)
a8cba36cbf
Rollup merge of #126188 - Kobzol:runmake-command-docs, r=jieyouxu
Fix documentation for `impl_common_helpers` in `run-make-support`

Forgot to do this in https://github.com/rust-lang/rust/pull/126121.

`@bors` rollup

r? `@jieyouxu`
2024-06-09 19:16:21 +01:00
许杰友 Jieyou Xu (Joe)
4ca52f1869
Rollup merge of #125465 - weihanglo:opt-dist-vendor, r=Mark-Simulacrum
bootstrap: vendor crates required by opt-dist to collect profiles

These are the default package set required by opt-dist to correctly work,
hence for people wanting to build a production grade of rustc in a
sandboxed / air-gapped environment, these need to be vendored.

The size of `rustc-src-nightly.tar.xz` before and after this change:

* Before: 298M
* After: 323M (+8%)

Size change might or might not be a concern.
See the previous discussion: https://github.com/rust-lang/rust/pull/125166#issuecomment-2113626468

Previous efforts on making:

* https://github.com/rust-lang/rust/pull/125125
* https://github.com/rust-lang/rust/pull/125166

---

Note that extra works still need to be done to make it fully vendored.

* The current pinned rustc-perf uses `tempfile::Tempdir` as the working
  directory when collecting profiles from some of these packages.
  This "tmp" working directory usage make it impossible for Cargo to pick
  up the correct vendor sources setting in `.cargo/config.toml` bundled
  in the rustc-src tarball. [^1]
* opt-dist verifies the final built rustc against a subset of rustc test
  suite. However it rolls out its own `config.toml` without setting
  `vendor = true`, and that results in `./vendor/` directory removed.
  [^2]

[^1]: 4f313add60/collector/src/compile/benchmark/mod.rs (L164-L173)
[^2]: 606afbb617/src/tools/opt-dist/src/tests.rs (L62-L77)
2024-06-09 19:16:20 +01:00
Weihang Lo
377870386f
tidy: add license exceptions for rustc-perf
`ring` is included because it is an optional dependency of `hyper`,
which is a training data in rustc-pref for optimized build.
The license of it is generally `ISC AND MIT AND OpenSSL`,
though the `package.license` field is not set.

See https://github.com/briansmith/ring/issues/902

`git+https://github.com/rust-lang/team` git source is from
`rust_team_data`, which is used by `site` in src/tools/rustc-perf.
This doesn't really a part of the compiler,
so doesn't really affect the bootstrapping process.

See https://github.com/rust-lang/rustc-perf/pull/1914.
2024-06-09 12:33:11 -04:00
Weihang Lo
e24be071e3
feat: vendor crates required by opt-dist to collect profiles
These are the default package set required by opt-dist to correctly work,
hence for people wanting to build a production grade of rustc in a
sandboxed / air-gapped environment, these need to be vendored.

The size of `rustc-src-nightly.tar.xz` before and after this change:

* Before: 298M
* After: 323M (+8%)

These crates are the default set of packages required by opt-dist
to correctly work, hence for people wanting to build a production grade
of rustc in an sandboxed / air-gapped environment, these need to be vendored.

The size of `rustc-src-nightly.tar.xz` before and after this change:

* Before: 298M
* After: 323M (+8%)

Size change might or might not be a concern.
See the previous discussion: https://github.com/rust-lang/rust/pull/125166#issuecomment-2113626468

Previous efforts on making:

* https://github.com/rust-lang/rust/pull/125125
* https://github.com/rust-lang/rust/pull/125166

---

Note that extra works still need to be done to make it fully vendored.

* The current pinned rustc-perf uses `tempfile::Tempdir` as the working
  directory when collecting profiles from some of these packages.
  This "tmp" working directory usage make it impossible for Cargo to pick
  up the correct vendor sources setting in `.cargo/config.toml` bundled
  in the rustc-src tarball. [^1]
* opt-dist verifies the final built rustc against a subset of rustc test
  suite. However it rolls out its own `config.toml` without setting
  `vendor = true`, and that results in `./vendor/` directory removed.
  [^2]

[^1]: 4f313add60/collector/src/compile/benchmark/mod.rs (L164-L173)
[^2]: 606afbb617/src/tools/opt-dist/src/tests.rs (L62-L77)
2024-06-09 12:33:11 -04:00
bors
7bb0ef4902 Auto merge of #126193 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`
2024-06-09 14:37:00 +00:00
tiif
69512c7b1e Follow up fix for eventfd shim 2024-06-09 19:44:06 +08:00
Ralf Jung
87c4d29ce2 don't panic if time computaton overflows 2024-06-09 13:07:36 +02:00
bors
509eec19c4 Auto merge of #3653 - tiif:bug/futex_ice, r=RalfJung
Fix futex with large timeout ICE

Fixes #3647.

This PR changed the type of ``nanoseconds`` from ``u64`` to ``u128``. In ``duration_since``, nanoseconds is manually converted to second by dividing it with 1e9. But overflow is still possible.
2024-06-09 10:18:56 +00:00
tiif
40182becc3 Run cargo fmt 2024-06-09 18:00:58 +08:00
tiif
21d66afb8f Saturate to u64::MAX 2024-06-09 18:00:58 +08:00
byt
e85c521f37 Checked add for duration update
Co-authored-by: Ralf Jung <post@ralfj.de>
2024-06-09 18:00:58 +08:00
byt
d0fb350b6a Add comment for u128 to u64 conversion.
Co-authored-by: Ralf Jung <post@ralfj.de>
2024-06-09 18:00:58 +08:00
tiif
aa8323585c Move duration division out 2024-06-09 18:00:58 +08:00
tiif
9cf04b5a22 Use modulo operation to convert nanosecond to Duration 2024-06-09 18:00:58 +08:00
tiif
9f60709ffd Remove test 2024-06-09 18:00:58 +08:00
tiif
0bca4e1a22 Convert u128 to nanosecond 2024-06-09 18:00:58 +08:00
tiif
844450ae3a First attempt 2024-06-09 18:00:58 +08:00
Ralf Jung
d5fb8257e7 interpret: do not ICE on padded non-pow2 SIMD vectors 2024-06-09 11:54:23 +02:00
Jakub Beránek
fbe5015480
Fix documentation for impl_common_helpers in run-make-support 2024-06-09 11:52:16 +02:00
Ralf Jung
ba45198c9b use strict ops in some places 2024-06-09 11:44:05 +02:00
Ralf Jung
110b092203 simd_bitmask: work correctly for sizes like 24 2024-06-09 11:44:05 +02:00
Matthias Krüger
8875fd1ff4
Rollup merge of #126175 - Kobzol:tidy-install-pip-quiet, r=tgross35
Use --quiet flag when installing pip dependencies

Fixes: https://github.com/rust-lang/rust/issues/126164

This still prints an error if any occurs.
2024-06-09 10:17:10 +02:00
Ralf Jung
91e53aa8ed simd_select_bitmask: fix intrinsic name in error 2024-06-09 09:56:30 +02:00
Ralf Jung
a13a9ab759 simd_bitmask: nicer error when the mask is too big 2024-06-09 09:09:23 +02:00