Make the CXXDefaultArgExpr constructor protected and add a static Create function.

llvm-svn: 79013
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index c452c05..a8afa4f 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2394,7 +2394,7 @@
       for (unsigned I = 0, N = E->getNumTemporaries(); I != N; ++I)
         ExprTemporaries.push_back(E->getTemporary(I));
     }
-    Expr *Arg = new (C) CXXDefaultArgExpr(FDecl->getParamDecl(j));
+    Expr *Arg = CXXDefaultArgExpr::Create(C, FDecl->getParamDecl(j));
     Temp->setArg(j, Arg);
   }
   return Temp;
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index e9b1dd48..ced300b 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -2657,7 +2657,7 @@
       }
   
       // We already type-checked the argument, so we know it works.
-      Arg = new (Context) CXXDefaultArgExpr(FDecl->getParamDecl(i));
+      Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(i));
     }
     
     QualType ArgType = Arg->getType();
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index d7d2610..faf4d82 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -4531,7 +4531,7 @@
       QualType ProtoArgType = Proto->getArgType(i);
       IsError |= PerformCopyInitialization(Arg, ProtoArgType, "passing");
     } else {
-      Arg = new (Context) CXXDefaultArgExpr(Method->getParamDecl(i));
+      Arg = CXXDefaultArgExpr::Create(Context, Method->getParamDecl(i));
     }
 
     TheCall->setArg(i + 1, Arg);
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 6b1c12b..3be044c 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -1021,7 +1021,7 @@
   /// require any semantic analysis. Subclasses may override this routine to
   /// provide different behavior.
   OwningExprResult RebuildCXXDefaultArgExpr(ParmVarDecl *Param) {
-    return getSema().Owned(new (getSema().Context) CXXDefaultArgExpr(Param));
+    return getSema().Owned(CXXDefaultArgExpr::Create(getSema().Context, Param));
   }
 
   /// \brief Build a new C++ zero-initialization expression.