forked from OSchip/llvm-project
Remove some unused code from an experiment that I didn't like.
llvm-svn: 75315
This commit is contained in:
parent
7cae42b07a
commit
9890fb5bf6
|
@ -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.
|
||||
|
|
|
@ -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!");
|
||||
|
|
Loading…
Reference in New Issue