For example, in Figure 2 dynamic currency determination of V at Bkpt requires knowledge of which branch was taken at [N.sub.2] in the current iteration.
Solving this data flow problem for the minimal unrolled graph of Figure 5, augmented with block (Bkpt, ...) at the end yields [MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII] = true, which indicates that variable V is noncurrent at entry to the node containing the breakpoint.
At the end of the minimal unrolled graph we add a block (Bkpt, lt + 1), where lt is the largest timestamp associated with a node of G, to represent the node containing the breakpoint (note that the breakpoint is assumed to precede the first instruction in the node).
At a breakpoint Bkpt, procedure Recover_value(V, r, Bkpt) recovers the value of V according to the last assignment to V preceding point r in [MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII].
procedure Recover_value(V, r, Bkpt) Let q := Previous_defn(V, r); Let q contain an assignment V := fv(...) such that [RHS.sub.v] is the set of variables occurring in the RHS of the assignment.
occurs at point [q.sub.j], and Same_value(x, Bkpt, [q.sub.j]) = false.