Reduce the amount of stack space we use in SmallVectors during
template instantiation. This helps reduce our stack footprint when
performing deep template instantiations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72582 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplateInstantiateExpr.cpp b/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 31bb91d..c312bb8 100644
--- a/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -575,7 +575,7 @@
 
 Sema::OwningExprResult 
 TemplateExprInstantiator::VisitInitListExpr(InitListExpr *E) {
-  ExprVector Inits(SemaRef);
+  ASTOwningVector<&ActionBase::DeleteExpr, 4> Inits(SemaRef);
   for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) {
     OwningExprResult Init = Visit(E->getInit(I));
     if (Init.isInvalid())
@@ -597,7 +597,7 @@
     return SemaRef.ExprError();
 
   // Instantiate the designators.
-  ExprVector ArrayExprs(SemaRef); // Expresses used in array designators
+  ASTOwningVector<&ActionBase::DeleteExpr, 4> ArrayExprs(SemaRef);
   for (DesignatedInitExpr::designators_iterator D = E->designators_begin(),
                                              DEnd = E->designators_end();
        D != DEnd; ++D) {