[cfe-commits] r79975 - in /cfe/trunk/lib: AST/DeclCXX.cpp Sema/Sema.h Sema/SemaDeclCXX.cpp Sema/SemaExprCXX.cpp Sema/SemaInit.cpp Sema/TreeTransform.h

Anders Carlsson andersca at mac.com
Mon Aug 24 22:12:04 PDT 2009


Author: andersca
Date: Tue Aug 25 00:12:04 2009
New Revision: 79975

URL: http://llvm.org/viewvc/llvm-project?rev=79975&view=rev
Log:
BuildCXXConstructExpr now returns an OwningExprResult.

Modified:
    cfe/trunk/lib/AST/DeclCXX.cpp
    cfe/trunk/lib/Sema/Sema.h
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
    cfe/trunk/lib/Sema/SemaExprCXX.cpp
    cfe/trunk/lib/Sema/SemaInit.cpp
    cfe/trunk/lib/Sema/TreeTransform.h

Modified: cfe/trunk/lib/AST/DeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp (original)
+++ cfe/trunk/lib/AST/DeclCXX.cpp Tue Aug 25 00:12:04 2009
@@ -454,7 +454,7 @@
   //   A default constructor for a class X is a constructor of class
   //   X that can be called without an argument.
   return (getNumParams() == 0) ||
-         (getNumParams() > 0 && getParamDecl(0)->getDefaultArg() != 0);
+         (getNumParams() > 0 && getParamDecl(0)->hasDefaultArg());
 }
 
 bool 

Modified: cfe/trunk/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/Sema.h (original)
+++ cfe/trunk/lib/Sema/Sema.h Tue Aug 25 00:12:04 2009
@@ -1752,16 +1752,16 @@
                                     QualType DeclInitType, 
                                     Expr **Exprs, unsigned NumExprs);
 
-  Expr *BuildCXXConstructExpr(QualType DeclInitType,
-                              CXXConstructorDecl *Constructor,
-                              Expr **Exprs, unsigned NumExprs);
+  OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+                                         CXXConstructorDecl *Constructor,
+                                         Expr **Exprs, unsigned NumExprs);
 
   /// BuildCXXConstructExpr - Creates a complete call to a constructor,
   /// including handling of its default argument expressions.
-  Expr *BuildCXXConstructExpr(QualType DeclInitType,
-                              CXXConstructorDecl *Constructor,
-                              bool Elidable,
-                              Expr **Exprs, unsigned NumExprs);
+  OwningExprResult BuildCXXConstructExpr(QualType DeclInitType,
+                                         CXXConstructorDecl *Constructor,
+                                         bool Elidable,
+                                         Expr **Exprs, unsigned NumExprs);
   
   /// BuildCXXDefaultArgExpr - Creates a CXXDefaultArgExpr, instantiating
   /// the default expr if needed.

Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Tue Aug 25 00:12:04 2009
@@ -2407,9 +2407,10 @@
   CopyConstructor->setUsed();
 }
 
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
-                                  CXXConstructorDecl *Constructor,
-                                  Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType,
+                            CXXConstructorDecl *Constructor,
+                            Expr **Exprs, unsigned NumExprs) {
   bool Elidable = false;
   
   // [class.copy]p15:
@@ -2435,10 +2436,12 @@
 
 /// BuildCXXConstructExpr - Creates a complete call to a constructor,
 /// including handling of its default argument expressions.
-Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType, 
-                                  CXXConstructorDecl *Constructor,
-                                  bool Elidable,
-                                  Expr **Exprs, unsigned NumExprs) {
+Sema::OwningExprResult
+Sema::BuildCXXConstructExpr(QualType DeclInitType, 
+                            CXXConstructorDecl *Constructor,
+                            bool Elidable,
+                            Expr **Exprs, 
+                            unsigned NumExprs) {
   CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType, 
                                                     Constructor, 
                                                     Elidable, Exprs, NumExprs);
@@ -2461,15 +2464,18 @@
     Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
     Temp->setArg(j, Arg);
   }
-  return Temp;
+  return Owned(Temp);
 }
 
 void Sema::InitializeVarWithConstructor(VarDecl *VD, 
                                         CXXConstructorDecl *Constructor,
                                         QualType DeclInitType, 
                                         Expr **Exprs, unsigned NumExprs) {
-  Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor, 
-                                     Exprs, NumExprs);  
+  OwningExprResult TempResult = BuildCXXConstructExpr(DeclInitType, Constructor, 
+                                                      Exprs, NumExprs);
+  assert(!TempResult.isInvalid() && "FIXME: Error handling");
+  
+  Expr *Temp = TempResult.takeAs<Expr>();
   MarkDeclarationReferenced(VD->getLocation(), Constructor);
   Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);
   VD->setInit(Context, Temp);

Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Tue Aug 25 00:12:04 2009
@@ -943,7 +943,13 @@
     // FIXME: When can ToType be a reference type?
     assert(!ToType->isReferenceType());
     
-    From = BuildCXXConstructExpr(ToType, SCS.CopyConstructor, &From, 1);
+    OwningExprResult FromResult = 
+      BuildCXXConstructExpr(ToType, SCS.CopyConstructor, &From, 1);
+    
+    if (FromResult.isInvalid())
+      return true;
+    
+    From = FromResult.takeAs<Expr>();
     return false;
   }
 

Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Tue Aug 25 00:12:04 2009
@@ -176,7 +176,13 @@
                                              DirectInit? IK_Direct : IK_Copy);
         if (!Constructor)
           return true;
-        Init = BuildCXXConstructExpr(DeclType, Constructor, &Init, 1);
+        
+        OwningExprResult InitResult = 
+          BuildCXXConstructExpr(DeclType, Constructor, &Init, 1);
+        if (InitResult.isInvalid())
+          return true;
+        
+        Init = InitResult.takeAs<Expr>();
         return false;
       }
       

Modified: cfe/trunk/lib/Sema/TreeTransform.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=79975&r1=79974&r2=79975&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/TreeTransform.h (original)
+++ cfe/trunk/lib/Sema/TreeTransform.h Tue Aug 25 00:12:04 2009
@@ -1380,10 +1380,8 @@
                                            MultiExprArg Args) {
     unsigned NumArgs = Args.size();
     Expr **ArgsExprs = (Expr **)Args.release();
-    return getSema().Owned(SemaRef.BuildCXXConstructExpr(T, Constructor,
-                                                         IsElidable,
-                                                         ArgsExprs,
-                                                         NumArgs));
+    return getSema().BuildCXXConstructExpr(T, Constructor, IsElidable,
+                                           ArgsExprs, NumArgs);
   }
 
   /// \brief Build a new object-construction expression.





More information about the cfe-commits mailing list