]> granicus.if.org Git - clang/commitdiff
BuildCXXConstructExpr doesn't need to take an ASTContext.
authorAnders Carlsson <andersca@mac.com>
Sat, 15 Aug 2009 23:41:35 +0000 (23:41 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 15 Aug 2009 23:41:35 +0000 (23:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79149 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.h
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaInit.cpp
lib/Sema/TreeTransform.h

index 943231811be8d8ed37f07932d087a97e394c2b59..fab6bcf604078b13e0fe30691d9e683d185f0c2c 100644 (file)
@@ -1692,12 +1692,13 @@ public:
   
   /// 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);
index 889d5c91caa04405b61c5a7f505e2b11512bea3c..d460950824e1cc2720a79c9133d74279f1840245 100644 (file)
@@ -2379,12 +2379,11 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation,
 
 /// 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 @@ Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
       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 @@ void Sema::InitializeVarWithConstructor(VarDecl *VD,
                                         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);
index 20f69069a5a4ec75223dac24b58939b8d001d303..274893b99e9f4684762180a3a934936f087f912f 100644 (file)
@@ -905,8 +905,8 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
     // 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 @@ QualType Sema::FindCompositePointerType(Expr *&E1, Expr *&E2) {
 }
 
 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);
index 1e564ce45fbbab04fffc0d576f23a384740a792d..f734d9347ace5a1bfe7be4f3cbb8615152e67711 100644 (file)
@@ -178,8 +178,7 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType,
           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;
       }
index 3be044ca91bd8be058be7312347443a06a2f8a43..51db2167d9e02a6488b0c2ca4c6165f9e0e2d845 100644 (file)
@@ -1173,8 +1173,7 @@ public:
                                            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));