]> granicus.if.org Git - clang/commitdiff
Stop using CXXTempVarDecl and use CXXTemporary instead.
authorAnders Carlsson <andersca@mac.com>
Sat, 30 May 2009 21:05:25 +0000 (21:05 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 30 May 2009 21:05:25 +0000 (21:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72634 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExprCXX.h
lib/AST/ExprCXX.cpp
lib/Sema/Sema.h
lib/Sema/SemaExprCXX.cpp

index 05ce4eebbe5cb4d47c730cbc6a87301e48f2d180..b9bb588e676edf9b64f590e8b5e2a0c521ad2068 100644 (file)
@@ -22,7 +22,7 @@ namespace clang {
 
   class CXXConstructorDecl;
   class CXXDestructorDecl;
-  class CXXTempVarDecl;
+  class CXXTemporary;
 
 //===--------------------------------------------------------------------===//
 // C++ Expressions.
@@ -1010,12 +1010,12 @@ public:
 class CXXExprWithTemporaries : public Expr {
   Stmt *SubExpr;
     
-  CXXTempVarDecl **Decls;
-  unsigned NumDecls;
+  CXXTemporary **Temps;
+  unsigned NumTemps;
 
 public:
-  CXXExprWithTemporaries(Expr *subexpr, CXXTempVarDecl **decls, 
-                         unsigned numdecls);
+  CXXExprWithTemporaries(Expr *subexpr, CXXTemporary **temps, 
+                         unsigned numtemps);
   ~CXXExprWithTemporaries();
 
   const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
index 4b436063279883c7e7af32b6ded2e1dc5664a343..fccef01260da97d8620788e5c6e842d20c472277 100644 (file)
@@ -294,20 +294,20 @@ void CXXConstructExpr::Destroy(ASTContext &C) {
 }
 
 CXXExprWithTemporaries::CXXExprWithTemporaries(Expr *subexpr, 
-                                               CXXTempVarDecl **decls, 
-                                               unsigned numdecls)
+                                               CXXTemporary **temps, 
+                                               unsigned numtemps)
 : Expr(CXXExprWithTemporariesClass, subexpr->getType(),
        subexpr->isTypeDependent(), subexpr->isValueDependent()), 
-  SubExpr(subexpr), Decls(0), NumDecls(numdecls) {
-  if (NumDecls > 0) {
-    Decls = new CXXTempVarDecl*[NumDecls];
-    for (unsigned i = 0; i < NumDecls; ++i)
-      Decls[i] = decls[i];
+  SubExpr(subexpr), Temps(0), NumTemps(numtemps) {
+  if (NumTemps > 0) {
+    Temps = new CXXTemporary*[NumTemps];
+    for (unsigned i = 0; i < NumTemps; ++i)
+      Temps[i] = temps[i];
   }
 }
 
 CXXExprWithTemporaries::~CXXExprWithTemporaries() {
-  delete[] Decls;
+  delete[] Temps;
 }
 
 // CXXBindTemporaryExpr
index f7d66daf203423deff77dd4d080e5bdf5073bbb4..ecb17755ebe091171700b9689ec2bda75aea6bcf 100644 (file)
@@ -82,6 +82,7 @@ namespace clang {
   class ObjCContainerDecl;
   class BasePaths;
   struct MemberLookupCriteria;
+  class CXXTemporary;
 
 /// BlockSemaInfo - When a block is being parsed, this contains information
 /// about the block.  It is pointed to from Sema::CurBlock.
@@ -165,7 +166,7 @@ public:
 
   /// ExprTemporaries - This is the stack of temporaries that are created by 
   /// the current full expression.
-  llvm::SmallVector<CXXTempVarDecl*, 8> ExprTemporaries;
+  llvm::SmallVector<CXXTemporary*, 8> ExprTemporaries;
 
   /// CurFunctionNeedsScopeChecking - This is set to true when a function or
   /// ObjC method body contains a VLA or an ObjC try block, which introduce
index e9b68d7a5e08db83750c9e97f30c4581326ff60b..5d18c3c9f22f1a5e1540cb01b4084a837e4ce592 100644 (file)
@@ -203,11 +203,7 @@ Sema::ActOnCXXTypeConstructExpr(SourceRange TypeRange, TypeTy *TypeRep,
       if (!Constructor)
         return ExprError();
 
-      CXXTempVarDecl *Temp = CXXTempVarDecl::Create(Context, CurContext, Ty);
-      ExprTemporaries.push_back(Temp);
-      
       exprs.release();
-      
       Expr *E = new (Context) CXXTemporaryObjectExpr(Context, Constructor, 
                                                      Ty, TyBeginLoc, Exprs,
                                                      NumExprs, RParenLoc);