Add support for emitting cleanup blocks. Make EmitCompoundStatement emit cleanup blocks if necessary
llvm-svn: 64051
This commit is contained in:
@@ -521,3 +521,24 @@ llvm::BasicBlock *CodeGenFunction::CreateCleanupBlock()
|
||||
|
||||
return CleanupBlock;
|
||||
}
|
||||
|
||||
void CodeGenFunction::EmitCleanupBlocks(size_t OldCleanupStackSize)
|
||||
{
|
||||
assert(CleanupEntries.size() >= OldCleanupStackSize &&
|
||||
"Cleanup stack mismatch!");
|
||||
|
||||
while (CleanupEntries.size() > OldCleanupStackSize)
|
||||
EmitCleanupBlock();
|
||||
}
|
||||
|
||||
void CodeGenFunction::EmitCleanupBlock()
|
||||
{
|
||||
CleanupEntry &CE = CleanupEntries.back();
|
||||
|
||||
llvm::BasicBlock *CleanupBlock = CE.CleanupBlock;
|
||||
|
||||
CleanupEntries.pop_back();
|
||||
|
||||
EmitBlock(CleanupBlock);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user