Changes in directory llvm/lib/VMCore:
Instructions.cpp updated: 1.35 -> 1.36 --- Log message: Add assertions that verify that the actual arguments to a call or invoke match the prototype of the called function. --- Diffs of the changes: (+22 -4) Instructions.cpp | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) Index: llvm/lib/VMCore/Instructions.cpp diff -u llvm/lib/VMCore/Instructions.cpp:1.35 llvm/lib/VMCore/Instructions.cpp:1.36 --- llvm/lib/VMCore/Instructions.cpp:1.35 Fri Apr 14 17:20:32 2006 +++ llvm/lib/VMCore/Instructions.cpp Tue May 2 19:48:22 2006 @@ -197,9 +197,13 @@ assert((Params.size() == FTy->getNumParams() || (FTy->isVarArg() && Params.size() > FTy->getNumParams())) && - "Calling a function with bad signature"); - for (unsigned i = 0, e = Params.size(); i != e; ++i) + "Calling a function with bad signature!"); + for (unsigned i = 0, e = Params.size(); i != e; ++i) { + assert((i >= FTy->getNumParams() || + FTy->getParamType(i) == Params[i]->getType()) && + "Calling a function with a bad signature!"); OL[i+1].init(Params[i], this); + } } void CallInst::init(Value *Func, Value *Actual1, Value *Actual2) { @@ -213,8 +217,14 @@ cast<FunctionType>(cast<PointerType>(Func->getType())->getElementType()); assert((FTy->getNumParams() == 2 || - (FTy->isVarArg() && FTy->getNumParams() == 0)) && + (FTy->isVarArg() && FTy->getNumParams() < 2)) && "Calling a function with bad signature"); + assert((0 >= FTy->getNumParams() || + FTy->getParamType(0) == Actual1->getType()) && + "Calling a function with a bad signature!"); + assert((1 >= FTy->getNumParams() || + FTy->getParamType(1) == Actual2->getType()) && + "Calling a function with a bad signature!"); } void CallInst::init(Value *Func, Value *Actual) { @@ -229,6 +239,9 @@ assert((FTy->getNumParams() == 1 || (FTy->isVarArg() && FTy->getNumParams() == 0)) && "Calling a function with bad signature"); + assert((0 == FTy->getNumParams() || + FTy->getParamType(0) == Actual->getType()) && + "Calling a function with a bad signature!"); } void CallInst::init(Value *Func) { @@ -339,8 +352,13 @@ (FTy->isVarArg() && Params.size() > FTy->getNumParams()) && "Calling a function with bad signature"); - for (unsigned i = 0, e = Params.size(); i != e; i++) + for (unsigned i = 0, e = Params.size(); i != e; i++) { + assert((i >= FTy->getNumParams() || + FTy->getParamType(i) == Params[i]->getType()) && + "Invoking a function with a bad signature!"); + OL[i+3].init(Params[i], this); + } } InvokeInst::InvokeInst(Value *Fn, BasicBlock *IfNormal, _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits