A RetroSearch Logo

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

Search Query:

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

clang: lib/Sema/SemaDecl.cpp File Reference

Go to the source code of this file.

enum   ShadowedDeclKind {
  SDK_Local , SDK_Global , SDK_StaticMember , SDK_Field ,
  SDK_Typedef , SDK_Using , SDK_StructuredBinding
}   Enum describing the select options in diag::warn_decl_shadow. More...
  enum   OpenCLParamType {
  ValidKernelParam , PtrPtrKernelParam , PtrKernelParam , InvalidAddrSpacePtrKernelParam ,
  InvalidKernelParam , RecordKernelParam
}   static UnqualifiedTypeNameLookupResult  lookupUnqualifiedTypeNameInBase (Sema &S, const IdentifierInfo &II, SourceLocation NameLoc, const CXXRecordDecl *RD)   Tries to perform unqualified lookup of the type decls in bases for dependent class.
  static ParsedType  recoverFromTypeInKnownDependentBase (Sema &S, const IdentifierInfo &II, SourceLocation NameLoc)   static ParsedType  buildNamedType (Sema &S, const CXXScopeSpec *SS, QualType T, SourceLocation NameLoc, bool WantNontrivialTypeSourceInfo=true)   Build a ParsedType for a simple-type-specifier with a nested-name-specifier.
  static NestedNameSpecifiersynthesizeCurrentNestedNameSpecifier (ASTContext &Context, DeclContext *DC)   static const CXXRecordDeclfindRecordWithDependentBasesOfEnclosingMethod (const DeclContext *DC)   Find the parent class with dependent bases of the innermost enclosing method context.
  static bool  isResultTypeOrTemplate (LookupResult &R, const Token &NextToken)   Determine whether the given result set contains either a type name or.
  static bool  isTagTypeWithMissingTag (Sema &SemaRef, LookupResult &Result, Scope *S, CXXScopeSpec &SS, IdentifierInfo *&Name, SourceLocation NameLoc)   static bool  AllowOverloadingOfFunction (const LookupResult &Previous, ASTContext &Context, const FunctionDecl *New)   Determine whether overloading is allowed for a new function declaration considering prior declarations of the same name.
  static bool  isOutOfScopePreviousDeclaration (NamedDecl *PrevDecl, DeclContext *DC, ASTContext &Context)   Determines whether the given declaration is an out-of-scope previous declaration.
  static bool  isUsingDeclNotAtClassScope (NamedDecl *D)   static void  RemoveUsingDecls (LookupResult &R)   Removes using shadow declarations not at class scope from the lookup results.
  static bool  IsDisallowedCopyOrAssign (const CXXMethodDecl *D)   Check for this common pattern:
  static bool  isMainFileLoc (const Sema &S, SourceLocation Loc)   static bool  ShouldDiagnoseUnusedDecl (const LangOptions &LangOpts, const NamedDecl *D)   static void  GenerateFixForUnusedDecl (const NamedDecl *D, ASTContext &Ctx, FixItHint &Hint)   static void  CheckPoppedLabel (LabelDecl *L, Sema &S, Sema::DiagReceiverTy DiagReceiver)   static StringRef  getHeaderName (Builtin::Context &BuiltinInfo, unsigned ID, ASTContext::GetBuiltinTypeError Error)   static void  filterNonConflictingPreviousTypedefDecls (Sema &S, const TypedefNameDecl *Decl, LookupResult &Previous)   Typedef declarations don't have linkage, but they still denote the same entity if their types are the same.
  static bool  DeclHasAttr (const Decl *D, const Attr *A)   DeclhasAttr - returns true if decl Declaration already has the target attribute.
  static bool  isAttributeTargetADefinition (Decl *D)   static bool  mergeAlignedAttrs (Sema &S, NamedDecl *New, Decl *Old)   Merge alignment attributes from Old to New, taking into account the special semantics of C11's _Alignas specifier and C++11's alignas attribute.
  static bool  mergeDeclAttribute (Sema &S, NamedDecl *D, const InheritableAttr *Attr, Sema::AvailabilityMergeKind AMK)   static const NamedDeclgetDefinition (const Decl *D)   static bool  hasAttribute (const Decl *D, attr::Kind Kind)   static void  checkNewAttributesAfterDef (Sema &S, Decl *New, const Decl *Old)   checkNewAttributesAfterDef - If we already have a definition, check that there are no new attributes in this declaration.
  static void  diagnoseMissingConstinit (Sema &S, const VarDecl *InitDecl, const ConstInitAttr *CIAttr, bool AttrBeforeInit)   template<class T > static unsigned  propagateAttribute (ParmVarDecl *To, const ParmVarDecl *From, Sema &S)   template<class F > static void  propagateAttributes (ParmVarDecl *To, const ParmVarDecl *From, F &&propagator)   static void  mergeParamDeclAttributes (ParmVarDecl *newDecl, const ParmVarDecl *oldDecl, Sema &S)   mergeParamDeclAttributes - Copy attributes from the old parameter to the new one.
  static bool  EquivalentArrayTypes (QualType Old, QualType New, const ASTContext &Ctx)   static void  mergeParamDeclTypes (ParmVarDecl *NewParam, const ParmVarDecl *OldParam, Sema &S)   template<typename T > static std::pair< diag::kind, SourceLocationgetNoteDiagForInvalidRedeclaration (const T *Old, const T *New)   static bool  canRedefineFunction (const FunctionDecl *FD, const LangOptions &LangOpts)   canRedefineFunction - checks if a function can be redefined.
  template<typename T > static bool  haveIncompatibleLanguageLinkages (const T *Old, const T *New)   template<typename T > static bool  isExternC (T *D)   static bool  isExternC (VarTemplateDecl *)   static bool  isExternC (FunctionTemplateDecl *)   template<typename ExpectedDecl > static bool  checkUsingShadowRedecl (Sema &S, UsingShadowDecl *OldS, ExpectedDecl *New)   Check whether a redeclaration of an entity introduced by a using-declaration is valid, given that we know it's not an overload (nor a hidden tag declaration).
  static bool  hasIdenticalPassObjectSizeAttrs (const FunctionDecl *A, const FunctionDecl *B)   static void  adjustDeclContextForDeclaratorDecl (DeclaratorDecl *NewD, DeclaratorDecl *OldD)   If necessary, adjust the semantic declaration context for a qualified declaration to name the correct inline namespace within the qualifier.
  static void  diagnoseVarDeclTypeMismatch (Sema &S, VarDecl *New, VarDecl *Old)   static bool  mergeTypeWithPrevious (Sema &S, VarDecl *NewVD, VarDecl *OldVD, LookupResult &Previous)   static unsigned  getMSManglingNumber (const LangOptions &LO, Scope *S)   static NonCLikeKind  getNonCLikeKindForAnonymousStruct (const CXXRecordDecl *RD)   Determine whether a class is C-like, according to the rules of C++ [dcl.typedef] for anonymous classes with typedef names for linkage.
  static unsigned  GetDiagnosticTypeSpecifierID (const DeclSpec &DS)   static bool  CheckAnonMemberRedeclaration (Sema &SemaRef, Scope *S, DeclContext *Owner, DeclarationName Name, SourceLocation NameLoc, bool IsUnion, StorageClass SC)   We are trying to inject an anonymous member into the given scope; check if there's an existing declaration that can't be overloaded.
  static bool  InjectAnonymousStructOrUnionMembers (Sema &SemaRef, Scope *S, DeclContext *Owner, RecordDecl *AnonRecord, AccessSpecifier AS, StorageClass SC, SmallVectorImpl< NamedDecl * > &Chaining)   InjectAnonymousStructOrUnionMembers - Inject the members of the anonymous struct or union AnonRecord into the owning context Owner and scope S.
  static StorageClass  StorageClassSpecToVarDeclStorageClass (const DeclSpec &DS)   StorageClassSpecToVarDeclStorageClass - Maps a DeclSpec::SCS to a VarDecl::StorageClass.
  static SourceLocation  findDefaultInitializer (const CXXRecordDecl *Record)   static void  checkDuplicateDefaultInit (Sema &S, CXXRecordDecl *Parent, SourceLocation DefaultInitLoc)   static void  checkDuplicateDefaultInit (Sema &S, CXXRecordDecl *Parent, CXXRecordDecl *AnonUnion)   static QualType  getCoreType (QualType Ty)   static bool  hasSimilarParameters (ASTContext &Context, FunctionDecl *Declaration, FunctionDecl *Definition, SmallVectorImpl< unsigned > &Params)   hasSimilarParameters - Determine whether the C++ functions Declaration and Definition have "nearly" matching parameters.
  static bool  RebuildDeclaratorInCurrentInstantiation (Sema &S, Declarator &D, DeclarationName Name)   RebuildDeclaratorInCurrentInstantiation - Checks whether the given declarator needs to be rebuilt in the current instantiation.
  static bool  isFromSystemHeader (SourceManager &SM, const Decl *D)   Returns true if the declaration is declared in a system header or from a system macro.
  static QualType  TryToFixInvalidVariablyModifiedType (QualType T, ASTContext &Context, bool &SizeIsNegative, llvm::APSInt &Oversized)   Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility).
  static void  FixInvalidVariablyModifiedTypeLoc (TypeLoc SrcTL, TypeLoc DstTL)   static TypeSourceInfoTryToFixInvalidVariablyModifiedTypeSourceInfo (TypeSourceInfo *TInfo, ASTContext &Context, bool &SizeIsNegative, llvm::APSInt &Oversized)   Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility).
  static void  SetNestedNameSpecifier (Sema &S, DeclaratorDecl *DD, Declarator &D)   static void  checkWeakAttr (Sema &S, NamedDecl &ND)   static void  checkWeakRefAttr (Sema &S, NamedDecl &ND)   static void  checkAliasAttr (Sema &S, NamedDecl &ND)   static void  checkSelectAnyAttr (Sema &S, NamedDecl &ND)   static void  checkHybridPatchableAttr (Sema &S, NamedDecl &ND)   static void  checkInheritableAttr (Sema &S, NamedDecl &ND)   static void  checkLifetimeBoundAttr (Sema &S, NamedDecl &ND)   static void  checkAttributesAfterMerging (Sema &S, NamedDecl &ND)   static void  checkDLLAttributeRedeclaration (Sema &S, NamedDecl *OldDecl, NamedDecl *NewDecl, bool IsSpecialization, bool IsDefinition)   static bool  isFunctionDefinitionDiscarded (Sema &S, FunctionDecl *FD)   Given that we are within the definition of the given function, will that definition behave like C99's 'inline', where the definition is discarded except for optimization purposes?
  template<typename T > static bool  isIncompleteDeclExternC (Sema &S, const T *D)   Determine whether a variable is extern "C" prior to attaching an initializer.
  static bool  shouldConsiderLinkage (const VarDecl *VD)   static bool  shouldConsiderLinkage (const FunctionDecl *FD)   static bool  hasParsedAttr (Scope *S, const Declarator &PD, ParsedAttr::Kind Kind)   static bool  isDeclExternC (const Decl *D)   Returns true if given declaration has external C language linkage.
  static bool  diagnoseOpenCLTypes (Sema &Se, VarDecl *NewVD)   Returns true if there hasn't been any invalid type diagnosed.
  template<typename AttrTy > static void  copyAttrFromTypedefToDecl (Sema &S, Decl *D, const TypedefType *TT)   static void  emitReadOnlyPlacementAttrWarning (Sema &S, const VarDecl *VD)   static bool  isMainVar (DeclarationName Name, VarDecl *VD)   static ShadowedDeclKind  computeShadowedDeclKind (const NamedDecl *ShadowedDecl, const DeclContext *OldDC)   Determine what kind of declaration we're shadowing.
  static SourceLocation  getCaptureLocation (const LambdaScopeInfo *LSI, const VarDecl *VD)   Return the location of the capture if the given lambda captures the given variable VD, or an invalid source location otherwise.
  static bool  shouldWarnIfShadowedDecl (const DiagnosticsEngine &Diags, const LookupResult &R)   template<typename T > static bool  checkGlobalOrExternCConflict (Sema &S, const T *ND, bool IsGlobal, LookupResult &Previous)   Check for conflict between this global or extern "C" declaration and previous global or extern "C" declarations.
  template<typename T > static bool  checkForConflictWithNonVisibleExternC (Sema &S, const T *ND, LookupResult &Previous)   Apply special rules for handling extern "C" declarations.
  static bool  CheckC23ConstexprVarType (Sema &SemaRef, SourceLocation VarLoc, QualType T)   static NamedDeclDiagnoseInvalidRedeclaration (Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD, ActOnFDArgs &ExtraArgs, bool IsLocalFriend, Scope *S)   Generate diagnostics for an invalid function redeclaration.
  static StorageClass  getFunctionStorageClass (Sema &SemaRef, Declarator &D)   static FunctionDeclCreateNewFunctionDecl (Sema &SemaRef, Declarator &D, DeclContext *DC, QualType &R, TypeSourceInfo *TInfo, StorageClass SC, bool &IsVirtualOkay)   static bool  isOpenCLSizeDependentType (ASTContext &C, QualType Ty)   static OpenCLParamType  getOpenCLKernelParameterType (Sema &S, QualType PT)   static void  checkIsValidOpenCLKernelParameter (Sema &S, Declarator &D, ParmVarDecl *Param, llvm::SmallPtrSetImpl< const Type * > &ValidTypes)   static DeclContextgetTagInjectionContext (DeclContext *DC)   Find the DeclContext in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing.
  static ScopegetTagInjectionScope (Scope *S, const LangOptions &LangOpts)   Find the Scope in which a tag is implicitly declared if we see an elaborated type specifier in the specified context, and lookup finds nothing.
  static bool  isStdBuiltin (ASTContext &Ctx, FunctionDecl *FD, unsigned BuiltinID)   Determine whether a declaration matches a known function in namespace std.
  static AttrgetImplicitCodeSegAttrFromClass (Sema &S, const FunctionDecl *FD)   Return a CodeSegAttr from a containing class.
  static bool  CheckMultiVersionValue (Sema &S, const FunctionDecl *FD)   Check the target or target_version attribute of the function for MultiVersion validity.
  static bool  AttrCompatibleWithMultiVersion (attr::Kind Kind, MultiVersionKind MVKind)   static bool  checkNonMultiVersionCompatAttributes (Sema &S, const FunctionDecl *FD, const FunctionDecl *CausedFD, MultiVersionKind MVKind)   static bool  CheckMultiVersionAdditionalRules (Sema &S, const FunctionDecl *OldFD, const FunctionDecl *NewFD, bool CausesMV, MultiVersionKind MVKind)   static bool  CheckMultiVersionFirstFunction (Sema &S, FunctionDecl *FD)   Check the validity of a multiversion function declaration that is the first of its kind.
  static bool  PreviousDeclsHaveMultiVersionAttribute (const FunctionDecl *FD)   static void  patchDefaultTargetVersion (FunctionDecl *From, FunctionDecl *To)   static bool  CheckDeclarationCausesMultiVersioning (Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous)   static bool  MultiVersionTypesCompatible (FunctionDecl *Old, FunctionDecl *New)   static bool  CheckMultiVersionAdditionalDecl (Sema &S, FunctionDecl *OldFD, FunctionDecl *NewFD, const CPUDispatchAttr *NewCPUDisp, const CPUSpecificAttr *NewCPUSpec, const TargetClonesAttr *NewClones, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous)   Check the validity of a new function declaration being added to an existing multiversioned declaration collection.
  static bool  CheckMultiVersionFunction (Sema &S, FunctionDecl *NewFD, bool &Redeclaration, NamedDecl *&OldDecl, LookupResult &Previous)   Check the validity of a mulitversion function declaration.
  static void  CheckConstPureAttributesUsage (Sema &S, FunctionDecl *NewFD)   static bool  isDefaultStdCall (FunctionDecl *FD, Sema &S)   static bool  hasDeducedAuto (DeclaratorDecl *DD)   static void  CheckExplicitObjectParameter (Sema &S, ParmVarDecl *P, SourceLocation ExplicitThisLoc)   static bool  FindPossiblePrototype (const FunctionDecl *FD, const FunctionDecl *&PossiblePrototype)   static bool  ShouldWarnAboutMissingPrototype (const FunctionDecl *FD, const FunctionDecl *&PossiblePrototype)   static void  diagnoseImplicitlyRetainedSelf (Sema &S)   static bool  methodHasName (const FunctionDecl *FD, StringRef Name)   static unsigned  getRedeclDiagFromTagKind (TagTypeKind Tag)   Get diagnostic select index for tag kind for redeclaration diagnostic message.
  static bool  isClassCompatTagKind (TagTypeKind Tag)   Determine if tag kind is a class-key compatible with class for redeclaration (class, struct, or __interface).
  static FixItHint  createFriendTagNNSFixIt (Sema &SemaRef, NamedDecl *ND, Scope *S, SourceLocation NameLoc)   Add a minimal nested name specifier fixit hint to allow lookup of a tag name from an outer enclosing namespace or file scope inside a friend declaration.
  static bool  isAcceptableTagRedeclContext (Sema &S, DeclContext *OldDC, DeclContext *NewDC)   Determine whether a tag originally declared in context OldDC can be redeclared with an unqualified name in NewDC (assuming name lookup found a declaration in OldDC as a previous decl, perhaps through a using-declaration).
  static void  ComputeSelectedDestructor (Sema &S, CXXRecordDecl *Record)   [class.dtor]p4: At the end of the definition of a class, overload resolution is performed among the prospective destructors declared in that class with an empty argument list to select the destructor for the class, also known as the selected destructor.
  static bool  AreSpecialMemberFunctionsSameKind (ASTContext &Context, CXXMethodDecl *M1, CXXMethodDecl *M2, CXXSpecialMemberKind CSM)   [class.mem.special]p5 Two special member functions are of the same kind if:
  static void  SetEligibleMethods (Sema &S, CXXRecordDecl *Record, ArrayRef< CXXMethodDecl * > Methods, CXXSpecialMemberKind CSM)   [class.mem.special]p6: An eligible special member function is a special member function for which:
  static void  ComputeSpecialMemberFunctionsEligiblity (Sema &S, CXXRecordDecl *Record)   static bool  isRepresentableIntegerValue (ASTContext &Context, llvm::APSInt &Value, QualType T)   Determine whether the given integral value is representable within the given type T.
  static QualType  getNextLargerIntegralType (ASTContext &Context, QualType T)   static bool  ValidDuplicateEnum (EnumConstantDecl *ECD, EnumDecl *Enum)   static void  CheckForDuplicateEnumValues (Sema &S, ArrayRef< Decl * > Elements, EnumDecl *Enum, QualType EnumType)   ◆ TRANSFORM_TYPE_TRAIT_DEF #define TRANSFORM_TYPE_TRAIT_DEF (   _,   Trait  )    case DeclSpec::TST_##Trait: ◆ WANT_DECL_MERGE_LOGIC ◆ OpenCLParamType Enumerator ValidKernelParam  PtrPtrKernelParam  PtrKernelParam  InvalidAddrSpacePtrKernelParam  InvalidKernelParam  RecordKernelParam 

Definition at line 9461 of file SemaDecl.cpp.

◆ ShadowedDeclKind

Enum describing the select options in diag::warn_decl_shadow.

Enumerator SDK_Local  SDK_Global  SDK_StaticMember  SDK_Field  SDK_Typedef  SDK_Using  SDK_StructuredBinding 

Definition at line 8222 of file SemaDecl.cpp.

◆ adjustDeclContextForDeclaratorDecl() ◆ AllowOverloadingOfFunction() ◆ AreSpecialMemberFunctionsSameKind() ◆ AttrCompatibleWithMultiVersion() ◆ buildNamedType()

Build a ParsedType for a simple-type-specifier with a nested-name-specifier.

Definition at line 250 of file SemaDecl.cpp.

References clang::Sema::Context, clang::Sema::CreateParsedType(), clang::Sema::getElaboratedType(), clang::ASTContext::getElaboratedType(), clang::Type::getTypeClass(), clang::CXXScopeSpec::getWithLocInContext(), clang::CXXScopeSpec::isEmpty(), clang::OpaquePtr< QualType >::make(), clang::None, clang::ElaboratedTypeLoc::setElaboratedKeywordLoc(), clang::ElaboratedTypeLoc::setQualifierLoc(), and clang::T.

Referenced by clang::Sema::ClassifyName(), and clang::Sema::getTypeName().

◆ canRedefineFunction() ◆ checkAliasAttr() ◆ CheckAnonMemberRedeclaration()

We are trying to inject an anonymous member into the given scope; check if there's an existing declaration that can't be overloaded.

Returns
true if this is a forbidden redeclaration

Definition at line 5312 of file SemaDecl.cpp.

References clang::SemaBase::Diag(), clang::Sema::DiagPlaceholderVariableDefinition(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::LookupResult::getRepresentativeDecl(), clang::NamedDecl::getUnderlyingDecl(), clang::Sema::isDeclInScope(), clang::DeclContext::isFunctionOrMethod(), clang::NamedDecl::isPlaceholderVar(), clang::DeclContext::isRecord(), clang::Sema::LookupMemberName, clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, and clang::SC_None.

Referenced by InjectAnonymousStructOrUnionMembers().

◆ checkAttributesAfterMerging() static void checkAttributesAfterMerging ( SemaS, NamedDeclND  ) static ◆ CheckC23ConstexprVarType()

Definition at line 8609 of file SemaDecl.cpp.

References clang::Sema::Context, clang::SemaBase::Diag(), clang::RecordDecl::fields(), clang::Type::getAsRecordDecl(), clang::ASTContext::getBaseElementType(), clang::ASTContext::getCanonicalType(), clang::Type::isAtomicType(), clang::Type::isRecordType(), clang::QualType::isRestrictQualified(), clang::Type::isVariablyModifiedType(), clang::QualType::isVolatileQualified(), and clang::T.

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

◆ CheckConstPureAttributesUsage() ◆ CheckDeclarationCausesMultiVersioning()

Definition at line 11461 of file SemaDecl.cpp.

References CheckMultiVersionAdditionalRules(), CheckMultiVersionValue(), clang::SemaBase::Diag(), clang::ParsedTargetAttr::Features, clang::Sema::getASTContext(), clang::Decl::getAttr(), clang::Decl::getLocation(), clang::ASTContext::getTargetInfo(), clang::FunctionDecl::isMultiVersion(), clang::TargetInfo::parseTargetAttr(), patchDefaultTargetVersion(), Previous, PreviousDeclsHaveMultiVersionAttribute(), clang::Redeclarable< decl_type >::redecls(), clang::Decl::setInvalidDecl(), clang::FunctionDecl::setIsMultiVersion(), clang::Target, and clang::TargetVersion.

Referenced by CheckMultiVersionFunction().

◆ checkDLLAttributeRedeclaration()

Definition at line 7057 of file SemaDecl.cpp.

References clang::Decl::addAttr(), clang::Sema::Context, clang::VarDecl::DeclarationOnly, clang::SemaBase::Diag(), clang::Decl::dropAttr(), clang::Decl::FOK_Declared, clang::Decl::getAttr(), clang::Decl::getLocation(), clang::ASTContext::getTargetInfo(), clang::NamedDecl::isCXXClassMember(), clang::Decl::isImplicit(), clang::Decl::isInvalidDecl(), clang::Decl::isLocalExternDecl(), clang::Decl::isUsed(), clang::Decl::setInvalidDecl(), clang::TargetInfo::shouldDLLImportComdatSymbols(), clang::FunctionDecl::TK_MemberSpecialization, and clang::FunctionDecl::TK_NonTemplate.

Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::Sema::ActOnVariableDeclarator().

◆ checkDuplicateDefaultInit() [1/2] ◆ checkDuplicateDefaultInit() [2/2] ◆ CheckExplicitObjectParameter() ◆ checkForConflictWithNonVisibleExternC()

template<typename T >

static bool checkForConflictWithNonVisibleExternC ( SemaS, const T *  ND, LookupResultPrevious  ) static ◆ CheckForDuplicateEnumValues() ◆ checkGlobalOrExternCConflict()

Check for conflict between this global or extern "C" declaration and previous global or extern "C" declarations.

This is only used in C++.

Definition at line 8495 of file SemaDecl.cpp.

References clang::DeclContextLookupResult::begin(), clang::Sema::Context, clang::SemaBase::Diag(), E, clang::DeclContextLookupResult::end(), clang::Sema::findLocallyScopedExternCDecl(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::ASTContext::getTranslationUnitDecl(), isIncompleteDeclExternC(), clang::DeclContext::lookup(), and Previous.

Referenced by checkForConflictWithNonVisibleExternC().

◆ checkHybridPatchableAttr() static void checkHybridPatchableAttr ( SemaS, NamedDeclND  ) static ◆ checkInheritableAttr()

Definition at line 6963 of file SemaDecl.cpp.

References clang::Sema::Context, clang::SemaBase::Diag(), clang::TargetInfo::getCXXABI(), clang::getDLLAttr(), clang::Decl::getLocation(), clang::DeclContext::getParent(), clang::ASTContext::getTargetInfo(), clang::NamespaceDecl::isAnonymousNamespace(), clang::NamedDecl::isExternallyVisible(), clang::TargetCXXABI::isMicrosoft(), and clang::Decl::setInvalidDecl().

Referenced by checkAttributesAfterMerging().

◆ checkIsValidOpenCLKernelParameter() static void checkIsValidOpenCLKernelParameter ( SemaS, DeclaratorD, ParmVarDeclParam, llvm::SmallPtrSetImpl< const Type * > &  ValidTypes  ) static

Definition at line 9598 of file SemaDecl.cpp.

References clang::Type::castAs(), D, clang::TypedefType::desugar(), clang::SemaBase::Diag(), E, clang::RecordDecl::fields(), clang::Type::getAs(), clang::TypedefType::getDecl(), clang::RecordType::getDecl(), clang::Decl::getLocation(), getOpenCLKernelParameterType(), clang::Type::getPointeeOrArrayElementType(), clang::ValueDecl::getType(), clang::QualType::getTypePtr(), InvalidAddrSpacePtrKernelParam, InvalidKernelParam, clang::Type::isArrayType(), clang::Type::isHalfType(), clang::Type::isPointerType(), clang::Type::isRecordType(), clang::Type::isUnionType(), clang::SourceLocation::isValid(), Loc, PtrKernelParam, PtrPtrKernelParam, RecordKernelParam, and ValidKernelParam.

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

◆ checkLifetimeBoundAttr() ◆ CheckMultiVersionAdditionalDecl()

Check the validity of a new function declaration being added to an existing multiversioned declaration collection.

Definition at line 11588 of file SemaDecl.cpp.

References AllowOverloadingOfFunction(), CheckMultiVersionAdditionalRules(), CheckMultiVersionValue(), clang::Sema::Context, clang::CPUDispatch, clang::CPUSpecific, clang::Sema::CurContext, clang::SemaBase::Diag(), clang::ParsedTargetAttr::Features, clang::Decl::getAsFunction(), clang::Sema::getASTContext(), clang::Decl::getAttr(), clang::Decl::getFriendObjectKind(), clang::Decl::getLocation(), clang::FunctionDecl::getMultiVersionKind(), clang::ASTContext::getTargetInfo(), clang::Decl::hasAttr(), clang::Decl::isInvalidDecl(), clang::FunctionDecl::isMultiVersion(), clang::Sema::IsOverload(), clang::DeclContext::isRecord(), MultiVersionTypesCompatible(), clang::None, clang::TargetInfo::parseTargetAttr(), patchDefaultTargetVersion(), Previous, clang::Decl::setInvalidDecl(), clang::FunctionDecl::setIsMultiVersion(), clang::Target, clang::TargetClones, and clang::TargetVersion.

Referenced by CheckMultiVersionFunction().

◆ CheckMultiVersionAdditionalRules()

Definition at line 11363 of file SemaDecl.cpp.

References clang::Sema::areMultiversionVariantFunctionsCompatible(), checkNonMultiVersionCompatAttributes(), clang::CPUDispatch, clang::CPUSpecific, clang::SemaBase::Diag(), clang::Sema::getASTContext(), clang::Decl::getLocation(), clang::ASTContext::getTargetInfo(), clang::Decl::isUsed(), clang::SemaBase::PDiag(), and clang::TargetInfo::supportsMultiVersioning().

Referenced by CheckDeclarationCausesMultiVersioning(), CheckMultiVersionAdditionalDecl(), and CheckMultiVersionFirstFunction().

◆ CheckMultiVersionFirstFunction() ◆ CheckMultiVersionFunction()

Check the validity of a mulitversion function declaration.

Also sets the multiversion'ness' of the function itself.

This sets NewFD->isInvalidDecl() to true if there was an error.

Returns true if there was an error, false otherwise.

Definition at line 11839 of file SemaDecl.cpp.

References CheckDeclarationCausesMultiVersioning(), CheckMultiVersionAdditionalDecl(), CheckMultiVersionFirstFunction(), clang::CPUDispatch, clang::CPUSpecific, clang::SemaBase::Diag(), clang::DeclContext::Equals(), clang::Decl::getAsFunction(), clang::Sema::getASTContext(), clang::Decl::getAttr(), clang::Decl::getDeclContext(), clang::Decl::getLocation(), clang::FunctionDecl::getMultiVersionKind(), clang::DeclContext::getRedeclContext(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::TargetInfo::hasFeature(), clang::FunctionDecl::isMain(), clang::FunctionDecl::isMultiVersion(), clang::Decl::isUsed(), clang::None, Previous, clang::Decl::setInvalidDecl(), clang::FunctionDecl::setIsMultiVersion(), clang::Target, clang::TargetClones, and clang::TargetVersion.

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

◆ CheckMultiVersionValue()

Check the target or target_version attribute of the function for MultiVersion validity.

Returns true if there was an error, false otherwise.

Definition at line 11116 of file SemaDecl.cpp.

References clang::Sema::Context, clang::ParsedTargetAttr::CPU, clang::SemaBase::Diag(), clang::ParsedTargetAttr::Features, clang::Sema::getASTContext(), clang::Decl::getAttr(), clang::TargetInfo::getFMVPriority(), clang::Decl::getLocation(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::TargetInfo::isValidFeatureName(), clang::TargetInfo::parseTargetAttr(), clang::TargetInfo::validateCpuIs(), and clang::TargetInfo::validateCpuSupports().

Referenced by CheckDeclarationCausesMultiVersioning(), CheckMultiVersionAdditionalDecl(), and CheckMultiVersionFirstFunction().

◆ checkNewAttributesAfterDef() static void checkNewAttributesAfterDef ( SemaS, DeclNew, const DeclOld  ) static

checkNewAttributesAfterDef - If we already have a definition, check that there are no new attributes in this declaration.

Definition at line 2918 of file SemaDecl.cpp.

References clang::Sema::CheckForFunctionRedefinition(), clang::VarDecl::Definition, Diag(), clang::SemaBase::Diag(), E, clang::Decl::getAttrs(), clang::NamedDecl::getDeclName(), getDefinition(), clang::Attr::getKind(), clang::Sema::getLangOpts(), clang::Attr::getLocation(), clang::Decl::getLocation(), clang::hasAttribute(), clang::Decl::hasAttrs(), clang::Sema::notePreviousDefinition(), clang::Decl::setInvalidDecl(), clang::SkipBodyInfo::ShouldSkip, and clang::VarDecl::TentativeDefinition.

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

◆ checkNonMultiVersionCompatAttributes() ◆ CheckPoppedLabel() ◆ checkSelectAnyAttr() ◆ checkUsingShadowRedecl() ◆ checkWeakAttr() ◆ checkWeakRefAttr() ◆ ComputeSelectedDestructor()

[class.dtor]p4: At the end of the definition of a class, overload resolution is performed among the prospective destructors declared in that class with an empty argument list to select the destructor for the class, also known as the selected destructor.

We do the overload resolution here, then mark the selected constructor in the AST. Later CXXRecordDecl::getDestructor() will return the selected constructor.

Definition at line 18822 of file SemaDecl.cpp.

References clang::Sema::AddOverloadCandidate(), clang::OverloadCandidateSet::begin(), clang::OverloadCandidateSet::BestViableFunction(), clang::OverloadCandidateSet::CSK_Normal, Diag(), clang::OverloadCandidateSet::empty(), clang::Sema::LangOpts, Loc, clang::DeclAccessPair::make(), clang::OverloadCandidateSet::NoteCandidates(), clang::OCD_AllCandidates, clang::OCD_AmbiguousCandidates, clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, and clang::SemaBase::PDiag().

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

◆ computeShadowedDeclKind() ◆ ComputeSpecialMemberFunctionsEligiblity() static void ComputeSpecialMemberFunctionsEligiblity ( SemaS, CXXRecordDeclRecord  ) static ◆ copyAttrFromTypedefToDecl()

template<typename AttrTy >

◆ createFriendTagNNSFixIt() ◆ CreateNewFunctionDecl()

Definition at line 9288 of file SemaDecl.cpp.

References clang::Sema::AdjustDestructorExceptionSpec(), clang::Sema::CheckConstructorDeclarator(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckDestructorDeclarator(), clang::Sema::CheckExplicitObjectMemberFunction(), clang::Constexpr, clang::Constinit, clang::Sema::Context, clang::CXXDestructorDecl::Create(), clang::CXXConversionDecl::Create(), clang::CXXConstructorDecl::Create(), clang::CXXMethodDecl::Create(), clang::CXXDeductionGuideDecl::Create(), clang::FunctionDecl::Create(), clang::Sema::CurContext, clang::DeclarationName::CXXConstructorName, clang::DeclarationName::CXXConversionFunctionName, clang::DeclarationName::CXXDeductionGuideName, clang::DeclarationName::CXXDestructorName, D, clang::SemaBase::Diag(), clang::Type::getAsAdjusted(), clang::Decl::getBeginLoc(), clang::Sema::getCurFPFeatures(), clang::Decl::getEndLoc(), clang::Sema::getLangOpts(), clang::DeclarationNameInfo::getName(), clang::Sema::GetNameForDeclarator(), clang::Sema::GetTypeFromParser(), clang::FPOptions::isFPConstrained(), clang::Type::isFunctionProtoType(), clang::DeclContext::isRecord(), clang::Normal, clang::LangOptions::requiresStrictPrototypes(), clang::FunctionDecl::setIneligibleOrNotSelected(), clang::Decl::setInvalidDecl(), and clang::Unspecified.

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

◆ DeclHasAttr() ◆ diagnoseImplicitlyRetainedSelf() static void diagnoseImplicitlyRetainedSelf ( SemaS ) static ◆ DiagnoseInvalidRedeclaration()

Generate diagnostics for an invalid function redeclaration.

This routine handles generating the diagnostic messages for an invalid function redeclaration, including finding possible similar declarations or performing typo correction if there are no previous declarations with the same name.

Returns a NamedDecl iff typo correction was performed and substituting in the new declaration name does not cause new errors.

Definition at line 9095 of file SemaDecl.cpp.

References clang::Sema::ActOnFunctionDeclarator(), clang::TypoCorrection::begin(), clang::LookupResult::begin(), clang::Sema::Context, clang::Sema::CorrectTypo(), clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), clang::Sema::CTK_ErrorRecovery, clang::SemaBase::Diag(), clang::Sema::diagnoseTypo(), E, clang::LookupResult::empty(), clang::TypoCorrection::end(), clang::LookupResult::end(), clang::Func, clang::TypoCorrection::getCorrection(), clang::TypoCorrection::getCorrectionAsIdentifierInfo(), clang::TypoCorrection::getCorrectionDecl(), clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::SourceRange::getEnd(), clang::Decl::getFriendObjectKind(), clang::Decl::getLocation(), clang::LookupResult::getLookupKind(), clang::LookupResult::getLookupNameInfo(), clang::NamedDecl::getName(), clang::FunctionDecl::getParamDecl(), clang::CXXMethodDecl::getParent(), clang::FunctionDecl::getSourceRange(), clang::ValueDecl::getType(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::DeclaratorDecl::getTypeSpecStartLoc(), clang::FunctionDecl::hasBody(), clang::Sema::SFINAETrap::hasErrorOccurred(), hasSimilarParameters(), clang::LookupResult::isAmbiguous(), clang::CXXMethodDecl::isConst(), clang::SourceLocation::isInvalid(), Loc, clang::Sema::LookupLocalFriendName, clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, clang::Sema::LookupQualifiedName(), clang::Sema::MarkTypoCorrectedFunctionDefinition(), clang::SemaBase::PDiag(), Previous, clang::Result, clang::TypoCorrection::setCorrectionDecl(), and clang::Decl::setInvalidDecl().

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

◆ diagnoseMissingConstinit() static void diagnoseMissingConstinit ( SemaS, const VarDeclInitDecl, const ConstInitAttr *  CIAttr, bool  AttrBeforeInit  ) static ◆ diagnoseOpenCLTypes()

Returns true if there hasn't been any invalid type diagnosed.

Definition at line 7329 of file SemaDecl.cpp.

References clang::Sema::Context, clang::SemaBase::Diag(), clang::QualType::getAddressSpace(), clang::ASTContext::getBaseElementType(), clang::DeclaratorDecl::getBeginLoc(), clang::QualType::getCanonicalType(), clang::Decl::getDeclContext(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::Sema::getOpenCLOptions(), clang::Type::getPointeeType(), clang::ValueDecl::getType(), clang::VarDecl::hasGlobalStorage(), clang::OpenCLOptions::isAvailableOption(), clang::Type::isClkEventT(), clang::QualType::isConstQualified(), clang::Type::isEventT(), clang::Type::isFunctionPointerType(), clang::Type::isFunctionReferenceType(), clang::Type::isHalfType(), clang::Type::isImageType(), clang::Decl::isInvalidDecl(), clang::Type::isMemberFunctionPointerType(), clang::Type::isPipeType(), clang::Type::isPointerType(), clang::Type::isReferenceType(), clang::Type::isReserveIDT(), clang::Type::isSamplerT(), clang::VarDecl::isStaticLocal(), clang::DeclContext::isTranslationUnit(), clang::opencl_constant, clang::opencl_global, clang::opencl_local, clang::opencl_private, and clang::Decl::setInvalidDecl().

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

◆ diagnoseVarDeclTypeMismatch() ◆ emitReadOnlyPlacementAttrWarning() static void emitReadOnlyPlacementAttrWarning ( SemaS, const VarDeclVD  ) static

Definition at line 7437 of file SemaDecl.cpp.

References clang::SemaBase::Diag(), clang::Type::getAsRecordDecl(), clang::Sema::getASTContext(), clang::Decl::getAttr(), clang::ASTContext::getBaseElementType(), clang::QualType::getCanonicalType(), clang::Decl::getLocation(), clang::ValueDecl::getType(), clang::VarDecl::hasLocalStorage(), clang::Type::isArrayType(), and clang::QualType::isConstQualified().

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

◆ EquivalentArrayTypes() ◆ filterNonConflictingPreviousTypedefDecls() ◆ findDefaultInitializer() ◆ FindPossiblePrototype() ◆ findRecordWithDependentBasesOfEnclosingMethod() ◆ FixInvalidVariablyModifiedTypeLoc() static void FixInvalidVariablyModifiedTypeLoc ( TypeLoc  SrcTL, TypeLoc  DstTL  ) static

Definition at line 6559 of file SemaDecl.cpp.

References clang::TypeLoc::castAs(), FixInvalidVariablyModifiedTypeLoc(), clang::TypeLoc::getAs(), clang::ArrayTypeLoc::getElementLoc(), clang::ParenTypeLoc::getInnerLoc(), clang::ArrayTypeLoc::getLBracketLoc(), clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >::getPointeeLoc(), clang::ArrayTypeLoc::getRBracketLoc(), clang::ArrayTypeLoc::getSizeExpr(), clang::TypeLoc::getUnqualifiedLoc(), clang::TypeLoc::initializeFullCopy(), clang::ParenTypeLoc::setLParenLoc(), clang::ParenTypeLoc::setRParenLoc(), and clang::PointerTypeLoc::setStarLoc().

Referenced by FixInvalidVariablyModifiedTypeLoc(), and TryToFixInvalidVariablyModifiedTypeSourceInfo().

◆ GenerateFixForUnusedDecl() ◆ getCaptureLocation() ◆ getCoreType() ◆ getDefinition() ◆ GetDiagnosticTypeSpecifierID() ◆ getFunctionStorageClass()

Definition at line 9252 of file SemaDecl.cpp.

References clang::Sema::CurContext, D, clang::SemaBase::Diag(), clang::DeclContext::getRedeclContext(), clang::DeclContext::isFunctionOrMethod(), clang::SC_Extern, clang::SC_None, clang::SC_PrivateExtern, clang::SC_Static, clang::DeclSpec::SCS_auto, clang::DeclSpec::SCS_extern, clang::DeclSpec::SCS_mutable, clang::DeclSpec::SCS_private_extern, clang::DeclSpec::SCS_register, clang::DeclSpec::SCS_static, and clang::DeclSpec::SCS_unspecified.

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

◆ getHeaderName() ◆ getImplicitCodeSegAttrFromClass() ◆ getMSManglingNumber() ◆ getNextLargerIntegralType()

Definition at line 19554 of file SemaDecl.cpp.

References clang::ASTContext::getTypeSize(), clang::ASTContext::IntTy, clang::Type::isEnumeralType(), clang::Type::isIntegralType(), clang::Type::isSignedIntegerOrEnumerationType(), clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::ASTContext::ShortTy, clang::T, clang::ASTContext::UnsignedIntTy, clang::ASTContext::UnsignedLongLongTy, clang::ASTContext::UnsignedLongTy, and clang::ASTContext::UnsignedShortTy.

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

◆ getNonCLikeKindForAnonymousStruct() static NonCLikeKind getNonCLikeKindForAnonymousStruct ( const CXXRecordDeclRD ) static

Determine whether a class is C-like, according to the rules of C++ [dcl.typedef] for anonymous classes with typedef names for linkage.

Definition at line 4892 of file SemaDecl.cpp.

References clang::CXXRecordDecl::bases_begin(), clang::CXXRecordDecl::bases_end(), D, clang::DeclContext::decls(), clang::CXXBaseSpecifier::getBeginLoc(), clang::CXXBaseSpecifier::getEndLoc(), getNonCLikeKindForAnonymousStruct(), clang::CXXRecordDecl::getNumBases(), clang::Decl::getSourceRange(), clang::Init, clang::Invalid, clang::Decl::isImplicit(), and clang::Decl::isInvalidDecl().

Referenced by getNonCLikeKindForAnonymousStruct(), and clang::Sema::setTagNameForLinkagePurposes().

◆ getNoteDiagForInvalidRedeclaration() ◆ getOpenCLKernelParameterType()

Definition at line 9492 of file SemaDecl.cpp.

References clang::Sema::Context, clang::Default, clang::QualType::getAddressSpace(), clang::Type::getAsCXXRecordDecl(), clang::Sema::getASTContext(), clang::QualType::getCanonicalType(), clang::Sema::getLangOpts(), clang::LangOptions::getOpenCLCompatibleVersion(), getOpenCLKernelParameterType(), clang::Sema::getOpenCLOptions(), clang::Type::getPointeeOrArrayElementType(), clang::Type::getPointeeType(), clang::CXXRecordDecl::getTemplateInstantiationPattern(), InvalidAddrSpacePtrKernelParam, InvalidKernelParam, clang::Type::isArrayType(), clang::Type::isAtomicType(), clang::OpenCLOptions::isAvailableOption(), clang::Type::isBooleanType(), clang::Type::isDependentType(), clang::Type::isEventT(), clang::Type::isHalfType(), clang::Type::isImageType(), isOpenCLSizeDependentType(), clang::Type::isOpenCLSpecificType(), clang::QualType::isPODType(), clang::Type::isPointerOrReferenceType(), clang::Type::isPointerType(), clang::Type::isRecordType(), clang::Type::isReserveIDT(), clang::Type::isVoidType(), clang::opencl_generic, clang::opencl_private, PtrKernelParam, PtrPtrKernelParam, RecordKernelParam, and ValidKernelParam.

Referenced by checkIsValidOpenCLKernelParameter(), and getOpenCLKernelParameterType().

◆ getRedeclDiagFromTagKind() ◆ getTagInjectionContext() ◆ getTagInjectionScope() ◆ hasAttribute() ◆ hasDeducedAuto() ◆ hasIdenticalPassObjectSizeAttrs() ◆ hasParsedAttr() ◆ hasSimilarParameters() ◆ haveIncompatibleLanguageLinkages()

template<typename T >

static bool haveIncompatibleLanguageLinkages ( const T *  Old, const T *  New  ) static ◆ InjectAnonymousStructOrUnionMembers()

InjectAnonymousStructOrUnionMembers - Inject the members of the anonymous struct or union AnonRecord into the owning context Owner and scope S.

This routine will be invoked just after we realize that an unnamed union or struct is actually an anonymous union or struct, e.g.,

union {

int i;

float f;

};

This routine is recursive, injecting the names of nested anonymous structs/unions into the owning context and scope as well.

Definition at line 5388 of file SemaDecl.cpp.

References clang::Decl::addAttr(), clang::AS_none, clang::Decl::attrs(), CheckAnonMemberRedeclaration(), clang::Attr::clone(), clang::Sema::Context, clang::IndirectFieldDecl::Create(), D, clang::DeclContext::decls(), clang::NamedDecl::getDeclName(), clang::NamedDecl::getIdentifier(), clang::Decl::getLocation(), clang::ValueDecl::getType(), clang::Invalid, clang::TagDecl::isUnion(), clang::Sema::PushOnScopeChains(), clang::Decl::setAccess(), and clang::Decl::setImplicit().

Referenced by clang::Sema::BuildAnonymousStructOrUnion(), and clang::Sema::BuildMicrosoftCAnonymousStruct().

◆ isAcceptableTagRedeclContext() ◆ isAttributeTargetADefinition() static bool isAttributeTargetADefinition ( DeclD ) static ◆ isClassCompatTagKind() ◆ isDeclExternC() static bool isDeclExternC ( const DeclD ) static

Returns true if given declaration has external C language linkage.

Definition at line 7319 of file SemaDecl.cpp.

References D.

◆ isDefaultStdCall() ◆ IsDisallowedCopyOrAssign() ◆ isExternC() [1/3] ◆ isExternC() [2/3]

template<typename T >

static bool isExternC ( T *  D ) static ◆ isExternC() [3/3] ◆ isFromSystemHeader() ◆ isFunctionDefinitionDiscarded() ◆ isIncompleteDeclExternC()

template<typename T >

static bool isIncompleteDeclExternC ( SemaS, const T *  D  ) static ◆ isMainFileLoc() ◆ isMainVar() ◆ isOpenCLSizeDependentType() ◆ isOutOfScopePreviousDeclaration() ◆ isRepresentableIntegerValue() ◆ isResultTypeOrTemplate() ◆ isStdBuiltin() ◆ isTagTypeWithMissingTag()

Definition at line 813 of file SemaDecl.cpp.

References clang::Class, clang::FixItHint::CreateInsertion(), clang::SemaBase::Diag(), clang::Enum, clang::LookupResult::getAsSingle(), clang::Sema::getLangOpts(), clang::Interface, clang::Sema::LookupParsedName(), clang::Sema::LookupTagName, clang::Result, clang::Struct, and clang::Union.

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

◆ isUsingDeclNotAtClassScope() ◆ lookupUnqualifiedTypeNameInBase() ◆ mergeAlignedAttrs()

Merge alignment attributes from Old to New, taking into account the special semantics of C11's _Alignas specifier and C++11's alignas attribute.

Returns
true if any attributes were added to New.

Definition at line 2675 of file SemaDecl.cpp.

References clang::Decl::addAttr(), clang::Sema::Context, clang::SemaBase::Diag(), clang::Decl::getLocation(), clang::CharUnits::getQuantity(), clang::ASTContext::getTagDeclType(), clang::ASTContext::getTypeAlign(), isAttributeTargetADefinition(), clang::Decl::specific_attrs(), and clang::ASTContext::toCharUnitsFromBits().

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

◆ mergeDeclAttribute()

Definition at line 2786 of file SemaDecl.cpp.

References clang::Decl::addAttr(), clang::Sema::AMK_OptionalProtocolImplementation, clang::Sema::AMK_Override, clang::Sema::AMK_ProtocolImplementation, clang::ASTConsumer::AssignInheritanceModel(), clang::Attr::clone(), clang::Sema::Consumer, clang::Sema::Context, D, DeclHasAttr(), clang::IdentifierTable::get(), clang::Sema::getLangOpts(), clang::Sema::HLSL(), clang::ASTContext::Idents, clang::Decl::isImplicit(), clang::Sema::mergeAlwaysInlineAttr(), clang::Sema::mergeAvailabilityAttr(), clang::Sema::mergeBTFDeclTagAttr(), clang::Sema::mergeCodeSegAttr(), clang::Sema::mergeDLLExportAttr(), clang::Sema::mergeDLLImportAttr(), clang::Sema::mergeEnforceTCBAttr(), clang::Sema::mergeEnforceTCBLeafAttr(), clang::Sema::mergeErrorAttr(), clang::Sema::mergeFormatAttr(), clang::SemaWasm::mergeImportModuleAttr(), clang::SemaWasm::mergeImportNameAttr(), clang::Sema::mergeInternalLinkageAttr(), clang::Sema::mergeMinSizeAttr(), clang::Sema::mergeMSInheritanceAttr(), clang::SemaSwift::mergeNameAttr(), clang::SemaHLSL::mergeNumThreadsAttr(), clang::Sema::mergeOptimizeNoneAttr(), clang::Sema::mergeSectionAttr(), clang::SemaHLSL::mergeShaderAttr(), clang::Sema::mergeTypeVisibilityAttr(), clang::Sema::mergeUuidAttr(), clang::Sema::mergeVisibilityAttr(), clang::SemaHLSL::mergeWaveSizeAttr(), clang::InheritableAttr::setInherited(), clang::Sema::Swift(), and clang::Sema::Wasm().

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

◆ mergeParamDeclAttributes() ◆ mergeParamDeclTypes()

Definition at line 3353 of file SemaDecl.cpp.

References clang::Sema::Context, clang::SemaBase::Diag(), EquivalentArrayTypes(), clang::Sema::getASTContext(), clang::ASTContext::getAttributedType(), clang::Decl::getLocation(), clang::Type::getNullability(), clang::ParmVarDecl::getObjCDeclQualifier(), clang::ValueDecl::getType(), clang::Decl::OBJC_TQ_CSNullability, and clang::ValueDecl::setType().

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

◆ mergeTypeWithPrevious() ◆ methodHasName() ◆ MultiVersionTypesCompatible() ◆ patchDefaultTargetVersion() ◆ PreviousDeclsHaveMultiVersionAttribute() ◆ propagateAttribute() ◆ propagateAttributes() ◆ RebuildDeclaratorInCurrentInstantiation()

RebuildDeclaratorInCurrentInstantiation - Checks whether the given declarator needs to be rebuilt in the current instantiation.

Any bits of declarator which appear before the name are valid for consideration here. That's specifically the type in the decl spec and the base type in any member-pointer chunks.

Definition at line 5996 of file SemaDecl.cpp.

References clang::Sema::Context, clang::Sema::CreateParsedType(), D, E, clang::DeclSpec::getRepAsExpr(), clang::DeclSpec::getRepAsType(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getType(), clang::Sema::GetTypeFromParser(), clang::DeclSpec::getTypeSpecType(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::Type::isInstantiationDependentType(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::Mem, clang::DeclaratorChunk::MemberPointer, clang::Sema::RebuildExprInCurrentInstantiation(), clang::Sema::RebuildNestedNameSpecifierInCurrentInstantiation(), clang::Sema::RebuildTypeInCurrentInstantiation(), clang::Result, clang::DeclaratorChunk::MemberPointerTypeInfo::Scope(), clang::T, clang::DeclSpec::TST_atomic, clang::DeclSpec::TST_decltype, clang::DeclSpec::TST_typename, clang::DeclSpec::TST_typeof_unqualExpr, clang::DeclSpec::TST_typeof_unqualType, clang::DeclSpec::TST_typeofExpr, clang::DeclSpec::TST_typeofType, clang::DeclSpec::UpdateExprRep(), and clang::DeclSpec::UpdateTypeRep().

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

◆ recoverFromTypeInKnownDependentBase()

Definition at line 208 of file SemaDecl.cpp.

References clang::Sema::Context, clang::NestedNameSpecifier::Create(), clang::Sema::CreateParsedType(), clang::Sema::CurContext, clang::SemaBase::Diag(), clang::ASTContext::getDependentNameType(), clang::CXXRecordDecl::getDescribedClassTemplate(), clang::DeclContext::getParent(), clang::ASTContext::getRecordType(), clang::CXXScopeSpec::getWithLocInContext(), lookupUnqualifiedTypeNameInBase(), clang::CXXScopeSpec::MakeTrivial(), clang::DependentNameTypeLoc::setElaboratedKeywordLoc(), clang::DependentNameTypeLoc::setNameLoc(), clang::DependentNameTypeLoc::setQualifierLoc(), clang::T, and clang::Typename.

Referenced by clang::Sema::ClassifyName(), and clang::Sema::getTypeName().

◆ RemoveUsingDecls() ◆ SetEligibleMethods()

[class.mem.special]p6: An eligible special member function is a special member function for which:

Definition at line 18915 of file SemaDecl.cpp.

References AreSpecialMemberFunctionsSameKind(), clang::Sema::CheckFunctionConstraints(), clang::Sema::Context, clang::FunctionDecl::getInstantiatedFromMemberFunction(), clang::DeclaratorDecl::getTrailingRequiresClause(), clang::Sema::IsAtLeastAsConstrained(), clang::ConstraintSatisfaction::IsSatisfied, and clang::FunctionDecl::setIneligibleOrNotSelected().

Referenced by ComputeSpecialMemberFunctionsEligiblity().

◆ SetNestedNameSpecifier() ◆ shouldConsiderLinkage() [1/2] ◆ shouldConsiderLinkage() [2/2] static bool shouldConsiderLinkage ( const VarDeclVD ) static ◆ ShouldDiagnoseUnusedDecl() ◆ ShouldWarnAboutMissingPrototype()

Definition at line 15399 of file SemaDecl.cpp.

References FindPossiblePrototype(), clang::Decl::getDeclContext(), clang::FunctionDecl::getDescribedFunctionTemplate(), clang::NamedDecl::getIdentifier(), clang::DeclContext::getRedeclContext(), clang::Decl::hasAttr(), clang::FunctionDecl::isDeleted(), clang::NamedDecl::isExternallyVisible(), clang::FunctionDecl::isFunctionTemplateSpecialization(), clang::FunctionDecl::isGlobal(), clang::FunctionDecl::isInlined(), clang::Decl::isInvalidDecl(), and clang::FunctionDecl::isMSVCRTEntryPoint().

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

◆ shouldWarnIfShadowedDecl() ◆ StorageClassSpecToVarDeclStorageClass()

StorageClassSpecToVarDeclStorageClass - Maps a DeclSpec::SCS to a VarDecl::StorageClass.

Any error reporting is up to the caller: illegal input values are mapped to SC_None.

Definition at line 5451 of file SemaDecl.cpp.

References clang::DeclSpec::getStorageClassSpec(), clang::DeclSpec::isExternInLinkageSpec(), clang::SC_Auto, clang::SC_Extern, clang::SC_None, clang::SC_PrivateExtern, clang::SC_Register, clang::SC_Static, clang::DeclSpec::SCS_auto, clang::DeclSpec::SCS_extern, clang::DeclSpec::SCS_mutable, clang::DeclSpec::SCS_private_extern, clang::DeclSpec::SCS_register, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, and clang::DeclSpec::SCS_unspecified.

Referenced by clang::Sema::ActOnVariableDeclarator(), clang::Sema::BuildAnonymousStructOrUnion(), and clang::Sema::BuildMicrosoftCAnonymousStruct().

◆ synthesizeCurrentNestedNameSpecifier() ◆ TryToFixInvalidVariablyModifiedType()

Helper method to turn variable array types into constant array types in certain situations which would otherwise be errors (for GCC compatibility).

Definition at line 6481 of file SemaDecl.cpp.

References clang::QualifierCollector::apply(), clang::Expr::EvaluateAsInt(), clang::ASTContext::getConstantArrayType(), clang::ArrayType::getElementType(), clang::ConstantArrayType::getMaxSizeBits(), clang::ConstantArrayType::getNumAddressingBits(), clang::ASTContext::getParenType(), clang::Type::getPointeeType(), clang::ASTContext::getPointerType(), clang::VariableArrayType::getSizeExpr(), clang::Type::isDependentType(), clang::Type::isIncompleteType(), clang::QualType::isNull(), clang::Type::isUndeducedType(), clang::Type::isVariablyModifiedType(), clang::Normal, clang::Result, clang::QualifierCollector::strip(), clang::T, and TryToFixInvalidVariablyModifiedType().

Referenced by clang::Sema::CheckVariableDeclarationType(), TryToFixInvalidVariablyModifiedType(), and TryToFixInvalidVariablyModifiedTypeSourceInfo().

◆ TryToFixInvalidVariablyModifiedTypeSourceInfo() ◆ ValidDuplicateEnum()

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