]> granicus.if.org Git - clang/commitdiff
FunctionDecl::setParams() now uses the allocator associated with ASTContext to alloca...
authorTed Kremenek <kremenek@apple.com>
Wed, 14 Jan 2009 00:42:25 +0000 (00:42 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 14 Jan 2009 00:42:25 +0000 (00:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62203 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h
lib/AST/Decl.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExprCXX.cpp

index 673669209c3c9f7fcc5c274933996fb2a74e2dec..9ca1d3e9c9e6d0d1e7756c3d2b4e4f1c4ce88d3a 100644 (file)
@@ -736,7 +736,7 @@ public:
     assert(i < getNumParams() && "Illegal param #");
     return ParamInfo[i];
   }
-  void setParams(ParmVarDecl **NewParamInfo, unsigned NumParams);
+  void setParams(ASTContext& C, ParmVarDecl **NewParamInfo, unsigned NumParams);
 
   /// getMinRequiredArguments - Returns the minimum number of arguments
   /// needed to call this function. This may be fewer than the number of
index f29417ed1320173b8654f0df6f3c58d098350588..0bc0043ccb8f0ea7103a2458b71899ceb137e011 100644 (file)
@@ -271,14 +271,16 @@ unsigned FunctionDecl::getNumParams() const {
   return getNumTypeParams(getType());
 }
 
-void FunctionDecl::setParams(ParmVarDecl **NewParamInfo, unsigned NumParams) {
+void FunctionDecl::setParams(ASTContext& C, ParmVarDecl **NewParamInfo,
+                             unsigned NumParams) {
   assert(ParamInfo == 0 && "Already has param info!");
   assert(NumParams == getNumTypeParams(getType()) &&
          "Parameter count mismatch!");
   
   // Zero params -> null pointer.
   if (NumParams) {
-    ParamInfo = new ParmVarDecl*[NumParams];
+    void *Mem = C.getAllocator().Allocate<ParmVarDecl*>(NumParams);
+    ParamInfo = new (Mem) ParmVarDecl*[NumParams];
     memcpy(ParamInfo, NewParamInfo, sizeof(ParmVarDecl*)*NumParams);
   }
 }
index 8d2e5590b98e29bc517a8a2e5f8b2dfb66c04b1a..c124c469ad139d7da1202a25e46dcfcf4fd1ccc3 100644 (file)
@@ -467,7 +467,7 @@ ScopedDecl *Sema::LazilyCreateBuiltin(IdentifierInfo *II, unsigned bid,
       Params.push_back(ParmVarDecl::Create(Context, New, SourceLocation(), 0,
                                            FT->getArgType(i), VarDecl::None, 0,
                                            0));
-    New->setParams(&Params[0], Params.size());
+    New->setParams(Context, &Params[0], Params.size());
   }
   
   
@@ -1591,7 +1591,7 @@ Sema::ActOnDeclarator(Scope *S, Declarator &D, DeclTy *lastDecl,
           Params.push_back((ParmVarDecl *)FTI.ArgInfo[i].Param);
       }
   
-      NewFD->setParams(&Params[0], Params.size());
+      NewFD->setParams(Context, &Params[0], Params.size());
     } else if (R->getAsTypedefType()) {
       // When we're declaring a function with a typedef, as in the
       // following example, we'll need to synthesize (unnamed)
@@ -1620,7 +1620,7 @@ Sema::ActOnDeclarator(Scope *S, Declarator &D, DeclTy *lastDecl,
                                                0, 0));
         }
 
-        NewFD->setParams(&Params[0], Params.size());
+        NewFD->setParams(Context, &Params[0], Params.size());
       }
     }
 
index d7cef91f3399180993d84989651a065d4bc40985..65c14161240a994105a4778311d9791a761d6fb4 100644 (file)
@@ -875,7 +875,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
                                                  ClassDecl->getLocation(),
                                                  /*IdentifierInfo=*/0,
                                                  ArgType, VarDecl::None, 0, 0);
-    CopyConstructor->setParams(&FromParam, 1);
+    CopyConstructor->setParams(Context, &FromParam, 1);
 
     ClassDecl->addedConstructor(Context, CopyConstructor);
     ClassDecl->addDecl(CopyConstructor);
@@ -952,7 +952,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) {
                                                  ClassDecl->getLocation(),
                                                  /*IdentifierInfo=*/0,
                                                  ArgType, VarDecl::None, 0, 0);
-    CopyAssignment->setParams(&FromParam, 1);
+    CopyAssignment->setParams(Context, &FromParam, 1);
 
     // Don't call addedAssignmentOperator. There is no way to distinguish an
     // implicit from an explicit assignment operator.
index 99e00a7a82a4421c70b068a044139990bcdaaa6c..efc664cf5396419087bb289b6070db5aded77570 100644 (file)
@@ -535,7 +535,7 @@ void Sema::DeclareGlobalAllocationFunction(DeclarationName Name,
   Alloc->setImplicit();
   ParmVarDecl *Param = ParmVarDecl::Create(Context, Alloc, SourceLocation(),
                                            0, Argument, VarDecl::None, 0, 0);
-  Alloc->setParams(&Param, 1);
+  Alloc->setParams(Context, &Param, 1);
 
   // FIXME: Also add this declaration to the IdentifierResolver, but
   // make sure it is at the end of the chain to coincide with the