Commit graph

15271 commits

Author SHA1 Message Date
Ralf Jung
844635dfa3 ./miri bench: set toolchain explicitly 2024-12-11 19:21:19 +01:00
Ralf Jung
e2496df493
Merge pull request #4008 from JoJoDeveloping/tb-access-state-based-skipping
[TB Optimization] Skip subtrees based on the subtree's root node's permissions
2024-12-11 06:21:15 +00:00
Johannes Hostert
0f920dbaf1
TB: optimize accesses on large trees by ignoring subtrees if the access would mostly be a NOP 2024-12-10 16:49:49 +01:00
Jakub Beránek
4917fe5d48
Enable [bot-pull-requests] triagebot feature 2024-12-09 13:25:08 +01:00
Ralf Jung
c498e7f519 Merge from rustc 2024-12-09 08:52:19 +01:00
Ralf Jung
b984eaa563 Preparing for merge from rustc 2024-12-09 08:49:33 +01:00
bors
1b3fb31675 Auto merge of #134052 - matthiaskrgr:rollup-puxwqrk, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #133567 (A bunch of cleanups)
 - #133789 (Add doc alias 'then_with' for `then` method on `bool`)
 - #133880 (Expand home_dir docs)
 - #134036 (crash tests: use individual mir opts instead of mir-opt-level where easily possible)
 - #134045 (Fix some triagebot mentions paths)
 - #134046 (Remove ignored tests for hangs w/ new solver)
 - #134050 (Miri subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-12-09 03:24:24 +00:00
Matthias Krüger
e01cb62c91
Rollup merge of #134050 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`
2024-12-09 01:56:35 +01:00
Matthias Krüger
86f3ed3e11
Rollup merge of #134046 - lqd:new-solver-hangs, r=compiler-errors
Remove ignored tests for hangs w/ new solver

As asked on zulip [here](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/needs_help.3A.20look.20through.20compare-mode.20hangs).

As far as I can tell there are no more UI tests that hang anymore, so this removes the ignore directives for the compare mode.

(As I was using `--compare-mode new-solver` and that failed in an obscure way without any info about what to do, I've also fixed its error handling in `compiletest`: it didn't show the invalid `--compare-mode`, nor the valid values one can pass).

r? lcnr
2024-12-09 01:56:35 +01:00
Matthias Krüger
d2881e4eb5
Rollup merge of #133567 - bjorn3:various_cleanups, r=cjgillot
A bunch of cleanups

These are all extracted from a branch I have to get rid of driver queries. Most of the commits are not directly necessary for this, but were found in the process of implementing the removal of driver queries.

Previous PR: https://github.com/rust-lang/rust/pull/132410
2024-12-09 01:56:32 +01:00
Rémy Rakic
62c71ccc7f improve --compare-mode error handling
- show the erroneous value
- show the valid values
2024-12-08 20:21:46 +00:00
Matthias Krüger
c05e7bde10
Rollup merge of #133733 - jyn514:compiletest-diffs, r=jieyouxu
compiletest: show the difference between the normalized output and the actual output for lines which didn't match

example output:
```
failures:

---- [ui] tests/ui/layout/enum.rs stdout ----
diff of stderr:

-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIGN }
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
2	  --> $DIR/enum.rs:9:1
3	   |
4	LL | enum UninhabitedVariantAlign {

Note: some mismatched output was normalized before being compared
-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: Align(8 bytes) }
-	  --> /home/jyn/src/rust2/tests/ui/layout/enum.rs:9:1
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
```
2024-12-08 17:18:51 +01:00
Matthias Krüger
1868c8f66f
Rollup merge of #133424 - Nadrieril:guard-patterns-parsing, r=fee1-dead
Parse guard patterns

This implements the parsing of [RFC3637 Guard Patterns](https://rust-lang.github.io/rfcs/3637-guard-patterns.html) (see also [tracking issue](https://github.com/rust-lang/rust/issues/129967)). This PR is extracted from https://github.com/rust-lang/rust/pull/129996 with minor modifications.

cc `@max-niederman`
2024-12-08 17:18:50 +01:00
Ralf Jung
03c412ead4 fix build 2024-12-08 08:21:20 +01:00
The Miri Cronjob Bot
8cabbc9bd0 Merge from rustc 2024-12-08 05:03:13 +00:00
The Miri Cronjob Bot
7ba5192913 Preparing for merge from rustc 2024-12-08 04:55:19 +00:00
bors
728f2daab4 Auto merge of #133988 - weihanglo:update-cargo, r=weihanglo
Update cargo

6 commits in 05f54fdc34310f458033af8a63ce1d699fae8bf6..20a443231846b81c7b909691ec3f15eb173f2b18
2024-12-03 03:14:12 +0000 to 2024-12-06 21:56:56 +0000
- fix(fingerprint): Don't throwaway the cache on RUSTFLAGS changes  (rust-lang/cargo#14830)
- fix(build-rs)!: Remove meaningless 'cargo_cfg_debug_assertions' (rust-lang/cargo#14901)
- docs(fingerprint): cargo-rustc extra flags do not affect the metadata  (rust-lang/cargo#14898)
- fix(add): Don't select yanked versions when normalizing names (rust-lang/cargo#14895)
- fix(fix): Migrate workspace dependencies (rust-lang/cargo#14890)
- test(build-std): make mock-std closer to real world (rust-lang/cargo#14896)
2024-12-08 01:44:04 +00:00
Ralf Jung
854dcbc5d8 add weak memory consistency test for mixing SC accesses and fences 2024-12-07 18:14:17 +01:00
bors
9c707a8b76 Auto merge of #133978 - matthiaskrgr:rollup-6gh1iho, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #130209 (Stabilize `std::io::ErrorKind::CrossesDevices`)
 - #130254 (Stabilize `std::io::ErrorKind::QuotaExceeded`)
 - #132187 (Add Extend impls for tuples of arity 1 through 12)
 - #133875 (handle `--json-output` properly)
 - #133934 (Do not implement unsafe auto traits for types with unsafe fields)
 - #133954 (Hide errors whose suggestions would contain error constants or types)
 - #133960 (rustdoc: remove eq for clean::Attributes)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-12-07 09:38:00 +00:00
The Miri Cronjob Bot
8f05e4c4ce fmt 2024-12-07 05:05:09 +00:00
The Miri Cronjob Bot
97633d8e60 Merge from rustc 2024-12-07 05:03:57 +00:00
The Miri Cronjob Bot
8afc3c695e Preparing for merge from rustc 2024-12-07 04:55:54 +00:00
jyn
8aacd1c6a8 compiletest: show the difference between the normalized output and the actual output for lines which didn't match
example output:
```
failures:

---- [ui] tests/ui/layout/enum.rs stdout ----
diff of stderr:

-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIGN }
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
2	  --> $DIR/enum.rs:9:1
3	   |
4	LL | enum UninhabitedVariantAlign {

Note: some mismatched output was normalized before being compared
-	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: Align(8 bytes) }
-	  --> /home/jyn/src/rust2/tests/ui/layout/enum.rs:9:1
+	error: align: AbiAndPrefAlign { abi: Align(2 bytes), pref: $PREF_ALIN }
```
2024-12-07 10:38:02 +08:00
Weihang Lo
71304f6595
Update cargo 2024-12-06 18:47:36 -05:00
Ben Kimock
711c8cc690 Remove polymorphization 2024-12-06 16:42:09 -05:00
Matthias Krüger
d0fe04e22b
Rollup merge of #130254 - GrigorenkoPV:QuotaExceeded, r=dtolnay
Stabilize `std::io::ErrorKind::QuotaExceeded`

Also drop "Filesystem" from its name.

See #130190 for more info.

FCP in #130190

cc #86442

r? `@dtolnay`
2024-12-06 21:21:04 +01:00
Ralf Jung
016fb485fa remove a no-longer-needed work-around 2024-12-06 19:54:22 +01:00
Ralf Jung
644faf4c93 add test 2024-12-06 19:51:19 +01:00
bjorn3
401dd840ff Remove all threading through of ErrorGuaranteed from the driver
It was inconsistently done (sometimes even within a single function) and
most of the rest of the compiler uses fatal errors instead, which need
to be caught using catch_with_exit_code anyway. Using fatal errors
instead of ErrorGuaranteed everywhere in the driver simplifies things a
bit.
2024-12-06 18:42:31 +00:00
bjorn3
030545d8c3 Store a single copy of the error registry in DiagCtxt
And pass this to the individual emitters when necessary.
2024-12-06 18:42:31 +00:00
bors
8dc83770f7 Auto merge of #133089 - eholk:stabilize-noop-waker, r=dtolnay
Stabilize noop_waker

Tracking Issue: #98286

This is a handy feature that's been used widely in tests and example async code and it'd be nice to make it available to users.

cc `@rust-lang/wg-async`
2024-12-06 18:34:16 +00:00
bors
cdeddae4f6 Auto merge of #133956 - bjorn3:sync_cg_clif-2024-12-06, r=bjorn3
Sync cg clif 2024 12 06

The main highlights this time are a Cranelift update disabling the clif ir verifier by default for better performance.

r? `@ghost`

`@rustbot` label +A-codegen +A-cranelift +T-compiler
2024-12-06 15:49:11 +00:00
bjorn3
063e21b4c4 Cargo decided to add serde to cg_clif's lockfile despite serde support in Cranelift being disabled 2024-12-06 12:16:54 +00:00
Ralf Jung
a5622a2061 fix SC fence logic 2024-12-06 09:57:13 +01:00
Matthias Krüger
026d21d2c1
Rollup merge of #133930 - chriskrycho:mdbook-trpl-package, r=ehuss
rustbook: update to use new mdbook-trpl package from The Book

Updates to the latest merge from `rust-lang/book` and simplifies the dependency chain there. There are now three preprocessors, but only one package, so everything is a lot nicer to deal with from the consuming POV (i.e. here).
2024-12-06 09:27:40 +01:00
Matthias Krüger
576176d8b7
Rollup merge of #133211 - Strophox:miri-correct-state-update-ffi, r=RalfJung
Extend Miri to correctly pass mutable pointers through FFI

Based off of https://github.com/rust-lang/rust/pull/129684, this PR further extends Miri to execute native calls that make use of pointers to *mutable* memory.
We adapt Miri's bookkeeping of internal state upon any FFI call that gives external code permission to mutate memory.

Native code may now possibly write and therefore initialize and change the pointer provenance of bytes it has access to: Such memory is assumed to be *initialized* afterwards and bytes are given *arbitrary (wildcard) provenance*. This enables programs that correctly use mutating FFI calls to run Miri without errors, at the cost of possibly missing Undefined Behaviour caused by incorrect usage of mutating FFI.

> <details>
>
> <summary> Simple example </summary>
>
> ```rust
> extern "C" {
>   fn init_int(ptr: *mut i32);
> }
>
> fn main() {
>   let mut x = std::mem::MaybeUninit::<i32>::uninit();
>   let x = unsafe {
>     init_int(x.as_mut_ptr());
>     x.assume_init()
>   };
>
>   println!("C initialized my memory to: {x}");
> }
> ```
> ```c
> void init_int(int *ptr) {
>   *ptr = 42;
> }
> ```
> should now show `C initialized my memory to: 42`.
>
> </details>

r? ``@RalfJung``
2024-12-06 09:27:39 +01:00
Ralf Jung
a57d5febda
Merge pull request #4057 from RalfJung/scfix
Fix weak memory emulation to avoid generating behaviors that are forbidden under C++ 20
2024-12-06 06:44:23 +00:00
The Miri Cronjob Bot
4e69b65c64 Merge from rustc 2024-12-06 05:10:58 +00:00
The Miri Cronjob Bot
cfc3924d16 Preparing for merge from rustc 2024-12-06 05:02:50 +00:00
Guillaume Gomez
5a9c9ef541
Rollup merge of #133821 - Kobzol:replace-black-with-ruff, r=onur-ozkan
Replace black with ruff in `tidy`

`ruff` can both lint and format Python code (in fact, it should be a mostly drop-in replacement for `black` in terms of formatting), so it's not needed to use `black` anymore. This PR removes `black` and replaces it with `ruff`, to get rid of one Python dependency, and also to make Python formatting faster (although that's a small thing).

If we decide to merge this, we'll need to "reformat the world" - `ruff` is not perfectly compatible with `black`, and it also looks like `black` was actually ignoring some files before. I tried it locally (`./x test tidy --extra-checks=py:fmt --bless`) and it also reformatted some code in subtrees (e.g. `clippy` or `rustc_codegen_gcc`) - I'm not sure how to handle that.
2024-12-05 23:47:11 +01:00
Eric Holk
72ce1ab42f
Stabilize noop_waker
Co-authored-by: zachs18 <8355914+zachs18@users.noreply.github.com>
2024-12-05 14:14:17 -08:00
Strophox
712ceaba35 extend Miri to correctly pass mutable pointers through FFI
Co-authored-by: Ralf Jung <post@ralfj.de>
2024-12-05 22:41:07 +01:00
Chris Krycho
74756c1f45
rustbook: update to use new mdbook-trpl package from The Book 2024-12-05 11:01:42 -07:00
tiif
16d549a6ce Avoid passing byte slice to anonsocket_read 2024-12-05 23:40:52 +08:00
Ralf Jung
fe856815aa make SC fences stronger, to be correct wrt C++20 2024-12-05 08:03:22 +01:00
Ralf Jung
9449cb9563 move GlobalState definition further up so the types are mor concentrated at the top of the file 2024-12-05 08:03:21 +01:00
Ralf Jung
8d28ec4b54 extend some comments regarding weak memory emulation 2024-12-05 08:03:20 +01:00
León Orell Valerian Liehr
1f1dfd54eb
Rollup merge of #133892 - jieyouxu:revert-eprintln, r=jieyouxu
Revert #133817

This reverts commit 0585134e70, reversing changes made to 5530869e0f.

#133817 unfortunately only converted the `println!` instances to `eprintln!`, meaning that some test output (via compiletest/bootstrap) was messed up because stdout/stderr output interleaved improperly when some `println!` instances were converted to `eprintln!` instances, while some `print!` instances remain unchanged. This made reading test output annoying for contributors cc #133879.

Closes #133879 by reverting.

#133817 can be relanded in the future when `print!` instances are also matched with `println!` instances.

cc `@clubby789`

This is a clean revert so I'm going to self-approve this PR.
2024-12-05 07:29:59 +01:00
León Orell Valerian Liehr
44174d9213
Rollup merge of #133863 - oli-obk:push-pystoxvtvssx, r=lqd
Rename `core_pattern_type` and `core_pattern_types` lib feature  gates to `pattern_type_macro`

That's what the gates are actually gating, and the single char difference in naming was not helpful either

fixes #128987
2024-12-05 07:29:56 +01:00
León Orell Valerian Liehr
626db06409
Rollup merge of #133233 - estebank:const-errors, r=Nadrieril
Add context to "const in pattern" errors

*Each commit addresses specific diagnostics.*

- Add primary span labels
- Point at `const` item, and `const` generic param definition
- Reword messages and notes
- Point at generic param through which an associated `const` is being referenced
- Silence const in pattern with evaluation errors when they come from `const` items that already emit a diagnostic
- On non-structural type in const used as pattern, point at the type that should derive `PartialEq`
2024-12-05 07:29:54 +01:00