clang: clang::CodeGen::EHScopeStack Class Reference (original ) (raw )A stack of scopes which respond to exceptions, including cleanups and catch blocks. More...
#include "[/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/EHScopeStack.h](EHScopeStack%5F8h%5Fsource.html)"
Public Member Functions
EHScopeStack ()
~EHScopeStack ()
EHScopeStack (const EHScopeStack &)=delete
EHScopeStack &
operator= (const EHScopeStack &)=delete
template<class T , class... As>
void
pushCleanup (CleanupKind Kind , As... A)
Push a lazily-created cleanup on the stack.
template<class T , class... As>
void
pushCleanupTuple (CleanupKind Kind , std::tuple< As... > A)
Push a lazily-created cleanup on the stack. Tuple version.
template<class T , class... As>
T *
pushCleanupWithExtra (CleanupKind Kind , size_t N, As... A)
Push a cleanup with non-constant storage requirements on the stack.
void
pushCopyOfCleanup (CleanupKind Kind , const void *Cleanup , size_t Size)
void
setCGF (CodeGenFunction *inCGF)
void
popCleanup ()
Pops a cleanup scope off the stack. This is private to CGCleanup.cpp .
class EHCatchScope *
pushCatch (unsigned NumHandlers)
Push a set of catch handlers on the stack.
void
popCatch ()
Pops a catch scope off the stack. This is private to CGException.cpp .
class EHFilterScope *
pushFilter (unsigned NumFilters)
Push an exceptions filter on the stack.
void
popFilter ()
Pops an exceptions filter off the stack.
void
pushTerminate ()
Push a terminate handler on the stack.
void
popTerminate ()
Pops a terminate handler off the stack.
bool
containsOnlyLifetimeMarkers (stable_iterator Old) const
bool
empty () const
Determines whether the exception-scopes stack is empty.
bool
requiresLandingPad () const
bool
hasNormalCleanups () const
Determines whether there are any normal cleanups on the stack.
stable_iterator
getInnermostNormalCleanup () const
Returns the innermost normal cleanup on the stack, or stable_end() if there are no normal cleanups.
stable_iterator
getInnermostActiveNormalCleanup () const
stable_iterator
getInnermostEHScope () const
iterator
begin () const
Returns an iterator pointing to the innermost EH scope.
iterator
end () const
Returns an iterator pointing to the outermost EH scope.
stable_iterator
stable_begin () const
Create a stable reference to the top of the EH stack.
stable_iterator
stabilize (iterator it) const
Translates an iterator into a stable_iterator .
iterator
find (stable_iterator save) const
Turn a stable reference to a scope depth into a unstable pointer to the EH stack.
BranchFixup &
addBranchFixup ()
Add a branch fixup to the current cleanup scope.
unsigned
getNumBranchFixups () const
BranchFixup &
getBranchFixup (unsigned I)
void
popNullFixups ()
Pops lazily-removed fixups from the end of the list.
void
clearFixups ()
Clears the branch-fixups list.
A stack of scopes which respond to exceptions, including cleanups and catch blocks.
Definition at line 94 of file EHScopeStack.h .
◆ anonymous enum
clang::CodeGen::EHScopeStack::EHScopeStack ( )
inline
◆ ~EHScopeStack()
clang::CodeGen::EHScopeStack::~EHScopeStack ( )
inline
◆ EHScopeStack() [2/2]
clang::CodeGen::EHScopeStack::EHScopeStack ( const EHScopeStack & )
delete
◆ addBranchFixup()
BranchFixup & clang::CodeGen::EHScopeStack::addBranchFixup ( )
inline
◆ begin()◆ clearFixups()
void clang::CodeGen::EHScopeStack::clearFixups ( )
inline
◆ containsOnlyLifetimeMarkers()◆ empty()
bool clang::CodeGen::EHScopeStack::empty ( ) const
inline
◆ end()Returns an iterator pointing to the outermost EH scope.
Definition at line 619 of file CGCleanup.h .
◆ find()◆ getBranchFixup()◆ getInnermostActiveNormalCleanup()◆ getInnermostEHScope()
stable_iterator clang::CodeGen::EHScopeStack::getInnermostEHScope ( ) const
inline
◆ getInnermostNormalCleanup()
stable_iterator clang::CodeGen::EHScopeStack::getInnermostNormalCleanup ( ) const
inline
◆ getNumBranchFixups()
unsigned clang::CodeGen::EHScopeStack::getNumBranchFixups ( ) const
inline
◆ hasNormalCleanups()
bool clang::CodeGen::EHScopeStack::hasNormalCleanups ( ) const
inline
◆ operator=()◆ popCatch()
void clang::CodeGen::EHScopeStack::popCatch ( )
inline
◆ popCleanup()
void EHScopeStack::popCleanup
(
)
◆ popFilter()
void EHScopeStack::popFilter
(
)
◆ popNullFixups()
void EHScopeStack::popNullFixups
(
)
Pops lazily-removed fixups from the end of the list.
Remove any 'null' fixups on the stack.
This should only be called by procedures which have just popped a cleanup or resolved one or more fixups.
However, we can't pop more fixups than the fixup depth on the innermost normal cleanup, or else fixups that we try to add to that cleanup will end up in the wrong place. We could try to shrink fixup depths, but that's actually a lot of work for little benefit.
Definition at line 254 of file CGCleanup.cpp .
References find() , and hasNormalCleanups() .
Referenced by popCleanup() .
◆ popTerminate()
void clang::CodeGen::EHScopeStack::popTerminate ( )
inline
◆ pushCatch()◆ pushCleanup()template<class T , class... As>
void clang::CodeGen::EHScopeStack::pushCleanup ( CleanupKind Kind , As... A )
inline
◆ pushCleanupTuple()template<class T , class... As>
void clang::CodeGen::EHScopeStack::pushCleanupTuple ( CleanupKind Kind , std::tuple< As... > A )
inline
template<class T , class... As>
T * clang::CodeGen::EHScopeStack::pushCleanupWithExtra ( CleanupKind Kind , size_t N , As... A )
inline
Push a cleanup with non-constant storage requirements on the stack.
The cleanup type must provide an additional static method: static size_t getExtraSize(size_t); The argument to this method will be the value N, which will also be passed as the first argument to the constructor.
The data stored in the extra storage must obey the same restrictions as normal cleanup member data.
The pointer returned from this method is valid until the cleanup stack is modified.
Definition at line 317 of file EHScopeStack.h .
References Kind , ScopeStackAlignment , and clang::T .
Referenced by EnterNewDeleteCleanup() .
◆ pushCopyOfCleanup()
void clang::CodeGen::EHScopeStack::pushCopyOfCleanup ( CleanupKind Kind , const void * Cleanup , size_t Size )
inline
◆ pushFilter()◆ pushTerminate()
void EHScopeStack::pushTerminate
(
)
◆ requiresLandingPad()
bool EHScopeStack::requiresLandingPad
(
)
const
◆ setCGF()
void clang::CodeGen::EHScopeStack::setCGF ( CodeGenFunction * inCGF )
inline
◆ stabilize()◆ stable_begin()
stable_iterator clang::CodeGen::EHScopeStack::stable_begin ( ) const
inline
◆ stable_end()
static stable_iterator clang::CodeGen::EHScopeStack::stable_end ( )
inlinestatic
The documentation for this class was generated from the following files: