diff options
author | Anders Carlsson <andersca@mac.com> | 2010-03-30 03:14:41 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-03-30 03:14:41 +0000 |
commit | 44ec82b4a1597802f5bf17721481b8c265bc8dc5 (patch) | |
tree | cc475fb567863c6fdd4ed2d39c9180925eb9531b /lib/CodeGen/CGTemporaries.cpp | |
parent | 46bbf8d352fcd615420c5759a112ccd6e61516ad (diff) |
Introduce a CXXTemporariesCleanupScope RAII object and use it to cleanup the temporaries code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99865 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGTemporaries.cpp')
-rw-r--r-- | lib/CodeGen/CGTemporaries.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/CodeGen/CGTemporaries.cpp b/lib/CodeGen/CGTemporaries.cpp index bed843966e..6d38ab98de 100644 --- a/lib/CodeGen/CGTemporaries.cpp +++ b/lib/CodeGen/CGTemporaries.cpp @@ -127,15 +127,14 @@ CodeGenFunction::EmitCXXExprWithTemporaries(const CXXExprWithTemporaries *E, size_t CleanupStackDepth = CleanupEntries.size(); (void) CleanupStackDepth; - unsigned OldNumLiveTemporaries = LiveTemporaries.size(); - - RValue RV = EmitAnyExpr(E->getSubExpr(), AggLoc, IsAggLocVolatile, - /*IgnoreResult=*/false, IsInitializer); - - // Pop temporaries. - while (LiveTemporaries.size() > OldNumLiveTemporaries) - PopCXXTemporary(); + RValue RV; + + { + CXXTemporariesCleanupScope Scope(*this); + RV = EmitAnyExpr(E->getSubExpr(), AggLoc, IsAggLocVolatile, + /*IgnoreResult=*/false, IsInitializer); + } assert(CleanupEntries.size() == CleanupStackDepth && "Cleanup size mismatch!"); |