if (isCriticalEdge(PREPred->getTerminator(), succNum)) {
toSplit.push_back(std::make_pair(PREPred->getTerminator(), succNum));
+ Changed = true;
continue;
}
}
for (SmallVector<std::pair<TerminatorInst*, unsigned>, 4>::iterator
- I = toSplit.begin(), E = toSplit.end(); I != E; ++I)
+ I = toSplit.begin(), E = toSplit.end(); I != E; ++I) {
SplitCriticalEdge(I->first, I->second, this);
+ BasicBlock* NewBlock = I->first->getSuccessor(I->second);
+ localAvail[NewBlock] =
+ new ValueNumberScope(localAvail[I->first->getParent()]);
+ }
- return Changed || toSplit.size();
+ return Changed;
}
// iterateOnFunction - Executes one iteration of GVN