diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index a2011f5511a..23dcf0ccdea 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -1641,11 +1641,12 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) { // Check to see if all of the operands of the PHI are constants. If there is // one non-constant value, remember the BB it is. If there is more than one - // bail out. + // or if *it* is a PHI, bail out. BasicBlock *NonConstBB = 0; for (unsigned i = 0; i != NumPHIValues; ++i) if (!isa(PN->getIncomingValue(i))) { if (NonConstBB) return 0; // More than one non-const value. + if (isa(PN->getIncomingValue(i))) return 0; // Itself a phi. NonConstBB = PN->getIncomingBlock(i); // If the incoming non-constant value is in I's block, we have an infinite