From 53a414c3c48ca4474033cbc7d7558319a3fd5076 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 6 Oct 2002 21:00:31 +0000 Subject: [PATCH] PHI nodes are not allowed to exist with zero incoming values, check that there aren't any like this. llvm-svn: 4044 --- lib/VMCore/Verifier.cpp | 7 +++++++ 1 file changed, 7 insertions(+) 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