llvm.va_start only takes on argument now
Verify that va_start doesn't occur in functions with no varargs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6038 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp
index dfb71be..7dc870f 100644
--- a/lib/VMCore/Verifier.cpp
+++ b/lib/VMCore/Verifier.cpp
@@ -131,7 +131,7 @@
     void visitPHINode(PHINode &PN);
     void visitBinaryOperator(BinaryOperator &B);
     void visitShiftInst(ShiftInst &SI);
-    void visitVarArgInst(VarArgInst &VAI);
+    void visitVarArgInst(VarArgInst &VAI) { visitInstruction(VAI); }
     void visitCallInst(CallInst &CI);
     void visitGetElementPtrInst(GetElementPtrInst &GEP);
     void visitLoadInst(LoadInst &LI);
@@ -409,13 +409,6 @@
   visitInstruction(SI);
 }
 
-void Verifier::visitVarArgInst(VarArgInst &VAI) {
-  Assert1(VAI.getParent()->getParent()->getFunctionType()->isVarArg(),
-          "va_arg instruction may only occur in function with variable args!",
-          &VAI);
-  visitInstruction(VAI);
-}
-
 void Verifier::visitGetElementPtrInst(GetElementPtrInst &GEP) {
   const Type *ElTy =
     GetElementPtrInst::getIndexedType(GEP.getOperand(0)->getType(),
@@ -519,9 +512,10 @@
 
   switch (ID) {
   case LLVMIntrinsic::va_start:
-    Assert1(isa<Argument>(CI.getOperand(2)),
-            "va_start second argument should be a function argument!", &CI);
-    NumArgs = 2;
+    Assert1(CI.getParent()->getParent()->getFunctionType()->isVarArg(),
+            "llvm.va_start intrinsic may only occur in function with variable"
+            " args!", &CI);
+    NumArgs = 1;
     break;
   case LLVMIntrinsic::va_end: NumArgs = 1; break;
   case LLVMIntrinsic::va_copy: NumArgs = 2; break;