Jubilee
f6ca4258d2
Rollup merge of #122249 - RalfJung:machine-read-hook, r=oli-obk
...
interpret: do not call machine read hooks during validation
Fixes https://github.com/rust-lang/miri/issues/3347
r? ``@oli-obk``
2024-03-11 09:29:36 -07:00
Ralf Jung
bf47df8b0b
interpret: do not call machine read hooks during validation
2024-03-09 20:00:24 +01:00
Ralf Jung
e632e3f9a5
miri: do not apply aliasing restrictions to Box with custom allocator
2024-03-09 13:08:55 +01:00
Ralf Jung
3cc8c8d44b
allow statics pointing to mutable statics
2024-02-29 09:34:15 +01:00
Guillaume Gomez
0c92146034
Rollup merge of #121179 - RalfJung:zst-mutable-refs, r=oli-obk
...
allow mutable references in const values when they point to no memory
Fixes https://github.com/rust-lang/rust/issues/120450
The second commit is just some drive-by test suite cleanup.
r? `@oli-obk`
2024-02-16 17:08:13 +01:00
Ralf Jung
0702701297
allow mutable references in const values when they point to no memory
2024-02-16 10:09:12 +01:00
bors
1be468815c
Auto merge of #120486 - reitermarkus:use-generic-nonzero, r=dtolnay
...
Use generic `NonZero` internally.
Tracking issue: https://github.com/rust-lang/rust/issues/120257
2024-02-16 07:46:31 +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
Markus Reiter
746a58d435
Use generic NonZero
internally.
2024-02-15 08:09:42 +01:00
Matthias Krüger
15896bdd18
Rollup merge of #120950 - compiler-errors:miri-async-closurs, r=RalfJung,oli-obk
...
Fix async closures in CTFE
First commit renames `is_coroutine_or_closure` into `is_closure_like`, because `is_coroutine_or_closure_or_coroutine_closure` seems confusing and long.
Second commit fixes some forgotten cases where we want to handle `TyKind::CoroutineClosure` the same as closures and coroutines.
The test exercises the change to `ValidityVisitor::aggregate_field_path_elem` which is the source of #120946 , but not the change to `UsedParamsNeedSubstVisitor`, though I feel like it's not that big of a deal. Let me know if you'd like for me to look into constructing a test for the latter, though I have no idea what it'd look like (we can't assert against `TooGeneric` anywhere?).
Fixes #120946
r? oli-obk cc ``@RalfJung``
2024-02-12 23:18:53 +01:00
Ralf Jung
5fa69deb00
fix cycle error when a static and a promoted are mutually recursive
...
This also now allows promoteds everywhere to point to 'extern static', because why not?
We still check that constants cannot transitively reach 'extern static' through references.
(We allow it through raw pointers.)
2024-02-12 09:48:14 +01:00
Michael Goulet
87816378ab
Fix async closures in CTFE
2024-02-11 22:09:52 +00:00
Ralf Jung
77f8c3caea
detect consts that reference extern statics
2024-02-10 16:13:48 +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
Matthias Krüger
6908d3ec9e
Rollup merge of #120683 - RalfJung:symbolic-alignment-ice, r=oli-obk
...
miri: fix ICE with symbolic alignment check on extern static
Fixes https://github.com/rust-lang/miri/issues/3288 . Also fixes [this example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38ee338ff10726be72bdd6efa3386763 ).
This could almost be a Miri PR, except for that typo fix in the validator. I started this as a rustc patch since I thought I need rustc changes, and now it'd be too annoying to turn this into a Miri PR...
r? `@oli-obk`
2024-02-06 19:40:10 +01:00
Ralf Jung
25635b9a96
miri: fix ICE with symbolic alignment check on extern static
2024-02-06 10:17:42 +01:00
Michael Goulet
c567eddec2
Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs
2024-02-06 02:22:58 +00:00
Ralf Jung
73ce868c7e
more clear code
...
Co-authored-by: Oli Scherer <github35764891676564198441@oli-obk.de>
2024-01-22 09:28:00 +01:00
Ralf Jung
2f1a8e2d7a
const-eval interner: from-scratch rewrite using mutability information from provenance rather than types
2024-01-22 09:28:00 +01:00
Michael Goulet
fcb42b42d6
Remove movability from TyKind::Coroutine
2023-12-28 16:35:01 +00:00
zetanumbers
24f009c5e5
Move some methods from tcx.hir()
to tcx
...
Renamings:
- find -> opt_hir_node
- get -> hir_node
- find_by_def_id -> opt_hir_node_by_def_id
- get_by_def_id -> hir_node_by_def_id
Fix rebase changes using removed methods
Use `tcx.hir_node_by_def_id()` whenever possible in compiler
Fix clippy errors
Fix compiler
Apply suggestions from code review
Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Add FIXME for `tcx.hir()` returned type about its removal
Simplify with with `tcx.hir_node_by_def_id`
2023-12-12 06:40:29 -08:00
Nilstrieb
21a870515b
Fix clippy::needless_borrow
in the compiler
...
`x clippy compiler -Aclippy::all -Wclippy::needless_borrow --fix`.
Then I had to remove a few unnecessary parens and muts that were exposed
now.
2023-11-21 20:13:40 +01:00
Oli Scherer
5784e9e83e
Pull mplace validation logic out into an interpreter method
2023-10-23 08:35:26 +00:00
Oli Scherer
e96ce20b34
s/generator/coroutine/
2023-10-20 21:14:01 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +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
f3f9b795bd
place evaluation: require the original pointer to be aligned if an access happens
2023-10-15 18:13:31 +02:00
Ralf Jung
b1ebf002c3
don't UB on dangling ptr deref, instead check inbounds on projections
2023-10-15 18:12:46 +02:00
Camille GILLOT
44ac8dcc71
Remove GeneratorWitness and rename GeneratorWitnessMIR.
2023-09-23 13:47:30 +00:00
Ralf Jung
fa5f13775a
interpret: make MemPlace, Place, Operand types private to the interpreter
2023-09-04 17:53:38 +02:00
Ralf Jung
beeb2b13cc
miri/diagnostics: don't forget to print_backtrace when ICEing on unexpected errors
...
then also use the new helper in a few other places
2023-08-27 15:42:25 +02:00
Ralf Jung
7767cbb3b0
const validation: point at where we found a pointer but expected an integer
2023-08-02 18:51:50 +02:00
Ralf Jung
7d5886504c
rename deref_operand → deref_pointer and some Miri helper functions
2023-08-01 13:40:29 +02:00
Matthias Krüger
fa21a8c6f8
Rollup merge of #114075 - matthiaskrgr:fmt_args_rustc_3, r=wesleywiser
...
inline format!() args from rustc_codegen_llvm to the end (4)
r? `@WaffleLapkin`
2023-07-27 06:04: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
Ralf Jung
da3f0d0eb7
make MPlaceTy non-Copy
2023-07-25 22:35:07 +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
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
76c49aead6
support non-null pointer niches in CTFE
2023-07-21 03:31:45 +02:00
Deadbeef
4f83717cf7
Use translatable diagnostics in rustc_const_eval
2023-06-01 14:45:18 +00:00
Tomasz Miąsko
bc41973e35
Use trimmed paths in constantant validation errors
...
The constant validation errors are user facing and should always be
emitted to the user - use trimmed path when constructing them.
2023-04-27 00:33:52 +02:00
Josh Soref
e09d0d2a29
Spelling - compiler
...
* account
* achieved
* advising
* always
* ambiguous
* analysis
* annotations
* appropriate
* build
* candidates
* cascading
* category
* character
* clarification
* compound
* conceptually
* constituent
* consts
* convenience
* corresponds
* debruijn
* debug
* debugable
* debuggable
* deterministic
* discriminant
* display
* documentation
* doesn't
* ellipsis
* erroneous
* evaluability
* evaluate
* evaluation
* explicitly
* fallible
* fulfill
* getting
* has
* highlighting
* illustrative
* imported
* incompatible
* infringing
* initialized
* into
* intrinsic
* introduced
* javascript
* liveness
* metadata
* monomorphization
* nonexistent
* nontrivial
* obligation
* obligations
* offset
* opaque
* opportunities
* opt-in
* outlive
* overlapping
* paragraph
* parentheses
* poisson
* precisely
* predecessors
* predicates
* preexisting
* propagated
* really
* reentrant
* referent
* responsibility
* rustonomicon
* shortcircuit
* simplifiable
* simplifications
* specify
* stabilized
* structurally
* suggestibility
* translatable
* transmuting
* two
* unclosed
* uninhabited
* visibility
* volatile
* workaround
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-17 16:09:18 -04:00
Scott McMurray
4abb455529
Update ty::VariantDef
to use IndexVec<FieldIdx, FieldDef>
...
And while doing the updates for that, also uses `FieldIdx` in `ProjectionKind::Field` and `TypeckResults::field_indices`.
There's more places that could use it (like `rustc_const_eval` and `LayoutS`), but I tried to keep this PR from exploding to *even more* places.
Part 2/? of https://github.com/rust-lang/compiler-team/issues/606
2023-03-30 09:23:40 -07:00
Camille GILLOT
7dcc74eee5
Access upvars through a query.
2023-02-26 10:30:27 +00:00
Ralf Jung
b2f58146b9
basic dyn* support for Miri
2023-02-20 15:08:05 +01: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
Camille GILLOT
1974b6b68d
Introduce GeneratorWitnessMIR.
2023-01-27 18:58:44 +00:00