'Eliminate all blocks not reachable from the entry point, and
stash them into self._dead_nodes.'

def _eliminate_dead_blocks(self):

    live = set()
    for node in self._dfs():
        live.add(node)
    self._dead_nodes = (self._nodes - live)
    self._nodes = live
    for dead in self._dead_nodes:
        self._remove_node_edges(dead)
