clang: clang::CodeGen::EHCleanupScope Class Reference (original ) (raw )A cleanup scope which generates the cleanup blocks lazily. More...
#include "[/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/CGCleanup.h](CGCleanup%5F8h%5Fsource.html)"
A cleanup scope which generates the cleanup blocks lazily.
Definition at line 243 of file CGCleanup.h .
◆ ~EHCleanupScope()
clang::CodeGen::EHCleanupScope::~EHCleanupScope ( )
delete
◆ AddAuxAllocas()
void clang::CodeGen::EHCleanupScope::AddAuxAllocas ( llvm::SmallVector < llvm::AllocaInst * > Allocas )
inline
◆ addBranchAfter()
void clang::CodeGen::EHCleanupScope::addBranchAfter ( llvm::ConstantInt * Index , llvm::BasicBlock * Block )
inline
Add a branch-after to this cleanup scope.
A branch-after is a branch from a point protected by this (normal) cleanup to a point in the normal cleanup scope immediately containing it. For example, for (;;) { A a; break; } contains a branch-after.
Branch-afters each have their own destination out of the cleanup, guaranteed distinct from anything else threaded through it. Therefore branch-afters usually force a switch after the cleanup.
Definition at line 436 of file CGCleanup.h .
References clang::Block .
◆ addBranchThrough()
bool clang::CodeGen::EHCleanupScope::addBranchThrough ( llvm::BasicBlock * Block )
inline
Add a branch-through to this cleanup scope.
A branch-through is a branch from a scope protected by this (normal) cleanup to an enclosing scope other than the immediately-enclosing normal cleanup scope.
In the following example, the branch through B's scope is a branch-through, while the branch through A's scope is a branch-after: for (;;) { A a; B b; break; }
All branch-throughs have a common destination out of the cleanup, one possibly shared with the fall-through. Therefore branch-throughs usually don't force a switch after the cleanup.
Returns
true if the branch-through was new to this scope
Definition at line 473 of file CGCleanup.h .
References clang::Block .
◆ classof()
static bool clang::CodeGen::EHCleanupScope::classof ( const EHScope * Scope )
inlinestatic
◆ Destroy()
void clang::CodeGen::EHCleanupScope::Destroy ( )
inline
◆ getActiveFlag()
Address clang::CodeGen::EHCleanupScope::getActiveFlag ( ) const
inline
◆ getAllocatedSize()
size_t clang::CodeGen::EHCleanupScope::getAllocatedSize ( ) const
inline
◆ getBranchAfterBlock()
llvm::BasicBlock * clang::CodeGen::EHCleanupScope::getBranchAfterBlock ( unsigned I ) const
inline
◆ getBranchAfterIndex()
llvm::ConstantInt * clang::CodeGen::EHCleanupScope::getBranchAfterIndex ( unsigned I ) const
inline
◆ getCleanup()◆ getCleanupBuffer()
void * clang::CodeGen::EHCleanupScope::getCleanupBuffer ( )
inline
◆ getCleanupSize()
size_t clang::CodeGen::EHCleanupScope::getCleanupSize ( ) const
inline
◆ getEnclosingNormalCleanup()◆ getFixupDepth()
unsigned clang::CodeGen::EHCleanupScope::getFixupDepth ( ) const
inline
◆ getNormalBlock()
llvm::BasicBlock * clang::CodeGen::EHCleanupScope::getNormalBlock ( ) const
inline
◆ getNumBranchAfters()
unsigned clang::CodeGen::EHCleanupScope::getNumBranchAfters ( ) const
inline
◆ getSizeForCleanupSize()
static size_t clang::CodeGen::EHCleanupScope::getSizeForCleanupSize ( size_t Size )
inlinestatic
Gets the size required for a lazy cleanup scope with the given cleanup-data requirements.
Definition at line 335 of file CGCleanup.h .
◆ hasActiveFlag()
bool clang::CodeGen::EHCleanupScope::hasActiveFlag ( ) const
inline
◆ hasBranches()
bool clang::CodeGen::EHCleanupScope::hasBranches ( ) const
inline
True if this cleanup scope has any branch-afters or branch-throughs.
Definition at line 423 of file CGCleanup.h .
◆ hasBranchThroughs()
bool clang::CodeGen::EHCleanupScope::hasBranchThroughs ( ) const
inline
Determines if this cleanup scope has any branch throughs.
Definition at line 478 of file CGCleanup.h .
◆ isActive()
bool clang::CodeGen::EHCleanupScope::isActive ( ) const
inline
◆ isEHCleanup()
bool clang::CodeGen::EHCleanupScope::isEHCleanup ( ) const
inline
◆ isLifetimeMarker()
bool clang::CodeGen::EHCleanupScope::isLifetimeMarker ( ) const
inline
◆ isNormalCleanup()
bool clang::CodeGen::EHCleanupScope::isNormalCleanup ( ) const
inline
◆ MarkEmitted()
void clang::CodeGen::EHCleanupScope::MarkEmitted ( )
inline
◆ setActive()
void clang::CodeGen::EHCleanupScope::setActive ( bool A )
inline
◆ setActiveFlag()
void clang::CodeGen::EHCleanupScope::setActiveFlag ( RawAddress Var )
inline
◆ setLifetimeMarker()
void clang::CodeGen::EHCleanupScope::setLifetimeMarker ( )
inline
◆ setNormalBlock()
void clang::CodeGen::EHCleanupScope::setNormalBlock ( llvm::BasicBlock * BB )
inline
◆ setTestFlagInEHCleanup()
void clang::CodeGen::EHCleanupScope::setTestFlagInEHCleanup ( )
inline
◆ setTestFlagInNormalCleanup()
void clang::CodeGen::EHCleanupScope::setTestFlagInNormalCleanup ( )
inline
◆ shouldTestFlagInEHCleanup()
bool clang::CodeGen::EHCleanupScope::shouldTestFlagInEHCleanup ( ) const
inline
◆ shouldTestFlagInNormalCleanup()
bool clang::CodeGen::EHCleanupScope::shouldTestFlagInNormalCleanup ( ) const
inline
The documentation for this class was generated from the following file: