aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-02-09 01:06:01 +0000
committerChris Lattner <sabre@nondot.org>2008-02-09 01:06:01 +0000
commit9071dd3a57db98da6a4d1a5b52640bfbd4d09ef8 (patch)
treeeabec8da878b6d0944df1e648d3e4f0c7f5ac570
parent6394b099e836f56a937cdcc7332c9487b504ca68 (diff)
check that terminators only occur at the end of a block. This catches the
common problem of putting two terminators in the same block. I can't write a testcase for this because the .ll parser rejects this before the verifier can, but this can occur when generating IR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46900 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/VMCore/Verifier.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index 626119b437..3c7ce7a5a2 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -1051,6 +1051,11 @@ void Verifier::visitInstruction(Instruction &I) {
!DT->dominates(&BB->getParent()->getEntryBlock(), BB),
"Only PHI nodes may reference their own value!", &I);
}
+
+ // Verify that if this is a terminator that it is at the end of the block.
+ if (isa<TerminatorInst>(I))
+ Assert1(BB->getTerminator() == &I, "Terminator not at end of block!", &I);
+
// Check that void typed values don't have names
Assert1(I.getType() != Type::VoidTy || !I.hasName(),