lcnr
cfd0623411
unique borrows are mutating uses
2023-05-29 17:15:48 +02:00
Camille GILLOT
6f271dc49c
Cache dominators.
2023-05-17 09:36:12 +00:00
Camille GILLOT
9325a254f0
Make PlaceMention a non-mutating use.
2023-04-29 16:14:33 +00:00
Maybe Waffle
e496fbec92
Split {Idx, IndexVec, IndexSlice} into their own modules
2023-04-24 13:53:35 +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
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
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
Tomasz Miąsko
e489971902
Fix def-use dominance check
...
A definition does not dominate a use in the same statement. For example
in MIR generated for compound assignment x += a (when overflow checks
are disabled).
2023-01-27 00:54:31 +01:00
Tomasz Miąsko
836ef6162d
Add comment to cleanup_kinds
...
based on the original commit message 1ae7ae0c1c
2023-01-10 09:53:18 +01:00
Tomasz Miąsko
b48870b451
Replace Body::basic_blocks() with field access
2022-08-26 14:27:08 +02:00
Tomasz Miąsko
17adfeb2b4
Move dominators from Body to BasicBlocks
2022-07-07 08:11:49 +02:00
lcnr
cf9c0a5935
cleanup mir visitor for rustc::pass_by_value
2022-07-01 16:21:21 +02:00
SparrowLii
38bf1158bd
Change Successors to impl Iterator<Item = BasicBlock>
2022-05-17 08:41:01 +08:00
Tomasz Miąsko
fa41852c7a
Use reverse postorder in non_ssa_locals
...
The reverse postorder, unlike preorder, is now cached inside the MIR
body. Code generation uses reverse postorder anyway, so it might be
a small perf improvement to use it here as well.
2022-05-01 14:58:29 +02:00
Jakob Degen
48b01a0d0e
Add new MutatatingUseContexts for deinit and SetDiscriminant
2022-04-11 09:26:26 -04:00
Tomasz Miąsko
000b36c505
Remove deprecated LLVM-style inline assembly
2022-01-12 18:51:31 +01:00
LegionMammal978
eaf39cbd9e
Remove in_band_lifetimes from rustc_codegen_ssa
...
See #91867 for more information.
2021-12-15 00:41:41 -05:00
cynecx
91021de1f6
LLVM codgen support for unwinding inline assembly
2021-12-03 23:51:49 +01:00
Amanieu d'Antras
940b2eabad
Add initial AST and MIR support for unwinding from inline assembly
2021-12-03 23:51:46 +01:00
Eduard-Mihai Burtescu
4ce933f13f
rustc_target: move LayoutOf to ty::layout.
2021-09-02 01:17:14 +03:00
Tomasz Miąsko
40c9aaee13
Do not emit alloca for ZST locals with multiple assignments
...
When rebuilding the standard library with `-Zbuild-std` this reduces the
number of locals that require an allocation from 62315 to 61767.
2021-06-10 14:53:06 +02:00
Tomasz Miąsko
4237a05233
Use preorder traversal when checking for SSA locals
...
When rebuilding the standard library, this change reduces the number of
locals that require an alloca from 62452 to 62348.
2021-06-07 05:33:49 +02:00
Guillaume Gomez
a3c76f6d98
Rollup merge of #85965 - tmiasko:a, r=nagisa
...
Remove dead code from `LocalAnalyzer`
2021-06-07 01:06:51 +02:00
Tomasz Miąsko
624c693508
Remove check for projections in a branch without any
...
The else branch is taken when projection slice is empty so everything
except for the call to the `visit_local` is a dead code.
2021-06-03 16:29:38 +02:00
Tomasz Miąsko
59b6583287
Remove unused support for VarDebugInfo
...
This code has been dead since changes in 68961.
2021-06-03 16:29:21 +02:00
Tomasz Miąsko
76695c41da
Remove special handling of box_free from LocalAnalyzer
...
The special casing of `box_free` predates the use of dominators in
analyzer. It is no longer necessary now that analyzer verifies that
the first assignment dominates all uses.
2021-05-31 00:00:00 +00:00
bors
e655fb6221
Auto merge of #82936 - oli-obk:valtree, r=RalfJung,lcnr,matthewjasper
...
Implement (but don't use) valtree and refactor in preparation of use
This PR does not cause any functional change. It refactors various things that are needed to make valtrees possible. This refactoring got big enough that I decided I'd want it reviewed as a PR instead of trying to make one huge PR with all the changes.
cc `@rust-lang/wg-const-eval` on the following commits:
* 2027184 implement valtree
* eeecea9 fallible Scalar -> ScalarInt
* 042f663 ScalarInt convenience methods
cc `@eddyb` on ef04a6d
cc `@rust-lang/wg-mir-opt` for cf1700c (`mir::Constant` can now represent either a `ConstValue` or a `ty::Const`, and it is totally possible to have two different representations for the same value)
2021-03-16 22:42:56 +00:00
Simon Vandel Sillesen
35566bfd7d
Do not emit alloca for ZST local even if it is uninitialized
2021-03-13 18:01:14 -05:00
Oli Scherer
914df2a493
Add ty helper function for mir constants
...
This is in preparation of the `literal` field becoming an enum that distinguishes between type level constants and runtime constants
2021-03-12 12:33:46 +00:00
Henry Boisdequin
5ec4b060a7
make visit_projection take a PlaceRef
2021-02-16 14:20:36 +05:30
Ralf Jung
1b09dc2596
PlaceRef::ty: use method call syntax
2021-01-16 11:38:14 +01:00
Ralf Jung
afa7408041
use PlaceRef more consistently instead of loosely coupled local+projection
2021-01-03 14:14:55 +01:00
Matthias Krüger
d12a358673
use matches!() macro in more places
2020-12-24 13:35:12 +01:00
Bastian Kauschke
2bf93bd852
compiler: fold by value
2020-11-16 22:34:57 +01:00
LeSeulArtichaut
3e14b684dd
Change ty.kind to a method
2020-09-04 17:47:51 +02:00
mark
9e5f7d5631
mv compiler to compiler/
2020-08-30 18:45:07 +03:00