Ralf Jung
2e172473da
interpret: make read-pointer-as-bytes *always* work in Miri
...
and show some extra information when it happens in CTFE
2022-08-27 18:37:44 -04:00
Ralf Jung
e63a625711
interpret: rename relocation → provenance
2022-08-27 14:11:19 -04: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
aff9841507
remove a now-useless machine hook
2022-08-27 08:53:04 -04:00
Ralf Jung
4173e971b8
remove an ineffective check in const_prop
2022-08-27 08:53:04 -04: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
Ralf Jung
2e52fe01cf
remove some now-unnecessary parameters from check_bytes
2022-08-26 13:20:56 -04:00
Ralf Jung
da13935ecc
remove enforce_number_init machine hook that Miri no longer needs
2022-08-26 13:20:56 -04:00
Ralf Jung
9d604f301b
fix an outdated machine hook name
2022-08-26 13:20:56 -04:00
Tomasz Miąsko
b48870b451
Replace Body::basic_blocks() with field access
2022-08-26 14:27:08 +02: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
cb4cd73664
extra sanity check against consts pointing to mutable memory
2022-08-23 08:12:37 -04:00
Dylan DPC
c4707ff8ef
Rollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkov
...
make NOP dyn casts not require anything about the vtable
As suggested [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/dyn-upcasting.20stabilization/near/292151439 ). This matches what the codegen backends already do, and what Miri did do until https://github.com/rust-lang/rust/pull/99420 when I made it super extra paranoid.
2022-08-19 12:26:41 +05:30
Matthias Krüger
bb77336c0a
Rollup merge of #99972 - RalfJung:1zst, r=lcnr
...
interpret: only consider 1-ZST when searching for receiver
`repr(transparent)` currently entirely rejects ZST with alignment larger than 1 (which is odd, arguably [this](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=02870f29396fa948c3123cb53d869ad1 ) should be accepted), so this should be safe. And if it ever isn't safe then that is very likely a bug elsewhere in the compiler.
2022-08-17 12:32:48 +02:00
Ben Kimock
a5cc3a0557
Rename Machine memory hooks to suggest when they run
2022-08-15 19:54:43 -04:00
Dylan DPC
392ba5f111
Rollup merge of #100229 - RalfJung:extra-const-ub-checks, r=lcnr
...
add -Zextra-const-ub-checks to enable more UB checking in const-eval
Cc https://github.com/rust-lang/rust/issues/99923
r? `@oli-obk`
2022-08-12 20:39:11 +05:30
Dylan DPC
bc0f9e39f4
Rollup merge of #100391 - nnethercote:improve-size-assertions, r=lqd
...
Improve size assertions
r? `@lqd`
2022-08-11 22:47:05 +05:30
Nicholas Nethercote
574ba831d4
Avoid repeating qualifiers on static_assert_size calls.
...
Some of these don't need a `use` statement because there is already a
`#[macro_use] extern crate rustc_data_structures` item in the crate.
2022-08-10 11:51:21 +10:00
Ralf Jung
7b2a5f284e
dont rely on old macro-in-trait-impl bug
2022-08-09 08:23:16 -04:00
Ralf Jung
be6bb56ee0
add -Zextra-const-ub-checks to enable more UB checking in const-eval
2022-08-07 09:54:40 -04:00
Ralf Jung
3c8563abcf
make NOP dyn casts not require anything about the vtable
2022-08-06 18:31:59 -04:00
Ralf Jung
d5e9e94741
add method to get the mutability of an AllocId
2022-08-05 17:59:35 -04:00
Matthias Krüger
e6bb00fff5
Rollup merge of #100003 - nnethercote:improve-size-assertions, r=lqd
...
Improve size assertions.
- For any file with four or more size assertions, move them into a
separate module (as is already done for `hir.rs`).
- Add some more for AST nodes and THIR nodes.
- Put the `hir.rs` ones in alphabetical order.
r? `@lqd`
2022-08-01 16:49:33 +02:00
Nicholas Nethercote
9037ebba0c
Improve size assertions.
...
- For any file with four or more size assertions, move them into a
separate module (as is already done for `hir.rs`).
- Add some more for AST nodes and THIR nodes.
- Put the `hir.rs` ones in alphabetical order.
2022-08-01 09:15:05 +10:00
Ralf Jung
5798555812
interpret: only consider 1-ZST when searching for receiver
2022-07-30 21:44:34 -04:00
Cameron Steffen
cf2433a74f
Use LocalDefId for closures more
2022-07-30 15:59:17 -05:00
Dylan DPC
deab13c681
Rollup merge of #99692 - RalfJung:too-far, r=oli-obk
...
interpret, ptr_offset_from: refactor and test too-far-apart check
We didn't have any tests for the "too far apart" message, and indeed that check mostly relied on the in-bounds check and was otherwise probably not entirely correct... so I rewrote that check, and it is before the in-bounds check so we can test it separately.
2022-07-26 14:26:58 +05:30
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
58f2ede15f
interpret, ptr_offset_from: refactor and test too-far-apart check
2022-07-24 19:35:40 -04: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
665a7e8f56
remove some provenance-related machine hooks that Miri no longer needs
2022-07-23 10:15:37 -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
9927b3173b
detect bad vtables on an upcast
2022-07-20 17:12:08 -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
5e840c5c8c
incorporate some review feedback
2022-07-20 17:12:07 -04:00
Ralf Jung
8affef2ccb
add intrinsic to access vtable size and align
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
a10d8e4581
rename get_global_alloc to try_get_global_alloc
2022-07-20 17:09:22 -04:00
Ralf Jung
da5e4d73f1
add a Vtable kind of symbolic allocations
2022-07-20 16:57:31 -04:00
bors
a7468c60f8
Auto merge of #99472 - RalfJung:provenance, r=oli-obk
...
interpret: rename Tag/PointerTag to Prov/Provenance
We were pretty inconsistent with calling this the "tag" vs the "provenance" of the pointer; I think we should consistently call it "provenance".
r? `@oli-obk`
2022-07-20 16:56:31 +00:00
Oli Scherer
4a742a691e
Revert "Rollup merge of #98582 - oli-obk:unconstrained_opaque_type, r=estebank"
...
This reverts commit 6f8fb911ad , reversing
changes made to 7210e46dc6 .
2022-07-20 07:55:58 +00: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
bors
29c5a028b0
Auto merge of #99309 - RalfJung:no-large-copies, r=oli-obk
...
interpret: make some large types not Copy
Also remove some unused trait impls (mostly HashStable).
This didn't find any unnecessary copies that I managed to avoid, but it might still be better to require explicit clone for these types? Not sure.
r? `@oli-obk`
2022-07-19 16:33:45 +00:00
Ralf Jung
213a25d975
interpret: make some large types not Copy
2022-07-18 13:57:35 -04:00
Ralf Jung
388971b05d
interpret: remove some unused trait impls
2022-07-18 13:51:11 -04:00
Dylan DPC
a47a090d51
Rollup merge of #99378 - RalfJung:box-early-return, r=oli-obk
...
interpret/visitor: add missing early return
I forgot to add this when adding the special `Box` handling branch.
r? ```@oli-obk```
2022-07-18 21:14:48 +05:30