aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/AST/ExprClassification.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2020-09-20 23:16:08 -0700
committerRichard Smith <richard@metafoo.co.uk>2020-10-21 13:21:41 -0700
commitba4768c966581658465f7366df9b0811f468a2d7 (patch)
treeedf8c81d55613e4493f7793f0c8138b57c08580d /clang/lib/AST/ExprClassification.cpp
parent1d1217c4ea115ac204f666a31686787503623dfa (diff)
downloadllvm-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.cpp4
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)));