diff options
author | David Blaikie <dblaikie@gmail.com> | 2015-07-21 18:37:18 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2015-07-21 18:37:18 +0000 |
commit | f05779e21c8ff7ba320ff96cd466bde0852fe309 (patch) | |
tree | f1ada19708ab194705722d43e162fcbf3e4175d1 /clang/lib/CodeGen/CodeGenFunction.h | |
parent | adc8d721e069a8f68c417f2e0df66a4245eb3d54 (diff) | |
download | bcm5719-llvm-f05779e21c8ff7ba320ff96cd466bde0852fe309.tar.gz bcm5719-llvm-f05779e21c8ff7ba320ff96cd466bde0852fe309.zip |
Pass an iterator range to EmitCallArgs
llvm-svn: 242824
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 1144a82c9f9..7c2548b5046 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -2967,12 +2967,11 @@ public: /// EmitCallArgs - Emit call arguments for a function. template <typename T> void EmitCallArgs(CallArgList &Args, const T *CallArgTypeInfo, - CallExpr::const_arg_iterator ArgBeg, - CallExpr::const_arg_iterator ArgEnd, + llvm::iterator_range<CallExpr::const_arg_iterator> ArgRange, const FunctionDecl *CalleeDecl = nullptr, unsigned ParamsToSkip = 0) { SmallVector<QualType, 16> ArgTypes; - CallExpr::const_arg_iterator Arg = ArgBeg; + CallExpr::const_arg_iterator Arg = ArgRange.begin(); assert((ParamsToSkip == 0 || CallArgTypeInfo) && "Can't skip parameters if type info is not provided"); @@ -2985,7 +2984,7 @@ public: for (auto I = CallArgTypeInfo->param_type_begin() + ParamsToSkip, E = CallArgTypeInfo->param_type_end(); I != E; ++I, ++Arg) { - assert(Arg != ArgEnd && "Running over edge of argument list!"); + assert(Arg != ArgRange.end() && "Running over edge of argument list!"); assert((isGenericMethod || ((*I)->isVariablyModifiedType() || (*I).getNonReferenceType()->isObjCRetainableType() || @@ -3002,20 +3001,19 @@ public: // Either we've emitted all the call args, or we have a call to variadic // function. - assert( - (Arg == ArgEnd || !CallArgTypeInfo || CallArgTypeInfo->isVariadic()) && - "Extra arguments in non-variadic function!"); + assert((Arg == ArgRange.end() || !CallArgTypeInfo || + CallArgTypeInfo->isVariadic()) && + "Extra arguments in non-variadic function!"); // If we still have any arguments, emit them using the type of the argument. - for (; Arg != ArgEnd; ++Arg) - ArgTypes.push_back(getVarArgType(*Arg)); + for (auto *Arg : llvm::make_range(Arg, ArgRange.end())) + ArgTypes.push_back(getVarArgType(Arg)); - EmitCallArgs(Args, ArgTypes, ArgBeg, ArgEnd, CalleeDecl, ParamsToSkip); + EmitCallArgs(Args, ArgTypes, ArgRange, CalleeDecl, ParamsToSkip); } void EmitCallArgs(CallArgList &Args, ArrayRef<QualType> ArgTypes, - CallExpr::const_arg_iterator ArgBeg, - CallExpr::const_arg_iterator ArgEnd, + llvm::iterator_range<CallExpr::const_arg_iterator> ArgRange, const FunctionDecl *CalleeDecl = nullptr, unsigned ParamsToSkip = 0); |