aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-04-16 05:51:47 +0000
committerChris Lattner <sabre@nondot.org>2004-04-16 05:51:47 +0000
commite1f0cf179f14d3d764bb39979707a6cabb99443d (patch)
treeec3836ab3112690043acef7acd803ad0003d50ce
parentbf3d2e2683b41f8bc179fea943b462bc88a56f2f (diff)
Make sure to check for a very bad class of errors: an instruction
that does not dominate all of its users, but is in the same basic block as its users. This class of error is what caused the mysterious CBE only failures last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12979 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/VMCore/Verifier.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index ffe2c5a548..edd3da1a00 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -559,6 +559,12 @@ void Verifier::visitInstruction(Instruction &I) {
// exceptional destination.
if (InvokeInst *II = dyn_cast<InvokeInst>(Op))
OpBlock = II->getNormalDest();
+ else if (OpBlock == BB) {
+ // If they are in the same basic block, make sure that the definition
+ // comes before the use.
+ Assert2(DS->dominates(Op, &I),
+ "Instruction does not dominate all uses!", Op, &I);
+ }
// Definition must dominate use unless use is unreachable!
Assert2(DS->dominates(OpBlock, BB) ||