Ben Kimock
5a93a59fd5
Distinguish between library and lang UB in assert_unsafe_precondition
2024-03-08 18:53:58 -05:00
Oli Scherer
fc9d1a8133
Split a bool argument into two named functions
2024-02-15 10:25:18 +00:00
Oli Scherer
93bc34073e
Rollup merge of #121039 - cjgillot:gvn-adjust, r=compiler-errors
...
Correctly compute adjustment casts in GVN
Fixes https://github.com/rust-lang/rust/issues/120925
r? `@oli-obk`
2024-02-14 11:53:41 +01:00
Camille GILLOT
a97e4afb67
Fix handling of adjustment casts.
2024-02-13 17:22:56 +00:00
Shoyu Vanilla
3856df059e
Dejargnonize subst
2024-02-12 15:46:35 +09:00
Camille GILLOT
d50f26e409
Const-prop pointers.
2024-02-09 21:06:23 +00:00
Camille GILLOT
5a6f14c4f4
Split gvn wide ptr tests.
2024-02-09 21:01:57 +00:00
Camille GILLOT
304b4ad8b9
Compute unsizing casts in GVN.
2024-02-09 21:01:57 +00:00
Camille GILLOT
1f544ca0cc
Fold consecutive PtrToPtr casts.
2024-02-09 21:01:56 +00:00
Ben Kimock
8836ac5758
Add a new debug_assertions instrinsic (compiler)
...
And in clippy
2024-02-08 11:49:08 -05:00
Matthias Krüger
65aa9eae73
Rollup merge of #120688 - cjgillot:gvn-partial-move, r=oli-obk
...
GVN: also turn moves into copies with projections
Fixes https://github.com/rust-lang/rust/issues/120613
2024-02-08 09:06:34 +01:00
Michael Goulet
c567eddec2
Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs
2024-02-06 02:22:58 +00:00
Camille GILLOT
6fbd761644
Also turn moves into copies even if through projections.
2024-02-05 23:31:54 +00:00
Camille GILLOT
0cc2102c4a
Expand match over binops.
2024-01-16 22:34:04 +00:00
Camille GILLOT
166fe54eba
Explain side-effects from simplify_operand.
2024-01-16 22:34:04 +00:00
Camille GILLOT
22ed51e136
Do not read a scalar on a non-scalar layout.
2024-01-16 22:32:48 +00:00
Camille GILLOT
3c48243b6f
Simplify Len.
2024-01-16 22:20:54 +00:00
Camille GILLOT
5fc23ad8e6
Simplify unary operations.
2024-01-16 22:20:54 +00:00
Camille GILLOT
666030c51b
Simplify binary ops.
2024-01-16 22:20:53 +00:00
Camille GILLOT
7e39100586
Avoid recording no-op replacements.
2024-01-07 13:54:05 +00:00
Camille GILLOT
4ee01faaf0
Do not re-simplify SSA locals.
2024-01-07 13:54:05 +00:00
Camille GILLOT
e26c9a42c6
Cache feature unsized locals + use smallvec.
2024-01-07 13:54:05 +00:00
Camille GILLOT
05c4eef95e
Make rev_locals a vec.
2024-01-07 13:54:05 +00:00
bors
8d76d07666
Auto merge of #116012 - cjgillot:gvn-const, r=oli-obk
...
Implement constant propagation on top of MIR SSA analysis
This implements the idea I proposed in https://github.com/rust-lang/rust/pull/110719#issuecomment-1718324700
Based on https://github.com/rust-lang/rust/pull/109597
The value numbering "GVN" pass formulates each rvalue that appears in MIR with an abstract form (the `Value` enum), and assigns an integer `VnIndex` to each. This abstract form can be used to deduplicate values, reusing an earlier local that holds the same value instead of recomputing. This part is proposed in #109597 .
From this abstract representation, we can perform more involved simplifications, for example in https://github.com/rust-lang/rust/pull/111344 .
With the abstract representation `Value`, we can also attempt to evaluate each to a constant using the interpreter. This builds a `VnIndex -> OpTy` map. From this map, we can opportunistically replace an operand or a rvalue with a constant if their value has an associated `OpTy`.
The most relevant commit is [Evaluated computed values to constants.](2767c4912e )"
r? `@oli-obk`
2023-12-30 03:45:58 +00:00
Michael Goulet
fcb42b42d6
Remove movability from TyKind::Coroutine
2023-12-28 16:35:01 +00:00
Camille GILLOT
a03c972816
Enable GVN by default.
2023-12-24 20:08:57 +00:00
Camille GILLOT
8022057ebb
Avoid overflow in GVN constant indexing.
2023-12-17 19:50:38 +00:00
surechen
40ae34194c
remove redundant imports
...
detects redundant imports that can be eliminated.
for #117772 :
In order to facilitate review and modification, split the checking code and
removing redundant imports code into two PR.
2023-12-10 10:56:22 +08: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
Michael Goulet
4506681e2f
Begin nightly-ifying rustc_type_ir
2023-11-18 00:20:00 +00:00
Mark Rousskov
917f6540ed
Re-format code with new rustfmt
2023-11-15 21:45:48 -05:00
George Bateman
e742f809f6
Update based on wesleywiser review
2023-10-31 23:41:40 +00:00
Camille Gillot
24be43356e
Apply suggestions from code review
...
Co-authored-by: Ralf Jung <post@ralfj.de >
2023-10-27 20:51:25 +02:00
Camille GILLOT
856161886a
Directly check provenance from the AllocId.
2023-10-25 17:59:30 +00:00
Camille GILLOT
72f0e0e795
Rename has_provance and tweaks comments.
2023-10-25 17:59:30 +00:00
Camille GILLOT
d80eb3a498
Verify that the alloc_id is Memory.
2023-10-25 17:59:30 +00:00
Camille GILLOT
c4cc9ca060
Do not merge fn pointer casts.
2023-10-25 06:47:04 +00:00
Camille GILLOT
5e78b9cdb3
Disambiguate non-deterministic constants.
2023-10-25 06:46:48 +00:00
Camille GILLOT
f08dc9be17
Take an AllocId in intern_const_alloc_for_constprop.
2023-10-25 06:46:48 +00:00
Camille GILLOT
e3538d11f1
Do not require absence of metadata.
2023-10-25 06:46:48 +00:00
Camille GILLOT
59235a7907
Fortify transmute check.
2023-10-25 06:46:48 +00:00
Camille GILLOT
fbf0a0c5ff
Explain why we check variant equality.
2023-10-25 06:46:48 +00:00
Camille GILLOT
ff6812cd20
Move provenance checks out of interning method.
2023-10-25 06:46:48 +00:00
Camille GILLOT
ebc87bf567
Directly intern values instead of copying them.
2023-10-25 06:46:48 +00:00
Camille GILLOT
8162dc2433
Do not intern GVN temps.
2023-10-25 06:46:48 +00:00
Camille GILLOT
dbf9ea30dd
Transform large arrays into Repeat expressions when possible.
2023-10-25 06:46:48 +00:00
Camille GILLOT
80a5e8522d
Extract simplify_aggregate.
2023-10-25 06:46:47 +00:00
Camille GILLOT
23d4857080
Do not compute actual aggregate type.
2023-10-25 06:46:47 +00:00
Camille GILLOT
f110f22060
Simplify repeat expressions.
2023-10-25 06:46:47 +00:00
Camille GILLOT
48d2157a89
Simplify aggregate projections.
2023-10-25 06:46:47 +00:00