Maybe Waffle
e496fbec92
Split {Idx, IndexVec, IndexSlice}
into their own modules
2023-04-24 13:53:35 +00: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
Camille GILLOT
22bf5fd848
Remove useless methods in visit.
2023-04-15 07:46:46 +00:00
Camille GILLOT
8a515aab76
Only enable ConstProp at mir-opt-level >= 2.
2023-04-15 07:46:46 +00:00
bors
f8ed97ecc1
Auto merge of #110031 - compiler-errors:generic-elaboration, r=b-naber
...
Make elaboration generic over input
Combines all the `elaborate_*` family of functions into just one, which is an iterator over the same type that you pass in (e.g. elaborating `Predicate` gives `Predicate`s, elaborating `Obligation`s gives `Obligation`s, etc.)
2023-04-09 00:18:10 +00:00
Michael Goulet
758bedc104
Make elaborator generic
2023-04-06 23:30:22 +00:00
Gary Guo
e3f2edc75b
Rename Abort
terminator to Terminate
...
Unify terminology used in unwind action and terminator, and reflect
the fact that a nounwind panic is triggered instead of an immediate
abort is triggered for this terminator.
2023-04-06 09:34:16 +01:00
Gary Guo
5e6ed132fa
Add UnwindAction::Unreachable
...
This also makes eval machine's `StackPopUnwind`
redundant so that is replaced.
2023-04-06 09:34:16 +01:00
Gary Guo
daeb844e0c
Refactor unwind from Option to a new enum
2023-04-06 09:34:16 +01:00
Scott McMurray
a2ee7592d6
Use &IndexSlice
instead of &IndexVec
where possible
...
All the same reasons as for `[T]`: more general, less pointer chasing, and `&mut IndexSlice` emphasizes that it doesn't change *length*.
2023-04-02 17:35:37 -07:00
Michael Goulet
1ce4b37900
Don't elaborate non-obligations into obligations
2023-03-26 20:33:54 +00:00
Scott McMurray
64cce5fc7d
Add CastKind::Transmute
to MIR
...
Updates `interpret`, `codegen_ssa`, and `codegen_cranelift` to consume the new cast instead of the intrinsic.
Includes `CastTransmute` for custom MIR building, to be able to test the extra UB.
2023-03-22 15:15:41 -07:00
Dylan DPC
eda88a30c7
Rollup merge of #109435 - oli-obk: 🇨🇭 🥚 _copy_op, r=RalfJung
...
Detect uninhabited types early in const eval
r? `@RalfJung`
implements https://github.com/rust-lang/rust/pull/108442#discussion_r1143003840
this is a breaking change, as some UB during const eval is now detected instead of silently being ignored. Users can see this and other UB that may cause future breakage with `-Zextra-const-ub-checks` or just by running miri on their code, which sets that flag by default.
2023-03-23 00:00:35 +05:30
Oli Scherer
83dec62b26
Add a layout argument to enforce_validity
.
...
This is in preparation of checking the validity only of certain types.
2023-03-21 08:52:31 +00:00
Camille GILLOT
e5a55dc2c5
Prefer if cfg!.
2023-03-19 08:59:11 +00:00
Camille GILLOT
0e866af1f7
Only clear locals that are known to be written to.
2023-03-19 08:58:01 +00:00
bors
b05bb29008
Auto merge of #108872 - cjgillot:simp-const-prop, r=oli-obk
...
Strengthen state tracking in const-prop
Some/many of the changes are replicated between both the const-prop lint and the const-prop optimization.
Behaviour changes:
- const-prop opt does not give a span to propagated values. This was useless as that span's primary purpose is to diagnose evaluation failure in codegen.
- we remove the `OnlyPropagateInto` mode. It was only used for function arguments, which are better modeled by a write before entry.
- the tracking of assignments and discriminants make clearer that we do nothing in `NoPropagation` mode or on indirect places.
2023-03-12 23:27:52 +00:00
Camille GILLOT
8179b2e5f8
Remove useless parameter to operand_from_scalar.
2023-03-08 14:42:21 +00:00
Camille GILLOT
0d56034a25
Make comment more explicit.
2023-03-08 14:40:38 +00:00
Camille GILLOT
b55c4f8312
Separate checking rvalue from evaluation.
2023-03-08 14:40:38 +00:00
Camille GILLOT
f00be8b77b
Recurse into statement before applying its effect.
2023-03-08 14:40:38 +00:00
Camille GILLOT
d97a7ce69b
Refactor tracking of writes.
2023-03-08 14:40:38 +00:00
Camille GILLOT
9928d0e566
Remove OnlyPropagateInto.
2023-03-08 14:40:37 +00:00
Camille GILLOT
24dbf9c112
Only assign value in remove_const.
2023-03-08 14:40:37 +00:00
Camille GILLOT
0e64ce7c5e
Do not track span in ConstProp.
2023-03-08 14:40:37 +00:00
Camille GILLOT
2247cd6643
Simplify visit_statement.
2023-03-08 14:40:37 +00:00
Giacomo Pasini
c5d4e4d907
Remove DropAndReplace terminator
...
PR 107844 made DropAndReplace unused, let's remove it completely
from the codebase.
2023-03-07 14:25:22 +01:00
Alan Egerton
695072daa6
Remove type-traversal trait aliases
2023-02-22 17:04:58 +00:00
Camille GILLOT
f02d6c45e1
Remove use_ecx.
2023-02-20 18:25:37 +00:00
Camille GILLOT
d0934f14c7
Merge if-let and match.
2023-02-20 18:25:37 +00:00
Camille GILLOT
4a75995fbd
Move state fixup into a different method.
2023-02-20 18:25:37 +00:00
Camille GILLOT
e34caaf42d
Remove overflow checks from ConstProp.
2023-02-18 21:35:02 +00: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
Maybe Waffle
f1d273cbfb
Replace some _ == _ || _ == _
s with matches!(_, _ | _)
s
2023-01-30 12:26:26 +00:00
Maybe Waffle
4d75f61832
Use Mutability::{is_mut, is_not}
2023-01-30 12:26:26 +00:00
Ben Kimock
82f0973dd5
Always take advantage of arithmetic identities
2023-01-01 23:12:29 -05:00
Matthias Krüger
0aa4cde747
avoid .into() conversion to identical types
2022-12-18 16:20:32 +01: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
Ralf Jung
09a887cebf
review feedback
2022-11-18 14:24:48 +01:00
Ralf Jung
4101889786
interpret: use Either over Result when it is not representing an error condition
2022-11-18 10:18:32 +01: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
Maybe Waffle
a17ccfa621
Accept TyCtxt
instead of TyCtxtAt
in Ty::is_*
functions
...
Functions in answer:
- `Ty::is_freeze`
- `Ty::is_sized`
- `Ty::is_unpin`
- `Ty::is_copy_modulo_regions`
2022-10-27 15:06:08 +04:00
Dylan DPC
7d7f55599a
Rollup merge of #102045 - RalfJung:const-prop-regression-fix, r=oli-obk
...
fix ConstProp handling of written_only_inside_own_block_locals
Fixes a regression introduced by https://github.com/rust-lang/rust/pull/100239 , which adds an early return and thus skips some code in `visit_terminator` that must be run for soundness.
Fixes https://github.com/rust-lang/rust/issues/101973
2022-09-21 19:01:08 +05:30
Michael Howell
b149c48186
Rollup merge of #102021 - lcnr:tyConst-fun, r=b-naber,BoxyUwU
...
some post-valtree cleanup
r? project-const-generics cc ```@b-naber```
2022-09-20 10:13:01 -07:00
Ralf Jung
7373788c37
fix ConstProp handling of written_only_inside_own_block_locals
2022-09-20 12:49:32 +02:00