Jubilee Young
bbd18e29da
compiler: Directly use rustc_abi in const_eval
2024-11-03 13:38:47 -08:00
Michael Goulet
e83e4e8112
Get rid of const eval_* and try_eval_* helpers
2024-10-19 18:07:35 +00:00
Ralf Jung
c4ce8c114b
make InterpResult a dedicated type to avoid accidentally discarding the error
2024-10-01 21:45:35 +02:00
Ralf Jung
1eb51e717e
fix unqualified_local_imports in rustc_const_eval
2024-09-23 11:57:32 +02:00
Michael Goulet
c682aa162b
Reformat using the new identifier sorting from rustfmt
2024-09-22 19:11:29 -04: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
fa74a9e6aa
valtree construction: keep track of which type was valtree-incompatible
2024-07-18 11:58:16 +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
Ralf Jung
928bd3b4e0
tag_for_variant follow-ups
2024-03-23 10:45:42 +01:00
Jack Wrenn
2de9010f66
Add tag_for_variant query
...
This query allows for sharing code between `rustc_const_eval` and
`rustc_transmutability`.
Also moves `DummyMachine` to `rustc_const_eval`.
2024-03-22 17:01:49 +00:00
Oli Scherer
d2d2bd2736
Move generate_stacktrace_from_stack away from InterpCx to avoid having to know the Machine type
2024-03-14 12:20:58 +00: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
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
Nicholas Nethercote
99472c7049
Remove Session methods that duplicate DiagCtxt methods.
...
Also add some `dcx` methods to types that wrap `TyCtxt`, for easier
access.
2023-12-24 08:05:28 +11: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
Nicholas Nethercote
f405ce86c2
Minimize pub usage in source_map.rs.
...
Most notably, this commit changes the `pub use crate::*;` in that file
to `use crate::*;`. This requires a lot of `use` items in other crates
to be adjusted, because everything defined within `rustc_span::*` was
also available via `rustc_span::source_map::*`, which is bizarre.
The commit also removes `SourceMap::span_to_relative_line_string`, which
is unused.
2023-11-02 19:35:00 +11:00
Camille GILLOT
224e29030a
Specify diagnostic path.
2023-11-01 18:36:38 +00:00
Camille GILLOT
3a55c283d0
Rename hook.
2023-11-01 16:49:18 +00:00
Ralf Jung
351d532a27
interpret: call caller_location logic the same way codegen does, and share some code
2023-10-28 15:40:03 +02:00
Oli Scherer
2157f31731
Add a way to decouple the implementation and the declaration of a TyCtxt method.
2023-09-22 09:23:15 +00:00
Ralf Jung
5a0a1ff0cd
move ConstValue into mir
...
this way we have mir::ConstValue and ty::ValTree as reasonably parallel
2023-09-19 11:11:02 +02:00
Ralf Jung
fa5f13775a
interpret: make MemPlace, Place, Operand types private to the interpreter
2023-09-04 17:53:38 +02:00
Ralf Jung
14a674c88c
interpret: read_discriminant: only return VariantIdx
2023-07-25 14:30:58 +02:00
Ralf Jung
a2bcafa500
interpret: refactor projection code to work on a common trait, and use that for visitors
2023-07-25 14:30:58 +02:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
Oli Scherer
8ac1a67d11
Name the destructure_mir_constant query appropriately
2023-07-05 15:54:43 +00:00
Oli Scherer
46cce98134
Use options instead of errors if the errors are never needed
2023-07-05 15:54:43 +00:00
Oli Scherer
a0eb348d38
Specialize DestructuredConstant to its one user (pretty printing)
2023-07-05 15:54:43 +00:00
Oli Scherer
4dcf988360
Specialize try_destructure_mir_constant for its sole user
2023-07-05 15:54:43 +00:00
Oli Scherer
168de14ac9
Make simd_shuffle_indices use valtrees
2023-06-26 09:34:52 +00:00
Nilstrieb
70b6a74c3c
Add enum for can_access_statics boolean
...
`/*can_access_statics:*/ false` is one of the ways to do this, but not
the one I like.
2023-06-24 20:40:40 +00:00
Deadbeef
4f83717cf7
Use translatable diagnostics in rustc_const_eval
2023-06-01 14:45:18 +00:00
Oli Scherer
aa3a1862ba
Remove deref_mir_constant
2023-05-31 14:07:15 +00:00
Nicholas Nethercote
6b62f37402
Restrict From<S> for {D,Subd}iagnosticMessage.
...
Currently a `{D,Subd}iagnosticMessage` can be created from any type that
impls `Into<String>`. That includes `&str`, `String`, and `Cow<'static,
str>`, which are reasonable. It also includes `&String`, which is pretty
weird, and results in many places making unnecessary allocations for
patterns like this:
```
self.fatal(&format!(...))
```
This creates a string with `format!`, takes a reference, passes the
reference to `fatal`, which does an `into()`, which clones the
reference, doing a second allocation. Two allocations for a single
string, bleh.
This commit changes the `From` impls so that you can only create a
`{D,Subd}iagnosticMessage` from `&str`, `String`, or `Cow<'static,
str>`. This requires changing all the places that currently create one
from a `&String`. Most of these are of the `&format!(...)` form
described above; each one removes an unnecessary static `&`, plus an
allocation when executed. There are also a few places where the existing
use of `&String` was more reasonable; these now just use `clone()` at
the call site.
As well as making the code nicer and more efficient, this is a step
towards possibly using `Cow<'static, str>` in
`{D,Subd}iagnosticMessage::{Str,Eager}`. That would require changing
the `From<&'a str>` impls to `From<&'static str>`, which is doable, but
I'm not yet sure if it's worthwhile.
2023-05-03 08:44:39 +10:00
Oli Scherer
38b7cdf393
Use target instead of machine for mir interpreter integer handling.
...
The naming of `machine` only makes sense from a mir interpreter internals perspective, but outside users talk about the `target` platform
2023-02-15 08:56:18 +00:00
Oli Scherer
936bf29d4c
s/eval_usize/eval_target_usize/ for clarity
2023-02-14 08:51:19 +00:00
Ralf Jung
1115ec601a
cleanup and dedupe CTFE and Miri error reporting
2022-11-16 10:13:29 +01:00
lcnr
c54c5a3c77
DestructuredConst split mir and ty
2022-09-19 17:00:38 +02:00
lcnr
526856768d
ctfe, const_to_op only for mir constants
2022-09-19 16:17:33 +02:00
nidnogg
066796cece
Addressing tidy check fail
2022-08-22 12:32:42 -03:00
nidnogg
649749c7b0
Addressing last comment on PR review
2022-08-22 12:14:49 -03:00
nidnogg
4c82845b3a
Fixed failing tests (missing labels), added automatic error code in create_feature_err() builder
2022-08-21 23:22:55 -03:00
nidnogg
6af8e46a9a
Finished const_eval module migration, moving onto sibling folders
2022-08-21 23:22:50 -03:00
Ralf Jung
a10d8e4581
rename get_global_alloc to try_get_global_alloc
2022-07-20 17:09:22 -04:00
Ralf Jung
874a130ca0
get rid of MemPlaceMeta::Poison
...
MPlaceTy::dangling still exists, but now it is only called in places that
actually conceptually allocate something new, so that's fine.
2022-07-13 10:22:59 -04:00
Dominik Stolz
cd88bb332c
Improve pretty printing of valtrees for references
2022-06-28 22:38:32 +02:00
b-naber
15c1c06522
rebase
2022-06-14 17:57:51 +02:00
b-naber
dbef6e4507
address review
2022-06-14 16:08:18 +02:00