Guillaume Gomez
51a58c59f3
Rollup merge of #126232 - RalfJung:dyn-trait-equality, r=oli-obk
...
interpret: dyn trait metadata check: equate traits in a proper way
Hopefully fixes https://github.com/rust-lang/miri/issues/3541 ... unfortunately we don't have a testcase.
The first commit is just a refactor without functional change.
r? `@oli-obk`
2024-06-12 15:44:59 +02:00
Ralf Jung
af4d6c74ef
interpret: refactor dyn trait handling
...
We can check that the vtable is for the right trait very early, and then just pass the type around.
2024-06-10 17:28:52 +02:00
Ralf Jung
3c57ea0df7
ScalarInt: size mismatches are a bug, do not delay the panic
2024-06-10 13:43:16 +02:00
Santiago Pastorino
bac72cf7cf
Add safe/unsafe to static inside extern blocks
2024-06-04 14:19:43 -03:00
Ralf Jung
e8379c9598
interpret: get rid of 'mir lifetime everywhere
2024-05-27 08:25:57 +02:00
Nicholas Nethercote
7a5d814a04
Remove #[macro_use] extern crate tracing from rustc_const_eval.
2024-05-23 18:02:38 +10:00
Ralf Jung
9526ce60fd
improve comment wording
2024-05-21 21:13:20 +02:00
Ralf Jung
5c33a5690d
offset, offset_from: allow zero-byte offset on arbitrary pointers
2024-05-13 07:59:16 +02:00
Nicholas Nethercote
4497d345a8
Remove extern crate rustc_middle from rustc_const_eval.
...
This requires exporting the interpreter macros so they can be used with
`use crate::interpret::*`.
2024-05-13 08:02:14 +10:00
Ralf Jung
875f0c2da0
Miri: detect wrong vtables in wide pointers
2024-04-21 13:04:51 +02:00
Oli Scherer
8b2a4f8b43
Simplify alloc id mutability check
2024-04-17 09:50:44 +00:00
Oli Scherer
140c9e10bb
Deduplicate logic for checking the mutability of allocations
2024-04-17 09:50:44 +00:00
Oli Scherer
d87e9636d5
Run the "is this static mutable" logic the same way as in in_mutable_memory
2024-04-17 09:50:44 +00:00
Oli Scherer
8c9cba2be7
Validate nested static items
2024-04-17 09:50:15 +00:00
Oli Scherer
84acfe86de
Actually create ranged int types in the type system.
2024-04-08 12:02:19 +00:00
Oli Scherer
bbedde835e
Exhaustively match on the mutability and nestedness
2024-03-12 05:53:47 +00:00
Oli Scherer
926bfe5078
s/mt/mutability/
2024-03-12 05:53:46 +00:00
Oli Scherer
d3514a036d
Ensure nested allocations in statics do not get deduplicated
2024-03-12 05:53:46 +00:00
Oli Scherer
0b4cbee660
Add nested bool to DefKind::Static.
...
Will be used in the next commit
2024-03-12 05:53:46 +00:00
Oli Scherer
9816915954
Change DefKind::Static to a struct variant
2024-03-12 05:53:46 +00:00
Jubilee
f6ca4258d2
Rollup merge of #122249 - RalfJung:machine-read-hook, r=oli-obk
...
interpret: do not call machine read hooks during validation
Fixes https://github.com/rust-lang/miri/issues/3347
r? ``@oli-obk``
2024-03-11 09:29:36 -07:00
Ralf Jung
bf47df8b0b
interpret: do not call machine read hooks during validation
2024-03-09 20:00:24 +01:00
Ralf Jung
e632e3f9a5
miri: do not apply aliasing restrictions to Box with custom allocator
2024-03-09 13:08:55 +01:00
Ralf Jung
3cc8c8d44b
allow statics pointing to mutable statics
2024-02-29 09:34:15 +01:00
Guillaume Gomez
0c92146034
Rollup merge of #121179 - RalfJung:zst-mutable-refs, r=oli-obk
...
allow mutable references in const values when they point to no memory
Fixes https://github.com/rust-lang/rust/issues/120450
The second commit is just some drive-by test suite cleanup.
r? `@oli-obk`
2024-02-16 17:08:13 +01:00
Ralf Jung
0702701297
allow mutable references in const values when they point to no memory
2024-02-16 10:09:12 +01:00
bors
1be468815c
Auto merge of #120486 - reitermarkus:use-generic-nonzero, r=dtolnay
...
Use generic `NonZero` internally.
Tracking issue: https://github.com/rust-lang/rust/issues/120257
2024-02-16 07:46:31 +00:00
Oli Scherer
73b38c661d
Do not allocate a second "background" alloc id for the main allocation of a static.
...
Instead we re-use the static's alloc id within the interpreter for its initializer to refer to the `Allocation` that only exists within the interpreter.
2024-02-15 10:25:18 +00:00
Markus Reiter
746a58d435
Use generic NonZero internally.
2024-02-15 08:09:42 +01:00
Matthias Krüger
15896bdd18
Rollup merge of #120950 - compiler-errors:miri-async-closurs, r=RalfJung,oli-obk
...
Fix async closures in CTFE
First commit renames `is_coroutine_or_closure` into `is_closure_like`, because `is_coroutine_or_closure_or_coroutine_closure` seems confusing and long.
Second commit fixes some forgotten cases where we want to handle `TyKind::CoroutineClosure` the same as closures and coroutines.
The test exercises the change to `ValidityVisitor::aggregate_field_path_elem` which is the source of #120946 , but not the change to `UsedParamsNeedSubstVisitor`, though I feel like it's not that big of a deal. Let me know if you'd like for me to look into constructing a test for the latter, though I have no idea what it'd look like (we can't assert against `TooGeneric` anywhere?).
Fixes #120946
r? oli-obk cc ``@RalfJung``
2024-02-12 23:18:53 +01:00
Ralf Jung
5fa69deb00
fix cycle error when a static and a promoted are mutually recursive
...
This also now allows promoteds everywhere to point to 'extern static', because why not?
We still check that constants cannot transitively reach 'extern static' through references.
(We allow it through raw pointers.)
2024-02-12 09:48:14 +01:00
Michael Goulet
87816378ab
Fix async closures in CTFE
2024-02-11 22:09:52 +00:00
Ralf Jung
77f8c3caea
detect consts that reference extern statics
2024-02-10 16:13:48 +01:00
Ralf Jung
9c0623fe8f
validation: descend from consts into statics
2024-02-10 16:13:47 +01:00
Ralf Jung
4e77e368eb
unstably allow constants to refer to statics and read from immutable statics
2024-02-10 16:12:55 +01:00
Matthias Krüger
6908d3ec9e
Rollup merge of #120683 - RalfJung:symbolic-alignment-ice, r=oli-obk
...
miri: fix ICE with symbolic alignment check on extern static
Fixes https://github.com/rust-lang/miri/issues/3288 . Also fixes [this example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38ee338ff10726be72bdd6efa3386763 ).
This could almost be a Miri PR, except for that typo fix in the validator. I started this as a rustc patch since I thought I need rustc changes, and now it'd be too annoying to turn this into a Miri PR...
r? `@oli-obk`
2024-02-06 19:40:10 +01:00
Ralf Jung
25635b9a96
miri: fix ICE with symbolic alignment check on extern static
2024-02-06 10:17:42 +01:00
Michael Goulet
c567eddec2
Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs
2024-02-06 02:22:58 +00:00
Ralf Jung
73ce868c7e
more clear code
...
Co-authored-by: Oli Scherer <github35764891676564198441@oli-obk.de >
2024-01-22 09:28:00 +01:00
Ralf Jung
2f1a8e2d7a
const-eval interner: from-scratch rewrite using mutability information from provenance rather than types
2024-01-22 09:28:00 +01:00
Michael Goulet
fcb42b42d6
Remove movability from TyKind::Coroutine
2023-12-28 16:35:01 +00:00
zetanumbers
24f009c5e5
Move some methods from tcx.hir() to tcx
...
Renamings:
- find -> opt_hir_node
- get -> hir_node
- find_by_def_id -> opt_hir_node_by_def_id
- get_by_def_id -> hir_node_by_def_id
Fix rebase changes using removed methods
Use `tcx.hir_node_by_def_id()` whenever possible in compiler
Fix clippy errors
Fix compiler
Apply suggestions from code review
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com >
Add FIXME for `tcx.hir()` returned type about its removal
Simplify with with `tcx.hir_node_by_def_id`
2023-12-12 06:40:29 -08:00
Nilstrieb
21a870515b
Fix clippy::needless_borrow in the compiler
...
`x clippy compiler -Aclippy::all -Wclippy::needless_borrow --fix`.
Then I had to remove a few unnecessary parens and muts that were exposed
now.
2023-11-21 20:13:40 +01:00
Oli Scherer
5784e9e83e
Pull mplace validation logic out into an interpreter method
2023-10-23 08:35:26 +00:00
Oli Scherer
e96ce20b34
s/generator/coroutine/
2023-10-20 21:14:01 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
Ralf Jung
b131fc10ae
separate bounds-check from alignment check
2023-10-15 18:13:33 +02:00
Ralf Jung
e24835c6e0
more precise error for 'based on misaligned pointer' case
2023-10-15 18:13:33 +02:00
Ralf Jung
f3f9b795bd
place evaluation: require the original pointer to be aligned if an access happens
2023-10-15 18:13:31 +02:00
Ralf Jung
b1ebf002c3
don't UB on dangling ptr deref, instead check inbounds on projections
2023-10-15 18:12:46 +02:00