Michael Goulet
f15997ffec
Remove struct_tail_no_normalization
2024-08-11 19:40:03 -04:00
Ralf Jung
522af10ccc
interpret: refactor function call handling to be better-abstracted
2024-08-06 11:08:12 +02:00
Ralf Jung
21c02517c3
Miri: add a flag to do recursive validity checking
2024-08-03 10:33:58 +02:00
Nicholas Nethercote
84ac80f192
Reformat use
declarations.
...
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
Ralf Jung
763e3131cc
don't ICE when encountering an extern type field during validation
2024-06-22 17:39:01 +02:00
Michael Goulet
342c1b03d6
Rename InstanceDef -> InstanceKind
2024-06-16 21:35:21 -04:00
Ralf Jung
54e24c1573
const-eval: make lint scope computation consistent
2024-06-13 20:31:00 +02:00
Ralf Jung
b316033dd8
rename CompileTimeInterpreter -> CompileTimeMachine, CompileTimeEvalContext -> CompileTimeInterpCx
...
to match the terms used in the shared interpreter infrastructure
2024-06-13 20:30:11 +02:00
Ralf Jung
e8379c9598
interpret: get rid of 'mir lifetime everywhere
2024-05-27 08:25:57 +02:00
Ralf Jung
36d36a3e1f
interpret: the MIR is actually at lifetime 'tcx
2024-05-27 07:45:41 +02:00
Nicholas Nethercote
7a5d814a04
Remove #[macro_use] extern crate tracing
from rustc_const_eval
.
2024-05-23 18:02:38 +10: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
Michael Goulet
d50c2b0a52
Make builtin_deref just return a Ty
2024-05-09 22:55:00 -04:00
Ralf Jung
1d87efc1da
replace another Option<Span> by DUMMY_SP
2024-05-07 14:52:42 +02:00
Oli Scherer
126dcc618d
Use less fragile error handling
2024-04-17 09:50:44 +00:00
Oli Scherer
77fe9f0a72
Validate before reporting interning errors.
...
validation produces much higher quality errors and already handles most of the cases
2024-04-17 09:50:44 +00:00
xiaoxiangxianzi
3157114f0b
chore: fix some comments
...
Signed-off-by: xiaoxiangxianzi <zhaoyizheng@outlook.com>
2024-03-27 22:32:53 +08:00
Ben Kimock
9e0d1a3284
Print a backtrace in const eval if interrupted
2024-03-17 11:55:20 -04:00
Oli Scherer
a316c21dc8
Rename some things around validation error reporting to signal that it is in fact about validation failures
2024-03-14 12:21:35 +00:00
Oli Scherer
16046c77aa
Move the entire success path into eval_body_using_ecx
2024-03-14 12:21:29 +00:00
Oli Scherer
2e6c4900b6
Move validation into eval_body_using_ecx
2024-03-14 12:21:23 +00:00
Oli Scherer
cc7e0b2200
Share the InterpCx
creation between static and const evaluation
2024-03-14 12:21:18 +00:00
Oli Scherer
02a0ac8058
Remove an argument that can be computed cheaply
2024-03-14 12:21:12 +00:00
Oli Scherer
d3b7b558aa
Directly pass in the stack instead of computing it from a machine
2024-03-14 12:21:06 +00:00
Oli Scherer
6b936b6c08
Move InterpCx into eval_in_interpreter
2024-03-14 11:40:42 +00:00
Oli Scherer
8b8efd157b
Move error handling into const_validate_mplace
2024-03-14 11:40:36 +00:00
Oli Scherer
93888cd0a4
Move only usage of take_static_root_alloc
to its definition and inline it
2024-03-14 11:40:30 +00:00
Oli Scherer
d6c999754c
Generalize eval_in_interpreter
with a helper trait
2024-03-14 11:40:23 +00:00
Oli Scherer
71f1943cbf
Fix accidental re-addition of removed code in a previous PR
2024-03-14 11:39:27 +00:00
Oli Scherer
d3514a036d
Ensure nested allocations in statics do not get deduplicated
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
Jubilee
9300fbbed1
Rollup merge of #121893 - RalfJung:const-interior-mut-tests, r=oli-obk
...
Add tests (and a bit of cleanup) for interior mut handling in promotion and const-checking
Basically these are the parts of https://github.com/rust-lang/rust/pull/121786 that can be salvaged.
r? ``@oli-obk``
2024-03-11 09:29:34 -07:00
Ralf Jung
279465b5e8
const-checking: add some corner case tests, and fix some nits
2024-03-11 14:15:24 +01:00
Ralf Jung
7d99e80c55
MIR printing: print the path of uneval'd const; refer to promoteds in a consistent way
2024-03-10 14:59:41 +01:00
Ralf Jung
bf47df8b0b
interpret: do not call machine read hooks during validation
2024-03-09 20:00:24 +01:00
Ralf Jung
9eabdc2a4c
make it possible for outside crates to inspect a mir::ConstValue with the interpreter
2024-02-21 14:32:52 +01: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
Oli Scherer
e2386270df
Return ConstAllocation from eval_static_initializer query directly
2024-02-15 10:25:18 +00: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
Ralf Jung
77f8c3caea
detect consts that reference extern statics
2024-02-10 16:13:48 +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
Oli Scherer
b6d0225caf
prefer instrumentation over entry/exit tracing statements
2024-01-29 08:53:54 +00:00
Oli Scherer
7a2b66319e
interning doesn't check alignment anymroe, because it doesn't do any more projections.
2024-01-29 08:53:54 +00: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
Oli Scherer
867831a170
Always use RevealAll for const eval queries
2024-01-19 11:32:34 +00:00
Ralf Jung
4d93590d59
compile-time evaluation: emit a lint when a write through an immutable pointer occurs
2023-12-07 17:46:36 +01:00
Ralf Jung
cb86303342
ctfe interpreter: extend provenance so that it can track whether a pointer is immutable
2023-12-07 17:46:36 +01: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
bors
9c20ddd956
Auto merge of #117507 - nnethercote:rustc_span, r=Nilstrieb
...
`rustc_span` cleanups
Just some things I found while looking over this crate.
r? `@oli-obk`
2023-11-03 14:57:40 +00:00