diff options
author | John McCall <rjmccall@apple.com> | 2010-08-13 21:20:51 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-08-13 21:20:51 +0000 |
commit | cd2d2b7814e0104ed41a8da159a06a8ca77b70d8 (patch) | |
tree | aded9c80726d4e0490a0ac59fc7d249ddb04ea85 /lib/CodeGen/CodeGenFunction.h | |
parent | 05eac86d547892847ca95b5350e28d681150fa68 (diff) |
Sketch out a framework for delaying the activation of a cleanup.
Not yet complete or used.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111044 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | lib/CodeGen/CodeGenFunction.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h index 325940d245..3d212b5f78 100644 --- a/lib/CodeGen/CodeGenFunction.h +++ b/lib/CodeGen/CodeGenFunction.h @@ -96,7 +96,16 @@ struct BranchFixup { llvm::BranchInst *InitialBranch; }; -enum CleanupKind { NormalAndEHCleanup, EHCleanup, NormalCleanup }; +enum CleanupKind { + EHCleanup = 0x1, + NormalCleanup = 0x2, + NormalAndEHCleanup = EHCleanup | NormalCleanup, + + InactiveCleanup = 0x4, + InactiveEHCleanup = EHCleanup | InactiveCleanup, + InactiveNormalCleanup = NormalCleanup | InactiveCleanup, + InactiveNormalAndEHCleanup = NormalAndEHCleanup | InactiveCleanup +}; /// A stack of scopes which respond to exceptions, including cleanups /// and catch blocks. @@ -520,6 +529,8 @@ public: /// process all branch fixups. void PopCleanupBlock(bool FallThroughIsBranchThrough = false); + void ActivateCleanup(EHScopeStack::stable_iterator Cleanup); + /// \brief Enters a new scope for capturing cleanups, all of which /// will be executed once the scope is exited. class RunCleanupsScope { |