diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h index c0325bdafbb7..050768fe309b 100644 --- a/clang/include/clang/AST/Decl.h +++ b/clang/include/clang/AST/Decl.h @@ -664,7 +664,7 @@ protected: SClass(S), IsInline(isInline), IsVirtual(false), IsPure(false), TypeSpecStartLoc(TSSL) {} - virtual ~FunctionDecl(); + virtual ~FunctionDecl() {} virtual void Destroy(ASTContext& C); public: diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index 8ae93110170d..5ec6aff4f573 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/lib/AST/Decl.cpp @@ -224,17 +224,15 @@ VarDecl::~VarDecl() { // FunctionDecl Implementation //===----------------------------------------------------------------------===// -FunctionDecl::~FunctionDecl() { - delete[] ParamInfo; -} - void FunctionDecl::Destroy(ASTContext& C) { if (Body) Body->Destroy(C); for (param_iterator I=param_begin(), E=param_end(); I!=E; ++I) (*I)->Destroy(C); - + + C.getAllocator().Deallocate(ParamInfo); + Decl::Destroy(C); }