Add support for checking the select instruction
authorChris Lattner <sabre@nondot.org>
Fri, 12 Mar 2004 05:54:31 +0000 (05:54 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 12 Mar 2004 05:54:31 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12325 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Verifier.cpp

index bf530a4b1a93a763f6fd21816af2c37c306bb826..dfac6b94cf31295658d6e227b25f57d06d1b2d4f 100644 (file)
@@ -144,6 +144,7 @@ namespace {  // Anonymous namespace for class
     void visitInstruction(Instruction &I);
     void visitTerminatorInst(TerminatorInst &I);
     void visitReturnInst(ReturnInst &RI);
+    void visitSelectInst(SelectInst &SI);
     void visitUserOp1(Instruction &I);
     void visitUserOp2(Instruction &I) { visitUserOp1(I); }
     void visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI);
@@ -335,6 +336,16 @@ void Verifier::visitReturnInst(ReturnInst &RI) {
   visitTerminatorInst(RI);
 }
 
+void Verifier::visitSelectInst(SelectInst &SI) {
+  Assert1(SI.getCondition()->getType() == Type::BoolTy,
+          "Select condition type must be bool!", &SI);
+  Assert1(SI.getTrueValue()->getType() == SI.getFalseValue()->getType(),
+          "Select values must have identical types!", &SI);
+  Assert1(SI.getTrueValue()->getType() == SI.getType(),
+          "Select values must have same type as select instruction!", &SI);
+}
+
+
 /// visitUserOp1 - User defined operators shouldn't live beyond the lifetime of
 /// a pass, if any exist, it's an error.
 ///