Matthias Krüger
1d46614335
Rollup merge of #116650 - RalfJung:miri-intptrcast, r=oli-obk
...
add some comments and some cleanup around Miri intptrcast
`@saethlin` maybe this helps a bit?
2023-10-19 14:38:26 +02:00
bors
e7bdc5f9f8
Auto merge of #114330 - RalfJung:dagling-ptr-deref, r=oli-obk
...
don't UB on dangling ptr deref, instead check inbounds on projections
This implements https://github.com/rust-lang/reference/pull/1387 in Miri. See that PR for what the change is about.
Detecting dangling references in `let x = &...;` is now done by validity checking only, so some tests need to have validity checking enabled. There is no longer inherently a "nodangle" check in evaluating the expression `&*ptr` (aside from the aliasing model).
r? `@oli-obk`
Based on:
- https://github.com/rust-lang/reference/pull/1387
- https://github.com/rust-lang/rust/pull/115524
2023-10-16 12:40:16 +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
cbf47a17d2
avoid computing misalignment if we won't act on it
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
9c417a4ad4
interpret: clean up AllocBytes
2023-10-14 12:29:16 +02:00
bors
75a5dd05bc
Auto merge of #115524 - RalfJung:misalign, r=wesleywiser
...
const-eval: make misalignment a hard error
It's been a future-incompat error (showing up in cargo's reports) since https://github.com/rust-lang/rust/pull/104616 , Rust 1.68, released in March. That should be long enough.
The question for the lang team is simply -- should we move ahead with this, making const-eval alignment failures a hard error? (It turns out some of them accidentally already were hard errors since #104616 . But not all so this is still a breaking change. Crater found no regression.)
2023-10-14 00:57:09 +00:00
Ralf Jung
1ee055f0ec
add some comments and some cleanup around Miri intptrcast
2023-10-13 07:42:07 +02:00
Ralf Jung
acb7c21507
dont call mir.post_mono_checks in codegen
2023-09-30 07:38:08 +02:00
Ralf Jung
a993a8bf3f
const-eval: make misalignment a hard error
2023-09-26 15:32:55 +02:00
Ralf Jung
430c386821
make it more clear which functions create fresh AllocId
2023-09-14 07:27:31 +02:00
Matthias Krüger
01fdb9d148
Rollup merge of #114363 - RalfJung:interpret-not-miri, r=jackh726
...
avoid 'miri' when refering to the shared interpreter
This is basically the rustc source code version of https://github.com/rust-lang/rustc-dev-guide/pull/1471 .
2023-08-03 08:12:39 +02:00
Ralf Jung
2984670cea
avoid 'miri' when refering to the shared interpreter
2023-08-02 16:52:03 +02:00
Ralf Jung
8496292dda
properly track why we checked whether a pointer is in-bounds
...
also simplify the in-bounds checking in Miri's borrow trackers
2023-08-01 17:57:13 +02:00
Matthias Krüger
c64ef5e070
inline format!() args from rustc_codegen_llvm to the end (4)
...
r? @WaffleLapkin
2023-07-25 23:20:28 +02:00
David Tolnay
5bbf0a8306
Revert "Auto merge of #113166 - moulins:ref-niches-initial, r=oli-obk"
...
This reverts commit 557359f925 , reversing
changes made to 1e6c09a803 .
2023-07-21 22:35:57 -07:00
Moulins
39cfe70e4f
CTFE: move target_{i, u}size_{min, max) to rustc_abi::TargetDataLayout
2023-07-21 03:31:47 +02:00
Moulins
76c49aead6
support non-null pointer niches in CTFE
2023-07-21 03:31:45 +02:00
Mark Rousskov
cc907f80b9
Re-format let-else per rustfmt update
2023-07-12 21:49:27 -04:00
Deadbeef
4f83717cf7
Use translatable diagnostics in rustc_const_eval
2023-06-01 14:45:18 +00:00
Ben Kimock
606ca4da7e
Report a backtrace for memory leaks under Miri
2023-04-16 08:52:00 -04:00
Rune Tynan
936b567d2e
Minimal changes to make miri work
2023-02-20 13:50:20 -05:00
Rune Tynan
f1f40ac05c
Fix alloc_base_addr type
2023-02-20 13:47:12 -05:00
Rune Tynan
6f407d67b8
Allow non-Box allocations in preparation for aligned const allocations for miri. Credit to emarteca for the code.
2023-02-20 13:47:09 -05:00
Kyle Matsuda
8e92849cbb
changes from review
2023-02-16 17:05:59 -07:00
Kyle Matsuda
c183110cc2
remove bound_type_of query; make type_of return EarlyBinder; change type_of in metadata
2023-02-16 17:05:56 -07:00
Kyle Matsuda
d822b97a27
change usages of type_of to bound_type_of
2023-02-16 17:01:52 -07: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
Ralf Jung
2900ba15b3
miri: fix ICE when running out of address space
2023-02-07 13:26:31 +01:00
Maybe Waffle
4d75f61832
Use Mutability::{is_mut, is_not}
2023-01-30 12:26:26 +00:00
bors
56ee85274e
Auto merge of #106090 - WaffleLapkin:dereffffffffff, r=Nilstrieb
...
Remove some `ref` patterns from the compiler
Previous PR: https://github.com/rust-lang/rust/pull/105368
r? `@Nilstrieb`
2023-01-20 04:52:28 +00:00
Maybe Waffle
6a28fb42a8
Remove double spaces after dots in comments
2023-01-17 08:09:33 +00:00
Maybe Waffle
3dca58e249
rustc_const_eval: remove ref patterns (+some pattern matching imps)
2023-01-17 07:48:19 +00:00
Oli Scherer
d9d92ed7da
Move alignment failure error reporting to machine
2022-12-15 16:07:35 +00:00
Oli Scherer
d66824dbc4
Make alignment checks a future incompat lint
2022-12-15 16:07:28 +00:00
Oli Scherer
ed71e32e14
Always pass alignment and handle checking lazily
2022-12-15 15:51:43 +00:00
Ralf Jung
1115ec601a
cleanup and dedupe CTFE and Miri error reporting
2022-11-16 10:13:29 +01:00
bors
a00f8ba7fc
Auto merge of #104054 - RalfJung:byte-provenance, r=oli-obk
...
interpret: support for per-byte provenance
Also factors the provenance map into its own module.
The third commit does the same for the init mask. I can move it in a separate PR if you prefer.
Fixes https://github.com/rust-lang/miri/issues/2181
r? `@oli-obk`
2022-11-15 17:37:15 +00:00
Ralf Jung
68af46c112
assert that we are (de)seiralizing ProvenanceMap correctly
2022-11-14 18:26:40 +01:00
Ralf Jung
c78021709a
add is_sized method on Abi and Layout, and use it
2022-11-13 12:23:53 +01:00
Ralf Jung
c3a7ca1125
move InitMask to its own module
2022-11-06 14:17:10 +01:00
Ralf Jung
2cef9e3d19
interpret: support for per-byte provenance
2022-11-06 14:17:10 +01:00
Rageking8
7122abaddf
more dupe word typos
2022-10-14 12:57:56 +08: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
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
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
9d604f301b
fix an outdated machine hook name
2022-08-26 13:20:56 -04:00