diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/VMCore/Dominators.cpp | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/Dominators.cpp b/llvm/lib/VMCore/Dominators.cpp index a0e818fc313..7019c98d89e 100644 --- a/llvm/lib/VMCore/Dominators.cpp +++ b/llvm/lib/VMCore/Dominators.cpp @@ -19,6 +19,7 @@  #include "llvm/Assembly/Writer.h"  #include "llvm/ADT/DepthFirstIterator.h"  #include "llvm/ADT/SetOperations.h" +#include "llvm/Instructions.h"  #include <algorithm>  using namespace llvm; @@ -265,6 +266,11 @@ bool DominatorSetBase::dominates(Instruction *A, Instruction *B) const {    BasicBlock *BBA = A->getParent(), *BBB = B->getParent();    if (BBA != BBB) return dominates(BBA, BBB); +  // It is not possible to determie dominance between two PHI nodes  +  // based on their ordering. +  if (isa<PHINode>(A) && isa<PHINode>(B))  +    return false; +    // Loop through the basic block until we find A or B.    BasicBlock::iterator I = BBA->begin();    for (; &*I != A && &*I != B; ++I) /*empty*/;  | 

