diff options
| author | Tim Shen <timshen91@gmail.com> | 2016-07-01 21:08:47 +0000 |
|---|---|---|
| committer | Tim Shen <timshen91@gmail.com> | 2016-07-01 21:08:47 +0000 |
| commit | 421119fd891cc68d76f28bd0d9afa78e222e3a04 (patch) | |
| tree | 302448290d3e873dde526799aa6ea76c20f0e689 /clang/lib/CodeGen/CGCleanup.cpp | |
| parent | 1bba89612b1a03bf3f35455e2ae1e2fb3af7849a (diff) | |
| download | bcm5719-llvm-421119fd891cc68d76f28bd0d9afa78e222e3a04.tar.gz bcm5719-llvm-421119fd891cc68d76f28bd0d9afa78e222e3a04.zip | |
[Temporary, Lifetime] Add lifetime marks for temporaries
With all MaterializeTemporaryExprs coming with a ExprWithCleanups, it's
easy to add correct lifetime.end marks into the right RunCleanupsScope.
Differential Revision: http://reviews.llvm.org/D20499
llvm-svn: 274385
Diffstat (limited to 'clang/lib/CodeGen/CGCleanup.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGCleanup.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGCleanup.cpp b/clang/lib/CodeGen/CGCleanup.cpp index 95333d0ddac..b3278b3b4fe 100644 --- a/clang/lib/CodeGen/CGCleanup.cpp +++ b/clang/lib/CodeGen/CGCleanup.cpp @@ -188,6 +188,7 @@ void *EHScopeStack::pushCleanup(CleanupKind Kind, size_t Size) { bool IsNormalCleanup = Kind & NormalCleanup; bool IsEHCleanup = Kind & EHCleanup; bool IsActive = !(Kind & InactiveCleanup); + bool IsLifetimeMarker = Kind & LifetimeMarker; EHCleanupScope *Scope = new (Buffer) EHCleanupScope(IsNormalCleanup, IsEHCleanup, @@ -200,6 +201,8 @@ void *EHScopeStack::pushCleanup(CleanupKind Kind, size_t Size) { InnermostNormalCleanup = stable_begin(); if (IsEHCleanup) InnermostEHScope = stable_begin(); + if (IsLifetimeMarker) + Scope->setLifetimeMarker(); return Scope->getCleanupBuffer(); } |

