diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/AST/Decl.cpp | 25 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 10 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 4 | ||||
| -rw-r--r-- | clang/lib/Sema/TreeTransform.h | 2 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 4 | 
10 files changed, 29 insertions, 30 deletions
| diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index cee63b951dc..1a2e02fe181 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -2521,7 +2521,7 @@ Decl *ASTNodeImporter::VisitFunctionDecl(FunctionDecl *D) {      Parameters[I]->setOwningFunction(ToFunction);      ToFunction->addDecl(Parameters[I]);    } -  ToFunction->setParams(Parameters.data(), Parameters.size()); +  ToFunction->setParams(Parameters);    // FIXME: Other bits to merge? 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 <algorithm> +  using namespace clang;  //===----------------------------------------------------------------------===// @@ -1688,15 +1690,14 @@ unsigned FunctionDecl::getNumParams() const {  }  void FunctionDecl::setParams(ASTContext &C, -                             ParmVarDecl **NewParamInfo, unsigned NumParams) { +                             llvm::ArrayRef<ParmVarDecl *> 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<ParmVarDecl *> 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);    }  } diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 164fb2f1c27..1057defc44f 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -1290,7 +1290,7 @@ NamedDecl *Sema::LazilyCreateBuiltin(IdentifierInfo *II, unsigned bid,        parm->setScopeInfo(0, i);        Params.push_back(parm);      } -    New->setParams(Params.data(), Params.size()); +    New->setParams(Params);    }    AddKnownFunctionAttributes(New); @@ -1853,7 +1853,7 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD) {          Params.push_back(Param);        } -      New->setParams(Params.data(), Params.size()); +      New->setParams(Params);      }      return MergeCompatibleFunctionDecls(New, Old); @@ -4873,7 +4873,7 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,             "Should not need args for typedef of non-prototype fn");    }    // Finally, we know we have the right number of parameters, install them. -  NewFD->setParams(Params.data(), Params.size()); +  NewFD->setParams(Params);    // Process the non-inheritable attributes on this declaration.    ProcessDeclAttributes(S, NewFD, D, diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 1f97d402114..48f2f9675a5 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -3674,7 +3674,7 @@ NamedDecl * Sema::DeclClonePragmaWeak(NamedDecl *ND, IdentifierInfo *II,          Param->setScopeInfo(0, Params.size());          Params.push_back(Param);        } -      NewFD->setParams(Params.data(), Params.size()); +      NewFD->setParams(Params);      }    } else if (VarDecl *VD = dyn_cast<VarDecl>(ND)) {      NewD = VarDecl::Create(VD->getASTContext(), VD->getDeclContext(), diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 0d83d9fc5ff..f9787e85c46 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -6835,7 +6835,7 @@ void Sema::DeclareInheritedConstructors(CXXRecordDecl *ClassDecl) {                                                     /*TInfo=*/0, SC_None,                                                     SC_None, /*DefaultArg=*/0));          } -        NewCtor->setParams(ParamDecls.data(), ParamDecls.size()); +        NewCtor->setParams(ParamDecls);          NewCtor->setInheritedConstructor(BaseCtor);          PushOnScopeChains(NewCtor, S, false); @@ -7353,7 +7353,7 @@ CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) {                                                 ArgType, /*TInfo=*/0,                                                 SC_None,                                                 SC_None, 0); -  CopyAssignment->setParams(&FromParam, 1); +  CopyAssignment->setParams(FromParam);    // Note that we have added this copy-assignment operator.    ++ASTContext::NumImplicitCopyAssignmentOperatorsDeclared; @@ -7768,7 +7768,7 @@ CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) {                                                 ArgType, /*TInfo=*/0,                                                 SC_None,                                                 SC_None, 0); -  MoveAssignment->setParams(&FromParam, 1); +  MoveAssignment->setParams(FromParam);    // Note that we have added this copy-assignment operator.    ++ASTContext::NumImplicitMoveAssignmentOperatorsDeclared; @@ -8259,7 +8259,7 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor(                                                 ArgType, /*TInfo=*/0,                                                 SC_None,                                                 SC_None, 0); -  CopyConstructor->setParams(&FromParam, 1); +  CopyConstructor->setParams(FromParam);    if (Scope *S = getScopeForContext(ClassDecl))      PushOnScopeChains(CopyConstructor, S, false); @@ -8416,7 +8416,7 @@ CXXConstructorDecl *Sema::DeclareImplicitMoveConstructor(                                                 ArgType, /*TInfo=*/0,                                                 SC_None,                                                 SC_None, 0); -  MoveConstructor->setParams(&FromParam, 1); +  MoveConstructor->setParams(FromParam);    // C++0x [class.copy]p9:    //   If the definition of a class X does not explicitly declare a move diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index cafed191f15..1d23f4f3b2a 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -8710,7 +8710,7 @@ void Sema::ActOnBlockArguments(Declarator &ParamInfo, Scope *CurScope) {    // Set the parameters on the block decl.    if (!Params.empty()) { -    CurBlock->TheDecl->setParams(Params.data(), Params.size()); +    CurBlock->TheDecl->setParams(Params);      CheckParmsForFunctionDef(CurBlock->TheDecl->param_begin(),                               CurBlock->TheDecl->param_end(),                               /*CheckParameterNames=*/false); diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 1741bdb1efa..140fd9003da 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -1671,7 +1671,7 @@ void Sema::DeclareGlobalAllocationFunction(DeclarationName Name,                                             SourceLocation(), 0,                                             Argument, /*TInfo=*/0,                                             SC_None, SC_None, 0); -  Alloc->setParams(&Param, 1); +  Alloc->setParams(Param);    // FIXME: Also add this declaration to the IdentifierResolver, but    // make sure it is at the end of the chain to coincide with the diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 43806c63640..4391e7a8783 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -1112,7 +1112,7 @@ Decl *TemplateDeclInstantiator::VisitFunctionDecl(FunctionDecl *D,        Params.push_back(Param);      }    } -  Function->setParams(Params.data(), Params.size()); +  Function->setParams(Params);    SourceLocation InstantiateAtPOI;    if (TemplateParams) { @@ -1485,7 +1485,7 @@ TemplateDeclInstantiator::VisitCXXMethodDecl(CXXMethodDecl *D,    // Attach the parameters    for (unsigned P = 0; P < Params.size(); ++P)      Params[P]->setOwningFunction(Method); -  Method->setParams(Params.data(), Params.size()); +  Method->setParams(Params);    if (InitMethodInstantiation(Method, D))      Method->setInvalidDecl(); diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 12eba297999..32e8a0ec7ee 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -7989,7 +7989,7 @@ TreeTransform<Derived>::TransformBlockExpr(BlockExpr *E) {    // Set the parameters on the block decl.    if (!params.empty()) -    blockScope->TheDecl->setParams(params.data(), params.size()); +    blockScope->TheDecl->setParams(params);    // If the return type wasn't explicitly set, it will have been marked as a     // dependent type (DependentTy); clear out the return type setting so  diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 444888911c6..77b05fd5a3e 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -465,7 +465,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {    Params.reserve(NumParams);    for (unsigned I = 0; I != NumParams; ++I)      Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx)); -  FD->setParams(Reader.getContext(), Params.data(), NumParams); +  FD->setParams(Reader.getContext(), Params);  }  void ASTDeclReader::VisitObjCMethodDecl(ObjCMethodDecl *MD) { @@ -758,7 +758,7 @@ void ASTDeclReader::VisitBlockDecl(BlockDecl *BD) {    Params.reserve(NumParams);    for (unsigned I = 0; I != NumParams; ++I)      Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx)); -  BD->setParams(Params.data(), NumParams); +  BD->setParams(Params);    bool capturesCXXThis = Record[Idx++];    unsigned numCaptures = Record[Idx++]; | 

