diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp index 8bff458f88bb9..affae41ed2c83 100644 --- a/llvm/lib/Transforms/Scalar/GVN.cpp +++ b/llvm/lib/Transforms/Scalar/GVN.cpp @@ -2367,12 +2367,15 @@ uint32_t GVNPass::ValueTable::phiTranslateImpl(const BasicBlock *Pred, // See if we can refine the value number by looking at the PN incoming value // for the given predecessor. if (PHINode *PN = NumberingPhi[Num]) { - if (PN->getParent() == PhiBlock) - for (unsigned I = 0; I != PN->getNumIncomingValues(); ++I) - if (PN->getIncomingBlock(I) == Pred) - if (uint32_t TransVal = lookup(PN->getIncomingValue(I), false)) - return TransVal; - return Num; + if (PN->getParent() != PhiBlock) + return Num; + + for (unsigned I = 0; I != PN->getNumIncomingValues(); ++I) { + if (PN->getIncomingBlock(I) != Pred) + continue; + if (uint32_t TransVal = lookup(PN->getIncomingValue(I), false)) + return TransVal; + } } if (BasicBlock *BB = NumberingBB[Num]) {