forked from OSchip/llvm-project
Add a simple RAII object, to be used for pushing a cleanup entry and make the insertion point be the cleanup block.
llvm-svn: 64048
This commit is contained in:
parent
723f55d697
commit
2cf8c44e43
|
@ -132,6 +132,25 @@ public:
|
|||
/// and return a BasicBlock where cleanup instructions can be added
|
||||
llvm::BasicBlock *CreateCleanupBlock();
|
||||
|
||||
/// CleanupScope - RAII object that will create a cleanup block and
|
||||
/// set the insert point to that block. When destructed, it sets the insert
|
||||
/// point to the previous block.
|
||||
class CleanupScope {
|
||||
CodeGenFunction& CGF;
|
||||
llvm::BasicBlock *CurBB;
|
||||
|
||||
public:
|
||||
CleanupScope(CodeGenFunction &cgf)
|
||||
: CGF(cgf), CurBB(CGF.Builder.GetInsertBlock()) {
|
||||
llvm::BasicBlock *FinallyBB = CGF.CreateCleanupBlock();
|
||||
CGF.Builder.SetInsertPoint(FinallyBB);
|
||||
}
|
||||
|
||||
~CleanupScope() {
|
||||
CGF.Builder.SetInsertPoint(CurBB);
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
/// LabelIDs - Track arbitrary ids assigned to labels for use in
|
||||
/// implementing the GCC address-of-label extension and indirect
|
||||
|
|
Loading…
Reference in New Issue