Extend InitListExpr API/IMPL to support arbitrary add/remove (in support of the initializer rewrite I am doing).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50511 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index 264ef7b..67e39b6 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -254,14 +254,11 @@
 InitListExpr::InitListExpr(SourceLocation lbraceloc, 
                            Expr **initexprs, unsigned numinits,
                            SourceLocation rbraceloc)
-  : Expr(InitListExprClass, QualType())
-  , NumInits(numinits)
-  , LBraceLoc(lbraceloc)
-  , RBraceLoc(rbraceloc)
+  : Expr(InitListExprClass, QualType()),
+    LBraceLoc(lbraceloc), RBraceLoc(rbraceloc)
 {
-  InitExprs = new Expr*[numinits];
   for (unsigned i = 0; i != numinits; i++)
-    InitExprs[i] = initexprs[i];
+    InitExprs.push_back(initexprs[i]);
 }
 
 //===----------------------------------------------------------------------===//
@@ -1368,7 +1365,7 @@
   return reinterpret_cast<Stmt**>(&InitExprs[0]);
 }
 Stmt::child_iterator InitListExpr::child_end() {
-  return reinterpret_cast<Stmt**>(&InitExprs[NumInits]);
+  return reinterpret_cast<Stmt**>(&InitExprs[getNumInits()]);
 }
 
 // ObjCStringLiteral