clang 20.0.0git
|
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"
Public Member Functions | |
size_t | getAllocatedSize () const |
EHCleanupScope (bool isNormal, bool isEH, unsigned cleanupSize, unsigned fixupDepth, EHScopeStack::stable_iterator enclosingNormal, EHScopeStack::stable_iterator enclosingEH) | |
void | Destroy () |
void | AddAuxAllocas (llvm::SmallVector< llvm::AllocaInst * > Allocas) |
void | MarkEmitted () |
~EHCleanupScope ()=delete | |
bool | isNormalCleanup () const |
llvm::BasicBlock * | getNormalBlock () const |
void | setNormalBlock (llvm::BasicBlock *BB) |
bool | isEHCleanup () const |
bool | isActive () const |
void | setActive (bool A) |
bool | isLifetimeMarker () const |
void | setLifetimeMarker () |
bool | hasActiveFlag () const |
Address | getActiveFlag () const |
void | setActiveFlag (RawAddress Var) |
void | setTestFlagInNormalCleanup () |
bool | shouldTestFlagInNormalCleanup () const |
void | setTestFlagInEHCleanup () |
bool | shouldTestFlagInEHCleanup () const |
unsigned | getFixupDepth () const |
EHScopeStack::stable_iterator | getEnclosingNormalCleanup () const |
size_t | getCleanupSize () const |
void * | getCleanupBuffer () |
EHScopeStack::Cleanup * | getCleanup () |
bool | hasBranches () const |
True if this cleanup scope has any branch-afters or branch-throughs. | |
void | addBranchAfter (llvm::ConstantInt *Index, llvm::BasicBlock *Block) |
Add a branch-after to this cleanup scope. | |
unsigned | getNumBranchAfters () const |
Return the number of unique branch-afters on this scope. | |
llvm::BasicBlock * | getBranchAfterBlock (unsigned I) const |
llvm::ConstantInt * | getBranchAfterIndex (unsigned I) const |
bool | addBranchThrough (llvm::BasicBlock *Block) |
Add a branch-through to this cleanup scope. | |
bool | hasBranchThroughs () const |
Determines if this cleanup scope has any branch throughs. | |
Public Member Functions inherited from clang::CodeGen::EHScope | |
EHScope (Kind kind, EHScopeStack::stable_iterator enclosingEHScope) | |
Kind | getKind () const |
llvm::BasicBlock * | getCachedLandingPad () const |
void | setCachedLandingPad (llvm::BasicBlock *block) |
llvm::BasicBlock * | getCachedEHDispatchBlock () const |
void | setCachedEHDispatchBlock (llvm::BasicBlock *block) |
bool | hasEHBranches () const |
EHScopeStack::stable_iterator | getEnclosingEHScope () const |
Static Public Member Functions | |
static size_t | getSizeForCleanupSize (size_t Size) |
Gets the size required for a lazy cleanup scope with the given cleanup-data requirements. | |
static bool | classof (const EHScope *Scope) |
Additional Inherited Members | |
Public Types inherited from clang::CodeGen::EHScope | |
enum | Kind { Cleanup , Catch , Terminate , Filter } |
Protected Attributes inherited from clang::CodeGen::EHScope | |
union { | |
CommonBitFields CommonBits | |
CatchBitFields CatchBits | |
CleanupBitFields CleanupBits | |
FilterBitFields FilterBits | |
}; | |
A cleanup scope which generates the cleanup blocks lazily.
Definition at line 243 of file CGCleanup.h.
|
inline |
Definition at line 343 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
delete |
|
inline |
Definition at line 367 of file CGCleanup.h.
|
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.
|
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.
Definition at line 473 of file CGCleanup.h.
References clang::Block.
Definition at line 483 of file CGCleanup.h.
References clang::CodeGen::EHScope::Cleanup.
|
inline |
Definition at line 362 of file CGCleanup.h.
|
inline |
Definition at line 388 of file CGCleanup.h.
|
inline |
Definition at line 339 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 448 of file CGCleanup.h.
References getNumBranchAfters().
|
inline |
Definition at line 453 of file CGCleanup.h.
References getNumBranchAfters().
|
inline |
Definition at line 418 of file CGCleanup.h.
References getCleanupBuffer().
|
inline |
Definition at line 416 of file CGCleanup.h.
Referenced by getCleanup().
|
inline |
Definition at line 415 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 411 of file CGCleanup.h.
|
inline |
Definition at line 410 of file CGCleanup.h.
|
inline |
Definition at line 376 of file CGCleanup.h.
Referenced by destroyOptimisticNormalEntry().
|
inline |
Return the number of unique branch-afters on this scope.
Definition at line 444 of file CGCleanup.h.
Referenced by getBranchAfterBlock(), and getBranchAfterIndex().
Gets the size required for a lazy cleanup scope with the given cleanup-data requirements.
Definition at line 335 of file CGCleanup.h.
|
inline |
Definition at line 387 of file CGCleanup.h.
References clang::CodeGen::Address::isValid().
|
inline |
True if this cleanup scope has any branch-afters or branch-throughs.
Definition at line 423 of file CGCleanup.h.
|
inline |
Determines if this cleanup scope has any branch throughs.
Definition at line 478 of file CGCleanup.h.
|
inline |
Definition at line 381 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 379 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 384 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 375 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 371 of file CGCleanup.h.
|
inline |
Definition at line 382 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 391 of file CGCleanup.h.
References clang::CodeGen::RawAddress::getAlignment(), and clang::CharUnits::isOne().
|
inline |
Definition at line 385 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 377 of file CGCleanup.h.
|
inline |
Definition at line 403 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 396 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 406 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.
|
inline |
Definition at line 399 of file CGCleanup.h.
References clang::CodeGen::EHScope::CleanupBits.