/// Create - Deserialize a Decl from Bitcode.
static Decl* Create(llvm::Deserializer& D, ASTContext& C);
+ /// Destroy - Call destructors and release memory.
+ void Destroy(ASTContext& C) const;
+
protected:
/// EmitImpl - Provides the subclass-specific serialization logic for
/// serializing out a decl.
return (*DeclAttrs)[this];
}
+void Decl::Destroy(ASTContext& C) const {
+ C.getAllocator().Deallocate((void *)this);
+}
+
//===----------------------------------------------------------------------===//
// DeclContext Implementation
//===----------------------------------------------------------------------===//
TranslationUnit::~TranslationUnit() {
for (iterator I=begin(), E=end(); I!=E; ++I)
- delete *I;
+ (*I)->Destroy(*Context);
}
bool clang::EmitASTBitcodeFile(const TranslationUnit& TU,