clang 20.0.0git
|
Retains information about a captured region. More...
#include "clang/Sema/ScopeInfo.h"
Public Member Functions | |
CapturedRegionScopeInfo (DiagnosticsEngine &Diag, Scope *S, CapturedDecl *CD, RecordDecl *RD, ImplicitParamDecl *Context, CapturedRegionKind K, unsigned OpenMPLevel, unsigned OpenMPCaptureLevel) | |
~CapturedRegionScopeInfo () override | |
StringRef | getRegionName () const |
A descriptive name for the kind of captured region this is. | |
Public Member Functions inherited from clang::sema::CapturingScopeInfo | |
CapturingScopeInfo (DiagnosticsEngine &Diag, ImplicitCaptureStyle Style) | |
void | addCapture (ValueDecl *Var, bool isBlock, bool isByref, bool isNested, SourceLocation Loc, SourceLocation EllipsisLoc, QualType CaptureType, bool Invalid) |
void | addVLATypeCapture (SourceLocation Loc, const VariableArrayType *VLAType, QualType CaptureType) |
void | addThisCapture (bool isNested, SourceLocation Loc, QualType CaptureType, bool ByCopy) |
bool | isCXXThisCaptured () const |
Determine whether the C++ 'this' is captured. | |
Capture & | getCXXThisCapture () |
Retrieve the capture of C++ 'this', if it has been captured. | |
bool | isCaptured (ValueDecl *Var) const |
Determine whether the given variable has been captured. | |
bool | isVLATypeCaptured (const VariableArrayType *VAT) const |
Determine whether the given variable-array type has been captured. | |
Capture & | getCapture (ValueDecl *Var) |
Retrieve the capture of the given variable, if it has been captured already. | |
const Capture & | getCapture (ValueDecl *Var) const |
Public Member Functions inherited from clang::sema::FunctionScopeInfo | |
FunctionScopeInfo (DiagnosticsEngine &Diag) | |
virtual | ~FunctionScopeInfo () |
bool | hasUnrecoverableErrorOccurred () const |
Determine whether an unrecoverable error has occurred within this function. | |
template<typename ExprT > | |
void | recordUseOfWeak (const ExprT *E, bool IsRead=true) |
Record that a weak object was accessed. | |
void | recordUseOfWeak (const ObjCMessageExpr *Msg, const ObjCPropertyDecl *Prop) |
void | markSafeWeakUse (const Expr *E) |
Record that a given expression is a "safe" access of a weak object (e.g. | |
const WeakObjectUseMap & | getWeakObjectUses () const |
void | setHasBranchIntoScope () |
void | setHasBranchProtectedScope () |
void | setHasIndirectGoto () |
void | setHasMustTail () |
void | setHasDroppedStmt () |
void | setHasOMPDeclareReductionCombiner () |
void | setHasFallthroughStmt () |
void | setUsesFPIntrin () |
void | setHasCXXTry (SourceLocation TryLoc) |
void | setHasObjCTry (SourceLocation TryLoc) |
void | setHasSEHTry (SourceLocation TryLoc) |
void | setHasVLA (SourceLocation VLALoc) |
bool | NeedsScopeChecking () const |
void | addBlock (const BlockDecl *BD) |
void | addByrefBlockVar (VarDecl *VD) |
bool | isCoroutine () const |
void | setFirstCoroutineStmt (SourceLocation Loc, StringRef Keyword) |
StringRef | getFirstCoroutineStmtKeyword () const |
void | setNeedsCoroutineSuspends (bool value=true) |
bool | hasInvalidCoroutineSuspends () const |
void | setCoroutineSuspends (Stmt *Initial, Stmt *Final) |
void | Clear () |
Clear out the information in this function scope, making it suitable for reuse. | |
bool | isPlainFunction () const |
Static Public Member Functions | |
static bool | classof (const FunctionScopeInfo *FSI) |
Static Public Member Functions inherited from clang::sema::CapturingScopeInfo | |
static bool | classof (const FunctionScopeInfo *FSI) |
Public Attributes | |
CapturedDecl * | TheCapturedDecl |
The CapturedDecl for this statement. | |
RecordDecl * | TheRecordDecl |
The captured record type. | |
Scope * | TheScope |
This is the enclosing scope of the captured region. | |
ImplicitParamDecl * | ContextParam |
The implicit parameter for the captured variables. | |
unsigned short | CapRegionKind |
The kind of captured region. | |
unsigned short | OpenMPLevel |
unsigned short | OpenMPCaptureLevel |
Public Attributes inherited from clang::sema::CapturingScopeInfo | |
ImplicitCaptureStyle | ImpCaptureStyle |
llvm::DenseMap< ValueDecl *, unsigned > | CaptureMap |
CaptureMap - A map of captured variables to (index+1) into Captures. | |
unsigned | CXXThisCaptureIndex = 0 |
CXXThisCaptureIndex - The (index+1) of the capture of 'this'; zero if 'this' is not captured. | |
SmallVector< Capture, 4 > | Captures |
Captures - The captures. | |
bool | HasImplicitReturnType = false |
QualType | ReturnType |
ReturnType - The target type of return statements in this context, or null if unknown. | |
Public Attributes inherited from clang::sema::FunctionScopeInfo | |
ScopeKind | Kind: 3 |
What kind of scope we are describing. | |
bool | HasBranchProtectedScope: 1 |
Whether this function contains a VLA, @try, try, C++ initializer, or anything else that can't be jumped past. | |
bool | HasBranchIntoScope: 1 |
Whether this function contains any switches or direct gotos. | |
bool | HasIndirectGoto: 1 |
Whether this function contains any indirect gotos. | |
bool | HasMustTail: 1 |
Whether this function contains any statement marked with [[clang::musttail]]. | |
bool | HasDroppedStmt: 1 |
Whether a statement was dropped because it was invalid. | |
bool | HasOMPDeclareReductionCombiner: 1 |
True if current scope is for OpenMP declare reduction combiner. | |
bool | HasFallthroughStmt: 1 |
Whether there is a fallthrough statement in this function. | |
bool | UsesFPIntrin: 1 |
Whether this function uses constrained floating point intrinsics. | |
bool | HasPotentialAvailabilityViolations: 1 |
Whether we make reference to a declaration that could be unavailable. | |
bool | ObjCShouldCallSuper: 1 |
A flag that is set when parsing a method that must call super's implementation, such as -dealloc , -finalize , or any method marked with __attribute__((objc_requires_super)) . | |
bool | ObjCIsDesignatedInit: 1 |
True when this is a method marked as a designated initializer. | |
bool | ObjCWarnForNoDesignatedInitChain: 1 |
This starts true for a method marked as designated initializer and will be set to false if there is an invocation to a designated initializer of the super class. | |
bool | ObjCIsSecondaryInit: 1 |
True when this is an initializer method not marked as a designated initializer within a class that has at least one initializer marked as a designated initializer. | |
bool | ObjCWarnForNoInitDelegation: 1 |
This starts true for a secondary initializer method and will be set to false if there is an invocation of an initializer on 'self'. | |
bool | NeedsCoroutineSuspends: 1 |
True only when this function has not already built, or attempted to build, the initial and final coroutine suspend points. | |
unsigned char | FirstCoroutineStmtKind: 2 |
An enumeration representing the kind of the first coroutine statement in the function. | |
bool | FoundImmediateEscalatingExpression: 1 |
Whether we found an immediate-escalating expression. | |
SourceLocation | FirstCoroutineStmtLoc |
First coroutine statement in the current function. | |
SourceLocation | FirstReturnLoc |
First 'return' statement in the current function. | |
SourceLocation | FirstCXXOrObjCTryLoc |
First C++ 'try' or ObjC @try statement in the current function. | |
enum clang::sema::FunctionScopeInfo:: { ... } | FirstTryType = Unknown |
SourceLocation | FirstSEHTryLoc |
First SEH '__try' statement in the current function. | |
SourceLocation | FirstVLALoc |
First use of a VLA within the current function. | |
SmallVector< SwitchInfo, 8 > | SwitchStack |
SwitchStack - This is the current set of active switch statements in the block. | |
SmallVector< ReturnStmt *, 4 > | Returns |
The list of return statements that occur within the function or block, if there is any chance of applying the named return value optimization, or if we need to infer a return type. | |
VarDecl * | CoroutinePromise = nullptr |
The promise object for this coroutine, if any. | |
llvm::SmallMapVector< ParmVarDecl *, Stmt *, 4 > | CoroutineParameterMoves |
A mapping between the coroutine function parameters that were moved to the coroutine frame, and their move statements. | |
std::pair< Stmt *, Stmt * > | CoroutineSuspends |
The initial and final coroutine suspend points. | |
SmallVector< CompoundScopeInfo, 4 > | CompoundScopes |
The stack of currently active compound statement scopes in the function. | |
llvm::SmallPtrSet< const BlockDecl *, 1 > | Blocks |
The set of blocks that are introduced in this function. | |
llvm::TinyPtrVector< VarDecl * > | ByrefBlockVars |
The set of __block variables that are introduced in this function. | |
SmallVector< PossiblyUnreachableDiag, 4 > | PossiblyUnreachableDiags |
A list of PartialDiagnostics created but delayed within the current function scope. | |
llvm::SmallPtrSet< const ParmVarDecl *, 8 > | ModifiedNonNullParams |
A list of parameters which have the nonnull attribute and are modified in the function. | |
llvm::SmallVector< AddrLabelExpr *, 4 > | AddrLabels |
The set of GNU address of label extension "&&label". | |
Additional Inherited Members | |
Public Types inherited from clang::sema::CapturingScopeInfo | |
enum | ImplicitCaptureStyle { ImpCap_None , ImpCap_LambdaByval , ImpCap_LambdaByref , ImpCap_Block , ImpCap_CapturedRegion } |
Public Types inherited from clang::sema::FunctionScopeInfo | |
enum | { TryLocIsCXX , TryLocIsObjC , Unknown } |
using | SwitchInfo = llvm::PointerIntPair< SwitchStmt *, 1, bool > |
A SwitchStmt, along with a flag indicating if its list of case statements is incomplete (because we dropped an invalid one while parsing). | |
using | WeakUseVector = SmallVector< WeakUseTy, 4 > |
Used to collect uses of a particular weak object in a function body. | |
using | WeakObjectUseMap = llvm::SmallDenseMap< WeakObjectProfileTy, WeakUseVector, 8, WeakObjectProfileTy::DenseMapInfo > |
Used to collect all uses of weak objects in a function body. | |
Protected Types inherited from clang::sema::FunctionScopeInfo | |
enum | ScopeKind { SK_Function , SK_Block , SK_Lambda , SK_CapturedRegion } |
Protected Member Functions inherited from clang::sema::CapturingScopeInfo | |
CapturingScopeInfo (const CapturingScopeInfo &)=default | |
Protected Member Functions inherited from clang::sema::FunctionScopeInfo | |
FunctionScopeInfo (const FunctionScopeInfo &)=default | |
Retains information about a captured region.
Definition at line 810 of file ScopeInfo.h.
|
inline |
Definition at line 830 of file ScopeInfo.h.
References clang::sema::FunctionScopeInfo::Kind, and clang::sema::FunctionScopeInfo::SK_CapturedRegion.
|
override |
Definition at line 262 of file ScopeInfo.cpp.
|
inlinestatic |
Definition at line 856 of file ScopeInfo.h.
References clang::sema::FunctionScopeInfo::Kind, and clang::sema::FunctionScopeInfo::SK_CapturedRegion.
|
inline |
A descriptive name for the kind of captured region this is.
Definition at line 844 of file ScopeInfo.h.
References CapRegionKind, clang::CR_Default, clang::CR_ObjCAtFinally, and clang::CR_OpenMP.
unsigned short clang::sema::CapturedRegionScopeInfo::CapRegionKind |
The kind of captured region.
Definition at line 825 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnCapturedRegionEnd(), buildCapturedStmtCaptureList(), captureInCapturedRegion(), and getRegionName().
ImplicitParamDecl* clang::sema::CapturedRegionScopeInfo::ContextParam |
The implicit parameter for the captured variables.
Definition at line 822 of file ScopeInfo.h.
unsigned short clang::sema::CapturedRegionScopeInfo::OpenMPCaptureLevel |
Definition at line 828 of file ScopeInfo.h.
Referenced by captureInCapturedRegion(), and clang::SemaOpenMP::isOpenMPCapturedDecl().
unsigned short clang::sema::CapturedRegionScopeInfo::OpenMPLevel |
Definition at line 827 of file ScopeInfo.h.
Referenced by buildCapturedStmtCaptureList(), captureInCapturedRegion(), and clang::SemaOpenMP::isOpenMPCapturedDecl().
CapturedDecl* clang::sema::CapturedRegionScopeInfo::TheCapturedDecl |
The CapturedDecl for this statement.
Definition at line 813 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnCapturedRegionEnd().
RecordDecl* clang::sema::CapturedRegionScopeInfo::TheRecordDecl |
The captured record type.
Definition at line 816 of file ScopeInfo.h.
Referenced by clang::Sema::ActOnCapturedRegionEnd(), clang::Sema::ActOnCapturedRegionError(), and buildCapturedStmtCaptureList().
Scope* clang::sema::CapturedRegionScopeInfo::TheScope |
This is the enclosing scope of the captured region.
Definition at line 819 of file ScopeInfo.h.