diff options
author | Anders Carlsson <andersca@mac.com> | 2009-11-20 17:27:56 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-11-20 17:27:56 +0000 |
commit | a36bf8f74180e834c6bf2db867796fd5338495ab (patch) | |
tree | 200b94dca207fc74f01852c963aa08adcbc8bbbc /lib/CodeGen/CGCXXTemp.cpp | |
parent | 600d47e8d5edc93a08ada8086db23d1d434ce583 (diff) |
Fix lifetime of conditional temporaries. Patch by Victor Zverovich!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89467 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGCXXTemp.cpp')
-rw-r--r-- | lib/CodeGen/CGCXXTemp.cpp | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/lib/CodeGen/CGCXXTemp.cpp b/lib/CodeGen/CGCXXTemp.cpp index 4768556f6b..06a5fa6f66 100644 --- a/lib/CodeGen/CGCXXTemp.cpp +++ b/lib/CodeGen/CGCXXTemp.cpp @@ -23,7 +23,7 @@ void CodeGenFunction::PushCXXTemporary(const CXXTemporary *Temporary, // Check if temporaries need to be conditional. If so, we'll create a // condition boolean, initialize it to 0 and - if (!ConditionalTempDestructionStack.empty()) { + if (ConditionalBranchLevel != 0) { CondPtr = CreateTempAlloca(llvm::Type::getInt1Ty(VMContext), "cond"); // Initialize it to false. This initialization takes place right after @@ -141,23 +141,3 @@ LValue CodeGenFunction::EmitCXXExprWithTemporariesLValue( return LV; } - -void -CodeGenFunction::PushConditionalTempDestruction() { - // Store the current number of live temporaries. - ConditionalTempDestructionStack.push_back(LiveTemporaries.size()); -} - -void CodeGenFunction::PopConditionalTempDestruction() { - size_t NumLiveTemporaries = ConditionalTempDestructionStack.back(); - ConditionalTempDestructionStack.pop_back(); - - // Pop temporaries. - while (LiveTemporaries.size() > NumLiveTemporaries) { - assert(LiveTemporaries.back().CondPtr && - "Conditional temporary must have a cond ptr!"); - - PopCXXTemporary(); - } -} - |