clang 23.0.0git
clang::CIRGen::EHScopeStack Class Reference

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/CIR/CodeGen/EHScopeStack.h"

Classes

class  Cleanup
 Information for lazily generating a cleanup. More...
class  iterator
 A non-stable pointer into the scope stack. More...
class  stable_iterator
 A saved depth on the scope stack. More...

Public Types

enum  { ScopeStackAlignment = 8 }

Public Member Functions

 EHScopeStack ()=default
 ~EHScopeStack ()=default
template<class T, class... As>
void pushCleanup (CleanupKind kind, As... a)
 Push a lazily-created cleanup on the stack.
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 setCGF (CIRGenFunction *inCGF)
void popCleanup ()
 Pops a cleanup scope off the stack. This is private to CIRGenCleanup.cpp.
bool empty () const
 Determines whether the exception-scopes stack is empty.
bool requiresCatchOrCleanup () 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.
iterator find (stable_iterator savePoint) const
 Turn a stable reference to a scope depth into a unstable pointer to the EH stack.

Static Public Member Functions

static stable_iterator stable_end ()
 Create a stable reference to the bottom of the EH stack.

Friends

class CIRGenFunction

Detailed Description

A stack of scopes which respond to exceptions, including cleanups and catch blocks.

Definition at line 45 of file EHScopeStack.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
ScopeStackAlignment 

Definition at line 50 of file EHScopeStack.h.

Constructor & Destructor Documentation

◆ EHScopeStack()

clang::CIRGen::EHScopeStack::EHScopeStack ( )
default

◆ ~EHScopeStack()

clang::CIRGen::EHScopeStack::~EHScopeStack ( )
default

Member Function Documentation

◆ begin()

EHScopeStack::iterator clang::CIRGen::EHScopeStack::begin ( ) const
inline

Returns an iterator pointing to the innermost EH scope.

Definition at line 215 of file CIRGenCleanup.h.

◆ empty()

bool clang::CIRGen::EHScopeStack::empty ( ) const
inline

Determines whether the exception-scopes stack is empty.

Definition at line 215 of file EHScopeStack.h.

◆ end()

EHScopeStack::iterator clang::CIRGen::EHScopeStack::end ( ) const
inline

Returns an iterator pointing to the outermost EH scope.

Definition at line 219 of file CIRGenCleanup.h.

◆ find()

EHScopeStack::iterator clang::CIRGen::EHScopeStack::find ( stable_iterator savePoint) const
inline

Turn a stable reference to a scope depth into a unstable pointer to the EH stack.

Definition at line 224 of file CIRGenCleanup.h.

References clang::CIRGen::EHScopeStack::stable_iterator::isValid(), and stable_begin().

◆ getInnermostActiveNormalCleanup()

stable_iterator clang::CIRGen::EHScopeStack::getInnermostActiveNormalCleanup ( ) const

◆ getInnermostEHScope()

stable_iterator clang::CIRGen::EHScopeStack::getInnermostEHScope ( ) const
inline

Definition at line 231 of file EHScopeStack.h.

◆ getInnermostNormalCleanup()

stable_iterator clang::CIRGen::EHScopeStack::getInnermostNormalCleanup ( ) const
inline

Returns the innermost normal cleanup on the stack, or stable_end() if there are no normal cleanups.

Definition at line 226 of file EHScopeStack.h.

◆ hasNormalCleanups()

bool clang::CIRGen::EHScopeStack::hasNormalCleanups ( ) const
inline

Determines whether there are any normal cleanups on the stack.

Definition at line 220 of file EHScopeStack.h.

References stable_end().

◆ popCleanup()

void clang::CIRGen::EHScopeStack::popCleanup ( )

Pops a cleanup scope off the stack. This is private to CIRGenCleanup.cpp.

◆ pushCleanup()

template<class T, class... As>
void clang::CIRGen::EHScopeStack::pushCleanup ( CleanupKind kind,
As... a )
inline

Push a lazily-created cleanup on the stack.

Definition at line 183 of file EHScopeStack.h.

References kind, and ScopeStackAlignment.

◆ pushCleanupWithExtra()

template<class T, class... As>
T * clang::CIRGen::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 202 of file EHScopeStack.h.

References kind, and ScopeStackAlignment.

Referenced by enterNewDeleteCleanup().

◆ requiresCatchOrCleanup()

bool clang::CIRGen::EHScopeStack::requiresCatchOrCleanup ( ) const

◆ setCGF()

void clang::CIRGen::EHScopeStack::setCGF ( CIRGenFunction * inCGF)
inline

Definition at line 209 of file EHScopeStack.h.

References CIRGenFunction.

◆ stable_begin()

stable_iterator clang::CIRGen::EHScopeStack::stable_begin ( ) const
inline

Create a stable reference to the top of the EH stack.

The returned reference is valid until that scope is popped off the stack.

Definition at line 246 of file EHScopeStack.h.

Referenced by find().

◆ stable_end()

stable_iterator clang::CIRGen::EHScopeStack::stable_end ( )
inlinestatic

Create a stable reference to the bottom of the EH stack.

Definition at line 251 of file EHScopeStack.h.

Referenced by hasNormalCleanups().

◆ CIRGenFunction

friend class CIRGenFunction
friend

Definition at line 46 of file EHScopeStack.h.

References CIRGenFunction.

Referenced by CIRGenFunction, clang::CIRGen::EHScopeStack::Cleanup::emit(), and setCGF().


The documentation for this class was generated from the following files: