]> granicus.if.org Git - clang/commitdiff
Recovery memory from TypeLocBuilders during crashes.
authorTed Kremenek <kremenek@apple.com>
Sat, 19 Mar 2011 01:00:38 +0000 (01:00 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 19 Mar 2011 01:00:38 +0000 (01:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127932 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/TypeLocBuilder.h

index 1e0a7c454675d42fe16d79d6d4406b9992418d4a..7b241871b67dec37aecafcdb6620eca16409d560 100644 (file)
@@ -18,6 +18,7 @@
 #include "clang/AST/TypeLoc.h"
 #include "llvm/ADT/SmallVector.h"
 #include "clang/AST/ASTContext.h"
+#include "llvm/Support/CrashRecoveryContext.h"
 
 namespace clang {
 
@@ -42,9 +43,13 @@ class TypeLocBuilder {
   /// The inline buffer.
   char InlineBuffer[InlineCapacity];
 
+  llvm::CrashRecoveryContextCleanupRegistrar cleanupBuffer;
+
  public:
   TypeLocBuilder()
-    : Buffer(InlineBuffer), Capacity(InlineCapacity), Index(InlineCapacity)
+    : Buffer(InlineBuffer), Capacity(InlineCapacity), Index(InlineCapacity),
+      cleanupBuffer(llvm::CrashRecoveryContextCleanup::create<TypeLocBuilder>(
+            this, llvm::CrashRecoveryContextCleanup::DestructorCleanup))
   {}
 
   ~TypeLocBuilder() {