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