diff options
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index d522bf29dc5..ac3afa8b755 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -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!"); |

