diff options
author | Chris Lattner <sabre@nondot.org> | 2003-05-08 15:55:31 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-05-08 15:55:31 +0000 |
commit | 27aa094f57e49424047c85fe4243d70e79928028 (patch) | |
tree | 7a5ddc04c2969794e5db301466460b92becbd248 /lib/VMCore/Verifier.cpp | |
parent | c29b125a9993793bd0a9b4a89b255a71a45371ad (diff) | |
download | external_llvm-27aa094f57e49424047c85fe4243d70e79928028.zip external_llvm-27aa094f57e49424047c85fe4243d70e79928028.tar.gz external_llvm-27aa094f57e49424047c85fe4243d70e79928028.tar.bz2 |
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
Diffstat (limited to 'lib/VMCore/Verifier.cpp')
-rw-r--r-- | lib/VMCore/Verifier.cpp | 16 |
1 files changed, 5 insertions, 11 deletions
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 @@ namespace { // Anonymous namespace for class 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 @@ void Verifier::visitShiftInst(ShiftInst &SI) { 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 @@ void Verifier::visitIntrinsicFunctionCall(LLVMIntrinsic::ID ID, CallInst &CI) { 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; |