Maybe Waffle
6a28fb42a8
Remove double spaces after dots in comments
2023-01-17 08:09:33 +00:00
Jakob Degen
0229281d03
Don't run Drop terminators on types that do not have drop glue in const eval
2022-12-21 16:15:56 -08:00
Jakob Degen
9fb8da8f8f
Remove unneeded field from SwitchTargets
2022-12-09 04:53:10 -08:00
Ralf Jung
bf14e3196b
interpret: remove an incorrect assertion
2022-10-20 19:06:34 +02:00
Ben Kimock
563a75b6e3
Add a Machine hook for inline assembly
2022-09-03 18:05:02 -04:00
Dezhi Wu
b1430fb7ca
Fix a bunch of typo
...
This PR will fix some typos detected by [typos].
I only picked the ones I was sure were spelling errors to fix, mostly in
the comments.
[typos]: https://github.com/crate-ci/typos
2022-08-31 18:24:55 +08:00
bors
332cc8fb75
Auto merge of #100999 - nnethercote:shrink-FnAbi, r=bjorn3
...
Shrink `FnAbi`
Because they can take up a lot of memory in debug and release builds.
r? `@bjorn3`
2022-08-27 14:00:53 +00:00
Ralf Jung
30fa931f92
make read_immediate error immediately on uninit, so ImmTy can carry initialized Scalar
2022-08-26 13:20:57 -04:00
Nicholas Nethercote
f974617bda
Move ArgAbi::pad_i32 into PassMode::Cast.
...
Because it's only needed for that variant. This shrinks the types and
clarifies the logic.
2022-08-26 11:12:36 +10:00
Nicholas Nethercote
b853e8a619
Turn ArgAbi::pad into a bool.
...
Because it's only ever set to `None` or `Some(Reg::i32())`.
2022-08-26 10:53:41 +10:00
Nicholas Nethercote
e4bf113027
Box CastTarget within PassMode.
...
Because `PassMode::Cast` is by far the largest variant, but is
relatively rare.
This requires making `PassMode` not impl `Copy`, and `Clone` is no
longer necessary. This causes lots of sigil adjusting, but nothing very
notable.
2022-08-26 09:35:28 +10:00
Ralf Jung
5798555812
interpret: only consider 1-ZST when searching for receiver
2022-07-30 21:44:34 -04:00
Yuki Okushi
2973b00ca6
Rollup merge of #99673 - RalfJung:interpret-invalid-dyn, r=oli-obk
...
don't ICE on invalid dyn calls
Due to https://github.com/rust-lang/rust/issues/50781 this is actually reachable.
Fixes https://github.com/rust-lang/miri/issues/2432
r? ``@oli-obk``
2022-07-26 07:14:49 +09:00
Ralf Jung
f80bf1013d
don't ICE on invalid dyn calls
2022-07-24 09:21:05 -04:00
Ralf Jung
4e89a7c293
now we can make scalar_to_ptr a method on Scalar
2022-07-23 10:36:57 -04:00
Ralf Jung
19e29e9a57
interpret: fix vtable check debug assertion
2022-07-22 10:37:03 -04:00
Ralf Jung
d46dfa25d4
detect bad vptrs on dyn calls
2022-07-20 19:52:10 -04:00
Ralf Jung
3dad266f40
consistently use VTable over Vtable (matching stable stdlib API RawWakerVTable)
2022-07-20 17:12:07 -04:00
Ralf Jung
fe00573324
make use of symbolic vtables in interpreter
2022-07-20 17:12:04 -04:00
Ralf Jung
0ec3269db8
interpret: rename Tag/PointerTag to Prov/Provenance
...
Let's avoid using two different terms for the same thing -- let's just call it "provenance" everywhere.
In Miri, provenance consists of an AllocId and an SbTag (Stacked Borrows tag), which made this even more confusing.
2022-07-19 15:38:32 -04:00
Ralf Jung
213a25d975
interpret: make some large types not Copy
2022-07-18 13:57:35 -04:00
Ralf Jung
e3ef4fdac9
rename MPlaceTy::dangling to fake_alloc_zst
2022-07-14 11:40:47 -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
Ralf Jung
ab225ade1e
interpret: refactor projection handling code
...
Moves our projection handling code into a common file, and avoids the use of a
general mplace-based fallback function by have more specialized implementations.
mplace_index (and the other slice-related functions) could be more efficient by
copy-pasting the body of operand_index. Or we could do some trait magic to share
the code between them. But for now this is probably fine.
2022-07-11 22:50:46 -04:00
Ralf Jung
e685530b07
deduplicate some copy_op code
2022-07-06 14:11:41 -04:00
Ralf Jung
47cb276ab8
support passing unsized fn arguments
2022-07-06 14:03:20 -04:00
Ralf Jung
a6207ec975
interpret: do not claim UB until we looked more into variadic functions
2022-06-05 13:24:24 -04:00
Ralf Jung
d7a2d9ae0e
Miri call ABI check: ensure type size+align stay the same
2022-05-25 15:08:07 +02:00
Jakob Degen
09b0936db2
Refactor call terminator to always hold a destination place
2022-05-23 17:49:04 -04:00
Oli Scherer
0a6b69106e
Add a query for checking whether a function is an intrinsic.
2022-05-16 07:07:44 +00:00
Ralf Jung
38004b72bc
interpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal
2022-04-07 16:24:48 -04:00
bors
f262ca12aa
Auto merge of #94527 - oli-obk:undef_scalars, r=nagisa,erikdesjardin
...
Let CTFE to handle partially uninitialized unions without marking the entire value as uninitialized.
follow up to #94411
To fix https://github.com/rust-lang/rust/issues/69488 and by extension fix https://github.com/rust-lang/rust/issues/94371 , we should stop treating types like `MaybeUninit<usize>` as something that the `Scalar` type in the interpreter engine can represent. So we add a new field to `abi::Primitive` that records whether the primitive is nested in a union
cc `@RalfJung`
r? `@ghost`
2022-04-05 16:46:13 +00:00
Oli Scherer
d32ce37a17
Mark scalar layout unions so that backends that do not support partially initialized scalars can special case them.
2022-04-05 13:18:21 +00:00
Ralf Jung
f0ec783bf9
interpret: remove MemoryExtra in favor of giving access to the Machine
2022-04-03 15:28:34 -04:00
Yuri Astrakhan
7e8201ae0a
Spellchecking some comments
...
This PR attempts to clean up some minor spelling mistakes in comments
2022-03-30 01:39:38 -04:00
Ralf Jung
fa5fa72fe1
Miri: implement arbitrary-self dyn receivers
2022-03-18 08:50:30 -04:00
Ralf Jung
0854781861
CTFE SwitchInt: update comment
2022-03-03 14:46:29 -05:00
est31
5cc292eb1d
rustc_const_eval: adopt let else in more places
2022-02-19 01:55:47 +01:00
Ralf Jung
a97f41fd69
don't ICE on variadic function calls
2021-12-20 22:37:14 +01:00
Ralf Jung
90d7dada69
also compare ArgAttributes
2021-12-20 22:37:14 +01:00
Ralf Jung
b5c7530fcf
compare calling convention instead of call ABI
2021-12-20 22:37:14 +01:00
Ralf Jung
11fb22d83a
CTFE eval_fn_call: use FnAbi to determine argument skipping and compatibility
2021-12-20 22:37:12 +01:00
est31
15de4cbc4b
Remove redundant [..]s
2021-12-09 00:01:29 +01:00
Matthias Krüger
0a5640b55f
use matches!() macro in more places
2021-11-06 16:13:14 +01:00
Deadbeef
5387b6542f
Add const_eval_select intrinsic
2021-10-12 05:42:23 +00:00
Andreas Liljeqvist
5b2f757dae
Make abi::Abi Copy and remove a *lot* of refs
...
fix
fix
Remove more refs and clones
fix
more
fix
2021-09-09 10:41:19 +02:00
Camille GILLOT
c5fc2609f0
Rename rustc_mir to rustc_const_eval.
2021-09-07 20:46:26 +02:00