Gary Guo
bf6b84b10a
Fix new usage of old api
2023-04-06 09:34:16 +01:00
Scott McMurray
5bbaeadc01
Move mir::Field
→ abi::FieldIdx
...
The first PR for https://github.com/rust-lang/compiler-team/issues/606
This is just the move-and-rename, because it's plenty big-and-bitrotty already. Future PRs will start using `FieldIdx` more broadly, and concomitantly removing `FieldIdx::new`s.
2023-03-28 22:22:37 -07:00
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
Matthias Krüger
a423fa7b46
Rollup merge of #108208 - cjgillot:flood-enum, r=oli-obk
...
Correctly handle aggregates in DataflowConstProp
The previous implementation from https://github.com/rust-lang/rust/pull/107411 flooded target of an aggregate assignment with `Bottom`, corresponding to the `deinit` that the interpreter does.
As a consequence, when assigning `target = Enum::Variant#i(...)` all the `(target as Variant#j)` were at `Bottom` while they should have been `Top`.
This PR replaces that flooding with `Top`.
Aside, it corrects a second bug where the wrong place would be used to assign to enum variant fields, resulting to nothing happening.
Fixes https://github.com/rust-lang/rust/issues/108166
2023-02-23 06:18:06 +01:00
Camille GILLOT
e34caaf42d
Remove overflow checks from ConstProp.
2023-02-18 21:35:02 +00:00
Camille GILLOT
efb468866e
Use the correct place for enum variants.
2023-02-18 10:11:53 +00:00
Camille GILLOT
7213eaa1c0
Flood aggregate assignments with Top
.
2023-02-18 09:57:13 +00:00
Camille GILLOT
09797a463c
Typo.
2023-02-13 17:01:03 +00:00
Camille GILLOT
df889c9821
Rename assign_idx methods.
2023-02-06 22:05:05 +00:00
Camille GILLOT
c48756cdbf
Limit creation of tracked place directly.
2023-02-06 21:55:05 +00:00
Camille GILLOT
9a6c04f5d0
Handle discriminants in dataflow-const-prop.
2023-02-06 21:51:47 +00:00
Camille GILLOT
b62a9da0c8
Handle aggregates in DataflowConstProp.
2023-02-02 23:09:51 +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
Jannis Christopher Köhl
ea23585c91
Disable limits if mir-opt-level >= 4
2022-11-12 20:14:34 +01:00
Jannis Christopher Köhl
d66a00a7b1
Expand upon comment regarding self-assignment
2022-11-12 20:05:52 +01:00
Jannis Christopher Köhl
74d53ab912
Require -Zmir-opt-level >= 3 for now
2022-11-12 15:24:23 +01:00
Jannis Christopher Köhl
b3f648958d
Add comment for guessed constants
2022-11-12 14:07:54 +01:00
Jannis Christopher Köhl
8ecb276735
Simplify creation of map
2022-11-10 19:12:10 +01:00
Jannis Christopher Köhl
9766ee0b20
Fix struct field tracking and add tests for it
2022-11-09 18:21:42 +01:00
Jannis Christopher Köhl
bfbca6c75c
Completely remove tracking of references for now
2022-11-09 18:03:30 +01:00
Jannis Christopher Köhl
72196ee666
Limit number of basic blocks and tracked places to 100 for now
2022-11-07 10:35:26 +01:00
Jannis Christopher Köhl
b478fcf270
Use new cast methods
2022-11-07 10:35:26 +01:00
Jannis Christopher Köhl
630e17d3e4
Limit number of tracked places, and some other perf improvements
2022-11-07 10:35:26 +01:00
Jannis Christopher Köhl
1f82a9f89e
Move HasTop and HasBottom into lattice.rs
2022-11-07 10:35:25 +01:00
Jannis Christopher Köhl
f29533b4e0
Small documentation changes
2022-11-07 10:35:25 +01:00
Jannis Christopher Köhl
efc7ca8c7d
Use ParamEnv consistently
2022-11-07 10:35:25 +01:00
Jannis Christopher Köhl
d86acdd72a
Prevent propagation of overflow if overflow occured
2022-11-07 10:35:24 +01:00
Jannis Christopher Köhl
062053ba79
Fix unimplemented binary_ptr_op
2022-11-07 10:35:24 +01:00
Jannis Christopher Köhl
274a49132b
Improve documentation, plus some small changes
2022-11-07 10:35:23 +01:00
Jannis Christopher Köhl
931d99f61f
Make overflow handling more precise
2022-11-07 10:35:23 +01:00
Jannis Christopher Köhl
be9013f02b
Make overflow flag propagation conditional
2022-11-07 10:35:23 +01:00
Jannis Christopher Köhl
890fae9c60
Fix rebased CastKind
2022-11-07 10:35:22 +01:00
Jannis Christopher Köhl
5696d06e22
Use the same is_enabled as the current const prop
2022-11-07 10:35:21 +01:00
Jannis Christopher Köhl
111324e17c
Prevent registration inside references if target is !Freeze
2022-11-07 10:35:20 +01:00
Jannis Christopher Köhl
7ab1ba95de
Remove Unknown
state in favor of Value(Top)
2022-11-07 10:35:20 +01:00
Jannis Christopher Köhl
bc82c13e97
Track Scalar instead of ScalarInt for const prop
2022-11-07 10:35:16 +01:00
Jannis Christopher Köhl
fe84bbf844
Add tracking of unreachability
2022-11-07 10:35:13 +01:00
Jannis Christopher Köhl
16dedba1c8
Ignore terminators explicitly
2022-11-07 10:35:13 +01:00
Jannis Christopher Köhl
47a00d5337
Flood with bottom instead of top for unreachable branches
2022-11-07 10:35:12 +01:00
Jannis Christopher Köhl
ad99d2e15d
Move handling of references and simplify flooding
2022-11-07 10:35:11 +01:00
Jannis Christopher Köhl
4f9c30fb67
Add initial version of value analysis and dataflow constant propagation
2022-11-07 10:35:08 +01:00