clang
9.0.0
|
#include "clang/Sema/SemaInternal.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/DeclVisitor.h"
#include "clang/AST/DependentDiagnostic.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/PrettyDeclStackTrace.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Template.h"
#include "clang/Sema/TemplateInstCallback.h"
#include "llvm/Support/TimeProfiler.h"
#include "clang/Sema/AttrTemplateInstantiate.inc"
Go to the source code of this file.
Functions | |
static bool | isDeclWithinFunction (const Decl *D) |
template<typename DeclT > | |
static bool | SubstQualifier (Sema &SemaRef, const DeclT *OldDecl, DeclT *NewDecl, const MultiLevelTemplateArgumentList &TemplateArgs) |
static void | instantiateDependentAlignedAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AlignedAttr *Aligned, Decl *New, bool IsPackExpansion) |
static void | instantiateDependentAlignedAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AlignedAttr *Aligned, Decl *New) |
static void | instantiateDependentAssumeAlignedAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AssumeAlignedAttr *Aligned, Decl *New) |
static void | instantiateDependentAlignValueAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AlignValueAttr *Aligned, Decl *New) |
static void | instantiateDependentAllocAlignAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AllocAlignAttr *Align, Decl *New) |
static Expr * | instantiateDependentFunctionAttrCondition (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const Attr *A, Expr *OldCond, const Decl *Tmpl, FunctionDecl *New) |
static void | instantiateDependentEnableIfAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const EnableIfAttr *EIA, const Decl *Tmpl, FunctionDecl *New) |
static void | instantiateDependentDiagnoseIfAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const DiagnoseIfAttr *DIA, const Decl *Tmpl, FunctionDecl *New) |
static void | instantiateDependentCUDALaunchBoundsAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const CUDALaunchBoundsAttr &Attr, Decl *New) |
static void | instantiateDependentModeAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const ModeAttr &Attr, Decl *New) |
static void | instantiateOMPDeclareSimdDeclAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const OMPDeclareSimdDeclAttr &Attr, Decl *New) |
Instantiation of 'declare simd' attribute and its arguments. More... | |
static void | instantiateDependentAMDGPUFlatWorkGroupSizeAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AMDGPUFlatWorkGroupSizeAttr &Attr, Decl *New) |
static ExplicitSpecifier | instantiateExplicitSpecifier (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, ExplicitSpecifier ES, FunctionDecl *New) |
static void | instantiateDependentAMDGPUWavesPerEUAttr (Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AMDGPUWavesPerEUAttr &Attr, Decl *New) |
static Sema::RetainOwnershipKind | attrToRetainOwnershipKind (const Attr *A) |
template<typename DeclT > | |
static DeclT * | getPreviousDeclForInstantiation (DeclT *D) |
Get the previous declaration of a declaration for the purposes of template instantiation. More... | |
static QualType | adjustFunctionTypeForInstantiation (ASTContext &Context, FunctionDecl *D, TypeSourceInfo *TInfo) |
Adjust the given function type for an instantiation of the given declaration, to cope with modifications to the function's type that aren't reflected in the type-source information. More... | |
static void | collectUnexpandedParameterPacks (Sema &S, TemplateParameterList *Params, SmallVectorImpl< UnexpandedParameterPack > &Unexpanded) |
static bool | addInstantiatedParametersToScope (Sema &S, FunctionDecl *Function, const FunctionDecl *PatternDecl, LocalInstantiationScope &Scope, const MultiLevelTemplateArgumentList &TemplateArgs) |
Introduce the instantiated function parameters into the local instantiation scope, and set the parameter names to those used in the template. More... | |
static void | InstantiateDefaultCtorDefaultArgs (Sema &S, CXXConstructorDecl *Ctor) |
In the MS ABI, we need to instantiate default arguments of dllexported default constructors along with the constructor definition. More... | |
static bool | isInstantiationOf (ClassTemplateDecl *Pattern, ClassTemplateDecl *Instance) |
static bool | isInstantiationOf (FunctionTemplateDecl *Pattern, FunctionTemplateDecl *Instance) |
static bool | isInstantiationOf (ClassTemplatePartialSpecializationDecl *Pattern, ClassTemplatePartialSpecializationDecl *Instance) |
static bool | isInstantiationOf (CXXRecordDecl *Pattern, CXXRecordDecl *Instance) |
static bool | isInstantiationOf (FunctionDecl *Pattern, FunctionDecl *Instance) |
static bool | isInstantiationOf (EnumDecl *Pattern, EnumDecl *Instance) |
static bool | isInstantiationOf (UsingShadowDecl *Pattern, UsingShadowDecl *Instance, ASTContext &C) |
static bool | isInstantiationOf (UsingDecl *Pattern, UsingDecl *Instance, ASTContext &C) |
template<typename T > | |
static bool | isInstantiationOfUnresolvedUsingDecl (T *Pattern, Decl *Other, ASTContext &Ctx) |
static bool | isInstantiationOfStaticDataMember (VarDecl *Pattern, VarDecl *Instance) |
static bool | isInstantiationOf (ASTContext &Ctx, NamedDecl *D, Decl *Other) |
template<typename ForwardIterator > | |
static NamedDecl * | findInstantiationOf (ASTContext &Ctx, NamedDecl *D, ForwardIterator first, ForwardIterator last) |
|
static |
Introduce the instantiated function parameters into the local instantiation scope, and set the parameter names to those used in the template.
Definition at line 3831 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateExceptionSpec().
|
static |
Adjust the given function type for an instantiation of the given declaration, to cope with modifications to the function's type that aren't reflected in the type-source information.
D | The declaration we're instantiating. |
TInfo | The already-instantiated type. |
Definition at line 1677 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
static |
Definition at line 448 of file SemaTemplateInstantiateDecl.cpp.
References clang::Sema::CF, clang::Attr::getKind(), clang::Sema::NS, and clang::Sema::OS.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 2505 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::checkExceptionSpecification(), and clang::Sema::InstantiateMemInitializers().
|
static |
Definition at line 5176 of file SemaTemplateInstantiateDecl.cpp.
References isInstantiationOf().
Referenced by clang::LocalInstantiationScope::deleteScopes().
|
static |
Get the previous declaration of a declaration for the purposes of template instantiation.
If this finds a previous declaration, then the previous declaration of the instantiation of D should be an instantiation of the result of this function.
Definition at line 584 of file SemaTemplateInstantiateDecl.cpp.
References clang::DeclContext::addDecl(), clang::Sema::Context, clang::LabelDecl::Create(), clang::NamespaceAliasDecl::Create(), clang::NamespaceAliasDecl::getAliasLoc(), clang::NamedDecl::getIdentifier(), clang::Decl::getLocation(), clang::NamespaceAliasDecl::getNamespace(), clang::NamespaceAliasDecl::getNamespaceLoc(), clang::NamespaceAliasDecl::getQualifierLoc(), clang::NamespaceAliasDecl::getTargetNameLoc(), and clang::Result.
Referenced by clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), and clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl().
|
static |
In the MS ABI, we need to instantiate default arguments of dllexported default constructors along with the constructor definition.
This allows IR gen to emit a constructor closure which calls the default constructor with its default arguments.
Definition at line 4071 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 80 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 101 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 163 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 175 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 359 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 403 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 139 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 244 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 229 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 217 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 186 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 269 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 381 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
static |
Instantiation of 'declare simd' attribute and its arguments.
Definition at line 277 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
Definition at line 30 of file SemaTemplateInstantiateDecl.cpp.
References clang::Decl::getDeclContext(), clang::DeclContext::isFunctionOrMethod(), and clang::DeclContext::isRecord().
|
static |
Definition at line 4986 of file SemaTemplateInstantiateDecl.cpp.
References clang::ClassTemplateDecl::getCanonicalDecl(), and clang::ClassTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::FindInstantiatedDecl(), findInstantiationOf(), and isInstantiationOf().
|
static |
Definition at line 4999 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionTemplateDecl::getCanonicalDecl(), and clang::FunctionTemplateDecl::getInstantiatedFromMemberTemplate().
|
static |
Definition at line 5013 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::ClassTemplatePartialSpecializationDecl::getInstantiatedFromMember().
|
static |
Definition at line 5028 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::CXXRecordDecl::getInstantiatedFromMemberClass().
|
static |
Definition at line 5041 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionDecl::getCanonicalDecl(), and clang::FunctionDecl::getInstantiatedFromMemberFunction().
Definition at line 5054 of file SemaTemplateInstantiateDecl.cpp.
References clang::EnumDecl::getCanonicalDecl(), and clang::EnumDecl::getInstantiatedFromMemberEnum().
|
static |
Definition at line 5067 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingShadowDecl().
|
static |
Definition at line 5074 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingDecl().
|
static |
Definition at line 5123 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), clang::NamedDecl::getDeclName(), clang::ASTContext::getInstantiatedFromUnnamedFieldDecl(), clang::Decl::getKind(), isInstantiationOf(), isInstantiationOfStaticDataMember(), and isInstantiationOfUnresolvedUsingDecl().
Definition at line 5106 of file SemaTemplateInstantiateDecl.cpp.
References clang::VarDecl::getCanonicalDecl(), clang::VarDecl::getInstantiatedFromStaticDataMember(), and clang::VarDecl::isStaticDataMember().
Referenced by isInstantiationOf().
|
static |
Definition at line 5080 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingDecl().
Referenced by isInstantiationOf().
|
static |
Definition at line 42 of file SemaTemplateInstantiateDecl.cpp.
References clang::Sema::SubstNestedNameSpecifierLoc().
Referenced by clang::TemplateDeclInstantiator::SubstQualifier().