ivcblpℓpp^rpn::=b[i]::=∣ start b∣ loop b∣ prepare l∣ before-collapse l∣ before-ref-assignment l∣ mid l∣ after l::=∣p∣p at ℓ::=∣p∣remote(v)::=∣p^↓r∣p^↓r at ℓ∣p^↓r at FUTURE∣c↓r::=p^ ∣ rp(Integer)(MIR Local)(MIR Constant)(MIR Basic Block Index)(MIR Location)(MIR Place)(Label)(Maybe-Labelled Place)(Current Place)(Labelled Place)(PCG Place)(Maybe-Labelled Place)(Remote Place)(Lifetime Projection)(Place Projection)(Snapshot of Place Projection)(Placeholder Projection)(Constant Projection)(PCG Node)
We probably don't need so many label types, but we have them in the implementation currently.
In the implementation we currently refer to lifetime projections as "region projections" and labelled places as "old" places.
The associated place of a PCG node n is defined by the partial function p(n) :
- p(p)=p
- p(p at ℓ)=p
- p(rp)=p(base(rp))
Where base(rp) is the base of the lifetime projection rp as defined here.
A PCG node n is a local node if it has an associated place p(n).