mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-04 09:37:20 +00:00
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:
parent
16f244e982
commit
3472ae1e7b
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user