]> granicus.if.org Git - clang/commitdiff
Remove some unused code from an experiment that I didn't like.
authorAnders Carlsson <andersca@mac.com>
Fri, 10 Jul 2009 23:48:10 +0000 (23:48 +0000)
committerAnders Carlsson <andersca@mac.com>
Fri, 10 Jul 2009 23:48:10 +0000 (23:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75315 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.h
lib/Sema/SemaExprCXX.cpp

index 10ea5146a0642c3b9e1279db29985130bd06c86c..9eb03e36b44aad652d48f164dc19bcb2d82999a2 100644 (file)
@@ -1650,17 +1650,6 @@ public:
   /// a non-trivial destructor, this will return CXXBindTemporaryExpr. Otherwise
   /// it simply returns the passed in expression.
   OwningExprResult MaybeBindToTemporary(Expr *E);
-
-  /// RemoveOutermostTemporaryBinding - Remove and destroy the outermost
-  /// CXXBindToTemporaryExpr if necessary. This is used when we want to not
-  /// destroy a temporary when a full expression has been evaluated. 
-  /// For example:
-  ///
-  /// const T& t = T(10, T());
-  ///
-  /// Here the outermost T needs to be destroyed when t goes out of scope, but
-  /// the innermost T needs to be destroyed when the expr has been evaluated.  
-  Expr *RemoveOutermostTemporaryBinding(Expr *E);
   
   /// InitializationKind - Represents which kind of C++ initialization
   /// [dcl.init] a routine is to perform.
index d522bf29dc5e01e04780f9ddd797acc9975ffaeb..ac3afa8b755a5fba0cfb42da26044c5827abf84e 100644 (file)
@@ -1579,47 +1579,6 @@ Sema::OwningExprResult Sema::MaybeBindToTemporary(Expr *E) {
   return Owned(CXXBindTemporaryExpr::Create(Context, Temp, E));
 }
 
-// FIXME: This doesn't handle casts yet.
-Expr *Sema::RemoveOutermostTemporaryBinding(Expr *E) {
-  const RecordType *RT = E->getType()->getAsRecordType();
-  if (!RT)
-    return E;
-  
-  CXXRecordDecl *RD = cast<CXXRecordDecl>(RT->getDecl());
-  if (RD->hasTrivialDestructor())
-    return E;
-  
-  /// The expr passed in must be a CXXExprWithTemporaries.
-  CXXExprWithTemporaries *TempExpr = dyn_cast<CXXExprWithTemporaries>(E);
-  if (!TempExpr)
-    return E;
-  
-  Expr *SubExpr = TempExpr->getSubExpr();
-  if (CXXBindTemporaryExpr *BE = dyn_cast<CXXBindTemporaryExpr>(SubExpr)) {
-    assert(BE->getTemporary() == 
-             TempExpr->getTemporary(TempExpr->getNumTemporaries() - 1) &&
-           "Found temporary is not last in list!");
-
-    Expr *BindSubExpr = BE->getSubExpr();
-    BE->setSubExpr(0);
-    
-    if (TempExpr->getNumTemporaries() == 1) {
-      // There's just one temporary left, so we don't need the TempExpr node.
-      TempExpr->Destroy(Context);
-      return BindSubExpr;
-    } else {
-      TempExpr->removeLastTemporary();
-      TempExpr->setSubExpr(BindSubExpr);
-      BE->Destroy(Context);
-    }
-    
-    return E;
-  } 
-  
-  // FIXME: We might need to handle other expressions here.
-  return E;
-}
-
 Expr *Sema::MaybeCreateCXXExprWithTemporaries(Expr *SubExpr, 
                                               bool ShouldDestroyTemps) {
   assert(SubExpr && "sub expression can't be null!");