Make PRE actually handle critical edges (by splitting them). Confirmed that bootstrap passes with this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53762 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2008-07-18 18:03:38 +00:00
parent cfa94198d5
commit e98c54c47c

View File

@ -1136,8 +1136,11 @@ bool GVN::runOnFunction(Function& F) {
changed |= shouldContinue;
}
if (EnablePRE)
changed |= performPRE(F);
if (EnablePRE) {
bool PREChanged = false;
while (PREChanged = performPRE(F))
changed |= PREChanged;
}
return changed;
}
@ -1336,7 +1339,7 @@ bool GVN::performPRE(Function& F) {
I = toSplit.begin(), E = toSplit.end(); I != E; ++I)
SplitCriticalEdge(I->first, I->second, this);
return changed;
return changed || toSplit.size();
}
// iterateOnFunction - Executes one iteration of GVN