BuildCXXConstructExpr doesn't need to take an ASTContext.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79149 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 9432318..fab6bcf 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -1692,12 +1692,13 @@
   
   /// BuildCXXConstructExpr - Creates a complete call to a constructor,
   /// including handling of its default argument expressions.
-  Expr * BuildCXXConstructExpr(ASTContext &C,
-                               QualType DeclInitType,
-                               CXXConstructorDecl *Constructor,
-                               bool Elidable,
-                               Expr **Exprs, unsigned NumExprs);
+  Expr *BuildCXXConstructExpr(QualType DeclInitType,
+                              CXXConstructorDecl *Constructor,
+                              bool Elidable,
+                              Expr **Exprs, unsigned NumExprs);
 
+  Expr *BuildCXXCopyConstructExpr(Expr *Expr);
+  
   /// FinalizeVarWithDestructor - Prepare for calling destructor on the
   /// constructed variable.
   void FinalizeVarWithDestructor(VarDecl *VD, QualType DeclInitType);
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 889d5c9..d460950 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2379,12 +2379,11 @@
 
 /// BuildCXXConstructExpr - Creates a complete call to a constructor,
 /// including handling of its default argument expressions.
-Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
-                                  QualType DeclInitType, 
+Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType, 
                                   CXXConstructorDecl *Constructor,
                                   bool Elidable,
                                   Expr **Exprs, unsigned NumExprs) {
-  CXXConstructExpr *Temp = CXXConstructExpr::Create(C, DeclInitType, 
+  CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType, 
                                                     Constructor, 
                                                     Elidable, Exprs, NumExprs);
   // default arguments must be added to constructor call expression.
@@ -2403,7 +2402,7 @@
       for (unsigned I = 0, N = E->getNumTemporaries(); I != N; ++I)
         ExprTemporaries.push_back(E->getTemporary(I));
     }
-    Expr *Arg = CXXDefaultArgExpr::Create(C, FDecl->getParamDecl(j));
+    Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
     Temp->setArg(j, Arg);
   }
   return Temp;
@@ -2413,8 +2412,7 @@
                                         CXXConstructorDecl *Constructor,
                                         QualType DeclInitType, 
                                         Expr **Exprs, unsigned NumExprs) {
-  Expr *Temp = BuildCXXConstructExpr(Context,
-                                     DeclInitType, Constructor, 
+  Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor, 
                                      false, Exprs, NumExprs);  
   MarkDeclarationReferenced(VD->getLocation(), Constructor);
   Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp
index 20f6906..274893b 100644
--- a/lib/Sema/SemaExprCXX.cpp
+++ b/lib/Sema/SemaExprCXX.cpp
@@ -905,8 +905,8 @@
     // FIXME: Keep track of whether the copy constructor is elidable or not.
     bool Elidable = (isa<CallExpr>(From) || 
                      isa<CXXTemporaryObjectExpr>(From));
-    From = BuildCXXConstructExpr(Context, ToType, 
-                                 SCS.CopyConstructor, Elidable, &From, 1);
+    From = BuildCXXConstructExpr(ToType, SCS.CopyConstructor, 
+                                 Elidable, &From, 1);
     return false;
   }
 
@@ -1558,6 +1558,9 @@
 }
 
 Sema::OwningExprResult Sema::MaybeBindToTemporary(Expr *E) {
+  if (!Context.getLangOptions().CPlusPlus)
+    return Owned(E);
+  
   const RecordType *RT = E->getType()->getAs<RecordType>();
   if (!RT)
     return Owned(E);
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index 1e564ce..f734d93 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -178,8 +178,7 @@
           return true;
         bool Elidable = (isa<CallExpr>(Init) || 
                          isa<CXXTemporaryObjectExpr>(Init));
-        Init = BuildCXXConstructExpr(Context,
-                                     DeclType, Constructor, Elidable, &Init, 1);
+        Init = BuildCXXConstructExpr(DeclType, Constructor, Elidable, &Init, 1);
         Init = MaybeCreateCXXExprWithTemporaries(Init, /*DestroyTemps=*/true);
         return false;
       }
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 3be044c..51db216 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -1173,8 +1173,7 @@
                                            MultiExprArg Args) {
     unsigned NumArgs = Args.size();
     Expr **ArgsExprs = (Expr **)Args.release();
-    return getSema().Owned(SemaRef.BuildCXXConstructExpr(getSema().Context, T,
-                                                         Constructor,
+    return getSema().Owned(SemaRef.BuildCXXConstructExpr(T, Constructor,
                                                          IsElidable,
                                                          ArgsExprs,
                                                          NumArgs));