]> granicus.if.org Git - clang/commitdiff
Add asserts that the function signature matches the other arguments provide
authorDaniel Dunbar <daniel@zuster.org>
Wed, 4 Feb 2009 21:17:21 +0000 (21:17 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 4 Feb 2009 21:17:21 +0000 (21:17 +0000)
to CGCall functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63775 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGCall.cpp
lib/CodeGen/CGCall.h

index 2ad8f917e117d2e610cdb02ed5e948597c35321c..f28aa2f6492f8167621718bad04cc1e7d8c6d83a 100644 (file)
@@ -1167,6 +1167,8 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI,
     ++AI;
   }
     
+  assert(FI.arg_size() == Args.size() &&
+         "Mismatch between function signature & arguments.");
   CGFunctionInfo::const_arg_iterator info_it = FI.arg_begin();
   for (FunctionArgList::const_iterator i = Args.begin(), e = Args.end();
        i != e; ++i, ++info_it) {
@@ -1316,6 +1318,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
     assert(0 && "Invalid ABI kind for return argument");
   }
   
+  assert(CallInfo.arg_size() == CallArgs.size() &&
+         "Mismatch between function signature & arguments.");
   CGFunctionInfo::const_arg_iterator info_it = CallInfo.arg_begin();
   for (CallArgList::const_iterator I = CallArgs.begin(), E = CallArgs.end(); 
        I != E; ++I, ++info_it) {
index 95e561d6f9ad17c799976725d7a77754ad5d48d7..562dfa911329d61c82c1605e6868748452b64e3e 100644 (file)
@@ -76,6 +76,8 @@ namespace CodeGen {
     arg_iterator arg_begin() { return Args + 1; }
     arg_iterator arg_end() { return Args + 1 + NumArgs; }
 
+    unsigned  arg_size() const { return NumArgs; }
+
     QualType getReturnType() const { return Args[0].type; }
 
     ABIArgInfo &getReturnInfo() { return Args[0].info; }