clang
8.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 "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 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 3600 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 1586 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
static |
Definition at line 369 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 2372 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::checkExceptionSpecification(), and clang::Sema::InstantiateMemInitializers().
|
static |
Definition at line 4934 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 493 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 3840 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 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 |
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 4744 of file SemaTemplateInstantiateDecl.cpp.
References clang::ClassTemplateDecl::getCanonicalDecl(), and clang::ClassTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::FindInstantiatedDecl(), findInstantiationOf(), and isInstantiationOf().
|
static |
Definition at line 4757 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionTemplateDecl::getCanonicalDecl(), and clang::FunctionTemplateDecl::getInstantiatedFromMemberTemplate().
|
static |
Definition at line 4771 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::ClassTemplatePartialSpecializationDecl::getInstantiatedFromMember().
|
static |
Definition at line 4786 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::CXXRecordDecl::getInstantiatedFromMemberClass().
|
static |
Definition at line 4799 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionDecl::getCanonicalDecl(), and clang::FunctionDecl::getInstantiatedFromMemberFunction().
Definition at line 4812 of file SemaTemplateInstantiateDecl.cpp.
References clang::EnumDecl::getCanonicalDecl(), and clang::EnumDecl::getInstantiatedFromMemberEnum().
|
static |
Definition at line 4825 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingShadowDecl().
|
static |
Definition at line 4832 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingDecl().
|
static |
Definition at line 4881 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), clang::NamedDecl::getDeclName(), clang::ASTContext::getInstantiatedFromUnnamedFieldDecl(), clang::Decl::getKind(), isInstantiationOf(), isInstantiationOfStaticDataMember(), and isInstantiationOfUnresolvedUsingDecl().
Definition at line 4864 of file SemaTemplateInstantiateDecl.cpp.
References clang::VarDecl::getCanonicalDecl(), clang::VarDecl::getInstantiatedFromStaticDataMember(), and clang::VarDecl::isStaticDataMember().
Referenced by isInstantiationOf().
|
static |
Definition at line 4838 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().