Utilities for working with Static-Single-Assignment LIR form.
There is no explicit
. Instead, they are implemented
as parallel copy that span across a control-flow edge.
The variables introduced by
s of a specific merge
to the StandardOp.LabelOp
block. The outgoing values from the predecessor are
of the predecessor. Because there are no critical edges we know that the
of the predecessor has to be a
B0 -> B1
v0|i = ...
JUMP ~[v0|i, int[0|0x0]] destination: B0 -> B1
B2 -> B1
v1|i = ...
v2|i = ...
JUMP ~[v1|i, v2|i] destination: B2 -> B1
B1 <- B0,B2
[v3|i, v4|i] = LABEL