]> granicus.if.org Git - clang/commitdiff
Delete AST nodes, not just Decls.
authorTed Kremenek <kremenek@apple.com>
Tue, 20 May 2008 04:10:52 +0000 (04:10 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 20 May 2008 04:10:52 +0000 (04:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51298 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h
lib/AST/Stmt.cpp

index 3699ba1df704aaf82854be79784b7719447bf839..6f2ff83f5fd1540d73a918a0b21ec03240f4570e 100644 (file)
@@ -1116,8 +1116,8 @@ public:
                     QualType Type, SourceLocation BLoc, 
                     SourceLocation RP) : 
     Expr(ShuffleVectorExprClass, Type), BuiltinLoc(BLoc),
-    RParenLoc(RP), NumExprs(nexpr)
-  {
+    RParenLoc(RP), NumExprs(nexpr) {
+      
     SubExprs = new Expr*[nexpr];
     for (unsigned i = 0; i < nexpr; i++)
       SubExprs[i] = args[i];
@@ -1132,8 +1132,6 @@ public:
   static bool classof(const ShuffleVectorExpr *) { return true; }
   
   ~ShuffleVectorExpr() {
-    for (unsigned i = 0; i < NumExprs; i++)
-      delete SubExprs[i];
     delete [] SubExprs;
   }
   
index 993dda71c98c576329323513ef38b4caa81dd048..6ed996613553018e1d7372d8de7db1ddcdd1f251 100644 (file)
@@ -49,7 +49,10 @@ void Stmt::DestroyChildren(ASTContext& C) {
 
 void Stmt::Destroy(ASTContext& C) {
   DestroyChildren(C);
-  this->~Stmt();
+  // FIXME: Eventually all Stmts should be allocated with the allocator
+  //  in ASTContext, just like with Decls.
+  // this->~Stmt();
+  delete this;
 }
 
 void Stmt::PrintStats() {