bors
fa9f77ff35
Auto merge of #120931 - chenyukang:yukang-cleanup-hashmap, r=michaelwoerister
...
Clean up potential_query_instability with FxIndexMap and UnordMap
From https://github.com/rust-lang/rust/pull/120485#issuecomment-1916437191
r? `@michaelwoerister`
2024-02-15 12:36:37 +00: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
yukang
3f27e4b3ea
clean up potential_query_instability with FxIndexMap and UnordMap
2024-02-14 18:36:37 +08:00
Ralf Jung
d56f3b6a5d
interpret: rename ReadExternStatic → ExternStatic
2024-02-10 16:06:02 +01:00
Ralf Jung
bdfb9172c1
interpret/memory: fix safety comment for large array memset optimization
2024-01-26 17:54:41 +01:00
Mark Rousskov
e68f3039d4
Optimize large array creation in const-eval
...
This changes repeated memcpy's to a memset for the case that we're
propagating a single byte into a region of memory.
2024-01-17 20:24:20 -05:00
Ralf Jung
c83bcbbad9
interpret/memory: explain why we check is_thread_local_static
2023-12-23 16:48:29 +01: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
Ralf Jung
bebba4f6e0
miri: support 'promising' alignment for symbolic alignment check
2023-12-03 21:51:14 +01:00
Ben Kimock
f5dae8e73c
Miri: GC the dead_alloc_map too
2023-11-22 22:40:55 -05:00
Ben Kimock
0d0a41789f
Expand Miri's BorTag GC to a Provenance GC
2023-11-19 13:29:02 -05:00
Camille GILLOT
ff6812cd20
Move provenance checks out of interning method.
2023-10-25 06:46:48 +00:00
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