From cad208b8bc1458c42ca93430fcccbc18e1a5d4ab Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 28 Aug 2008 04:02:44 +0000 Subject: [PATCH] Make the verifier reject instructions which have null pointers for operands: rdar://6179606. no testcase, because I can't write a .ll file that is this broken ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55460 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/Verifier.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index b5876a7e98e..034a0628fba 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -224,6 +224,10 @@ namespace { void visitGlobalAlias(GlobalAlias &GA); void visitFunction(Function &F); void visitBasicBlock(BasicBlock &BB); + using InstVisitor::visit; + + void visit(Instruction &I); + void visitTruncInst(TruncInst &I); void visitZExtInst(ZExtInst &I); void visitSExtInst(SExtInst &I); @@ -326,6 +330,13 @@ static RegisterPass X("verify", "Module Verifier"); do { if (!(C)) { CheckFailed(M, V1, V2, V3, V4); return; } } while (0) +void Verifier::visit(Instruction &I) { + for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i) + Assert1(I.getOperand(i) != 0, "Operand is null", &I); + InstVisitor::visit(I); +} + + void Verifier::visitGlobalValue(GlobalValue &GV) { Assert1(!GV.isDeclaration() || GV.hasExternalLinkage() || -- 2.34.1