|
clang
5.0.0
|
A cleanup scope which generates the cleanup blocks lazily. More...
Public Member Functions | |
| size_t | getAllocatedSize () const |
| EHCleanupScope (bool isNormal, bool isEH, bool isActive, unsigned cleanupSize, unsigned fixupDepth, EHScopeStack::stable_iterator enclosingNormal, EHScopeStack::stable_iterator enclosingEH) | |
| void | Destroy () |
| ~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 (Address 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. More... | |
| void | addBranchAfter (llvm::ConstantInt *Index, llvm::BasicBlock *Block) |
| Add a branch-after to this cleanup scope. More... | |
| unsigned | getNumBranchAfters () const |
| Return the number of unique branch-afters on this scope. More... | |
| 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. More... | |
| bool | hasBranchThroughs () const |
| Determines if this cleanup scope has any branch throughs. More... | |
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. More... | |
| static bool | classof (const EHScope *Scope) |
Additional Inherited Members | |
Public Types inherited from clang::CodeGen::EHScope | |
| enum | Kind { Cleanup, Catch, Terminate, Filter, PadEnd } |
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 233 of file CGCleanup.h.
|
inline |
Definition at line 288 of file CGCleanup.h.
|
delete |
|
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 373 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup().
|
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 410 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup().
Definition at line 420 of file CGCleanup.h.
References clang::CodeGen::EHScope::getKind().
|
inline |
Definition at line 306 of file CGCleanup.h.
Referenced by clang::CodeGen::EHScopeStack::popCleanup().
|
inline |
Definition at line 325 of file CGCleanup.h.
References clang::CharUnits::One().
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 284 of file CGCleanup.h.
Referenced by clang::CodeGen::EHScopeStack::iterator::operator++(), and clang::CodeGen::EHScopeStack::popCleanup().
|
inline |
Definition at line 385 of file CGCleanup.h.
References I.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 390 of file CGCleanup.h.
References I.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 355 of file CGCleanup.h.
|
inline |
Definition at line 353 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 352 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 348 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), clang::CodeGen::EHScopeStack::getInnermostActiveNormalCleanup(), clang::CodeGen::EHScopeStack::popCleanup(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and clang::CodeGen::CodeGenFunction::PopCleanupBlocks().
|
inline |
Definition at line 347 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 313 of file CGCleanup.h.
Referenced by CreateNormalEntry(), destroyOptimisticNormalEntry(), and clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Return the number of unique branch-afters on this scope.
Definition at line 381 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
Gets the size required for a lazy cleanup scope with the given cleanup-data requirements.
Definition at line 280 of file CGCleanup.h.
|
inline |
Definition at line 324 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::initFullExprCleanup().
|
inline |
True if this cleanup scope has any branch-afters or branch-throughs.
Definition at line 360 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and clang::CodeGen::CodeGenFunction::PopCleanupBlocks().
|
inline |
Determines if this cleanup scope has any branch throughs.
Definition at line 415 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 318 of file CGCleanup.h.
Referenced by clang::CodeGen::EHScopeStack::getInnermostActiveNormalCleanup(), and clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 316 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::initFullExprCleanup(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 321 of file CGCleanup.h.
Referenced by clang::CodeGen::EHScopeStack::containsOnlyLifetimeMarkers().
|
inline |
Definition at line 312 of file CGCleanup.h.
Referenced by CreateNormalEntry(), clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), clang::CodeGen::CodeGenFunction::initFullExprCleanup(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 319 of file CGCleanup.h.
|
inline |
Definition at line 328 of file CGCleanup.h.
References clang::CodeGen::Address::getAlignment(), clang::CodeGen::Address::getPointer(), and clang::CharUnits::isOne().
Referenced by clang::CodeGen::CodeGenFunction::initFullExprCleanup(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 322 of file CGCleanup.h.
|
inline |
Definition at line 314 of file CGCleanup.h.
Referenced by CreateNormalEntry().
|
inline |
Definition at line 340 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::initFullExprCleanup(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 333 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::initFullExprCleanup(), and SetupCleanupBlockActivation().
|
inline |
Definition at line 343 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
|
inline |
Definition at line 336 of file CGCleanup.h.
Referenced by clang::CodeGen::CodeGenFunction::PopCleanupBlock().
1.8.6