diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 51e0d2ddddb..1663ddf6b7a 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -17,6 +17,7 @@ // * Only phi nodes can be self referential: 'add int %0, %0 ; :0' is bad // * PHI nodes must have an entry for each predecessor, with no extras. // * PHI nodes must be the first thing in a basic block, all grouped together +// * PHI nodes must have at least one entry // * All basic blocks should only end with terminator insts, not contain them // * The entry node to a function must not have predecessors // * All Instructions must be embeded into a basic block @@ -258,6 +259,12 @@ void Verifier::visitPHINode(PHINode &PN) { "PHI nodes not grouped at top of basic block!", &PN, PN.getParent()); + // Ensure that PHI nodes have at least one entry! + Assert1(PN.getNumIncomingValues() != 0, + "PHI nodes must have at least one entry. If the block is dead, " + "the PHI should be removed!", + &PN); + std::vector Preds(pred_begin(PN.getParent()), pred_end(PN.getParent())); // Loop over all of the incoming values, make sure that there are