lcnr
948cec0fad
move fn is_item_raw
to TypingEnv
2024-11-19 18:06:20 +01:00
Michael Goulet
c682aa162b
Reformat using the new identifier sorting from rustfmt
2024-09-22 19:11:29 -04:00
Nicholas Nethercote
8d32578fe1
Rename and reorder lots of lifetimes.
...
- Replace non-standard names like 's, 'p, 'rg, 'ck, 'parent, 'this, and
'me with vanilla 'a. These are cases where the original name isn't
really any more informative than 'a.
- Replace names like 'cx, 'mir, and 'body with vanilla 'a when the lifetime
applies to multiple fields and so the original lifetime name isn't
really accurate.
- Put 'tcx last in lifetime lists, and 'a before 'b.
2024-09-13 15:46:20 +10:00
Nicholas Nethercote
6af470e360
Reduce visibilities, and add warn(unreachable_pub)
.
...
Lots of unnecessary `pub`s in this crate. Most are downgraded to
`pub(super)`, though some don't need any visibility.
2024-09-09 08:48:09 +10:00
Nicholas Nethercote
ed5161c5ac
Remove #[macro_use] extern crate tracing
from rustc_mir_transform
.
2024-08-30 10:01:34 +10:00
Ralf Jung
35709be02d
rename AddressOf -> RawBorrow inside the compiler
2024-08-18 19:46:53 +02:00
Nicholas Nethercote
d49d4ae192
Remove extern crate rustc_middle
from rustc_mir_transform
.
2024-05-13 08:20:18 +10:00
Camille GILLOT
e12ef7984b
Pacify tidy.
2024-04-20 19:23:49 +00:00
Camille GILLOT
308cc76510
GVN borrowed locals too.
2024-04-20 19:19:06 +00:00
Arthur Carcano
ccd99b384e
Remove unused fields in some structures
...
The dead_code lint was previously eroneously missing those.
Since this lint bug has been fixed, the unused fields need
to be removed.
2024-03-12 10:59:40 +01:00
Shoyu Vanilla
3856df059e
Dejargnonize subst
2024-02-12 15:46:35 +09:00
Camille GILLOT
f83468c89b
Inline dominator check.
2023-12-31 00:37:45 +00:00
Tomasz Miąsko
6873465600
Fix def-use check for call terminators
2023-11-14 17:07:34 +01:00
lcnr
992d93f687
rename BorrowKind::Shallow
to Fake
...
also adds some comments
2023-11-08 22:55:28 +01:00
Camille GILLOT
37f080edbc
Also consider call and yield as MIR SSA.
2023-10-08 16:05:26 +00:00
Tomasz Miąsko
eaafb256f8
Replace LocationExtended with DefLocation in SsaLocals
2023-10-05 23:45:59 +02:00
Tomasz Miąsko
6c348b77fe
Remove small dominators optimization from SsaLocals
...
The optimization is now part of the general implementation.
2023-10-05 23:45:59 +02:00
Camille GILLOT
3816c15b88
Only visit reachable nodes in SsaLocals.
2023-09-28 17:08:54 +00:00
Camille GILLOT
5f9d64d72f
Embed simplification into VnState.
2023-09-24 09:09:04 +00:00
Camille GILLOT
8b848af325
Add global value numbering pass.
2023-09-24 09:09:04 +00:00
Mark Rousskov
cc907f80b9
Re-format let-else per rustfmt update
2023-07-12 21:49:27 -04:00
lcnr
46973c9c8a
add FIXME's for a later refactoring
2023-06-19 09:16:26 +02:00
lcnr
0589cd0f0a
mir opt: fix subtype handling
2023-06-19 09:06:42 +02:00
lcnr
cfd0623411
unique borrows are mutating uses
2023-05-29 17:15:48 +02:00
Camille GILLOT
ada7f1c2c4
Do not clone dominator tree for SSA analysis.
2023-05-17 12:17:33 +00:00
Camille GILLOT
6f271dc49c
Cache dominators.
2023-05-17 09:36:12 +00:00
Camille GILLOT
adfffc7e12
Simplify implementation.
2023-05-14 12:10:24 +00:00
Camille GILLOT
f40f235879
Merge return place with other locals in CopyProp.
2023-05-14 12:06:34 +00:00
Camille GILLOT
6ad0497cc0
Use visit_assign to detect SSA locals.
2023-05-10 15:26:51 +00:00
Camille GILLOT
c17e878fb8
Correct StorageLive comment.
2023-05-09 17:59:35 +00:00
Camille GILLOT
3b4e1fe104
Do not check StorageLive dominates address-taking.
2023-05-09 17:59:35 +00:00
Camille GILLOT
3268f2e61d
Only check that StorageLive dominates address-taking.
2023-05-09 17:59:35 +00:00
Camille GILLOT
3c43b61b87
Do not consider borrowed Freeze locals as SSA.
2023-05-09 17:59:35 +00:00
Camille GILLOT
3490375570
Implement SSA-based reference propagation.
2023-05-09 17:59:34 +00:00
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
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
Camille GILLOT
209eb8ae83
Do not grow assignment_order
needlessly.
2023-02-27 20:02:18 +00:00
Camille GILLOT
2a32a2b64f
Special case deref projections in SsaVisitor.
2023-02-27 20:02:18 +00:00
Matthias Krüger
089e8c03bc
Rollup merge of #107489 - compiler-errors:non_lifetime_binders, r=cjgillot
...
Implement partial support for non-lifetime binders
This implements support for non-lifetime binders. It's pretty useless currently, but I wanted to put this up so the implementation can be discussed.
Specifically, this piggybacks off of the late-bound lifetime collection code in `rustc_hir_typeck::collect::lifetimes`. This seems like a necessary step given the fact we don't resolve late-bound regions until this point, and binders are sometimes merged.
Q: I'm not sure if I should go along this route, or try to modify the earlier nameres code to compute the right bound var indices for type and const binders eagerly... If so, I'll need to rename all these queries to something more appropriate (I've done this for `resolve_lifetime::Region` -> `resolve_lifetime::ResolvedArg`)
cc rust-lang/types-team#81
r? `@ghost`
2023-02-17 00:19:34 +01:00
Michael Goulet
eff2cb7760
Rename some region-specific stuff
2023-02-16 03:39:59 +00:00
Ben Kimock
640ede7b0a
Enable CopyProp by default, tune the impl a bit
2023-02-12 13:23:53 -05:00
Camille GILLOT
263da251af
Use successor location for dominator check.
...
The assignment is complete only after the statement.
This marks self-assignments `x = x + 1` as non-sSA.
2023-01-27 18:22:45 +00:00
Camille GILLOT
d29dc057ba
Do not merge locals that have their address taken.
2023-01-27 18:22:45 +00:00
Camille GILLOT
9096d31dcc
Extract SsaLocals abstraction.
2023-01-27 18:22:45 +00:00