[cfe-commits] r112005 - /cfe/trunk/lib/AST/RecordLayoutBuilder.cpp

Argyrios Kyrtzidis akyrtzi at gmail.com
Tue Aug 24 17:32:15 PDT 2010


Author: akirtzidis
Date: Tue Aug 24 19:32:14 2010
New Revision: 112005

URL: http://llvm.org/viewvc/llvm-project?rev=112005&view=rev
Log:
Use a smart pointer instead of delete.

Modified:
    cfe/trunk/lib/AST/RecordLayoutBuilder.cpp

Modified: cfe/trunk/lib/AST/RecordLayoutBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/RecordLayoutBuilder.cpp?rev=112005&r1=112004&r2=112005&view=diff
==============================================================================
--- cfe/trunk/lib/AST/RecordLayoutBuilder.cpp (original)
+++ cfe/trunk/lib/AST/RecordLayoutBuilder.cpp Tue Aug 24 19:32:14 2010
@@ -588,8 +588,6 @@
       NonVirtualSize(0), NonVirtualAlignment(8), PrimaryBase(0),
       PrimaryBaseIsVirtual(false), FirstNearlyEmptyVBase(0) { }
 
-  virtual ~RecordLayoutBuilder() { }
-
   void Layout(const RecordDecl *D);
   void Layout(const CXXRecordDecl *D);
   void Layout(const ObjCInterfaceDecl *D);
@@ -671,6 +669,8 @@
   void operator=(const RecordLayoutBuilder&); // DO NOT IMPLEMENT
 public:
   static const CXXMethodDecl *ComputeKeyFunction(const CXXRecordDecl *RD);
+
+  virtual ~RecordLayoutBuilder() { }
 };
 } // end anonymous namespace
 
@@ -1513,13 +1513,13 @@
     EmptySubobjectMap EmptySubobjects(*this, RD);
 
     // When compiling for Microsoft, use the special MS builder.
-    RecordLayoutBuilder *Builder;
+    llvm::OwningPtr<RecordLayoutBuilder> Builder;
     switch (Target.getCXXABI()) {
     default:
-      Builder = new RecordLayoutBuilder(*this, &EmptySubobjects);
+      Builder.reset(new RecordLayoutBuilder(*this, &EmptySubobjects));
       break;
     case CXXABI_Microsoft:
-      Builder = new MSRecordLayoutBuilder(*this, &EmptySubobjects);
+      Builder.reset(new MSRecordLayoutBuilder(*this, &EmptySubobjects));
     }
     Builder->Layout(RD);
 
@@ -1544,7 +1544,6 @@
                                   Builder->PrimaryBase,
                                   Builder->PrimaryBaseIsVirtual,
                                   Builder->Bases, Builder->VBases);
-    delete Builder;
   } else {
     RecordLayoutBuilder Builder(*this, /*EmptySubobjects=*/0);
     Builder.Layout(D);





More information about the cfe-commits mailing list