A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html below:

clang: clang::FunctionDecl Class Reference

Represents a function declaration or definition. More...

#include "clang/AST/Decl.h"

enum   TemplatedKind {
  TK_NonTemplate , TK_FunctionTemplate , TK_MemberSpecialization , TK_FunctionTemplateSpecialization ,
  TK_DependentFunctionTemplateSpecialization , TK_DependentNonTemplate
}   The kind of templated function a FunctionDecl can be. More...
  using  redecl_range = redeclarable_base::redecl_range   using  redecl_iterator = redeclarable_base::redecl_iterator   using  param_iterator = MutableArrayRef< ParmVarDecl * >::iterator   using  param_const_iterator = ArrayRef< ParmVarDecl * >::const_iterator   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 class   ModuleOwnershipKind : unsigned char {
  Unowned , Visible , VisibleWhenImported , ReachableWhenImported ,
  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 >   using  decl_range = llvm::iterator_range< decl_iterator >   using  lookup_result = DeclContextLookupResult   using  lookup_iterator = lookup_result::iterator   using  lookups_range = llvm::iterator_range< all_lookups_iterator >   using  udir_iterator_base = llvm::iterator_adaptor_base< udir_iterator, lookup_iterator, typename lookup_iterator::iterator_category, UsingDirectiveDecl * >   using  udir_range = llvm::iterator_range< udir_iterator >   using  ddiag_range = llvm::iterator_range< DeclContext::ddiag_iterator >   using  redecl_range = llvm::iterator_range< redecl_iterator >   DeclarationNameInfo  getNameInfo () const   void  getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const override   Appends a human-readable name for this declaration into the given stream.
  void  setRangeEnd (SourceLocation E)   void  setDeclarationNameLoc (DeclarationNameLoc L)   SourceLocation  getEllipsisLoc () const   Returns the location of the ellipsis of a variadic function.
  SourceRange  getSourceRange () const override LLVM_READONLY   Source range that this declaration covers.
  bool  hasBody (const FunctionDecl *&Definition) const   Returns true if the function has a body.
  bool  hasBody () const override   Returns true if this Decl represents a declaration for a body of code, such as a function or method definition.
  bool  hasTrivialBody () const   Returns whether the function has a trivial body that does not require any specific codegen.
  bool  isDefined (const FunctionDecl *&Definition, bool CheckForPendingFriendDefinition=false) const   Returns true if the function has a definition that does not need to be instantiated.
  bool  isDefined () const   FunctionDeclgetDefinition ()   Get the definition for this declaration.
  const FunctionDeclgetDefinition () const   StmtgetBody (const FunctionDecl *&Definition) const   Retrieve the body (definition) of the function.
  StmtgetBody () const override   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.
  bool  isThisDeclarationADefinition () const   Returns whether this specific declaration of the function is also a definition that does not contain uninstantiated body.
  bool  isThisDeclarationInstantiatedFromAFriendDefinition () const   Determine whether this specific declaration of the function is a friend declaration that was instantiated from a function definition.
  bool  doesThisDeclarationHaveABody () const   Returns whether this specific declaration of the function has a body.
  void  setBody (Stmt *B)   void  setLazyBody (uint64_t Offset)   void  setDefaultedOrDeletedInfo (DefaultedOrDeletedFunctionInfo *Info)   DefaultedOrDeletedFunctionInfogetDefalutedOrDeletedInfo () const   bool  isVariadic () const   Whether this function is variadic.
  bool  isVirtualAsWritten () const   Whether this function is marked as virtual explicitly.
  void  setVirtualAsWritten (bool V)   State that this function is marked as virtual explicitly.
  bool  isPureVirtual () const   Whether this virtual function is pure, i.e.
  void  setIsPureVirtual (bool P=true)   bool  isLateTemplateParsed () const   Whether this templated function will be late parsed.
  void  setLateTemplateParsed (bool ILT=true)   State that this templated function will be late parsed.
  bool  isTrivial () const   Whether this function is "trivial" in some specialized C++ senses.
  void  setTrivial (bool IT)   bool  isTrivialForCall () const   void  setTrivialForCall (bool IT)   bool  isDefaulted () const   Whether this function is defaulted.
  void  setDefaulted (bool D=true)   bool  isExplicitlyDefaulted () const   Whether this function is explicitly defaulted.
  void  setExplicitlyDefaulted (bool ED=true)   State that this function is explicitly defaulted.
  SourceLocation  getDefaultLoc () const   void  setDefaultLoc (SourceLocation NewLoc)   bool  isUserProvided () const   True if this method is user-declared and was not deleted or defaulted on its first declaration.
  bool  isIneligibleOrNotSelected () const   void  setIneligibleOrNotSelected (bool II)   bool  hasImplicitReturnZero () const   Whether falling off this function implicitly returns null/zero.
  void  setHasImplicitReturnZero (bool IRZ)   State that falling off this function implicitly returns null/zero.
  bool  hasPrototype () const   Whether this function has a prototype, either because one was explicitly written or because it was "inherited" by merging a declaration without a prototype with a declaration that has a prototype.
  bool  hasWrittenPrototype () const   Whether this function has a written prototype.
  void  setHasWrittenPrototype (bool P=true)   State that this function has a written prototype.
  bool  hasInheritedPrototype () const   Whether this function inherited its prototype from a previous declaration.
  void  setHasInheritedPrototype (bool P=true)   State that this function inherited its prototype from a previous declaration.
  bool  isConstexpr () const   Whether this is a (C++11) constexpr function or constexpr constructor.
  void  setConstexprKind (ConstexprSpecKind CSK)   ConstexprSpecKind  getConstexprKind () const   bool  isConstexprSpecified () const   bool  isConsteval () const   void  setBodyContainsImmediateEscalatingExpressions (bool Set)   bool  BodyContainsImmediateEscalatingExpressions () const   bool  isImmediateEscalating () const   bool  isImmediateFunction () const   bool  instantiationIsPending () const   Whether the instantiation of this function is pending.
  void  setInstantiationIsPending (bool IC)   State that the instantiation of this function is pending.
  bool  usesSEHTry () const   Indicates the function uses __try.
  void  setUsesSEHTry (bool UST)   bool  isDeleted () const   Whether this function has been deleted.
  bool  isDeletedAsWritten () const   void  setDeletedAsWritten (bool D=true, StringLiteral *Message=nullptr)   bool  isMain () const   Determines whether this function is "main", which is the entry point into an executable program.
  bool  isMSVCRTEntryPoint () const   Determines whether this function is a MSVCRT user defined entry point.
  bool  isReservedGlobalPlacementOperator () const   Determines whether this operator new or delete is one of the reserved global placement operators: void *operator new(size_t, void *); void *operator new[](size_t, void *); void operator delete(void *, void *); void operator delete[](void *, void *); These functions have special behavior under [new.delete.placement]: These functions are reserved, a C++ program may not define functions that displace the versions in the Standard C++ library.
  bool  isReplaceableGlobalAllocationFunction (std::optional< unsigned > *AlignmentParam=nullptr, bool *IsNothrow=nullptr) const   Determines whether this function is one of the replaceable global allocation functions: void *operator new(size_t); void *operator new(size_t, const std::nothrow_t &) noexcept; void *operator new[](size_t); void *operator new[](size_t, const std::nothrow_t &) noexcept; void operator delete(void *) noexcept; void operator delete(void *, std::size_t) noexcept; [C++1y] void operator delete(void *, const std::nothrow_t &) noexcept; void operator delete[](void *) noexcept; void operator delete[](void *, std::size_t) noexcept; [C++1y] void operator delete[](void *, const std::nothrow_t &) noexcept; These functions have special behavior under C++1y [expr.new]: An implementation is allowed to omit a call to a replaceable global allocation function.
  bool  isInlineBuiltinDeclaration () const   Determine if this function provides an inline implementation of a builtin.
  bool  isDestroyingOperatorDelete () const   Determine whether this is a destroying operator delete.
  LanguageLinkage  getLanguageLinkage () const   Compute the language linkage.
  bool  isExternC () const   Determines whether this function is a function with external, C linkage.
  bool  isInExternCContext () const   Determines whether this function's context is, or is nested within, a C++ extern "C" linkage spec.
  bool  isInExternCXXContext () const   Determines whether this function's context is, or is nested within, a C++ extern "C++" linkage spec.
  bool  isGlobal () const   Determines whether this is a global function.
  bool  isNoReturn () const   Determines whether this function is known to be 'noreturn', through an attribute on its declaration or its type.
  bool  hasSkippedBody () const   True if the function was a definition but its body was skipped.
  void  setHasSkippedBody (bool Skipped=true)   bool  willHaveBody () const   True if this function will eventually have a body, once it's fully parsed.
  void  setWillHaveBody (bool V=true)   bool  isMultiVersion () const   True if this function is considered a multiversioned function.
  void  setIsMultiVersion (bool V=true)   Sets the multiversion state for this declaration and all of its redeclarations.
  void  setFriendConstraintRefersToEnclosingTemplate (bool V=true)   bool  FriendConstraintRefersToEnclosingTemplate () const   bool  isMemberLikeConstrainedFriend () const   Determine whether a function is a friend function that cannot be redeclared outside of its class, per C++ [temp.friend]p9.
  MultiVersionKind  getMultiVersionKind () const   Gets the kind of multiversioning attribute this declaration has.
  bool  isCPUDispatchMultiVersion () const   True if this function is a multiversioned dispatch function as a part of the cpu_specific/cpu_dispatch functionality.
  bool  isCPUSpecificMultiVersion () const   True if this function is a multiversioned processor specific function as a part of the cpu_specific/cpu_dispatch functionality.
  bool  isTargetMultiVersion () const   True if this function is a multiversioned dispatch function as a part of the target functionality.
  bool  isTargetMultiVersionDefault () const   True if this function is the default version of a multiversioned dispatch function as a part of the target functionality.
  bool  isTargetClonesMultiVersion () const   True if this function is a multiversioned dispatch function as a part of the target-clones functionality.
  bool  isTargetVersionMultiVersion () const   True if this function is a multiversioned dispatch function as a part of the target-version functionality.
  void  getAssociatedConstraints (SmallVectorImpl< const Expr * > &AC) const   Get the associated-constraints of this function declaration.
  StringLiteralgetDeletedMessage () const   Get the message that indicates why this function was deleted.
  void  setPreviousDeclaration (FunctionDecl *PrevDecl)   FunctionDeclgetCanonicalDecl () override   Retrieves the "canonical" declaration of the given declaration.
  const FunctionDeclgetCanonicalDecl () const   unsigned  getBuiltinID (bool ConsiderWrapperFunctions=false) const   Returns a value indicating whether this function corresponds to a builtin function.
  ArrayRef< ParmVarDecl * >  parameters () const   MutableArrayRef< ParmVarDecl * >  parameters ()   bool  param_empty () const   param_iterator  param_begin ()   param_iterator  param_end ()   param_const_iterator  param_begin () const   param_const_iterator  param_end () const   size_t  param_size () const   unsigned  getNumParams () const   Return the number of parameters this function must have based on its FunctionType.
  const ParmVarDeclgetParamDecl (unsigned i) const   ParmVarDeclgetParamDecl (unsigned i)   void  setParams (ArrayRef< ParmVarDecl * > NewParamInfo)   unsigned  getMinRequiredArguments () const   Returns the minimum number of arguments needed to call this function.
  unsigned  getMinRequiredExplicitArguments () const   Returns the minimum number of non-object arguments needed to call this function.
  bool  hasCXXExplicitFunctionObjectParameter () const   unsigned  getNumNonObjectParams () const   const ParmVarDeclgetNonObjectParameter (unsigned I) const   ParmVarDeclgetNonObjectParameter (unsigned I)   bool  hasOneParamOrDefaultArgs () const   Determine whether this function has a single parameter, or multiple parameters where all but the first have default arguments.
  FunctionTypeLoc  getFunctionTypeLoc () const   Find the source location information for how the type of this function was written.
  QualType  getReturnType () const   SourceRange  getReturnTypeSourceRange () const   Attempt to compute an informative source range covering the function return type.
  SourceRange  getParametersSourceRange () const   Attempt to compute an informative source range covering the function parameters, including the ellipsis of a variadic function.
  QualType  getDeclaredReturnType () const   Get the declared return type, which may differ from the actual return type if the return type is deduced.
  ExceptionSpecificationType  getExceptionSpecType () const   Gets the ExceptionSpecificationType as declared.
  SourceRange  getExceptionSpecSourceRange () const   Attempt to compute an informative source range covering the function exception specification, if any.
  QualType  getCallResultType () const   Determine the type of an expression that calls this function.
  StorageClass  getStorageClass () const   Returns the storage class as written in the source.
  void  setStorageClass (StorageClass SClass)   Sets the storage class as written in the source.
  bool  isInlineSpecified () const   Determine whether the "inline" keyword was specified for this function.
  void  setInlineSpecified (bool I)   Set whether the "inline" keyword was specified for this function.
  bool  UsesFPIntrin () const   Determine whether the function was declared in source context that requires constrained FP intrinsics.
  void  setUsesFPIntrin (bool I)   Set whether the function was declared in source context that requires constrained FP intrinsics.
  void  setImplicitlyInline (bool I=true)   Flag that this function is implicitly inline.
  bool  isInlined () const   Determine whether this function should be inlined, because it is either marked "inline" or "constexpr" or is a member function of a class that was defined in the class body.
  bool  isInlineDefinitionExternallyVisible () const   For an inline function definition in C, or for a gnu_inline function in C++, determine whether the definition will be externally visible.
  bool  isMSExternInline () const   The combination of the extern and inline keywords under MSVC forces the function to be required.
  bool  doesDeclarationForceExternallyVisibleDefinition () const   For a function declaration in C or C++, determine whether this declaration causes the definition to be externally visible.
  bool  isStatic () const   bool  isOverloadedOperator () const   Whether this function declaration represents an C++ overloaded operator, e.g., "operator+".
  OverloadedOperatorKind  getOverloadedOperator () const   getOverloadedOperator - Which C++ overloaded operator this function represents, if any.
  const IdentifierInfogetLiteralIdentifier () const   getLiteralIdentifier - The literal suffix identifier this function represents, if any.
  FunctionDeclgetInstantiatedFromMemberFunction () const   If this function is an instantiation of a member function of a class template specialization, retrieves the function from which it was instantiated.
  TemplatedKind  getTemplatedKind () const   What kind of templated function this is.
  MemberSpecializationInfogetMemberSpecializationInfo () const   If this function is an instantiation of a member function of a class template specialization, retrieves the member specialization information.
  void  setInstantiationOfMemberFunction (FunctionDecl *FD, TemplateSpecializationKind TSK)   Specify that this record is an instantiation of the member function FD.
  void  setInstantiatedFromDecl (FunctionDecl *FD)   Specify that this function declaration was instantiated from a FunctionDecl FD.
  FunctionDeclgetInstantiatedFromDecl () const   FunctionTemplateDeclgetDescribedFunctionTemplate () const   Retrieves the function template that is described by this function declaration.
  void  setDescribedFunctionTemplate (FunctionTemplateDecl *Template)   bool  isFunctionTemplateSpecialization () const   Determine whether this function is a function template specialization.
  FunctionTemplateSpecializationInfogetTemplateSpecializationInfo () const   If this function is actually a function template specialization, retrieve information about this function template specialization.
  bool  isImplicitlyInstantiable () const   Determines whether this function is a function template specialization or a member of a class template specialization that can be implicitly instantiated.
  bool  isTemplateInstantiation () const   Determines if the given function was instantiated from a function template.
  FunctionDeclgetTemplateInstantiationPattern (bool ForDefinition=true) const   Retrieve the function declaration from which this function could be instantiated, if it is an instantiation (rather than a non-template or a specialization, for example).
  FunctionTemplateDeclgetPrimaryTemplate () const   Retrieve the primary template that this function template specialization either specializes or was instantiated from.
  const TemplateArgumentListgetTemplateSpecializationArgs () const   Retrieve the template arguments used to produce this function template specialization from the primary template.
  const ASTTemplateArgumentListInfogetTemplateSpecializationArgsAsWritten () const   Retrieve the template argument list as written in the sources, if any.
  void  setFunctionTemplateSpecialization (FunctionTemplateDecl *Template, TemplateArgumentList *TemplateArgs, void *InsertPos, TemplateSpecializationKind TSK=TSK_ImplicitInstantiation, TemplateArgumentListInfo *TemplateArgsAsWritten=nullptr, SourceLocation PointOfInstantiation=SourceLocation())   Specify that this function declaration is actually a function template specialization.
  void  setDependentTemplateSpecialization (ASTContext &Context, const UnresolvedSetImpl &Templates, const TemplateArgumentListInfo *TemplateArgs)   Specifies that this function declaration is actually a dependent function template specialization.
  DependentFunctionTemplateSpecializationInfogetDependentSpecializationInfo () const   TemplateSpecializationKind  getTemplateSpecializationKind () const   Determine what kind of template instantiation this function represents.
  TemplateSpecializationKind  getTemplateSpecializationKindForInstantiation () const   Determine the kind of template specialization this function represents for the purpose of template instantiation.
  void  setTemplateSpecializationKind (TemplateSpecializationKind TSK, SourceLocation PointOfInstantiation=SourceLocation())   Determine what kind of template instantiation this function represents.
  SourceLocation  getPointOfInstantiation () const   Retrieve the (first) point of instantiation of a function template specialization or a member of a class template specialization.
  bool  isOutOfLine () const override   Determine whether this is or was instantiated from an out-of-line definition of a member function.
  unsigned  getMemoryFunctionKind () const   Identify a memory copying or setting function.
  unsigned  getODRHash ()   Returns ODRHash of the function.
  unsigned  getODRHash () const   Returns cached ODRHash of the function.
  FunctionEffectsRef  getFunctionEffects () const   TypeSourceInfogetTypeSourceInfo () const   void  setTypeSourceInfo (TypeSourceInfo *TI)   SourceLocation  getInnerLocStart () const   Return start of source range ignoring outer template declarations.
  void  setInnerLocStart (SourceLocation L)   SourceLocation  getOuterLocStart () const   Return start of source range taking into account any outer template declarations.
  SourceRange  getSourceRange () const override LLVM_READONLY   Source range that this declaration covers.
  SourceLocation  getBeginLoc () const LLVM_READONLY   NestedNameSpecifiergetQualifier () const   Retrieve the nested-name-specifier that qualifies the name of this declaration, if it was present in the source.
  NestedNameSpecifierLoc  getQualifierLoc () const   Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this declaration, if it was present in the source.
  void  setQualifierInfo (NestedNameSpecifierLoc QualifierLoc)   ExprgetTrailingRequiresClause ()   Get the constraint-expression introduced by the trailing requires-clause in the function/member declaration, or null if no requires-clause was provided.
  const ExprgetTrailingRequiresClause () const   void  setTrailingRequiresClause (Expr *TrailingRequiresClause)   unsigned  getNumTemplateParameterLists () const   TemplateParameterListgetTemplateParameterList (unsigned index) const   void  setTemplateParameterListsInfo (ASTContext &Context, ArrayRef< TemplateParameterList * > TPLists)   SourceLocation  getTypeSpecStartLoc () const   SourceLocation  getTypeSpecEndLoc () const   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.
  bool  isInitCapture () const   Whether this variable is the implicit variable for a lambda init-capture.
  VarDeclgetPotentiallyDecomposedVarDecl ()   const VarDeclgetPotentiallyDecomposedVarDecl () const   bool  isParameterPack () const   Determine whether this value is actually a function parameter pack, init-capture pack, or structured binding pack.
  IdentifierInfogetIdentifier () const   Get the identifier that names this declaration, if there is one.
  StringRef  getName () const   Get the name of identifier for this declaration as a StringRef.
  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).
  virtual void  printName (raw_ostream &OS, const PrintingPolicy &Policy) const   Pretty-print the unqualified name of this declaration.
  void  printName (raw_ostream &OS) const   Calls printName() with the ASTContext printing policy from the decl.
  DeclarationName  getDeclName () const   Get the actual, stored name of the declaration, which may be a special name.
  void  setDeclName (DeclarationName N)   Set the name of this declaration.
  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.
  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.
  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.
  bool  declarationReplaces (const 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.
  bool  hasLinkage () const   Determine whether this declaration has linkage.
  bool  isCXXClassMember () const   Determine whether this declaration is a C++ class member.
  bool  isCXXInstanceMember () const   Determine whether the given declaration is an instance member of a C++ class.
  ReservedIdentifierStatus  isReserved (const LangOptions &LangOpts) const   Determine if the declaration obeys the reserved identifier rules of the given language.
  Linkage  getLinkageInternal () const   Determine what kind of linkage this entity has.
  Linkage  getFormalLinkage () const   Get the linkage from a semantic point of view.
  bool  hasExternalFormalLinkage () const   True if this decl has external linkage.
  bool  isExternallyVisible () const   bool  isExternallyDeclarable () const   Determine whether this declaration can be redeclared in a different translation unit.
  Visibility  getVisibility () const   Determines the visibility of this entity.
  LinkageInfo  getLinkageAndVisibility () const   Determines the linkage and visibility of this entity.
  std::optional< VisibilitygetExplicitVisibility (ExplicitVisibilityKind kind) const   If visibility was explicitly specified for this declaration, return that visibility.
  bool  isLinkageValid () const   True if the computed linkage is valid.
  bool  hasLinkageBeenComputed () const   True if something has required us to compute the linkage of this declaration.
  bool  isPlaceholderVar (const LangOptions &LangOpts) const   NamedDeclgetUnderlyingDecl ()   Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl.
  const NamedDeclgetUnderlyingDecl () const   NamedDeclgetMostRecentDecl ()   const NamedDeclgetMostRecentDecl () const   ObjCStringFormatFamily  getObjCFStringFormattingFamily () const   bool  isModulePrivate () const   Whether this declaration was marked as being private to the module in which it was defined.
  void  setModulePrivate ()   Specify that this declaration was marked as being private to the module in which it was defined.
    Decl ()=delete     Decl (const Decl &)=delete     Decl (Decl &&)=delete   Decloperator= (const Decl &)=delete   Decloperator= (Decl &&)=delete   virtual SourceRange  getSourceRange () const LLVM_READONLY   Source range that this declaration covers.
  SourceLocation  getBeginLoc () const LLVM_READONLY   SourceLocation  getEndLoc () const LLVM_READONLY   SourceLocation  getLocation () const   void  setLocation (SourceLocation L)   Kind  getKind () const   const char *  getDeclKindName () const   DeclgetNextDeclInContext ()   const DeclgetNextDeclInContext () const   DeclContextgetDeclContext ()   const DeclContextgetDeclContext () const   DeclContextgetNonTransparentDeclContext ()   Return the non transparent context.
  const DeclContextgetNonTransparentDeclContext () const   DeclgetNonClosureContext ()   Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc.
  const DeclgetNonClosureContext () const   TranslationUnitDeclgetTranslationUnitDecl ()   const TranslationUnitDeclgetTranslationUnitDecl () const   bool  isInAnonymousNamespace () const   bool  isInStdNamespace () const   bool  isFileContextDecl () const   ASTContextgetASTContext () const LLVM_READONLY   const LangOptionsgetLangOpts () const LLVM_READONLY   Helper to get the language options from the ASTContext.
  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.
  bool  hasAttrs () const   void  setAttrs (const AttrVec &Attrs)   AttrVecgetAttrs ()   const AttrVecgetAttrs () const   void  dropAttrs ()   void  addAttr (Attr *A)   attr_range  attrs () const   attr_iterator  attr_begin () const   attr_iterator  attr_end () const   template<typename... Ts> void  dropAttrs ()   template<typename T > void  dropAttr ()   template<typename T > llvm::iterator_range< specific_attr_iterator< T > >  specific_attrs () const   template<typename T > specific_attr_iterator< Tspecific_attr_begin () const   template<typename T > specific_attr_iterator< Tspecific_attr_end () const   template<typename T > TgetAttr () 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.
  void  setInvalidDecl (bool Invalid=true)   setInvalidDecl - Indicates the Decl had a semantic error.
  bool  isInvalidDecl () const   bool  isImplicit () const   isImplicit - Indicates whether the declaration was implicitly generated by the implementation.
  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.
  void  setIsUsed ()   Set whether the declaration is used, in the sense of odr-use.
  void  markUsed (ASTContext &C)   Mark the declaration used, in the sense of odr-use.
  bool  isReferenced () const   Whether any declaration of this entity was referenced.
  bool  isThisDeclarationReferenced () const   Whether this declaration was referenced.
  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.
  void  setTopLevelDeclInObjCContainer (bool V=true)   ExternalSourceSymbolAttr *  getExternalSourceSymbolAttr () const   Looks on this and related declarations for an applicable external source symbol attribute.
  bool  isModulePrivate () const   Whether this declaration was marked as being private to the module in which it was defined.
  bool  isInExportDeclContext () const   Whether this declaration was exported in a lexical context.
  bool  isInvisibleOutsideTheOwningModule () const   bool  isInAnotherModuleUnit () const   Whether this declaration comes from another module unit.
  bool  isInCurrentModuleUnit () const   Whether this declaration comes from the same module unit being compiled.
  bool  shouldEmitInExternalSource () const   Whether the definition of the declaration should be emitted in external sources.
  bool  isFromExplicitGlobalModule () const   Whether this declaration comes from explicit global module.
  bool  isFromGlobalModule () const   Whether this declaration comes from global module.
  bool  isInNamedModule () const   Whether this declaration comes from a named module.
  bool  isFromHeaderUnit () const   Whether this declaration comes from a header unit.
  bool  hasDefiningAttr () const   Return true if this declaration has an attribute which acts as definition of the entity, such as 'alias' or 'ifunc'.
  const AttrgetDefiningAttr () const   Return this declaration's defining attribute if it has one.
  void  setFromASTFile ()   Set the FromASTFile flag.
  void  setOwningModuleID (unsigned ID)   Set the owning module ID.
  AvailabilityResult  getAvailability (std::string *Message=nullptr, VersionTuple EnclosingVersion=VersionTuple(), StringRef *RealizedPlatform=nullptr) const   Determine the availability of the given declaration.
  VersionTuple  getVersionIntroduced () const   Retrieve the version of the target platform in which this declaration was introduced.
  bool  isDeprecated (std::string *Message=nullptr) const   Determine whether this declaration is marked 'deprecated'.
  bool  isUnavailable (std::string *Message=nullptr) const   Determine whether this declaration is marked 'unavailable'.
  bool  isWeakImported () const   Determine whether this is a weak-imported symbol.
  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.
  bool  isFromASTFile () const   Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed.
  GlobalDeclID  getGlobalID () const   Retrieve the global declaration ID associated with this declaration, which specifies where this Decl was loaded from.
  unsigned  getOwningModuleID () const   Retrieve the global ID of the module that owns this particular declaration.
  ModulegetImportedOwningModule () const   Get the imported owning module, if this decl is from an imported (non-local) module.
  ModulegetLocalOwningModule () const   Get the local owning module, if known.
  void  setLocalOwningModule (Module *M)   bool  hasOwningModule () const   Is this declaration owned by some module?
  ModulegetOwningModule () const   Get the module that owns this declaration (for visibility purposes).
  ModulegetTopLevelOwningNamedModule () const   Get the top level owning named module that owns this declaration if any.
  ModulegetOwningModuleForLinkage () const   Get the module that owns this declaration for linkage purposes.
  bool  isUnconditionallyVisible () const   Determine whether this declaration is definitely visible to name lookup, independent of whether the owning module is visible.
  bool  isReachable () const   void  setVisibleDespiteOwningModule ()   Set that this declaration is globally visible, even if it came from a module that is not visible.
  ModuleOwnershipKind  getModuleOwnershipKind () const   Get the kind of module ownership for this declaration.
  void  setModuleOwnershipKind (ModuleOwnershipKind MOK)   Set whether this declaration is hidden from name lookup.
  unsigned  getIdentifierNamespace () const   bool  isInIdentifierNamespace (unsigned NS) const   bool  hasTagIdentifierNamespace () const   DeclContextgetLexicalDeclContext ()   getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC).
  const DeclContextgetLexicalDeclContext () const   virtual bool  isOutOfLine () const   Determine whether this declaration is declared out of line (outside its semantic context).
  void  setDeclContext (DeclContext *DC)   setDeclContext - Set both the semantic and lexical DeclContext to DC.
  void  setLexicalDeclContext (DeclContext *DC)   bool  isTemplated () const   Determine whether this declaration is a templated entity (whether it is.
  unsigned  getTemplateDepth () const   Determine the number of levels of template parameter surrounding this declaration.
  bool  isDefinedOutsideFunctionOrMethod () const   isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method.
  bool  isInLocalScopeForInstantiation () const   Determine whether a substitution into this declaration would occur as part of a substitution into a dependent local scope.
  const DeclContextgetParentFunctionOrMethod (bool LexicalParent=false) const   If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null.
  DeclContextgetParentFunctionOrMethod (bool LexicalParent=false)   virtual DeclgetCanonicalDecl ()   Retrieves the "canonical" declaration of the given declaration.
  const DeclgetCanonicalDecl () const   bool  isCanonicalDecl () const   Whether this particular Decl is a canonical one.
  redecl_range  redecls () const   Returns an iterator range for all the redeclarations of the same decl.
  redecl_iterator  redecls_begin () const   redecl_iterator  redecls_end () const   DeclgetPreviousDecl ()   Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.
  const DeclgetPreviousDecl () const   Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.
  bool  isFirstDecl () const   True if this is the first declaration in its redeclaration chain.
  DeclgetMostRecentDecl ()   Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).
  const DeclgetMostRecentDecl () const   Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).
  virtual StmtgetBody () 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.
  virtual bool  hasBody () const   Returns true if this Decl represents a declaration for a body of code, such as a function or method definition.
  SourceLocation  getBodyRBrace () const   getBodyRBrace - Gets the right brace of the body, if a body exists.
  bool  isTemplateParameter () const   isTemplateParameter - Determines whether this declaration is a template parameter.
  bool  isTemplateParameterPack () const   isTemplateParameter - Determines whether this declaration is a template parameter pack.
  bool  isParameterPack () const   Whether this declaration is a parameter pack.
  bool  isTemplateDecl () const   returns true if this declaration is a template
  bool  isFunctionOrFunctionTemplate () const   Whether this declaration is a function or function template.
  TemplateDeclgetDescribedTemplate () const   If this is a declaration that describes some template, this method returns that template declaration.
  const TemplateParameterListgetDescribedTemplateParams () const   If this is a declaration that describes some template or partial specialization, this returns the corresponding template parameter list.
  FunctionDeclgetAsFunction () LLVM_READONLY   Returns the function itself, or the templated function if this is a function template.
  const FunctionDeclgetAsFunction () const   void  setLocalExternDecl ()   Changes the namespace of this declaration to reflect that it's a function-local extern declaration.
  bool  isLocalExternDecl () const   Determine whether this is a block-scope declaration with linkage.
  void  setObjectOfFriendDecl (bool PerformFriendInjection=false)   Changes the namespace of this declaration to reflect that it's the object of a friend declaration.
  void  clearIdentifierNamespace ()   Clears the namespace of this declaration.
  FriendObjectKind  getFriendObjectKind () const   Determines whether this declaration is the object of a friend declaration and, if so, what kind.
  void  setNonMemberOperator ()   Specifies that this declaration is a C++ overloaded non-member.
  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 FunctionTypegetFunctionType (bool BlocksToo=true) const   Looks through the Decl's underlying type to extract a FunctionType when possible.
  bool  isFunctionPointerType () const     ~DeclContext ()   bool  hasValidDeclKind () const   Decl::Kind  getDeclKind () const   const char *  getDeclKindName () const   DeclContextgetParent ()   getParent - Returns the containing DeclContext.
  const DeclContextgetParent () const   DeclContextgetLexicalParent ()   getLexicalParent - Returns the containing lexical DeclContext.
  const DeclContextgetLexicalParent () const   DeclContextgetLookupParent ()   Find the parent context of this context that will be used for unqualified name lookup.
  const DeclContextgetLookupParent () const   ASTContextgetParentASTContext () const   bool  isClosure () const   const BlockDeclgetInnermostBlockDecl () const   Return this DeclContext if it is a BlockDecl.
  bool  isObjCContainer () const   bool  isFunctionOrMethod () const   bool  isLookupContext () const   Test whether the context supports looking up names.
  bool  isFileContext () const   bool  isTranslationUnit () const   bool  isRecord () const   bool  isRequiresExprBody () const   bool  isNamespace () const   bool  isStdNamespace () const   bool  isInlineNamespace () const   bool  isDependentContext () const   Determines whether this context is dependent on a template parameter.
  bool  isTransparentContext () const   isTransparentContext - Determines whether this context is a "transparent" context, meaning that the members declared in this context are semantically declared in the nearest enclosing non-transparent (opaque) context but are lexically declared in this context.
  bool  isExternCContext () const   Determines whether this context or some of its ancestors is a linkage specification context that specifies C linkage.
  const LinkageSpecDeclgetExternCContext () const   Retrieve the nearest enclosing C linkage specification context.
  bool  isExternCXXContext () const   Determines whether this context or some of its ancestors is a linkage specification context that specifies C++ linkage.
  bool  Equals (const DeclContext *DC) const   Determine whether this declaration context is equivalent to the declaration context DC.
  bool  Encloses (const DeclContext *DC) const   Determine whether this declaration context encloses the declaration context DC.
  DeclgetNonClosureAncestor ()   Find the nearest non-closure ancestor of this context, i.e.
  const DeclgetNonClosureAncestor () const   DeclContextgetNonTransparentContext ()   const DeclContextgetNonTransparentContext () const   DeclContextgetPrimaryContext ()   getPrimaryContext - There may be many different declarations of the same entity (including forward declarations of classes, multiple definitions of namespaces, etc.), each with a different set of declarations.
  const DeclContextgetPrimaryContext () const   DeclContextgetRedeclContext ()   getRedeclContext - Retrieve the context in which an entity conflicts with other entities of the same name, or where it is a redeclaration if the two entities are compatible.
  const DeclContextgetRedeclContext () const   DeclContextgetEnclosingNamespaceContext ()   Retrieve the nearest enclosing namespace context.
  const DeclContextgetEnclosingNamespaceContext () const   RecordDeclgetOuterLexicalRecordContext ()   Retrieve the outermost lexically enclosing record context.
  const RecordDeclgetOuterLexicalRecordContext () const   bool  InEnclosingNamespaceSetOf (const DeclContext *NS) const   Test if this context is part of the enclosing namespace set of the context NS, as defined in C++0x [namespace.def]p9.
  void  collectAllContexts (SmallVectorImpl< DeclContext * > &Contexts)   Collects all of the declaration contexts that are semantically connected to this declaration context.
  decl_range  decls () const   decls_begin/decls_end - Iterate over the declarations stored in this context.
  decl_iterator  decls_begin () const   decl_iterator  decls_end () const   bool  decls_empty () const   decl_range  noload_decls () const   noload_decls_begin/end - Iterate over the declarations stored in this context that are currently loaded; don't attempt to retrieve anything from an external source.
  decl_iterator  noload_decls_begin () const   decl_iterator  noload_decls_end () const   void  addDecl (Decl *D)   Add the declaration D into this context.
  void  addDeclInternal (Decl *D)   Add the declaration D into this context, but suppress searches for external declarations with the same name.
  void  addHiddenDecl (Decl *D)   Add the declaration D to this context without modifying any lookup tables.
  void  removeDecl (Decl *D)   Removes a declaration from this context.
  bool  containsDecl (Decl *D) const   Checks whether a declaration is in this context.
  bool  containsDeclAndLoad (Decl *D) const   Checks whether a declaration is in this context.
  lookup_result  lookup (DeclarationName Name) const   lookup - Find the declarations (if any) with the given Name in this context.
  lookup_result  noload_lookup (DeclarationName Name)   Find the declarations with the given name that are visible within this context; don't attempt to retrieve anything from an external source.
  void  localUncachedLookup (DeclarationName Name, SmallVectorImpl< NamedDecl * > &Results)   A simplistic name lookup mechanism that performs name lookup into this declaration context without consulting the external source.
  void  makeDeclVisibleInContext (NamedDecl *D)   Makes a declaration visible within this context.
  lookups_range  lookups () const   lookups_range  noload_lookups (bool PreserveInternalState) const   all_lookups_iterator  lookups_begin () const   Iterators over all possible lookups within this context.
  all_lookups_iterator  lookups_end () const   all_lookups_iterator  noload_lookups_begin () const   Iterators over all possible lookups within this context that are currently loaded; don't attempt to retrieve anything from an external source.
  all_lookups_iterator  noload_lookups_end () const   udir_range  using_directives () const   Returns iterator range [First, Last) of UsingDirectiveDecls stored within this context.
  ddiag_range  ddiags () const   void  setMustBuildLookupTable ()   Mark that there are external lexical declarations that we need to include in our lookup table (and that are not available as external visible lookups).
  StoredDeclsMapgetLookupPtr () const   Retrieve the internal representation of the lookup structure.
  StoredDeclsMapbuildLookup ()   Ensure the lookup structure is fully-built and return it.
  bool  hasExternalLexicalStorage () const   Whether this DeclContext has external storage containing additional declarations that are lexically in this context.
  void  setHasExternalLexicalStorage (bool ES=true) const   State whether this DeclContext has external storage for declarations lexically in this context.
  bool  hasExternalVisibleStorage () const   Whether this DeclContext has external storage containing additional declarations that are visible in this context.
  void  setHasExternalVisibleStorage (bool ES=true) const   State whether this DeclContext has external storage for declarations visible in this context.
  bool  isDeclInLexicalTraversal (const Decl *D) const   Determine whether the given declaration is stored in the list of declarations lexically within this context.
  void  setUseQualifiedLookup (bool use=true) const   bool  shouldUseQualifiedLookup () const   void  dumpAsDecl () const   void  dumpAsDecl (const ASTContext *Ctx) const   void  dumpDeclContext () const   void  dumpLookups () const   void  dumpLookups (llvm::raw_ostream &OS, bool DumpDecls=false, bool Deserialize=false) const     Redeclarable (const ASTContext &Ctx)   FunctionDeclgetPreviousDecl ()   Return the previous declaration of this declaration or NULL if this is the first declaration.
  const FunctionDeclgetPreviousDecl () const   FunctionDeclgetFirstDecl ()   Return the first declaration of this declaration or itself if this is the only declaration.
  const FunctionDeclgetFirstDecl () const   Return the first declaration of this declaration or itself if this is the only declaration.
  bool  isFirstDecl () const   True if this is the first declaration in its redeclaration chain.
  FunctionDeclgetMostRecentDecl ()   Returns the most recent (re)declaration of this declaration.
  const FunctionDeclgetMostRecentDecl () const   Returns the most recent (re)declaration of this declaration.
  void  setPreviousDecl (FunctionDecl *PrevDecl)   Set the previous declaration.
  redecl_range  redecls () const   Returns an iterator range for all the redeclarations of the same decl.
  redecl_iterator  redecls_begin () const   redecl_iterator  redecls_end () const   static FunctionDeclCreate (ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation NLoc, DeclarationName N, QualType T, TypeSourceInfo *TInfo, StorageClass SC, bool UsesFPIntrin=false, bool isInlineSpecified=false, bool hasWrittenPrototype=true, ConstexprSpecKind ConstexprKind=ConstexprSpecKind::Unspecified, Expr *TrailingRequiresClause=nullptr)   static FunctionDeclCreate (ASTContext &C, DeclContext *DC, SourceLocation StartLoc, const DeclarationNameInfo &NameInfo, QualType T, TypeSourceInfo *TInfo, StorageClass SC, bool UsesFPIntrin, bool isInlineSpecified, bool hasWrittenPrototype, ConstexprSpecKind ConstexprKind, Expr *TrailingRequiresClause)   static FunctionDeclCreateDeserialized (ASTContext &C, GlobalDeclID ID)   static bool  classof (const Decl *D)   static bool  classofKind (Kind K)   static DeclContextcastToDeclContext (const FunctionDecl *D)   static FunctionDeclcastFromDeclContext (const DeclContext *DC)   static bool  classof (const Decl *D)   static bool  classofKind (Kind K)   static bool  classof (const Decl *D)   static bool  classofKind (Kind K)   static bool  classof (const Decl *D)   static bool  classofKind (Kind K)   static bool  isFlexibleArrayMemberLike (ASTContext &Context, const Decl *D, QualType Ty, LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, bool IgnoreTemplateOrMacroSubstitution)   Whether it resembles a flexible array member.
  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 DeclContextcastToDeclContext (const Decl *)   static DeclcastFromDeclContext (const DeclContext *)   static void  printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0)   static bool  classof (const Decl *D)   static bool  classof (const DeclContext *D)     FunctionDecl (Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, const DeclarationNameInfo &NameInfo, QualType T, TypeSourceInfo *TInfo, StorageClass S, bool UsesFPIntrin, bool isInlineSpecified, ConstexprSpecKind ConstexprKind, Expr *TrailingRequiresClause=nullptr)   FunctionDeclgetNextRedeclarationImpl () override   Returns the next redeclaration or itself if this is the only decl.
  FunctionDeclgetPreviousDeclImpl () override   Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain.
  FunctionDeclgetMostRecentDeclImpl () override   Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain.
    DeclaratorDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T, TypeSourceInfo *TInfo, SourceLocation StartL)     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, GlobalDeclID ID, std::size_t Extra=0)   Allocate memory for a deserialized declaration.
  void *  operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0)   Allocate memory for a non-deserialized declaration.
    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.
  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.
  bool  hasLocalOwningModuleStorage () const   virtual DeclgetNextRedeclarationImpl ()   Returns the next redeclaration or itself if this is the only decl.
  virtual DeclgetPreviousDeclImpl ()   Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain.
  virtual DeclgetMostRecentDeclImpl ()   Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain.
  ASTMutationListenergetASTMutationListener () const     DeclContext (Decl::Kind K)   FunctionDeclgetNextRedeclaration () const  

Represents a function declaration or definition.

Since a given function can be declared several times in a program, there may be several FunctionDecls that correspond to that function. Only one of those FunctionDecls will be found when traversing the list of declarations in the context of the FunctionDecl (e.g., the translation unit); this FunctionDecl contains all of the information known about the function. Other, previous declarations of the function are available via the getPreviousDecl() chain.

Definition at line 1933 of file Decl.h.

◆ param_const_iterator ◆ param_iterator ◆ redecl_iterator ◆ redecl_range ◆ redeclarable_base ◆ TemplatedKind

The kind of templated function a FunctionDecl can be.

Enumerator TK_NonTemplate  TK_FunctionTemplate  TK_MemberSpecialization  TK_FunctionTemplateSpecialization  TK_DependentFunctionTemplateSpecialization  TK_DependentNonTemplate 

Definition at line 1940 of file Decl.h.

◆ FunctionDecl() FunctionDecl::FunctionDecl ( Kind  DK, ASTContextC, DeclContextDC, SourceLocation  StartLoc, const DeclarationNameInfoNameInfo, QualType  T, TypeSourceInfoTInfo, StorageClass  S, bool  UsesFPIntrin, bool  isInlineSpecified, ConstexprSpecKind  ConstexprKind, ExprTrailingRequiresClause = nullptr  ) protected ◆ BodyContainsImmediateEscalatingExpressions() bool clang::FunctionDecl::BodyContainsImmediateEscalatingExpressions ( ) const inline ◆ castFromDeclContext() ◆ castToDeclContext() ◆ classof() static bool clang::FunctionDecl::classof ( const DeclD ) inlinestatic ◆ classofKind() static bool clang::FunctionDecl::classofKind ( Kind  K ) inlinestatic ◆ Create() [1/2] FunctionDecl * FunctionDecl::Create ( ASTContextC, DeclContextDC, SourceLocation  StartLoc, const DeclarationNameInfoNameInfo, QualType  T, TypeSourceInfoTInfo, StorageClass  SC, bool  UsesFPIntrin, bool  isInlineSpecified, bool  hasWrittenPrototype, ConstexprSpecKind  ConstexprKind, ExprTrailingRequiresClause  ) static ◆ Create() [2/2] static FunctionDecl * clang::FunctionDecl::Create ( ASTContextC, DeclContextDC, SourceLocation  StartLoc, SourceLocation  NLoc, DeclarationName  N, QualType  T, TypeSourceInfoTInfo, StorageClass  SC, bool  UsesFPIntrin = false, bool  isInlineSpecified = false, bool  hasWrittenPrototype = true, ConstexprSpecKind  ConstexprKind = ConstexprSpecKind::Unspecified, ExprTrailingRequiresClause = nullptr  ) inlinestatic

Definition at line 2124 of file Decl.h.

References clang::C, Create(), hasWrittenPrototype(), isInlineSpecified(), clang::T, and UsesFPIntrin().

Referenced by Create(), clang::Sema::CreateBuiltin(), CreateNewFunctionDecl(), clang::Sema::DeclareGlobalAllocationFunction(), clang::Sema::DeclClonePragmaWeak(), emitOutlinedFunctionPrologue(), InsertOCLBuiltinDeclarationsFromTable(), rewriteBuiltinFunctionDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

◆ CreateDeserialized() ◆ doesDeclarationForceExternallyVisibleDefinition() bool FunctionDecl::doesDeclarationForceExternallyVisibleDefinition ( ) const

For a function declaration in C or C++, determine whether this declaration causes the definition to be externally visible.

For instance, this determines if adding the current declaration to the set of redeclarations of the given functions causes isInlineDefinitionExternallyVisible to change from false to true.

Definition at line 3828 of file Decl.cpp.

References clang::Definition, doesThisDeclarationHaveABody(), clang::Decl::getASTContext(), clang::ASTContext::getLangOpts(), clang::Redeclarable< decl_type >::getPreviousDecl(), getStorageClass(), hasBody(), isInlineSpecified(), RedeclForcesDefC99(), redeclForcesDefMSVC(), and clang::SC_Extern.

Referenced by clang::CodeGen::CodeGenModule::EmitGlobal().

◆ doesThisDeclarationHaveABody() bool clang::FunctionDecl::doesThisDeclarationHaveABody ( ) const inline

Returns whether this specific declaration of the function has a body.

Definition at line 2261 of file Decl.h.

References Body, clang::DeclContext::FunctionDeclBits, and isLateTemplateParsed().

Referenced by clang::ASTRecordWriter::AddFunctionDefinition(), CheckAbstractClassUsage(), CXXRecordNonInlineHasAttr(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), doesDeclarationForceExternallyVisibleDefinition(), clang::CodeGen::CodeGenModule::EmitGlobal(), clang::dataflow::Environment::Environment(), clang::dataflow::DataflowAnalysisContext::getAdornedCFG(), clang::CXXMethodDecl::hasInlineBody(), isInlineDefinitionExternallyVisible(), and isThisDeclarationADefinition().

◆ FriendConstraintRefersToEnclosingTemplate() bool clang::FunctionDecl::FriendConstraintRefersToEnclosingTemplate ( ) const inline ◆ getAssociatedConstraints() void clang::FunctionDecl::getAssociatedConstraints ( SmallVectorImpl< const Expr * > &  AC ) const inline ◆ getBody() [1/2] Stmt * clang::FunctionDecl::getBody ( ) const inlineoverridevirtual ◆ getBody() [2/2]

Retrieve the body (definition) of the function.

The function body might be in any of the (re-)declarations of this function. The variant that accepts a FunctionDecl pointer will set that function declaration to the actual declaration containing the body (if there is one). NOTE: For checking if there is a body, use hasBody() instead, to avoid unnecessary AST de-serialization of the body.

Definition at line 3239 of file Decl.cpp.

References clang::Definition, clang::Decl::getASTContext(), and hasBody().

Referenced by addBlockPointerConversion(), clang::ASTRecordWriter::AddFunctionDefinition(), addFunctionPointerConversion(), clang::Sema::BuildLambdaExpr(), clang::Sema::CheckConstexprFunctionDefinition(), ComputeDefaultedComparisonExceptionSpec(), createOverloadsForFixedParams(), endsWithReturn(), getMethodBody(), clang::dataflow::getReferencedDecls(), HandleDestructionImpl(), clang::ASTNodeImporter::ImportFunctionDeclBody(), clang::Sema::InstantiateFunctionDefinition(), clang::Expr::isPotentialConstantExpr(), and clang::interp::Compiler< Emitter >::visitFunc().

◆ getBuiltinID()

Returns a value indicating whether this function corresponds to a builtin function.

The function corresponds to a built-in function if it is declared at translation scope or within an extern "C" block and its name matches with the name of a builtin. The returned value will be 0 for functions that do not correspond to a builtin, a value of type Builtin::ID if in the target-independent range [1,Builtin::First), or a target-specific builtin value.

Parameters
ConsiderWrapperFunctions If true, we should consider wrapper functions as their wrapped builtins. This shouldn't be done in general, but it's useful in Sema to diagnose calls to wrappers based on their semantics.

Definition at line 3649 of file Decl.cpp.

References clang::ASTContext::BuiltinInfo, clang::CPlusPlus, clang::Decl::getASTContext(), clang::ASTContext::getLangOpts(), clang::Decl::getLangOpts(), getStorageClass(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::Builtin::Context::isPredefinedLibFunction(), and clang::SC_Static.

Referenced by clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::BuildCallExpr(), clang::Sema::buildOverloadedCallSet(), clang::Sema::BuildResolvedCallExpr(), clang::ASTContext::canBuiltinBeRedeclared(), clang::Sema::checkCall(), clang::Sema::CheckEquivalentExceptionSpec(), checkFormatStringExpr(), clang::Sema::CheckFunctionCall(), clang::Sema::ConvertArgumentsForCall(), DiagnosedUnqualifiedCallsToStdFunctions(), EmitDirectCallee(), emitLibraryCall(), emitReplacement(), getAbsoluteValueFunctionKind(), getMemoryFunctionKind(), handleDiagnoseAsBuiltinAttr(), clang::Sema::inferLifetimeBoundAttribute(), clang::ento::CheckerContext::isCLibraryFunction(), isInlineBuiltinDeclaration(), clang::Sema::MergeFunctionDecl(), and rewriteBuiltinFunctionDecl().

◆ getCallResultType() QualType clang::FunctionDecl::getCallResultType ( ) const inline ◆ getCanonicalDecl() [1/2] const FunctionDecl * clang::FunctionDecl::getCanonicalDecl ( ) const inline ◆ getCanonicalDecl() [2/2]

Retrieves the "canonical" declaration of the given declaration.

Reimplemented from clang::Decl.

Reimplemented in clang::CXXMethodDecl, clang::CXXConstructorDecl, clang::CXXDestructorDecl, and clang::CXXConversionDecl.

Definition at line 3634 of file Decl.cpp.

References clang::Redeclarable< FunctionDecl >::getFirstDecl().

Referenced by clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckImmediateEscalatingFunctionDefinition(), clang::Sema::CheckMemberSpecialization(), checkRecursiveFunction(), clang::interp::Program::createFunction(), clang::CodeGen::CGOpenMPRuntime::emitDeclareTargetFunction(), FriendConstraintRefersToEnclosingTemplate(), getCanonicalDecl(), clang::CXXMethodDecl::getCanonicalDecl(), clang::CXXConstructorDecl::getCanonicalDecl(), clang::CXXDestructorDecl::getCanonicalDecl(), clang::CXXConversionDecl::getCanonicalDecl(), clang::Sema::getEmissionStatus(), clang::interp::Program::getFunction(), isDeleted(), isGlobal(), isInstantiationOf(), isMultiVersion(), clang::Sema::MergeFunctionDecl(), clang::Sema::SetDeclDefaulted(), setFriendConstraintRefersToEnclosingTemplate(), and setIsMultiVersion().

◆ getConstexprKind() ◆ getDeclaredReturnType() QualType clang::FunctionDecl::getDeclaredReturnType ( ) const inline ◆ getDefalutedOrDeletedInfo() ◆ getDefaultLoc() ◆ getDefinition() [1/2] ◆ getDefinition() [2/2] const FunctionDecl * clang::FunctionDecl::getDefinition ( ) const inline ◆ getDeletedMessage() ◆ getDependentSpecializationInfo() ◆ getDescribedFunctionTemplate()

Retrieves the function template that is described by this function declaration.

Every function template is represented as a FunctionTemplateDecl and a FunctionDecl (or something derived from FunctionDecl). The former contains template properties (such as the template parameter lists) while the latter contains the actual description of the template's contents. FunctionTemplateDecl::getTemplatedDecl() retrieves the FunctionDecl that describes the function template, getDescribedFunctionTemplate() retrieves the FunctionTemplateDecl from a FunctionDecl.

Definition at line 4063 of file Decl.cpp.

Referenced by clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::AddConversionCandidate(), addFunctionPointerConversion(), AreSpecialMemberFunctionsSameKind(), clang::Sema::BuildLambdaExpr(), clang::SemaCUDA::CheckCall(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckIfFunctionSpecializationIsImmediate(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::CheckMain(), clang::Sema::CheckMSVCRTEntryPoint(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverload(), clang::interp::ByteCodeEmitter::compileFunc(), clang::Sema::CompleteLambdaCallOperator(), clang::Sema::DeclareAggregateDeductionGuideFromInitList(), clang::Sema::DeduceReturnType(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::Sema::FriendConstraintsDependOnEnclosingTemplate(), FunctionsCorrespond(), clang::CXXRecordDecl::getGenericLambdaTemplateParameterList(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), isMemberLikeConstrainedFriend(), clang::CXXMethodDecl::isMoveAssignmentOperator(), IsOverloadOrOverrideImpl(), clang::CXXConstructorDecl::isSpecializationCopyingObject(), isThisDeclarationInstantiatedFromAFriendDefinition(), clang::SemaCUDA::maybeAddHostDeviceAttrs(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), NoteImplicitDeductionGuide(), clang::Sema::RebuildLambdaScopeInfo(), setPreviousDeclaration(), ShouldWarnAboutMissingPrototype(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), and clang::ASTDeclReader::VisitFunctionDecl().

◆ getEllipsisLoc() ◆ getExceptionSpecSourceRange() SourceRange FunctionDecl::getExceptionSpecSourceRange ( ) const ◆ getExceptionSpecType() ◆ getFunctionEffects() ◆ getFunctionTypeLoc() ◆ getInstantiatedFromDecl() FunctionDecl * FunctionDecl::getInstantiatedFromDecl ( ) const ◆ getInstantiatedFromMemberFunction() FunctionDecl * FunctionDecl::getInstantiatedFromMemberFunction ( ) const

If this function is an instantiation of a member function of a class template specialization, retrieves the function from which it was instantiated.

This routine will return non-NULL for (non-templated) member functions of class templates and for instantiations of function templates. For example, given:

template<typename T>

void f(T);

};

The declaration for X<int>::f is a (non-templated) FunctionDecl whose parent is the class template specialization X<int>. For this declaration, getInstantiatedFromFunction() will return the FunctionDecl X<T>::A. When a complete definition of X<int>::A is required, it will be instantiated from the declaration returned by getInstantiatedFromMemberFunction().

Definition at line 4035 of file Decl.cpp.

References getMemberSpecializationInfo().

Referenced by adjustDeclToTemplate(), clang::Sema::CheckForFunctionRedefinition(), clang::Sema::CheckMemberSpecialization(), getExplicitVisibilityAux(), getODRHash(), getPatternFunctionDecl(), hasExplicitMemberDefinition(), clang::ASTNodeImporter::ImportTemplateInformation(), isOutOfLine(), isThisDeclarationInstantiatedFromAFriendDefinition(), and SetEligibleMethods().

◆ getLanguageLinkage() ◆ getLiteralIdentifier() ◆ getMemberSpecializationInfo() ◆ getMemoryFunctionKind() unsigned FunctionDecl::getMemoryFunctionKind ( ) const ◆ getMinRequiredArguments() unsigned FunctionDecl::getMinRequiredArguments ( ) const

Returns the minimum number of arguments needed to call this function.

getMinRequiredArguments - Returns the minimum number of arguments needed to call this function.

This may be fewer than the number of function parameters, if some of the parameters have default arguments (in C++).

This may be fewer than the number of function parameters, if some of the parameters have default arguments (in C++) or are parameter packs (C++11).

Definition at line 3734 of file Decl.cpp.

References clang::CPlusPlus, clang::Decl::getASTContext(), clang::Decl::getLangOpts(), getNumParams(), and parameters().

Referenced by clang::Sema::AddMethodCandidate(), compareOverloads(), clang::Sema::ConvertArgumentsForCall(), getMinRequiredExplicitArguments(), clang::CXXConstructorDecl::isConvertingConstructor(), clang::CXXConstructorDecl::isDefaultConstructor(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::SpecialMemberIsTrivial(), and clang::FunctionCallFilterCCC::ValidateCandidate().

◆ getMinRequiredExplicitArguments() unsigned FunctionDecl::getMinRequiredExplicitArguments ( ) const ◆ getMostRecentDeclImpl() FunctionDecl * clang::FunctionDecl::getMostRecentDeclImpl ( ) inlineoverrideprotectedvirtual ◆ getMultiVersionKind()

Gets the kind of multiversioning attribute this declaration has.

Note that this can return a value even if the function is not multiversion, such as the case of 'target'.

Definition at line 3575 of file Decl.cpp.

References clang::CPUDispatch, clang::CPUSpecific, clang::None, clang::Target, clang::TargetClones, and clang::TargetVersion.

Referenced by CheckMultiVersionAdditionalDecl(), CheckMultiVersionFirstFunction(), CheckMultiVersionFunction(), MultiVersionTypesCompatible(), patchDefaultTargetVersion(), and PreviousDeclsHaveMultiVersionAttribute().

◆ getNameForDiagnostic() void FunctionDecl::getNameForDiagnostic ( raw_ostream &  OS, const PrintingPolicyPolicy, bool  Qualified  ) const overridevirtual ◆ getNameInfo() ◆ getNextRedeclarationImpl() FunctionDecl * clang::FunctionDecl::getNextRedeclarationImpl ( ) inlineoverrideprotectedvirtual ◆ getNonObjectParameter() [1/2] ◆ getNonObjectParameter() [2/2] ◆ getNumNonObjectParams() unsigned FunctionDecl::getNumNonObjectParams ( ) const ◆ getNumParams() unsigned FunctionDecl::getNumParams ( ) const

Return the number of parameters this function must have based on its FunctionType.

getNumParams - Return the number of parameters this function must have based on its FunctionType.

This is the length of the ParamInfo array after it has been created.

Definition at line 3713 of file Decl.cpp.

References clang::Type::getAs(), clang::FunctionProtoType::getNumParams(), and clang::ValueDecl::getType().

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), clang::SemaOpenMP::ActOnOpenMPDeclareVariantDirective(), clang::Sema::ActOnReenterFunctionContext(), addFunctionPointerConversion(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::AddMethodCandidate(), addX86InterruptAttrs(), allowAmbiguity(), clang::ast_matchers::libc_func_matchers::AST_MATCHER(), clang::ast_matchers::libc_func_matchers::AST_MATCHER_P(), clang::Sema::BuildBlockForLambdaConversion(), clang::SemaSYCL::BuildSYCLKernelCallStmt(), clang::SemaHLSL::CheckCompatibleParameterABI(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckCXXThrowOperand(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::checkLifetimeCaptureBy(), clang::Sema::CheckMain(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverloadedOperatorDeclaration(), compareOverloads(), createOverloadsForFixedParams(), clang::interp::InterpFrame::describe(), DiagnoseBadTarget(), emitReplacement(), evaluateCDTSize(), FunctionsCorrespond(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(), getMinRequiredArguments(), getNDSWDS(), clang::ento::CXXDeallocatorCall::getNumArgs(), clang::CXXMethodDecl::getNumExplicitParams(), getNumNonObjectParams(), clang::OverloadCandidate::getNumParams(), getParamDecl(), getParametersSourceRange(), clang::consumed::ConsumedStmtVisitor::handleCall(), handleCleanupAttr(), handleDiagnoseAsBuiltinAttr(), hasCopyOrMoveCtorParam(), hasCXXExplicitFunctionObjectParameter(), hasIdenticalPassObjectSizeAttrs(), hasOneParamOrDefaultArgs(), clang::Sema::inferLifetimeBoundAttribute(), clang::Sema::InstantiateDefaultCtorDefaultArgs(), clang::CXXConstructorDecl::isConvertingConstructor(), isDestroyingOperatorDelete(), clang::SemaCUDA::isEmptyConstructor(), isNonPlacementDeallocationFunction(), isRelevantAttr(), clang::Sema::isUsualDeallocationFunction(), clang::CXXMethodDecl::isUsualDeallocationFunction(), clang::Sema::MergeCompatibleFunctionDecls(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), parameters(), ProcessAPINotes(), clang::sema::shouldTrackFirstArgument(), clang::Sema::SpecialMemberIsTrivial(), clang::FunctionCallFilterCCC::ValidateCandidate(), and clang::sema::visitFunctionCallArguments().

◆ getODRHash() [1/2] ◆ getODRHash() [2/2] unsigned FunctionDecl::getODRHash ( ) const

Returns cached ODRHash of the function.

This must have been previously computed and stored.

Definition at line 4544 of file Decl.cpp.

◆ getOverloadedOperator()

getOverloadedOperator - Which C++ overloaded operator this function represents, if any.

Definition at line 4000 of file Decl.cpp.

References clang::DeclarationName::CXXOperatorName, clang::DeclarationName::getCXXOverloadedOperator(), clang::NamedDecl::getDeclName(), and clang::OO_None.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), DiagnoseShiftCompare(), findImplicitlyDeclaredEqualityComparisons(), clang::Sema::getMoreSpecializedTemplate(), clang::CXXMethodDecl::isCopyAssignmentOperator(), isDestroyingOperatorDelete(), clang::isLambdaCallOperator(), clang::CXXMethodDecl::isMoveAssignmentOperator(), isNonPlacementDeallocationFunction(), isOverloadedOperator(), isStandardDelete(), isStandardNew(), isStdOstreamOperatorCall(), IsStructurallyEquivalent(), clang::CXXMethodDecl::isUsualDeallocationFunction(), clang::OverloadCandidateSet::OperatorRewriteInfo::shouldAddReversed(), and shouldAddReversedEqEq().

◆ getParamDecl() [1/2] ◆ getParamDecl() [2/2]

Definition at line 2672 of file Decl.h.

References getNumParams().

Referenced by clang::SemaOpenMP::ActOnOpenMPDeclareVariantDirective(), clang::Sema::ActOnReenterFunctionContext(), addFunctionPointerConversion(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::AddSurrogateCandidate(), addX86InterruptAttrs(), allowAmbiguity(), clang::ast_matchers::libc_func_matchers::AST_MATCHER(), clang::ast_matchers::libc_func_matchers::AST_MATCHER_P(), clang::Sema::BuildBlockForLambdaConversion(), clang::Sema::BuildLiteralOperatorCall(), clang::SemaHLSL::CheckCompatibleParameterABI(), CheckConstexprParameterTypes(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckCXXThrowOperand(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckExplicitlyDefaultedFunction(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckExplicitObjectOverride(), clang::Sema::checkLifetimeCaptureBy(), clang::Sema::CheckLiteralOperatorDeclaration(), CheckOperatorNewDeclaration(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::ConvertArgumentsForCall(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), createOverloadsForFixedParams(), clang::Sema::DeduceTemplateArguments(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::interp::InterpFrame::describe(), DiagnoseBadTarget(), diagnoseInstanceReference(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), DiagnoseInvalidRedeclaration(), clang::ODRDiagsEmitter::diagnoseMismatch(), clang::CodeGen::CGHLSLRuntime::emitEntryFunction(), emitReplacement(), evaluateCDTSize(), clang::Sema::findInheritingConstructor(), FunctionsCorrespond(), clang::Sema::GatherArgumentsForCall(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(), getNDSWDS(), getNonObjectParameter(), clang::consumed::ConsumedStmtVisitor::handleCall(), handleCleanupAttr(), handleDiagnoseAsBuiltinAttr(), HandleFunctionCall(), HandleLambdaCapture(), hasCopyOrMoveCtorParam(), hasCXXExplicitFunctionObjectParameter(), clang::Sema::inferLifetimeBoundAttribute(), clang::Sema::InitializeExplicitObjectArgument(), clang::Sema::InstantiateDefaultCtorDefaultArgs(), clang::sema::isAssignmentOperatorLifetimeBound(), clang::CXXConstructorDecl::isCopyConstructor(), clang::sema::isCopyLikeConstructor(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), isDestroyingOperatorDelete(), isGRealloc(), clang::Sema::isInitListConstructor(), clang::CXXConstructorDecl::isMoveConstructor(), isNonPlacementDeallocationFunction(), clang::sema::isNormalAssignmentOperator(), isRelevantAttr(), clang::CXXConstructorDecl::isSpecializationCopyingObject(), isStandardRealloc(), clang::CXXMethodDecl::isUsualDeallocationFunction(), clang::Sema::MergeCompatibleFunctionDecls(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), mergeParamDeclAttributes(), clang::Sema::PerformImplicitConversion(), PrepareArgumentsForCallToObjectOfClassType(), ProcessAPINotes(), clang::Sema::RebuildLambdaScopeInfo(), clang::OverloadCandidateSet::OperatorRewriteInfo::shouldAddReversed(), clang::sema::shouldTrackFirstArgument(), clang::Sema::SpecialMemberIsTrivial(), VerifyInitializationSequenceCXX98(), and clang::sema::visitFunctionCallArguments().

◆ getParametersSourceRange() SourceRange FunctionDecl::getParametersSourceRange ( ) const ◆ getPointOfInstantiation()

Retrieve the (first) point of instantiation of a function template specialization or a member of a class template specialization.

Returns
the first point of instantiation, if this function was instantiated from a template; otherwise, returns an invalid source location.

Definition at line 4385 of file Decl.cpp.

Referenced by clang::Sema::ActOnExplicitInstantiation().

◆ getPreviousDeclImpl() inlineoverrideprotectedvirtual ◆ getPrimaryTemplate()

Retrieve the primary template that this function template specialization either specializes or was instantiated from.

If this function declaration is not a function template specialization, returns NULL.

Definition at line 4183 of file Decl.cpp.

Referenced by clang::Sema::AddConversionCandidate(), allowAmbiguity(), checkAddressOfFunctionIsAvailable(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckLiteralOperatorDeclaration(), getPatternFunctionDecl(), getTemplateInstantiationPattern(), clang::isBetterOverloadCandidate(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), clang::CXXMethodDecl::isMoveAssignmentOperator(), isOutOfLine(), isTemplate(), clang::CXXMethodDecl::isUsualDeallocationFunction(), and clang::sema::shouldTrackFirstArgumentForConstructor().

◆ getReturnType() QualType clang::FunctionDecl::getReturnType ( ) const inline

Definition at line 2720 of file Decl.h.

References clang::Type::castAs(), getReturnType(), and clang::ValueDecl::getType().

Referenced by clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartOfFunctionDef(), AddOrdinaryNameResults(), AddResultTypeChunk(), clang::sema::analyzePathForGSLPointer(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildCXXMemberCallExpr(), buildLambdaScopeReturnType(), clang::Sema::BuildLiteralOperatorCall(), clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::BuildOverloadedCallExpr(), clang::Sema::BuildReturnStmt(), clang::Sema::BuildSynthesizedThreeWayComparison(), clang::interp::CallVirt(), clang::Sema::CheckAddressOfOperand(), CheckConstexprMissingReturn(), CheckConstexprReturnType(), CheckConstPureAttributesUsage(), clang::Sema::CheckCoroutineWrapper(), clang::Sema::CheckFunctionDeclaration(), clang::SemaARM::CheckSMEFunctionDefAttributes(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), clang::interp::ByteCodeEmitter::compileFunc(), completeFunctionType(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), clang::Sema::DeduceReturnType(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), DiagnoseConstAssignment(), DiagnoseForRangeReferenceVariableCopies(), clang::ODRDiagsEmitter::diagnoseMismatch(), dumpMicrosoftThunkAdjustment(), evaluateCDTSize(), clang::comments::DeclInfo::fill(), getCallableReturnType(), clang::CXXConversionDecl::getConversionType(), getDeclaredReturnType(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::Sema::getMoreSpecializedTemplate(), getNDSWDS(), getReturnType(), handleGlobalAttr(), handleMSAllocatorAttr(), clang::dataflow::Environment::initialize(), clang::Sema::InstantiateFunctionDefinition(), clang::interp::interp__builtin_inf(), clang::interp::interp__builtin_nan(), clang::sema::isNormalAssignmentOperator(), isRelevantAttr(), clang::Sema::MergeFunctionDecl(), clang::InitializationSequence::Perform(), ProcessAPINotes(), clang::Sema::RebuildLambdaScopeInfo(), clang::TreeTransform< Derived >::RebuildShuffleVectorExpr(), clang::sema::shouldTrackFirstArgument(), clang::dataflow::transferSmartPointerLikeCachedDeref(), TryReferenceInit(), and clang::interp::Compiler< Emitter >::visitFunc().

◆ getReturnTypeSourceRange() SourceRange FunctionDecl::getReturnTypeSourceRange ( ) const

Attempt to compute an informative source range covering the function return type.

This may omit qualifiers and other information with limited representation in the AST.

Definition at line 3894 of file Decl.cpp.

References clang::Decl::getASTContext(), clang::DeclarationNameInfo::getBeginLoc(), clang::SourceRange::getEnd(), getFunctionTypeLoc(), getNameInfo(), clang::FunctionTypeLoc::getReturnLoc(), clang::ASTContext::getSourceManager(), clang::TypeLoc::getSourceRange(), clang::SourceLocation::isInvalid(), clang::SourceRange::isInvalid(), and SM.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::CheckAddressOfOperand(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckMain(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::CheckOverridingFunctionReturnType(), DiagnoseConstAssignment(), clang::ODRDiagsEmitter::diagnoseMismatch(), handleGlobalAttr(), and clang::Sema::MergeFunctionDecl().

◆ getSourceRange() ◆ getStorageClass()

Returns the storage class as written in the source.

For the computed linkage of symbol, see getLinkage.

Definition at line 2763 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::ActOnFinishFunctionBody(), canRedefineFunction(), clang::interp::CheckCallable(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckMain(), CheckOperatorNewDeleteDeclarationScope(), clang::Sema::CheckOverridingFunctionAttributes(), clang::ODRDiagsEmitter::diagnoseMismatch(), doesDeclarationForceExternallyVisibleDefinition(), getBuiltinID(), isGlobal(), isInlineDefinitionExternallyVisible(), isStatic(), clang::CXXMethodDecl::isStatic(), clang::Sema::MergeFunctionDecl(), RedeclForcesDefC99(), redeclForcesDefMSVC(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ getTemplatedKind()

What kind of templated function this is.

Definition at line 4014 of file Decl.cpp.

References TK_DependentFunctionTemplateSpecialization, TK_DependentNonTemplate, TK_FunctionTemplate, TK_FunctionTemplateSpecialization, TK_MemberSpecialization, and TK_NonTemplate.

Referenced by clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckFunctionConstraints(), checkRecursiveFunction(), clang::Sema::DiagnoseAlwaysNonNullPointer(), getPatternFunctionDecl(), clang::ASTNodeImporter::ImportFunctionTemplateWithTemplateArgsFromSpecialization(), clang::ASTNodeImporter::ImportTemplateInformation(), clang::Sema::IsAtLeastAsConstrained(), isImmediateEscalating(), clang::Sema::IsInsideALocalClassWithinATemplateFunction(), and clang::ASTDeclReader::VisitFunctionDecl().

◆ getTemplateInstantiationPattern()

Retrieve the function declaration from which this function could be instantiated, if it is an instantiation (rather than a non-template or a specialization, for example).

If ForDefinition is false, explicit specializations will be treated as if they were implicit instantiations. This will then find the pattern corresponding to non-definition portions of the declaration, such as default arguments and the exception specification.

Definition at line 4134 of file Decl.cpp.

References getDefinitionOrSelf(), clang::MemberSpecializationInfo::getInstantiatedFrom(), getMemberSpecializationInfo(), getPrimaryTemplate(), getTemplateSpecializationKind(), clang::MemberSpecializationInfo::getTemplateSpecializationKind(), isDefined(), clang::isGenericLambdaCallOperatorSpecialization(), and clang::isTemplateInstantiation().

Referenced by clang::Sema::BuildOverloadedCallExpr(), clang::Sema::CheckIfFunctionSpecializationIsImmediate(), clang::PredefinedExpr::ComputeName(), clang::Sema::DeduceReturnType(), getDefiningModule(), clang::Sema::getMoreConstrainedFunction(), GetSignature(), clang::CXXMethodDecl::hasInlineBody(), clang::Sema::InstantiateDefaultArgument(), isImmediateFunction(), isImplicitlyInstantiable(), isUserProvided(), NoteImplicitDeductionGuide(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), and clang::Sema::SubstDefaultArgument().

◆ getTemplateSpecializationArgs() ◆ getTemplateSpecializationArgsAsWritten()

Retrieve the template argument list as written in the sources, if any.

If this function declaration is not a function template specialization or if it had no explicit template argument list, returns NULL. Note that it an explicit template argument list may be written empty, e.g., template<> void foo<>(char* s);

Definition at line 4209 of file Decl.cpp.

Referenced by clang::Sema::ActOnEndOfTranslationUnit().

◆ getTemplateSpecializationInfo() ◆ getTemplateSpecializationKind()

Determine what kind of template instantiation this function represents.

Definition at line 4288 of file Decl.cpp.

References clang::Decl::FOK_None, clang::Decl::getFriendObjectKind(), clang::TSK_ExplicitSpecialization, and clang::TSK_Undeclared.

Referenced by clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnExplicitInstantiation(), basicGVALinkageForFunction(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckMemberSpecialization(), clang::Sema::DefineUsedVTables(), getTemplateInstantiationPattern(), clang::installapi::getVTableLinkage(), clang::CodeGen::CodeGenModule::getVTableLinkage(), clang::installapi::hasVTable(), clang::ASTNodeImporter::ImportTemplateInformation(), IsOverloadOrOverrideImpl(), isTemplateInstantiation(), and clang::Sema::MergeCXXFunctionDecl().

◆ getTemplateSpecializationKindForInstantiation() ◆ hasBody() [1/2] bool clang::FunctionDecl::hasBody ( ) const inlineoverridevirtual ◆ hasBody() [2/2]

Returns true if the function has a body.

The function body might be in any of the (re-)declarations of this function. The variant that accepts a FunctionDecl pointer will set that function declaration to the actual declaration containing the body (if there is one).

Definition at line 3159 of file Decl.cpp.

References clang::Definition, and clang::Redeclarable< FunctionDecl >::redecls().

Referenced by clang::Sema::BuildResolvedCallExpr(), clang::interp::CheckCallable(), clang::interp::ByteCodeEmitter::compileFunc(), ComputeDefaultedComparisonExceptionSpec(), clang::Sema::DefineUsedVTables(), DelegatingCycleHelper(), clang::Sema::DiagnoseImmediateEscalatingReason(), DiagnoseInvalidRedeclaration(), clang::CodeGen::CodeGenModule::getVTableLinkage(), clang::ASTNodeImporter::ImportDeclParts(), isImplicitlyInstantiable(), isOutOfLine(), isStandardDelete(), and clang::CodeGen::CodeGenVTables::isVTableExternal().

◆ hasCXXExplicitFunctionObjectParameter() bool FunctionDecl::hasCXXExplicitFunctionObjectParameter ( ) const

Definition at line 3752 of file Decl.cpp.

References getNumParams(), getParamDecl(), and clang::ParmVarDecl::isExplicitObjectParameter().

Referenced by clang::Sema::AddSurrogateCandidate(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckFunctionCall(), clang::Sema::CheckNonDependentConversions(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::CheckOverridingFunctionExceptionSpec(), clang::Sema::ConvertArgumentsForCall(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::Sema::FunctionNonObjectParamTypesAreEqual(), getMinRequiredExplicitArguments(), clang::Sema::getMoreSpecializedTemplate(), getNonObjectParameter(), getNumNonObjectParams(), clang::CXXMethodDecl::isExplicitObjectMemberFunction(), and clang::CXXMethodDecl::isImplicitObjectMemberFunction().

◆ hasImplicitReturnZero() bool clang::FunctionDecl::hasImplicitReturnZero ( ) const inline ◆ hasInheritedPrototype() bool clang::FunctionDecl::hasInheritedPrototype ( ) const inline ◆ hasOneParamOrDefaultArgs() bool FunctionDecl::hasOneParamOrDefaultArgs ( ) const ◆ hasPrototype() bool clang::FunctionDecl::hasPrototype ( ) const inline ◆ hasSkippedBody() bool clang::FunctionDecl::hasSkippedBody ( ) const inline ◆ hasTrivialBody() bool FunctionDecl::hasTrivialBody ( ) const ◆ hasWrittenPrototype() bool clang::FunctionDecl::hasWrittenPrototype ( ) const inline ◆ instantiationIsPending() bool clang::FunctionDecl::instantiationIsPending ( ) const inline

Whether the instantiation of this function is pending.

This bit is set when the decision to instantiate this function is made and unset if and when the function body is created. That leaves out cases where instantiation did not happen because the template definition was not seen in this TU. This bit remains set in those cases, under the assumption that the instantiation will happen in some other TU.

Definition at line 2435 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

◆ isConsteval() bool clang::FunctionDecl::isConsteval ( ) const inline

Definition at line 2410 of file Decl.h.

References clang::Consteval, and getConstexprKind().

Referenced by clang::Sema::ActOnStartOfFunctionDef(), clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::Sema::BuildReturnStmt(), CheckConstexprDeclStmt(), CheckConstexprFunctionBody(), CheckConstexprFunctionStmt(), CheckConstexprMissingReturn(), CheckConstexprParameterTypes(), CheckConstexprReturnType(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckImmediateEscalatingFunctionDefinition(), clang::Sema::CheckMain(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), clang::Sema::DiagnoseImmediateEscalatingReason(), EvaluateAndDiagnoseImmediateInvocation(), handleMSConstexprAttr(), isImmediateEscalating(), isImmediateFunction(), and IsOverloadOrOverrideImpl().

◆ isConstexpr() bool clang::FunctionDecl::isConstexpr ( ) const inline

Whether this is a (C++11) constexpr function or constexpr constructor.

Definition at line 2398 of file Decl.h.

References getConstexprKind(), and clang::Unspecified.

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(), clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::Sema::BuildLambdaExpr(), clang::Sema::BuildReturnStmt(), clang::interp::CheckCallable(), CheckConstexprFunction(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckMain(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), CheckTrivialDefaultConstructor(), clang::interp::ByteCodeEmitter::compileFunc(), clang::CodeGen::CodeGenModule::EmitGlobal(), clang::Sema::findInheritingConstructor(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::Sema::InstantiateClass(), IsOverloadOrOverrideImpl(), clang::Sema::MarkVirtualMembersReferenced(), clang::SemaCUDA::maybeAddHostDeviceAttrs(), specialMemberIsConstexpr(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isConstexprSpecified() bool clang::FunctionDecl::isConstexprSpecified ( ) const inline ◆ isCPUDispatchMultiVersion() bool FunctionDecl::isCPUDispatchMultiVersion ( ) const ◆ isCPUSpecificMultiVersion() bool FunctionDecl::isCPUSpecificMultiVersion ( ) const ◆ isDefaulted() bool clang::FunctionDecl::isDefaulted ( ) const inline

Whether this function is defaulted.

Valid for e.g. special member functions, defaulted comparisions (not methods!).

Definition at line 2313 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::AddImplicitMSFunctionNoBuiltinAttr(), clang::Sema::AddMethodCandidate(), clang::Sema::areMultiversionVariantFunctionsCompatible(), checkMoveAssignmentForRepeatedMove(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DiagnoseDeletedDefaultedFunction(), clang::Sema::diagnoseZeroToNullptrConversion(), HandleFunctionCall(), clang::Sema::InstantiateFunctionDefinition(), isDeletedAsWritten(), isImmediateEscalating(), clang::Sema::isImplicitlyDeleted(), IsStructurallyEquivalent(), isThisDeclarationADefinition(), clang::Sema::SetDeclDefaulted(), TryValueInitialization(), clang::interp::Compiler< Emitter >::VisitCXXConstructExpr(), clang::JSONNodeDumper::VisitFunctionDecl(), and clang::ASTDeclReader::VisitFunctionDecl().

◆ isDefined() [1/2] bool clang::FunctionDecl::isDefined ( ) const inline ◆ isDefined() [2/2]

Returns true if the function has a definition that does not need to be instantiated.

The variant that accepts a FunctionDecl pointer will set that function declaration to the declaration that is a definition (if there is one).

Parameters
CheckForPendingFriendDefinition If true, also check for friend declarations that were instantiated from function definitions. Such a declaration behaves as if it is a definition for the purpose of redefinition checking, but isn't actually a "real" definition until its body is instantiated.

Definition at line 3206 of file Decl.cpp.

References clang::Definition, and clang::Redeclarable< FunctionDecl >::redecls().

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::interp::CheckCallable(), clang::Sema::CheckForFunctionRedefinition(), clang::interp::ByteCodeEmitter::compileFunc(), clang::Sema::FinishTemplateArgumentDeduction(), getMethodBody(), clang::CXXMethodDecl::hasInlineBody(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), clang::SemaCUDA::isEmptyConstructor(), clang::SemaCUDA::isEmptyDestructor(), clang::Sema::isUnavailableAlignedAllocationFunction(), clang::Sema::MarkVTableUsed(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), and clang::Sema::PerformPendingInstantiations().

◆ isDeleted() bool clang::FunctionDecl::isDeleted ( ) const inline

Whether this function has been deleted.

A function that is "deleted" (via the C++0x "= delete" syntax) acts like a normal function, except that it cannot actually be called or have its address taken. Deleted functions are typically used in C++ overload resolution to attract arguments whose type or lvalue/rvalue-ness would permit the use of a different overload that would behave incorrectly. For example, one might use deleted functions to ban implicit conversion from a floating-point number to an Integer type:

Definition at line 2468 of file Decl.h.

References clang::DeclContext::FunctionDeclBits, and getCanonicalDecl().

Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::AddImplicitMSFunctionNoBuiltinAttr(), clang::Sema::AddMethodCandidate(), clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::Sema::checkClassLevelDLLAttribute(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckCXXThrowOperand(), clang::Sema::CheckMemberSpecialization(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DiagnoseDeletedDefaultedFunction(), EvaluateUnaryTypeTrait(), clang::Sema::FindDeallocationFunction(), clang::Sema::findInheritingConstructor(), clang::Sema::isImplicitlyDeleted(), IsStructurallyEquivalent(), clang::Sema::LookupSpecialMember(), clang::Sema::MarkVTableUsed(), ShouldWarnAboutMissingPrototype(), TryValueInitialization(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isDeletedAsWritten() bool clang::FunctionDecl::isDeletedAsWritten ( ) const inline ◆ isDestroyingOperatorDelete() bool FunctionDecl::isDestroyingOperatorDelete ( ) const ◆ isExplicitlyDefaulted() bool clang::FunctionDecl::isExplicitlyDefaulted ( ) const inline ◆ isExternC() bool FunctionDecl::isExternC ( ) const

Determines whether this function is a function with external, C linkage.

Definition at line 3509 of file Decl.cpp.

References isDeclExternC().

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckLiteralOperatorDeclaration(), funcHasParameterSizeMangling(), clang::Sema::GatherArgumentsForCall(), getMemoryFunctionKind(), isMain(), clang::Sema::MergeFunctionDecl(), and clang::Sema::ProcessPragmaWeak().

◆ isFunctionTemplateSpecialization() bool FunctionDecl::isFunctionTemplateSpecialization ( ) const

Determine whether this function is a function template specialization.

Definition at line 4075 of file Decl.cpp.

Referenced by clang::Sema::ActOnStartCXXMemberReference(), clang::Sema::DeclareImplicitDeductionGuides(), clang::Sema::getMoreConstrainedFunction(), clang::Sema::getTopMostPointOfInstantiation(), clang::isGenericLambdaCallOperatorSpecialization(), clang::SemaCUDA::maybeAddHostDeviceAttrs(), clang::Sema::mergeCodeSegAttr(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), clang::Sema::mergeSectionAttr(), and ShouldWarnAboutMissingPrototype().

◆ isGlobal() bool FunctionDecl::isGlobal ( ) const ◆ isImmediateEscalating() bool FunctionDecl::isImmediateEscalating ( ) const

Definition at line 3271 of file Decl.cpp.

References getTemplatedKind(), isConsteval(), isConstexprSpecified(), isDefaulted(), clang::isLambdaCallOperator(), TK_DependentNonTemplate, and TK_NonTemplate.

Referenced by clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::CheckIfFunctionSpecializationIsImmediate(), clang::Sema::CheckImmediateEscalatingFunctionDefinition(), clang::Sema::DiagnoseImmediateEscalatingReason(), and isImmediateFunction().

◆ isImmediateFunction() bool FunctionDecl::isImmediateFunction ( ) const

Definition at line 3296 of file Decl.cpp.

References BodyContainsImmediateEscalatingExpressions(), getTemplateInstantiationPattern(), isConsteval(), isImmediateEscalating(), and P.

Referenced by clang::Sema::BuildCXXDefaultArgExpr(), clang::Sema::CheckCXXDefaultArgExpr(), clang::Sema::CheckImmediateEscalatingFunctionDefinition(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), EvaluateAndDiagnoseImmediateInvocation(), clang::VTableContextBase::hasVtableSlot(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isImplicitlyInstantiable() bool FunctionDecl::isImplicitlyInstantiable ( ) const ◆ isIneligibleOrNotSelected() bool clang::FunctionDecl::isIneligibleOrNotSelected ( ) const inline ◆ isInExternCContext() bool FunctionDecl::isInExternCContext ( ) const ◆ isInExternCXXContext() bool FunctionDecl::isInExternCXXContext ( ) const ◆ isInlineBuiltinDeclaration() bool FunctionDecl::isInlineBuiltinDeclaration ( ) const ◆ isInlined() bool clang::FunctionDecl::isInlined ( ) const inline

Determine whether this function should be inlined, because it is either marked "inline" or "constexpr" or is a member function of a class that was defined in the class body.

Definition at line 2796 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnStartOfFunctionDef(), basicGVALinkageForFunction(), clang::Sema::checkClassLevelDLLAttribute(), CXXRecordNonInlineHasAttr(), clang::Sema::DefineUsedVTables(), diagnoseUseOfInternalDeclInInlineFunction(), clang::CodeGen::CGDebugInfo::EmitFuncDeclForCallSite(), clang::CodeGen::CodeGenModule::getVTableLinkage(), handleDLLAttr(), clang::Sema::InstantiateFunctionDefinition(), clang::ento::CheckerContext::isCLibraryFunction(), isFunctionDefinitionDiscarded(), isImplicitlyInstantiable(), isInlineDefinitionExternallyVisible(), isMSExternInline(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), setPreviousDeclaration(), ShouldWarnAboutMissingPrototype(), and useInlineVisibilityHidden().

◆ isInlineDefinitionExternallyVisible() bool FunctionDecl::isInlineDefinitionExternallyVisible ( ) const

For an inline function definition in C, or for a gnu_inline function in C++, determine whether the definition will be externally visible.

Inline function definitions are always available for inlining optimizations. However, depending on the language dialect, declaration specifiers, and attributes, the definition of an inline function may or may not be "externally" visible to other translation units in the program.

In C99, inline definitions are not externally visible by default. However, if even one of the global-scope declarations is marked "extern inline", the inline definition becomes externally visible (C99 6.7.4p6).

In GNU89 mode, or if the gnu_inline attribute is attached to the function definition, we use the GNU semantics for inline, which are nearly the opposite of C99 semantics. In particular, "inline" by itself will create an externally visible symbol, but "extern inline" will not create an externally visible symbol.

Definition at line 3948 of file Decl.cpp.

References doesThisDeclarationHaveABody(), clang::Decl::getASTContext(), clang::ASTContext::getLangOpts(), getStorageClass(), isInlined(), isInlineSpecified(), RedeclForcesDefC99(), clang::Redeclarable< FunctionDecl >::redecls(), clang::SC_Extern, and willHaveBody().

Referenced by basicGVALinkageForFunction().

◆ isInlineSpecified() bool clang::FunctionDecl::isInlineSpecified ( ) const inline

Determine whether the "inline" keyword was specified for this function.

Definition at line 2774 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::areMultiversionVariantFunctionsCompatible(), canRedefineFunction(), clang::Sema::CheckMain(), computeKeyFunction(), Create(), clang::ODRDiagsEmitter::diagnoseMismatch(), doesDeclarationForceExternallyVisibleDefinition(), FunctionDecl(), handleGlobalAttr(), isInlineDefinitionExternallyVisible(), clang::Sema::MergeCXXFunctionDecl(), RedeclForcesDefC99(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isLateTemplateParsed() bool clang::FunctionDecl::isLateTemplateParsed ( ) const inline ◆ isMain() bool FunctionDecl::isMain ( ) const ◆ isMemberLikeConstrainedFriend() bool FunctionDecl::isMemberLikeConstrainedFriend ( ) const ◆ isMSExternInline() bool FunctionDecl::isMSExternInline ( ) const ◆ isMSVCRTEntryPoint() bool FunctionDecl::isMSVCRTEntryPoint ( ) const ◆ isMultiVersion() bool clang::FunctionDecl::isMultiVersion ( ) const inline

True if this function is considered a multiversioned function.

Definition at line 2565 of file Decl.h.

References clang::DeclContext::FunctionDeclBits, and getCanonicalDecl().

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), CheckDeclarationCausesMultiVersioning(), CheckMultiVersionAdditionalDecl(), CheckMultiVersionFunction(), clang::CodeGen::CodeGenModule::EmitGlobal(), clang::ASTContext::forEachMultiversionedFunctionVersion(), clang::CodeGen::CodeGenModule::getLLVMLinkageForDeclarator(), isBetterMultiversionCandidate(), isCPUDispatchMultiVersion(), isCPUSpecificMultiVersion(), isNonViableMultiVersionOverload(), isTargetClonesMultiVersion(), isTargetMultiVersion(), isTargetMultiVersionDefault(), isTargetVersionMultiVersion(), and noteOverloads().

◆ isNoReturn() bool FunctionDecl::isNoReturn ( ) const ◆ isOutOfLine() bool FunctionDecl::isOutOfLine ( ) const overridevirtual ◆ isOverloadedOperator() bool clang::FunctionDecl::isOverloadedOperator ( ) const inline

Whether this function declaration represents an C++ overloaded operator, e.g., "operator+".

Definition at line 2808 of file Decl.h.

References getOverloadedOperator(), and clang::OO_None.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), DiagnoseShiftCompare(), isStdOstreamOperatorCall(), IsStructurallyEquivalent(), and printMemFnName().

◆ isPureVirtual() bool clang::FunctionDecl::isPureVirtual ( ) const inline

Whether this virtual function is pure, i.e.

makes the containing class abstract.

Definition at line 2288 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::interp::CheckPure(), CXXRecordNonInlineHasAttr(), clang::ODRDiagsEmitter::diagnoseMismatch(), clang::CXXMethodDecl::getDevirtualizedMethod(), IsStructurallyEquivalent(), clang::CXXMethodDecl::isVirtual(), clang::Sema::MarkVirtualMembersReferenced(), clang::Sema::MergeCompatibleFunctionDecls(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isReplaceableGlobalAllocationFunction() bool FunctionDecl::isReplaceableGlobalAllocationFunction ( std::optional< unsigned > *  AlignmentParam = nullptr, boolIsNothrow = nullptr  ) const

Determines whether this function is one of the replaceable global allocation functions: void *operator new(size_t); void *operator new(size_t, const std::nothrow_t &) noexcept; void *operator new[](size_t); void *operator new[](size_t, const std::nothrow_t &) noexcept; void operator delete(void *) noexcept; void operator delete(void *, std::size_t) noexcept; [C++1y] void operator delete(void *, const std::nothrow_t &) noexcept; void operator delete[](void *) noexcept; void operator delete[](void *, std::size_t) noexcept; [C++1y] void operator delete[](void *, const std::nothrow_t &) noexcept; These functions have special behavior under C++1y [expr.new]: An implementation is allowed to omit a call to a replaceable global allocation function.

[...]

If this function is an aligned allocation/deallocation function, return the parameter number of the requested alignment through AlignmentParam.

If this function is an allocation/deallocation function that takes the std::nothrow_t tag, return true through IsNothrow,

Definition at line 3383 of file Decl.cpp.

References clang::Type::castAs(), clang::Qualifiers::Const, clang::DeclarationName::CXXOperatorName, clang::Type::getAs(), clang::Decl::getASTContext(), clang::QualType::getCVRQualifiers(), clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::ASTContext::getLangOpts(), clang::Type::getPointeeType(), clang::DeclContext::getRedeclContext(), clang::ASTContext::getSizeType(), clang::ValueDecl::getType(), clang::ASTContext::hasSameType(), clang::Type::isAlignValT(), clang::Type::isEnumeralType(), clang::Type::isNothrowT(), clang::QualType::isNull(), clang::Type::isReferenceType(), clang::IdentifierInfo::isStr(), clang::DeclContext::isTranslationUnit(), and clang::T.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddKnownFunctionAttributesForReplaceableGlobalAllocationFunction(), clang::Sema::CheckEquivalentExceptionSpec(), EmitNewDeleteCall(), clang::interp::Free(), clang::Sema::isUnavailableAlignedAllocationFunction(), resolveBuiltinNewDeleteOverload(), clang::interp::Compiler< Emitter >::VisitCallExpr(), and clang::ento::ExprEngine::VisitCXXNewExpr().

◆ isReservedGlobalPlacementOperator() bool FunctionDecl::isReservedGlobalPlacementOperator ( ) const

Determines whether this operator new or delete is one of the reserved global placement operators: void *operator new(size_t, void *); void *operator new[](size_t, void *); void operator delete(void *, void *); void operator delete[](void *, void *); These functions have special behavior under [new.delete.placement]: These functions are reserved, a C++ program may not define functions that displace the versions in the Standard C++ library.

The provisions of [basic.stc.dynamic] do not apply to these reserved placement forms of operator new and operator delete.

This function must be an allocation or deallocation function.

Definition at line 3358 of file Decl.cpp.

References clang::Type::castAs(), clang::DeclarationName::CXXOperatorName, clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::DeclContext::getRedeclContext(), clang::ValueDecl::getType(), clang::DeclContext::isTranslationUnit(), and clang::ASTContext::VoidPtrTy.

Referenced by clang::CXXNewExpr::shouldNullCheckAllocation(), and clang::ento::ExprEngine::VisitCXXNewExpr().

◆ isStatic() bool clang::FunctionDecl::isStatic ( ) const inline ◆ isTargetClonesMultiVersion() bool FunctionDecl::isTargetClonesMultiVersion ( ) const

True if this function is a multiversioned dispatch function as a part of the target-clones functionality.

Definition at line 3611 of file Decl.cpp.

References isMultiVersion().

◆ isTargetMultiVersion() bool FunctionDecl::isTargetMultiVersion ( ) const ◆ isTargetMultiVersionDefault() bool FunctionDecl::isTargetMultiVersionDefault ( ) const ◆ isTargetVersionMultiVersion() bool FunctionDecl::isTargetVersionMultiVersion ( ) const

True if this function is a multiversioned dispatch function as a part of the target-version functionality.

Definition at line 3615 of file Decl.cpp.

References isMultiVersion().

◆ isTemplateInstantiation() bool FunctionDecl::isTemplateInstantiation ( ) const ◆ isThisDeclarationADefinition() bool clang::FunctionDecl::isThisDeclarationADefinition ( ) const inline

Returns whether this specific declaration of the function is also a definition that does not contain uninstantiated body.

This does not determine whether the function has been defined (e.g., in a previous definition); for that information, use isDefined.

Note: the function declaration does not become a definition until the parser reaches the definition, if called before, this function will return false.

Definition at line 2249 of file Decl.h.

References doesThisDeclarationHaveABody(), clang::Decl::hasDefiningAttr(), hasSkippedBody(), isDefaulted(), isDeletedAsWritten(), and willHaveBody().

Referenced by clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::CheckImplicitSpecialMemberDeclaration(), handleAliasAttr(), handleIFuncAttr(), clang::Sema::InstantiateFunctionDefinition(), clang::FunctionTemplateDecl::isThisDeclarationADefinition(), clang::Sema::MergeFunctionDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::CallGraph::VisitFunctionDecl().

◆ isThisDeclarationInstantiatedFromAFriendDefinition() bool FunctionDecl::isThisDeclarationInstantiatedFromAFriendDefinition ( ) const ◆ isTrivial() bool clang::FunctionDecl::isTrivial ( ) const inline

Whether this function is "trivial" in some specialized C++ senses.

Can only be true for default constructors, copy constructors, copy assignment operators, and destructors. Not meaningful until the class has been fully built by Sema.

Definition at line 2305 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::CXXRecordDecl::addedEligibleSpecialMemberFunction(), clang::Sema::BuildExceptionDeclaration(), buildSingleCopyAssignRecursively(), clang::Sema::checkClassLevelDLLAttribute(), clang::Sema::CheckCXXThrowOperand(), checkMoveAssignmentForRepeatedMove(), CheckTrivialDefaultConstructor(), findTrivialSpecialMember(), GetDiagForGotoScopeDecl(), HandleDestructionImpl(), HandleFunctionCall(), clang::Expr::HasSideEffects(), clang::Expr::isConstantInitializer(), clang::SemaCUDA::isEmptyConstructor(), clang::SemaCUDA::isEmptyDestructor(), isTrivialObjectAssignment(), clang::Sema::MergeFunctionDecl(), clang::interp::runRecordDestructor(), ShouldDiagnoseUnusedDecl(), clang::CodeGen::ConstantEmitter::tryEmitPrivateForVarInit(), clang::interp::Compiler< Emitter >::VisitCXXConstructExpr(), and clang::interp::Compiler< Emitter >::VisitCXXInheritedCtorInitExpr().

◆ isTrivialForCall() bool clang::FunctionDecl::isTrivialForCall ( ) const inline ◆ isUserProvided() bool clang::FunctionDecl::isUserProvided ( ) const inline ◆ isVariadic() bool FunctionDecl::isVariadic ( ) const

Whether this function is variadic.

Definition at line 3092 of file Decl.cpp.

References clang::ValueDecl::getType().

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::BuildBlockForLambdaConversion(), canEmitDelegateCallArgs(), clang::Sema::CheckCallingConvAttr(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::SemaSYCL::CheckSYCLEntryPointFunctionDecl(), checkVAStartIsInVariadicFunction(), compareOverloads(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), clang::comments::DeclInfo::fill(), clang::CXXConstructorDecl::isConvertingConstructor(), clang::SemaCUDA::maybeAddHostDeviceAttrs(), sameFunctionParameterTypeLists(), clang::Sema::SpecialMemberIsTrivial(), and clang::JSONNodeDumper::VisitFunctionDecl().

◆ isVirtualAsWritten() bool clang::FunctionDecl::isVirtualAsWritten ( ) const inline ◆ param_begin() [1/2] ◆ param_begin() [2/2] ◆ param_empty() bool clang::FunctionDecl::param_empty ( ) const inline ◆ param_end() [1/2] ◆ param_end() [2/2] ◆ param_size() size_t clang::FunctionDecl::param_size ( ) const inline ◆ parameters() [1/2] ◆ parameters() [2/2]

Definition at line 2649 of file Decl.h.

References getNumParams().

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartOfFunctionDef(), addFunctionPointerConversion(), clang::SemaSYCL::BuildSYCLKernelCallStmt(), canEmitDelegateCallArgs(), checkAddressOfFunctionIsAvailable(), clang::Sema::CheckAddressOfOperand(), CheckCompleteParameterTypesForMangler(), clang::SemaHLSL::CheckEntryPoint(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckLiteralOperatorDeclaration(), CheckNonNullArguments(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::SemaARM::CheckSMEFunctionDefAttributes(), checkVAStartIsInVariadicFunction(), collectPlacementArgs(), compareOverloads(), clang::interp::ByteCodeEmitter::compileFunc(), clang::Sema::CompleteLambdaCallOperator(), clang::Sema::DeclareImplicitDeductionGuides(), clang::Sema::DiagnoseAlwaysNonNullPointer(), clang::CodeGen::CGOpenMPRuntime::emitDeclareSimdFunction(), clang::comments::DeclInfo::fill(), functionDeclHasDefaultArgument(), functionHasPassObjectSizeParams(), clang::CXXMethodDecl::getFunctionObjectParameterReferenceType(), getMinRequiredArguments(), clang::Sema::getMoreSpecializedTemplate(), getPackIndexForParam(), handleCallbackAttr(), hasNonTrivialConstructorCall(), hasOneParamOrDefaultArgs(), clang::ASTNodeImporter::ImportDeclParts(), clang::dataflow::Environment::initialize(), isOSObjectRelated(), clang::Sema::LazyProcessLifetimeCaptureByParams(), MaybeAddOverrideCalls(), param_begin(), param_empty(), param_end(), param_size(), ProcessAPINotes(), clang::TreeTransform< Derived >::RebuildLambdaExpr(), setPrototype(), SubstituteConstraintExpressionWithoutSatisfaction(), and clang::interp::Compiler< Emitter >::VisitCXXInheritedCtorInitExpr().

◆ setBody() void FunctionDecl::setBody ( StmtB ) ◆ setBodyContainsImmediateEscalatingExpressions() void clang::FunctionDecl::setBodyContainsImmediateEscalatingExpressions ( bool  Set ) inline ◆ setConstexprKind() ◆ setDeclarationNameLoc() ◆ setDefaulted() void clang::FunctionDecl::setDefaulted ( bool  D = true ) inline ◆ setDefaultedOrDeletedInfo() ◆ setDefaultLoc() ◆ setDeletedAsWritten()

Definition at line 3129 of file Decl.cpp.

References clang::FunctionDecl::DefaultedOrDeletedFunctionInfo::Create(), D, DefaultedOrDeletedInfo, clang::DeclContext::FunctionDeclBits, clang::Decl::getASTContext(), isDeletedAsWritten(), setDefaultedOrDeletedInfo(), and clang::FunctionDecl::DefaultedOrDeletedFunctionInfo::setDeletedMessage().

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::CheckMemberSpecialization(), clang::ASTNodeImporter::VisitFunctionDecl(), and clang::ASTDeclReader::VisitFunctionDecl().

◆ setDependentTemplateSpecialization() ◆ setDescribedFunctionTemplate() ◆ setExplicitlyDefaulted() void clang::FunctionDecl::setExplicitlyDefaulted ( bool  ED = true ) inline ◆ setFriendConstraintRefersToEnclosingTemplate() void clang::FunctionDecl::setFriendConstraintRefersToEnclosingTemplate ( bool  V = true ) inline ◆ setFunctionTemplateSpecialization()

Specify that this function declaration is actually a function template specialization.

Parameters
Template the function template that this function template specialization specializes. TemplateArgs the template arguments that produced this function template specialization from the template. InsertPos If non-NULL, the position in the function template specialization set where the function template specialization data will be inserted. TSK the kind of template specialization this is. TemplateArgsAsWritten location info of template arguments. PointOfInstantiation point at which the function template specialization was first instantiated.

Definition at line 2949 of file Decl.h.

References clang::Decl::getASTContext().

Referenced by clang::TemplateDeclInstantiator::VisitCXXMethodDecl().

◆ setHasImplicitReturnZero() void clang::FunctionDecl::setHasImplicitReturnZero ( bool  IRZ ) inline ◆ setHasInheritedPrototype() void clang::FunctionDecl::setHasInheritedPrototype ( bool  P = true ) inline ◆ setHasSkippedBody() void clang::FunctionDecl::setHasSkippedBody ( bool  Skipped = true ) inline ◆ setHasWrittenPrototype() void clang::FunctionDecl::setHasWrittenPrototype ( bool  P = true ) inline ◆ setImplicitlyInline() void clang::FunctionDecl::setImplicitlyInline ( bool  I = true ) inline ◆ setIneligibleOrNotSelected() void clang::FunctionDecl::setIneligibleOrNotSelected ( bool  II ) inline ◆ setInlineSpecified() void clang::FunctionDecl::setInlineSpecified ( bool  I ) inline ◆ setInstantiatedFromDecl() void FunctionDecl::setInstantiatedFromDecl ( FunctionDeclFD ) ◆ setInstantiationIsPending() void clang::FunctionDecl::setInstantiationIsPending ( bool  IC ) inline ◆ setInstantiationOfMemberFunction() ◆ setIsMultiVersion() void clang::FunctionDecl::setIsMultiVersion ( bool  V = true ) inline ◆ setIsPureVirtual() void FunctionDecl::setIsPureVirtual ( bool  P = true ) ◆ setLateTemplateParsed() void clang::FunctionDecl::setLateTemplateParsed ( bool  ILT = true ) inline ◆ setLazyBody() void clang::FunctionDecl::setLazyBody ( uint64_t  Offset ) inline ◆ setParams() ◆ setPreviousDeclaration() void FunctionDecl::setPreviousDeclaration ( FunctionDeclPrevDecl ) ◆ setRangeEnd() ◆ setStorageClass() void clang::FunctionDecl::setStorageClass ( StorageClass  SClass ) inline ◆ setTemplateSpecializationKind() ◆ setTrivial() void clang::FunctionDecl::setTrivial ( bool  IT ) inline ◆ setTrivialForCall() void clang::FunctionDecl::setTrivialForCall ( bool  IT ) inline ◆ setUsesFPIntrin() void clang::FunctionDecl::setUsesFPIntrin ( bool  I ) inline ◆ setUsesSEHTry() void clang::FunctionDecl::setUsesSEHTry ( bool  UST ) inline ◆ setVirtualAsWritten() void clang::FunctionDecl::setVirtualAsWritten ( bool  V ) inline ◆ setWillHaveBody() void clang::FunctionDecl::setWillHaveBody ( bool  V = true ) inline ◆ UsesFPIntrin() bool clang::FunctionDecl::UsesFPIntrin ( ) const inline ◆ usesSEHTry() bool clang::FunctionDecl::usesSEHTry ( ) const inline ◆ willHaveBody() bool clang::FunctionDecl::willHaveBody ( ) const inline

True if this function will eventually have a body, once it's fully parsed.

Definition at line 2561 of file Decl.h.

References clang::DeclContext::FunctionDeclBits.

Referenced by clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::BuildOverloadedCallExpr(), clang::interp::ByteCodeEmitter::compileFunc(), clang::Sema::DefineDefaultedComparison(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::CXXMethodDecl::hasInlineBody(), clang::Sema::InstantiateFunctionDefinition(), isInlineDefinitionExternallyVisible(), isThisDeclarationADefinition(), and clang::Sema::maybeAddDeclWithEffects().

◆ ASTDeclReader ◆ ASTDeclWriter ◆ Body ◆ DefaultedOrDeletedInfo

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


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4