Make sure the immediate dominator isn't NULL through iterations

of the loop. We could get to this condition via indirect
branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91009 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2009-12-10 00:25:41 +00:00
parent 16f244e982
commit 3472ae1e7b

View File

@ -160,16 +160,17 @@ namespace {
// Because the exit block is not in the loop, we know we have to get _at
// least_ its immediate dominator.
do {
// Get next Immediate Dominator.
IDom = IDom->getIDom();
IDom = IDom->getIDom();
while (IDom && IDom != BlockInLoopNode) {
// If we have got to the header of the loop, then the instructions block
// did not dominate the exit node, so we can't hoist it.
if (IDom->getBlock() == LoopHeader)
return false;
} while (IDom != BlockInLoopNode);
// Get next Immediate Dominator.
IDom = IDom->getIDom();
};
return true;
}