aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-08-13 21:20:51 +0000
committerJohn McCall <rjmccall@apple.com>2010-08-13 21:20:51 +0000
commitcd2d2b7814e0104ed41a8da159a06a8ca77b70d8 (patch)
treeaded9c80726d4e0490a0ac59fc7d249ddb04ea85 /lib/CodeGen/CodeGenFunction.h
parent05eac86d547892847ca95b5350e28d681150fa68 (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.h13
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 {