From 9c70e04becf660d6fdd076b5da1c5433d2eb422c Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Wed, 21 Sep 2011 18:16:56 +0000 Subject: ArrayRef-ifying Function/BlockDecl's setParams llvm-svn: 140268 --- clang/lib/AST/Decl.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'clang/lib/AST/Decl.cpp') diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index 73a6558e103..3a2d532f183 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/lib/AST/Decl.cpp @@ -28,6 +28,8 @@ #include "clang/Basic/TargetInfo.h" #include "llvm/Support/ErrorHandling.h" +#include + using namespace clang; //===----------------------------------------------------------------------===// @@ -1688,15 +1690,14 @@ unsigned FunctionDecl::getNumParams() const { } void FunctionDecl::setParams(ASTContext &C, - ParmVarDecl **NewParamInfo, unsigned NumParams) { + llvm::ArrayRef NewParamInfo) { assert(ParamInfo == 0 && "Already has param info!"); - assert(NumParams == getNumParams() && "Parameter count mismatch!"); + assert(NewParamInfo.size() == getNumParams() && "Parameter count mismatch!"); // Zero params -> null pointer. - if (NumParams) { - void *Mem = C.Allocate(sizeof(ParmVarDecl*)*NumParams); - ParamInfo = new (Mem) ParmVarDecl*[NumParams]; - memcpy(ParamInfo, NewParamInfo, sizeof(ParmVarDecl*)*NumParams); + if (!NewParamInfo.empty()) { + ParamInfo = new (C) ParmVarDecl*[NewParamInfo.size()]; + std::copy(NewParamInfo.begin(), NewParamInfo.end(), ParamInfo); } } @@ -2430,16 +2431,14 @@ void RecordDecl::LoadFieldsFromExternalStorage() const { // BlockDecl Implementation //===----------------------------------------------------------------------===// -void BlockDecl::setParams(ParmVarDecl **NewParamInfo, - unsigned NParms) { +void BlockDecl::setParams(llvm::ArrayRef NewParamInfo) { assert(ParamInfo == 0 && "Already has param info!"); // Zero params -> null pointer. - if (NParms) { - NumParams = NParms; - void *Mem = getASTContext().Allocate(sizeof(ParmVarDecl*)*NumParams); - ParamInfo = new (Mem) ParmVarDecl*[NumParams]; - memcpy(ParamInfo, NewParamInfo, sizeof(ParmVarDecl*)*NumParams); + if (!NewParamInfo.empty()) { + NumParams = NewParamInfo.size(); + ParamInfo = new (getASTContext()) ParmVarDecl*[NewParamInfo.size()]; + std::copy(NewParamInfo.begin(), NewParamInfo.end(), ParamInfo); } } -- cgit v1.2.3