diff options
author | Richard Smith <richard@metafoo.co.uk> | 2020-09-20 23:16:08 -0700 |
---|---|---|
committer | Richard Smith <richard@metafoo.co.uk> | 2020-10-21 13:21:41 -0700 |
commit | ba4768c966581658465f7366df9b0811f468a2d7 (patch) | |
tree | edf8c81d55613e4493f7793f0c8138b57c08580d /clang/lib/AST/ExprClassification.cpp | |
parent | 1d1217c4ea115ac204f666a31686787503623dfa (diff) | |
download | llvm-ba4768c966581658465f7366df9b0811f468a2d7.zip llvm-ba4768c966581658465f7366df9b0811f468a2d7.tar.gz llvm-ba4768c966581658465f7366df9b0811f468a2d7.tar.bz2 |
[c++20] For P0732R2 / P1907R1: Basic frontend support for class types as
non-type template parameters.
Create a unique TemplateParamObjectDecl instance for each such value,
representing the globally unique template parameter object to which the
template parameter refers.
No IR generation support yet; that will follow in a separate patch.
Diffstat (limited to 'clang/lib/AST/ExprClassification.cpp')
-rw-r--r-- | clang/lib/AST/ExprClassification.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/AST/ExprClassification.cpp b/clang/lib/AST/ExprClassification.cpp index 31aa734..0286c73 100644 --- a/clang/lib/AST/ExprClassification.cpp +++ b/clang/lib/AST/ExprClassification.cpp @@ -453,12 +453,14 @@ static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) { bool islvalue; if (const auto *NTTParm = dyn_cast<NonTypeTemplateParmDecl>(D)) - islvalue = NTTParm->getType()->isReferenceType(); + islvalue = NTTParm->getType()->isReferenceType() || + NTTParm->getType()->isRecordType(); else islvalue = isa<VarDecl>(D) || isa<FieldDecl>(D) || isa<IndirectFieldDecl>(D) || isa<BindingDecl>(D) || isa<MSGuidDecl>(D) || + isa<TemplateParamObjectDecl>(D) || (Ctx.getLangOpts().CPlusPlus && (isa<FunctionDecl>(D) || isa<MSPropertyDecl>(D) || isa<FunctionTemplateDecl>(D))); |