clang
17.0.0git
|
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it is a function designator) or an enum constant. More...
#include "clang/AST/Decl.h"
Public Member Functions | |
QualType | getType () const |
void | setType (QualType newType) |
bool | isWeak () const |
Determine whether this symbol is weakly-imported, or declared with the weak or weak-ref attr. More... | |
bool | isInitCapture () const |
Whether this variable is the implicit variable for a lambda init-capture. More... | |
VarDecl * | getPotentiallyDecomposedVarDecl () |
const VarDecl * | getPotentiallyDecomposedVarDecl () const |
![]() | |
IdentifierInfo * | getIdentifier () const |
Get the identifier that names this declaration, if there is one. More... | |
StringRef | getName () const |
Get the name of identifier for this declaration as a StringRef. More... | |
std::string | getNameAsString () const |
Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc). More... | |
virtual void | printName (raw_ostream &OS, const PrintingPolicy &Policy) const |
Pretty-print the unqualified name of this declaration. More... | |
void | printName (raw_ostream &OS) const |
Calls printName() with the ASTContext printing policy from the decl. More... | |
DeclarationName | getDeclName () const |
Get the actual, stored name of the declaration, which may be a special name. More... | |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. More... | |
void | printQualifiedName (raw_ostream &OS) const |
Returns a human-readable qualified name for this declaration, like A::B::i, for i being member of namespace A::B. More... | |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
void | printNestedNameSpecifier (raw_ostream &OS) const |
Print only the nested name specifier part of a fully-qualified name, including the '::' at the end. More... | |
void | printNestedNameSpecifier (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
Appends a human-readable name for this declaration into the given stream. More... | |
bool | declarationReplaces (NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. More... | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. More... | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. More... | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. More... | |
ReservedIdentifierStatus | isReserved (const LangOptions &LangOpts) const |
Determine if the declaration obeys the reserved identifier rules of the given language. More... | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. More... | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. More... | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. More... | |
bool | isExternallyVisible () const |
bool | isExternallyDeclarable () const |
Determine whether this declaration can be redeclared in a different translation unit. More... | |
Visibility | getVisibility () const |
Determines the visibility of this entity. More... | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. More... | |
std::optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. More... | |
bool | isLinkageValid () const |
True if the computed linkage is valid. More... | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. More... | |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More... | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. More... | |
void | setModulePrivate () |
Specify that this declaration was marked as being private to the module in which it was defined. More... | |
![]() | |
Decl ()=delete | |
Decl (const Decl &)=delete | |
Decl (Decl &&)=delete | |
Decl & | operator= (const Decl &)=delete |
Decl & | operator= (Decl &&)=delete |
virtual SourceRange | getSourceRange () const LLVM_READONLY |
Source range that this declaration covers. More... | |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
SourceLocation | getLocation () const |
void | setLocation (SourceLocation L) |
Kind | getKind () const |
const char * | getDeclKindName () const |
Decl * | getNextDeclInContext () |
const Decl * | getNextDeclInContext () const |
DeclContext * | getDeclContext () |
const DeclContext * | getDeclContext () const |
DeclContext * | getNonTransparentDeclContext () |
Return the non transparent context. More... | |
const DeclContext * | getNonTransparentDeclContext () const |
Decl * | getNonClosureContext () |
Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc. More... | |
const Decl * | getNonClosureContext () const |
TranslationUnitDecl * | getTranslationUnitDecl () |
const TranslationUnitDecl * | getTranslationUnitDecl () const |
bool | isInAnonymousNamespace () const |
bool | isInStdNamespace () const |
bool | isFileContextDecl () const |
ASTContext & | getASTContext () const LLVM_READONLY |
const LangOptions & | getLangOpts () const LLVM_READONLY |
Helper to get the language options from the ASTContext. More... | |
void | setAccess (AccessSpecifier AS) |
AccessSpecifier | getAccess () const |
AccessSpecifier | getAccessUnsafe () const |
Retrieve the access specifier for this declaration, even though it may not yet have been properly set. More... | |
bool | hasAttrs () const |
void | setAttrs (const AttrVec &Attrs) |
AttrVec & | getAttrs () |
const AttrVec & | getAttrs () const |
void | dropAttrs () |
void | addAttr (Attr *A) |
attr_range | attrs () const |
attr_iterator | attr_begin () const |
attr_iterator | attr_end () const |
template<typename T > | |
void | dropAttr () |
template<typename T > | |
llvm::iterator_range< specific_attr_iterator< T > > | specific_attrs () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_begin () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_end () const |
template<typename T > | |
T * | getAttr () const |
template<typename T > | |
bool | hasAttr () const |
unsigned | getMaxAlignment () const |
getMaxAlignment - return the maximum alignment specified by attributes on this decl, 0 if there are none. More... | |
void | setInvalidDecl (bool Invalid=true) |
setInvalidDecl - Indicates the Decl had a semantic error. More... | |
bool | isInvalidDecl () const |
bool | isImplicit () const |
isImplicit - Indicates whether the declaration was implicitly generated by the implementation. More... | |
void | setImplicit (bool I=true) |
bool | isUsed (bool CheckUsedAttr=true) const |
Whether any (re-)declaration of the entity was used, meaning that a definition is required. More... | |
void | setIsUsed () |
Set whether the declaration is used, in the sense of odr-use. More... | |
void | markUsed (ASTContext &C) |
Mark the declaration used, in the sense of odr-use. More... | |
bool | isReferenced () const |
Whether any declaration of this entity was referenced. More... | |
bool | isThisDeclarationReferenced () const |
Whether this declaration was referenced. More... | |
void | setReferenced (bool R=true) |
bool | isTopLevelDeclInObjCContainer () const |
Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition. More... | |
void | setTopLevelDeclInObjCContainer (bool V=true) |
ExternalSourceSymbolAttr * | getExternalSourceSymbolAttr () const |
Looks on this and related declarations for an applicable external source symbol attribute. More... | |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. More... | |
bool | isInExportDeclContext () const |
Whether this declaration was exported in a lexical context. More... | |
bool | isInvisibleOutsideTheOwningModule () const |
bool | isDiscardedInGlobalModuleFragment () const |
FIXME: Implement discarding declarations actually in global module fragment. More... | |
bool | hasDefiningAttr () const |
Return true if this declaration has an attribute which acts as definition of the entity, such as 'alias' or 'ifunc'. More... | |
const Attr * | getDefiningAttr () const |
Return this declaration's defining attribute if it has one. More... | |
void | setFromASTFile () |
Set the FromASTFile flag. More... | |
void | setOwningModuleID (unsigned ID) |
Set the owning module ID. More... | |
AvailabilityResult | getAvailability (std::string *Message=nullptr, VersionTuple EnclosingVersion=VersionTuple(), StringRef *RealizedPlatform=nullptr) const |
Determine the availability of the given declaration. More... | |
VersionTuple | getVersionIntroduced () const |
Retrieve the version of the target platform in which this declaration was introduced. More... | |
bool | isDeprecated (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'deprecated'. More... | |
bool | isUnavailable (std::string *Message=nullptr) const |
Determine whether this declaration is marked 'unavailable'. More... | |
bool | isWeakImported () const |
Determine whether this is a weak-imported symbol. More... | |
bool | canBeWeakImported (bool &IsDefinition) const |
Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute. More... | |
bool | isFromASTFile () const |
Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed. More... | |
unsigned | getGlobalID () const |
Retrieve the global declaration ID associated with this declaration, which specifies where this Decl was loaded from. More... | |
unsigned | getOwningModuleID () const |
Retrieve the global ID of the module that owns this particular declaration. More... | |
Module * | getImportedOwningModule () const |
Get the imported owning module, if this decl is from an imported (non-local) module. More... | |
Module * | getLocalOwningModule () const |
Get the local owning module, if known. More... | |
void | setLocalOwningModule (Module *M) |
bool | hasOwningModule () const |
Is this declaration owned by some module? More... | |
Module * | getOwningModule () const |
Get the module that owns this declaration (for visibility purposes). More... | |
Module * | getOwningModuleForLinkage (bool IgnoreLinkage=false) const |
Get the module that owns this declaration for linkage purposes. More... | |
bool | isUnconditionallyVisible () const |
Determine whether this declaration is definitely visible to name lookup, independent of whether the owning module is visible. More... | |
bool | isReachable () const |
void | setVisibleDespiteOwningModule () |
Set that this declaration is globally visible, even if it came from a module that is not visible. More... | |
ModuleOwnershipKind | getModuleOwnershipKind () const |
Get the kind of module ownership for this declaration. More... | |
void | setModuleOwnershipKind (ModuleOwnershipKind MOK) |
Set whether this declaration is hidden from name lookup. More... | |
unsigned | getIdentifierNamespace () const |
bool | isInIdentifierNamespace (unsigned NS) const |
bool | hasTagIdentifierNamespace () const |
DeclContext * | getLexicalDeclContext () |
getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC). More... | |
const DeclContext * | getLexicalDeclContext () const |
virtual bool | isOutOfLine () const |
Determine whether this declaration is declared out of line (outside its semantic context). More... | |
void | setDeclContext (DeclContext *DC) |
setDeclContext - Set both the semantic and lexical DeclContext to DC. More... | |
void | setLexicalDeclContext (DeclContext *DC) |
bool | isTemplated () const |
Determine whether this declaration is a templated entity (whether it is. More... | |
unsigned | getTemplateDepth () const |
Determine the number of levels of template parameter surrounding this declaration. More... | |
bool | isDefinedOutsideFunctionOrMethod () const |
isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method. More... | |
bool | isInLocalScopeForInstantiation () const |
Determine whether a substitution into this declaration would occur as part of a substitution into a dependent local scope. More... | |
const DeclContext * | getParentFunctionOrMethod (bool LexicalParent=false) const |
If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null. More... | |
DeclContext * | getParentFunctionOrMethod (bool LexicalParent=false) |
virtual Decl * | getCanonicalDecl () |
Retrieves the "canonical" declaration of the given declaration. More... | |
const Decl * | getCanonicalDecl () const |
bool | isCanonicalDecl () const |
Whether this particular Decl is a canonical one. More... | |
redecl_range | redecls () const |
Returns an iterator range for all the redeclarations of the same decl. More... | |
redecl_iterator | redecls_begin () const |
redecl_iterator | redecls_end () const |
Decl * | getPreviousDecl () |
Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
const Decl * | getPreviousDecl () const |
Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More... | |
bool | isFirstDecl () const |
True if this is the first declaration in its redeclaration chain. More... | |
Decl * | getMostRecentDecl () |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
const Decl * | getMostRecentDecl () const |
Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More... | |
virtual Stmt * | getBody () const |
getBody - If this Decl represents a declaration for a body of code, such as a function or method definition, this method returns the top-level Stmt* of that body. More... | |
virtual bool | hasBody () const |
Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. More... | |
SourceLocation | getBodyRBrace () const |
getBodyRBrace - Gets the right brace of the body, if a body exists. More... | |
bool | isTemplateParameter () const |
isTemplateParameter - Determines whether this declaration is a template parameter. More... | |
bool | isTemplateParameterPack () const |
isTemplateParameter - Determines whether this declaration is a template parameter pack. More... | |
bool | isParameterPack () const |
Whether this declaration is a parameter pack. More... | |
bool | isTemplateDecl () const |
returns true if this declaration is a template More... | |
bool | isFunctionOrFunctionTemplate () const |
Whether this declaration is a function or function template. More... | |
TemplateDecl * | getDescribedTemplate () const |
If this is a declaration that describes some template, this method returns that template declaration. More... | |
const TemplateParameterList * | getDescribedTemplateParams () const |
If this is a declaration that describes some template or partial specialization, this returns the corresponding template parameter list. More... | |
FunctionDecl * | getAsFunction () LLVM_READONLY |
Returns the function itself, or the templated function if this is a function template. More... | |
const FunctionDecl * | getAsFunction () const |
void | setLocalExternDecl () |
Changes the namespace of this declaration to reflect that it's a function-local extern declaration. More... | |
bool | isLocalExternDecl () const |
Determine whether this is a block-scope declaration with linkage. More... | |
void | setObjectOfFriendDecl (bool PerformFriendInjection=false) |
Changes the namespace of this declaration to reflect that it's the object of a friend declaration. More... | |
FriendObjectKind | getFriendObjectKind () const |
Determines whether this declaration is the object of a friend declaration and, if so, what kind. More... | |
void | setNonMemberOperator () |
Specifies that this declaration is a C++ overloaded non-member. More... | |
void | print (raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | print (raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0, bool PrintInstantiation=false) const |
void | dump () const |
void | dumpColor () const |
void | dump (raw_ostream &Out, bool Deserialize=false, ASTDumpOutputFormat OutputFormat=ADOF_Default) const |
int64_t | getID () const |
const FunctionType * | getFunctionType (bool BlocksToo=true) const |
Looks through the Decl's underlying type to extract a FunctionType when possible. More... | |
Static Public Member Functions | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static unsigned | getIdentifierNamespaceForKind (Kind DK) |
static bool | isTagIdentifierNamespace (unsigned NS) |
static void | add (Kind k) |
static void | EnableStatistics () |
static void | PrintStats () |
static bool | classofKind (Kind K) |
static DeclContext * | castToDeclContext (const Decl *) |
static Decl * | castFromDeclContext (const DeclContext *) |
static void | printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0) |
Protected Member Functions | |
ValueDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, unsigned ID, std::size_t Extra=0) |
Allocate memory for a deserialized declaration. More... | |
void * | operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0) |
Allocate memory for a non-deserialized declaration. More... | |
Decl (Kind DK, DeclContext *DC, SourceLocation L) | |
Decl (Kind DK, EmptyShell Empty) | |
virtual | ~Decl () |
void | updateOutOfDate (IdentifierInfo &II) const |
Update a potentially out-of-date declaration. More... | |
Linkage | getCachedLinkage () const |
void | setCachedLinkage (Linkage L) const |
bool | hasCachedLinkage () const |
void | setModulePrivate () |
Specify that this declaration was marked as being private to the module in which it was defined. More... | |
bool | hasLocalOwningModuleStorage () const |
virtual Decl * | getNextRedeclarationImpl () |
Returns the next redeclaration or itself if this is the only decl. More... | |
virtual Decl * | getPreviousDeclImpl () |
Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
virtual Decl * | getMostRecentDeclImpl () |
Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
ASTMutationListener * | getASTMutationListener () const |
Additional Inherited Members | |
![]() | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
![]() | |
enum | Kind |
Lists the kind of concrete classes of Decl. More... | |
enum | IdentifierNamespace { IDNS_Label = 0x0001, IDNS_Tag = 0x0002, IDNS_Type = 0x0004, IDNS_Member = 0x0008, IDNS_Namespace = 0x0010, IDNS_Ordinary = 0x0020, IDNS_ObjCProtocol = 0x0040, IDNS_OrdinaryFriend = 0x0080, IDNS_TagFriend = 0x0100, IDNS_Using = 0x0200, IDNS_NonMemberOperator = 0x0400, IDNS_LocalExtern = 0x0800, IDNS_OMPReduction = 0x1000, IDNS_OMPMapper = 0x2000 } |
IdentifierNamespace - The different namespaces in which declarations may appear. More... | |
enum | ObjCDeclQualifier { OBJC_TQ_None = 0x0, OBJC_TQ_In = 0x1, OBJC_TQ_Inout = 0x2, OBJC_TQ_Out = 0x4, OBJC_TQ_Bycopy = 0x8, OBJC_TQ_Byref = 0x10, OBJC_TQ_Oneway = 0x20, OBJC_TQ_CSNullability = 0x40 } |
ObjCDeclQualifier - 'Qualifiers' written next to the return and parameter types in method declarations. More... | |
enum | ModuleOwnershipKind : unsigned { ModuleOwnershipKind::Unowned, ModuleOwnershipKind::Visible, ModuleOwnershipKind::VisibleWhenImported, ModuleOwnershipKind::ReachableWhenImported, ModuleOwnershipKind::ModulePrivate } |
The kind of ownership a declaration has, for visibility purposes. More... | |
enum | FriendObjectKind { FOK_None, FOK_Declared, FOK_Undeclared } |
using | attr_iterator = AttrVec::const_iterator |
using | attr_range = llvm::iterator_range< attr_iterator > |
using | redecl_range = llvm::iterator_range< redecl_iterator > |
![]() | |
llvm::PointerIntPair< Decl *, 3, ModuleOwnershipKind > | NextInContextAndBits |
The next declaration within the same lexical DeclContext. More... | |
unsigned | Access: 2 |
Access - Used by C++ decls for the access specifier. More... | |
unsigned | FromASTFile: 1 |
Whether this declaration was loaded from an AST file. More... | |
unsigned | IdentifierNamespace: 14 |
IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More... | |
unsigned | CacheValidAndLinkage: 3 |
If 0, we have not computed the linkage of this declaration. More... | |
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it is a function designator) or an enum constant.
|
inlineprotected |
Definition at line 734 of file Decl.h.
References classofKind(), and clang::Decl::getKind().
VarDecl * ValueDecl::getPotentiallyDecomposedVarDecl | ( | ) |
Definition at line 3252 of file DeclCXX.cpp.
Referenced by DoMarkPotentialCapture(), getPotentiallyDecomposedVarDecl(), and clang::Sema::tryCaptureVariable().
|
inline |
Definition at line 729 of file Decl.h.
References getPotentiallyDecomposedVarDecl().
|
inline |
Definition at line 714 of file Decl.h.
Referenced by clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnFinishCXXInClassMemberInitializer(), clang::Sema::ActOnFinishedFunctionDefinitionInOpenMPDeclareVariantScope(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnInitializerError(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::ActOnOpenMPAlignedClause(), clang::Sema::ActOnOpenMPCall(), clang::Sema::ActOnOpenMPCanonicalLoop(), clang::Sema::ActOnOpenMPCopyinClause(), clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPDeclareSimdDirective(), clang::Sema::ActOnOpenMPDetachClause(), clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPIdExpression(), clang::Sema::ActOnOpenMPIsDevicePtrClause(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPLoopInitialization(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPUseDevicePtrClause(), clang::Sema::ActOnParamDefaultArgument(), clang::Sema::ActOnParamDefaultArgumentError(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::addInitCapture(), clang::Sema::AddInitializerToDecl(), clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(), clang::Sema::AddKnownFunctionAttributes(), addX86InterruptAttrs(), clang::Sema::AddXConsumedAttr(), clang::ASTContext::adjustDeducedFunctionResultType(), clang::ASTContext::adjustExceptionSpec(), adjustFunctionTypeForInstantiation(), clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::interp::ByteCodeExprGen< Emitter >::allocateLocal(), clang::CodeGen::CGHLSLRuntime::annotateHLSLResource(), AreSpecialMemberFunctionsSameKind(), clang::CodeGen::CodeGenTypes::arrangeFunctionDeclaration(), clang::CodeGen::CodeGenTypes::arrangeObjCMethodDeclaration(), clang::Sema::AttachTypeConstraint(), clang::Sema::BuildAnonymousStructUnionMemberReference(), clang::Sema::BuildBlockForLambdaConversion(), clang::Sema::BuildCallExpr(), clang::Sema::BuildDeclaratorGroup(), buildDistanceFunc(), BuildImplicitBaseInitializer(), BuildImplicitMemberInitializer(), clang::Sema::BuildResolvedCallExpr(), clang::Sema::BuildVariableInstantiation(), clang::Sema::ImplicitExceptionSpecification::CalledDecl(), canCaptureVariableByCopy(), clang::canVarDeclThrow(), castArgToParamTypeIfNeeded(), clang::Sema::CheckAddressOfOperand(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitLastprivateConditional(), clang::ento::retaincountchecker::RetainCountChecker::checkBeginFunction(), clang::Sema::CheckCompleteDecompositionDeclaration(), clang::Sema::CheckConditionVariable(), CheckConstexprParameterTypes(), clang::Sema::checkDeclIsAllowedInOpenMPTarget(), clang::Sema::CheckEnumConstant(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), checkForArray(), CheckForReference(), clang::Sema::CheckFunctionTemplateSpecialization(), CheckICE(), CheckIdentityFieldAssignment(), clang::Sema::checkIllFormedTrivialABIStruct(), clang::Sema::CheckImplementationIvars(), clang::Sema::checkInitializerLifetime(), clang::Sema::CheckLiteralOperatorDeclaration(), checkLiteralOperatorTemplateParameterList(), clang::Sema::CheckMain(), clang::Sema::CheckMessageArgumentTypes(), clang::Sema::CheckMSVCRTEntryPoint(), clang::Sema::CheckNontrivialField(), clang::Sema::CheckOMPThreadPrivateDecl(), clang::Sema::checkOpenMPDeclareVariantFunction(), checkOpenMPLoop(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::CheckOverridingFunctionExceptionSpec(), clang::Sema::CheckOverridingFunctionReturnType(), checkSelfIvarsForInvariantViolation(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckVariableDeclarationType(), commonEmitCXXMemberOrOperatorCall(), computeBlockInfo(), clang::Sema::containsUnexpandedParameterPacks(), clang::CodeGen::convertFreeFunctionType(), clang::Sema::ConvertParamDefaultArgument(), create_dispatch_once(), create_dispatch_sync(), create_OSAtomicCompareAndSwap(), create_std_move_forward(), clang::CodeGen::CodeGenModule::CreateFunctionTypeMetadataForIcall(), clang::interp::Program::createGlobal(), createObjCPropertyGetter(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedUnaryOp(), createPrivatesRecordDecl(), clang::Sema::DeclClonePragmaWeak(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), clang::Sema::DeduceReturnType(), clang::Sema::DeduceVariableDeclarationType(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitCopyConstructor(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DefineImplicitMoveConstructor(), dereference(), clang::CodeGen::CGObjCRuntime::destroyCalleeDestroyedArguments(), clang::Sema::DiagnoseAutoDeductionFailure(), DiagnoseForRangeConstVariableCopies(), DiagnoseForRangeReferenceVariableCopies(), DiagnoseForRangeVariableCopies(), clang::ODRDiagsEmitter::diagnoseMismatch(), diagnoseOpenCLTypes(), diagnoseSubMismatchMethodParameters(), clang::Sema::diagnoseUnavailableAlignedAllocation(), clang::Sema::DiagnoseUnusedButSetDecl(), DoMarkPotentialCapture(), clang::CodeGen::CodeGenFunction::EmitAMDGPUDevicePrintfCallExpr(), clang::CodeGen::CodeGenFunction::EmitAndRegisterVariableArrayDimensions(), clang::CodeGen::CodeGenFunction::EmitAsanPrologueOrEpilogue(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), clang::CodeGen::CodeGenFunction::EmitAutoVarInit(), clang::CodeGen::CodeGenFunction::emitByrefStructureInit(), clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(), emitCXXDestructMethod(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(), clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorCall(), clang::CodeGen::CodeGenFunction::EmitCXXNewExpr(), clang::CodeGen::CGOpenMPRuntime::emitDeclareTargetVarDefinition(), EmitDeclDestroy(), EmitDeclInit(), EmitDeclInvariant(), emitDeclTargetVarDeclLValue(), clang::CodeGen::CodeGenFunction::EmitDelegateCallArg(), clang::CodeGen::CodeGenFunction::EmitDeleteCall(), clang::CodeGen::CodeGenFunction::EmitEndEHSpec(), clang::CodeGen::CGHLSLRuntime::emitEntryFunction(), clang::CodeGen::CodeGenFunction::EmitExprAsInit(), clang::CodeGen::CodeGenFunction::EmitForwardingCallToLambda(), EmitFunctionDeclPointer(), clang::CodeGen::CodeGenFunction::EmitFunctionProlog(), clang::CodeGen::CodeGenModule::EmitGlobal(), EmitGlobalVarDeclLValue(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), clang::CodeGen::CodeGenFunction::EmitLambdaBlockInvokeBody(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CGCXXABI::EmitMemberFunctionPointer(), clang::CodeGen::CodeGenFunction::EmitObjCBoxedExpr(), clang::CodeGen::CodeGenFunction::EmitObjCCollectionLiteral(), clang::CodeGen::CodeGenFunction::EmitOMPCopyinClause(), clang::CodeGen::CodeGenFunction::EmitOMPFirstprivateClause(), clang::CodeGen::CodeGenFunction::EmitOMPLastprivateClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPLinearClauseInit(), clang::CodeGen::CodeGenFunction::EmitOMPSharedLValue(), clang::CodeGen::CodeGenModule::EmitOMPThreadPrivateDecl(), clang::CodeGen::CodeGenFunction::EmitOMPUseDeviceAddrClause(), emitOutlinedFunctionPrologue(), emitParallelOrTeamsOutlinedFunction(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitRValueForField(), clang::CodeGen::CodeGenFunction::EmitStartEHSpec(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), emitStructGetterCall(), emitStructSetterCall(), clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtorCall(), clang::CodeGen::CGOpenMPRuntime::emitTargetCall(), clang::CodeGen::CGOpenMPRuntime::emitTaskOutlinedFunction(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedMapper(), clang::CodeGen::CGOpenMPRuntime::emitUserDefinedReduction(), clang::CodeGen::CodeGenFunction::EmitVarDecl(), clang::Sema::EndOpenMPDSABlock(), evaluateCDTSize(), clang::Sema::EvaluateImplicitExceptionSpec(), evaluateLValueAsAllocSize(), EvaluateVarDecl(), evaluateVarDeclInit(), clang::Sema::FinalizeDeclaration(), clang::Sema::FinalizeVarWithDestructor(), clang::Sema::FindAssociatedClassesAndNamespaces(), FindPossiblePrototype(), clang::Sema::FixOverloadedFunctionReference(), clang::ASTContext::forEachMultiversionedFunctionVersion(), FormatFunctionParameter(), FunctionsCorrespond(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicSetterCopyHelperFunction(), clang::CodeGen::CodeGenFunction::generateObjCGetterBody(), clang::CodeGen::CodeGenFunction::generateObjCSetterBody(), clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddressOfLocalVariable(), clang::CodeGen::CodeGenFunction::OMPBuilderCBHelpers::getAddressOfLocalVariable(), clang::CodeGen::CGOpenMPRuntime::getAddrOfDeclareTargetVar(), clang::CodeGen::CodeGenModule::GetAddrOfFunction(), clang::CodeGen::CodeGenModule::GetAddrOfGlobalVar(), clang::CodeGen::CodeGenModule::GetAddrOfUnnamedGlobalConstantDecl(), clang::MSGuidDecl::getAsAPValue(), getBaseAlignmentAndOffsetFromLValue(), clang::CodeGen::CodeGenFunction::getBlockByrefInfo(), getBlockCaptureStr(), getCallingConvMangling(), clang::FunctionDecl::getCallResultType(), getCaptureFieldType(), clang::CXXCatchStmt::getCaughtType(), getContainedDynamicClass(), getConversionOpReturnTyAsFunction(), clang::CXXConversionDecl::getConversionType(), clang::Sema::getCopyElisionCandidate(), clang::FunctionDecl::getDeclaredReturnType(), clang::Sema::getDecltypeForExpr(), clang::CFGImplicitDtor::getDestructorDecl(), clang::CXXMethodDecl::getDevirtualizedMethod(), clang::FunctionDecl::getEllipsisLoc(), clang::FunctionDecl::getExceptionSpecType(), clang::VarDecl::getFlexibleArrayInitChars(), GetFormalType(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVar(), clang::CodeGen::CGDebugInfo::getFunctionType(), clang::CodeGen::CodeGenTypes::GetFunctionTypeForVTable(), clang::CodeGen::TargetCodeGenInfo::getGlobalVarAddressSpace(), clang::CodeGen::CodeGenModule::GetGlobalVarAddressSpace(), clang::ento::ExprEngine::getInitialState(), clang::CXXRecordDecl::getLambdaStaticInvoker(), getLValueType(), clang::CXXMethodDecl::getMethodQualifiers(), clang::Sema::getMoreSpecializedTemplate(), clang::Sema::getNamedReturnInfo(), getNDSWDS(), clang::FunctionDecl::getNumParams(), getObjectType(), clang::CodeGen::CodeGenModule::getOMPAllocateAlignment(), clang::interp::Program::getOrCreateDummy(), clang::ParmVarDecl::getOriginalType(), clang::CodeGen::CodeGenFunction::getOverlapForFieldInit(), clang::CodeGen::CGOpenMPRuntimeGPU::getParameterAddress(), clang::CXXMethodDecl::getRefQualifier(), clang::FunctionDecl::getReturnType(), clang::ento::BlockCall::getRuntimeDefinition(), getSelfInitExpr(), clang::dataflow::DataflowAnalysisContext::getStableStorageLocation(), clang::CodeGen::CGCXXABI::getThisAddress(), clang::CXXMethodDecl::getThisObjectType(), clang::CXXMethodDecl::getThisType(), getTypeString(), getUnionInitName(), clang::ObjCIvarDecl::getUsageType(), getUsualDeleteParams(), clang::ento::VarRegion::getValueType(), clang::ento::NonParamVarRegion::getValueType(), clang::ento::ParamVarRegion::getValueType(), clang::ento::FieldRegion::getValueType(), clang::ento::ObjCIvarRegion::getValueType(), getVariableCategoryFromDecl(), clang::CodeGen::CodeGenModule::GetWeakRefReference(), handleTrivialCopy(), clang::ASTNodeImporter::hasAutoReturnTypeDeclaredInside(), hasCopyOrMoveCtorParam(), hasDefaultCXXMethodCC(), clang::VarDecl::hasDependentAlignment(), clang::CoroutineBodyStmt::hasDependentPromiseType(), clang::VarDecl::hasFlexibleArrayInit(), clang::VarDecl::hasLocalStorage(), clang::NonTypeTemplateParmDecl::hasPlaceholderTypeConstraint(), clang::ComparisonCategoryInfo::ValueInfo::hasValidIntValue(), haveSameParameterTypes(), clang::Sema::IdentifyCUDATarget(), clang::ASTNodeImporter::ImportDeclContext(), InitCatchParam(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), InitializationHasSideEffects(), clang::Sema::InstantiateExceptionSpec(), IsAcceptableNonMemberOperatorCandidate(), clang::FieldDecl::isAnonymousStructOrUnion(), clang::ento::isCapturedByReference(), clang::CXXMethodDecl::isConst(), clang::CodeGen::CodeGenFunction::IsConstructorDelegationValid(), clang::CXXConstructorDecl::isConvertingConstructor(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXConstructorDecl::isCopyConstructor(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), clang::ParmVarDecl::isDestroyedInCallee(), clang::FunctionDecl::isDestroyingOperatorDelete(), clang::ento::iterator::isEmplaceCall(), isEmptyField(), clang::ento::iterator::isEraseAfterCall(), clang::ento::iterator::isEraseCall(), clang::Sema::isExternalWithNoLinkageType(), isGRealloc(), clang::Sema::isInitListConstructor(), clang::ento::iterator::isInsertCall(), isIntegerLikeType(), isLayoutCompatible(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::CXXConstructorDecl::isMoveConstructor(), clang::ASTContext::isMSStaticDataMemberInlineDefinition(), isNoexcept(), clang::FunctionDecl::isNoReturn(), isObjCPointer(), clang::RecordDecl::isOrContainsUnion(), clang::Sema::IsOverload(), clang::NonTypeTemplateParmDecl::isPackExpansion(), clang::VarDecl::isParameterPack(), clang::ento::isPossiblyEscaped(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), isStandardRealloc(), isStdBuiltin(), IsStructurallyEquivalent(), isTrackedVar(), clang::VarDecl::isUsableInConstantExpressions(), isVarDeclStrongDefinition(), clang::FunctionDecl::isVariadic(), clang::CXXMethodDecl::isVolatile(), isZeroInitialized(), clang::FieldDecl::isZeroSize(), clang::CodeGen::CodeGenFunction::LoadObjCSelf(), clang::Sema::MarkFunctionReferenced(), MarkUsedTemplateParameters(), MarkVarDeclODRUsed(), clang::Sema::MatchTwoMethodDeclarations(), clang::Sema::MaybeAddCUDAConstantAttr(), MaybeDecrementCount(), clang::CodeGen::CGCXXABI::mayNeedDestruction(), clang::Sema::MergeVarDeclExceptionSpecs(), clang::Sema::MergeVarDeclTypes(), clang::VarDecl::mightBeUsableInConstantExpressions(), clang::VarDecl::needsDestruction(), clang::Sema::NoteHiddenVirtualMethods(), clang::Sema::NoteOverloadCandidate(), clang::ASTContext::ObjCMethodsAreEqual(), clang::ObjCMethodDecl::GetTypeFn::operator()(), clang::Sema::PerformImplicitConversion(), clang::TemplateParamObjectDecl::printAsExpr(), clang::TemplateParamObjectDecl::printAsInit(), clang::TemplateParamObjectDecl::Profile(), clang::UnnamedGlobalConstantDecl::Profile(), clang::Sema::RefersToMemberWithReducedAlignment(), RefersToRValueRef(), clang::CodeGen::CGOpenMPRuntime::registerTargetGlobalVariable(), clang::CodeGen::SanitizerMetadata::reportGlobal(), clang::Sema::ResolveAddressOfOverloadedFunction(), clang::Sema::ResolveExceptionSpec(), rewriteBuiltinFunctionDecl(), rewriteToObjCProperty(), clang::CodeGen::CodeGenFunction::setBlockContextParameter(), clang::DeclRefExpr::setDecl(), setImpliedPropertyAttributeForReadOnlyProperty(), clang::CodeGen::CodeGenModule::setKCFIType(), clang::MemberExpr::setMemberDecl(), setUsedBits(), clang::CodeGen::CodeGenFunction::OMPMapVars::setVarAddr(), clang::cross_tu::shouldImport(), clang::CXXNewExpr::shouldNullCheckAllocation(), shouldSkipNotingLambdaConversionDecl(), shouldTrackFirstArgument(), clang::Sema::SpecialMemberIsTrivial(), clang::CodeGen::CodeGenFunction::StartFunction(), clang::CodeGen::CodeGenFunction::StartThunk(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::TreeTransform< EnsureImmediateInvocationInDefaultArgs >::TransformFunctionTypeParams(), clang::CodeGen::CGOpenMPRuntimeGPU::translateParameter(), clang::Sema::tryCaptureOpenMPLambdas(), clang::Sema::tryCaptureVariable(), clang::CodeGen::CodeGenFunction::tryEmitAsConstant(), clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias(), clang::CodeGen::ConstantEmitter::tryEmitForInitializer(), clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit(), clang::CodeGen::CodeGenFunction::TypeOfSelfObject(), VariableCanNeverBeAConstantExpression(), clang::TextNodeDumper::VisitBindingDecl(), clang::ento::ExprEngine::VisitCXXCatchStmt(), clang::TextNodeDumper::VisitCXXConstructExpr(), clang::JSONNodeDumper::VisitCXXConstructExpr(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ento::ExprEngine::VisitCXXNewExpr(), clang::interp::ByteCodeExprGen< Emitter >::visitDecl(), clang::JSONNodeDumper::VisitEnumConstantDecl(), clang::TextNodeDumper::VisitEnumConstantDecl(), clang::JSONNodeDumper::VisitFieldDecl(), clang::TextNodeDumper::VisitFieldDecl(), clang::JSONNodeDumper::VisitFunctionDecl(), clang::TextNodeDumper::VisitFunctionDecl(), clang::ASTNodeImporter::VisitImplicitParamDecl(), clang::TextNodeDumper::VisitIndirectFieldDecl(), clang::ento::ExprEngine::VisitLambdaExpr(), visitLocalsRetainedByInitializer(), clang::interp::ByteCodeExprGen< Emitter >::VisitMemberExpr(), clang::JSONNodeDumper::VisitNonTypeTemplateParmDecl(), clang::TextNodeDumper::VisitNonTypeTemplateParmDecl(), clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl(), clang::JSONNodeDumper::VisitObjCIvarDecl(), clang::TextNodeDumper::VisitObjCIvarDecl(), clang::TextNodeDumper::VisitOMPCapturedExprDecl(), clang::TextNodeDumper::VisitOMPDeclareReductionDecl(), clang::consumed::ConsumedStmtVisitor::VisitParmVarDecl(), clang::ASTNodeImporter::VisitParmVarDecl(), clang::TextNodeDumper::VisitUnresolvedUsingValueDecl(), clang::ASTDeclWriter::VisitValueDecl(), clang::ASTDeclWriter::VisitVarDecl(), clang::interp::ByteCodeExprGen< Emitter >::visitVarDecl(), clang::JSONNodeDumper::VisitVarDecl(), clang::TextNodeDumper::VisitVarDecl(), clang::consumed::ConsumedStmtVisitor::VisitVarDecl(), clang::ASTDeclReader::VisitVarDeclImpl(), clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl(), and writeShouldKill().
bool ValueDecl::isInitCapture | ( | ) | const |
Whether this variable is the implicit variable for a lambda init-capture.
Only VarDecl can be init captures, but both VarDecl and BindingDecl can be captured.
Definition at line 5051 of file Decl.cpp.
Referenced by clang::Sema::checkInitializerLifetime().
bool ValueDecl::isWeak | ( | ) | const |
Determine whether this symbol is weakly-imported, or declared with the weak or weak-ref attr.
Definition at line 5045 of file Decl.cpp.
References clang::NamedDecl::getMostRecentDecl(), and clang::Decl::isWeakImported().
Referenced by checkForArray(), evaluateVarDeclInit(), HandleConversionToBool(), clang::CodeGen::CGCXXABI::isEmittedWithConstantInitializer(), clang::VarDecl::mightBeUsableInConstantExpressions(), and VariableCanNeverBeAConstantExpression().
|
inline |
Definition at line 715 of file Decl.h.
Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::AddInitializerToDecl(), clang::ASTContext::adjustDeducedFunctionResultType(), clang::ASTContext::adjustExceptionSpec(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckMessageArgumentTypes(), clang::Sema::CheckVariableDeclarationType(), clang::Sema::CompleteVarTemplateSpecializationDecl(), clang::Sema::DeduceVariableDeclarationType(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), clang::Sema::MergeVarDeclTypes(), clang::Sema::RebuildTemplateParamsInCurrentInstantiation(), clang::BindingDecl::setBinding(), clang::ASTDeclReader::VisitFunctionDecl(), clang::ASTDeclReader::VisitValueDecl(), and clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl().