clang
6.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/TypeLoc.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/PrettyDeclStackTrace.h"
#include "clang/Sema/Template.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 bool | DeclContainsAttr (const Decl *D, const Attr *NewAttr) |
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 3525 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateExceptionSpec(), and clang::Sema::InstantiateFunctionDefinition().
|
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 1573 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::TemplateDeclInstantiator::VisitFunctionDecl().
|
static |
Definition at line 2318 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::checkExceptionSpecification(), and clang::Sema::InstantiateMemInitializers().
Definition at line 346 of file SemaTemplateInstantiateDecl.cpp.
References clang::Attr::duplicatesAllowed(), clang::Decl::getAttrs(), clang::Attr::getKind(), and clang::Decl::hasAttrs().
|
static |
Definition at line 4848 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 485 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 3760 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 79 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 100 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 162 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 174 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 138 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 242 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 227 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 215 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Definition at line 184 of file SemaTemplateInstantiateDecl.cpp.
|
static |
Definition at line 267 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
|
static |
Instantiation of 'declare simd' attribute and its arguments.
Definition at line 275 of file SemaTemplateInstantiateDecl.cpp.
Referenced by clang::Sema::InstantiateAttrs().
Definition at line 29 of file SemaTemplateInstantiateDecl.cpp.
References clang::Decl::getDeclContext(), clang::DeclContext::isFunctionOrMethod(), and clang::DeclContext::isRecord().
|
static |
Definition at line 4658 of file SemaTemplateInstantiateDecl.cpp.
References clang::ClassTemplateDecl::getCanonicalDecl(), and clang::ClassTemplateDecl::getInstantiatedFromMemberTemplate().
Referenced by clang::Sema::FindInstantiatedDecl(), findInstantiationOf(), and isInstantiationOf().
|
static |
Definition at line 4671 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionTemplateDecl::getCanonicalDecl(), and clang::FunctionTemplateDecl::getInstantiatedFromMemberTemplate().
|
static |
Definition at line 4685 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::ClassTemplatePartialSpecializationDecl::getInstantiatedFromMember().
|
static |
Definition at line 4700 of file SemaTemplateInstantiateDecl.cpp.
References clang::CXXRecordDecl::getCanonicalDecl(), and clang::CXXRecordDecl::getInstantiatedFromMemberClass().
|
static |
Definition at line 4713 of file SemaTemplateInstantiateDecl.cpp.
References clang::FunctionDecl::getCanonicalDecl(), and clang::FunctionDecl::getInstantiatedFromMemberFunction().
Definition at line 4726 of file SemaTemplateInstantiateDecl.cpp.
References clang::EnumDecl::getCanonicalDecl(), and clang::EnumDecl::getInstantiatedFromMemberEnum().
|
static |
Definition at line 4739 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingShadowDecl().
|
static |
Definition at line 4746 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingDecl().
|
static |
Definition at line 4795 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), clang::NamedDecl::getDeclName(), clang::ASTContext::getInstantiatedFromUnnamedFieldDecl(), clang::Decl::getKind(), isInstantiationOf(), isInstantiationOfStaticDataMember(), and isInstantiationOfUnresolvedUsingDecl().
Definition at line 4778 of file SemaTemplateInstantiateDecl.cpp.
References clang::VarDecl::getCanonicalDecl(), clang::VarDecl::getInstantiatedFromStaticDataMember(), and clang::VarDecl::isStaticDataMember().
Referenced by isInstantiationOf().
|
static |
Definition at line 4752 of file SemaTemplateInstantiateDecl.cpp.
References clang::declaresSameEntity(), and clang::ASTContext::getInstantiatedFromUsingDecl().
Referenced by isInstantiationOf().
|
static |
Definition at line 41 of file SemaTemplateInstantiateDecl.cpp.
References clang::Sema::SubstNestedNameSpecifierLoc().
Referenced by clang::TemplateDeclInstantiator::SubstQualifier().