public void Terminate(BlockEnding ending, params BasicBlock[] successors) { if (Ending != BlockEnding.Open) { throw new InvalidOperationException("Basic block terminated more than once"); } Ending = ending; Successors = new List <BasicBlock>(successors); }
void EndBlock(BlockEnding ending, params BasicBlock[] successors) { if (_current != null) { _current.Terminate(ending, successors); _current = null; } else { UnreachableCodeDetected(_blocks.Last().Source); } }