Example #1
0
static void calculateReachableNodesInLoop(LoopNode* loop, Node* node, Node* stopNode, BitSet& flags) {
    int id = node->getId();
    if (!loop->inLoop(node) || node == stopNode || flags.getBit(id)) {
        return;
    }
    flags.setBit(id, true);
    const Edges& edges = node->getOutEdges();
    for (Edges::const_iterator ite = edges.begin(), ende = edges.end(); ite!=ende; ++ite) {
        Edge* e = *ite;
        Node* nextNode = e->getTargetNode();
        if (nextNode != loop->getHeader()) {
            calculateReachableNodesInLoop(loop, nextNode, stopNode, flags);
        }
    }
}