From f6ffcb6b713c259992b68d6b328f1b806775b9fb 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4044 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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