diff options
author | Nathan Wilson <nwilson20@gmail.com> | 2016-02-08 22:02:50 +0000 |
---|---|---|
committer | Nathan Wilson <nwilson20@gmail.com> | 2016-02-08 22:02:50 +0000 |
commit | 06dacd851fe4df04d9ad321950755f7d1ed0c6e5 (patch) | |
tree | 7a1d979a184e5659b3bf91bf20bc2001f21f8083 | |
parent | 740f2ca6725d16612ab4c108cddb850aaf0bcc1b (diff) | |
download | bcm5719-llvm-06dacd851fe4df04d9ad321950755f7d1ed0c6e5.tar.gz bcm5719-llvm-06dacd851fe4df04d9ad321950755f7d1ed0c6e5.zip |
[Concepts] Remove the IsConcept bit and associated member functions from VarDecl
because the information is now stored in TemplateDecl.
llvm-svn: 260155
-rw-r--r-- | clang/include/clang/AST/Decl.h | 12 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 13 |
2 files changed, 8 insertions, 17 deletions
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h index 29b19f2d8e3..a545e218143 100644 --- a/clang/include/clang/AST/Decl.h +++ b/clang/include/clang/AST/Decl.h @@ -816,9 +816,6 @@ protected: /// \brief Whether this variable is (C++0x) constexpr. unsigned IsConstexpr : 1; - /// \brief Whether this variable is a (C++ Concepts TS) concept. - unsigned IsConcept : 1; - /// \brief Whether this variable is the implicit variable for a lambda /// init-capture. unsigned IsInitCapture : 1; @@ -1194,15 +1191,6 @@ public: NonParmVarDeclBits.IsConstexpr = IC; } - /// Whether this variable is (C++ Concepts TS) concept. - bool isConcept() const { - return isa<ParmVarDecl>(this) ? false : NonParmVarDeclBits.IsConcept; - } - void setConcept(bool IC) { - assert(!isa<ParmVarDecl>(this)); - NonParmVarDeclBits.IsConcept = IC; - } - /// Whether this variable is the implicit variable for a lambda init-capture. bool isInitCapture() const { return isa<ParmVarDecl>(this) ? false : NonParmVarDeclBits.IsInitCapture; diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index c908f672a4f..754536e629f 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -5983,7 +5983,8 @@ Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC, NewVD->setConstexpr(true); if (D.getDeclSpec().isConceptSpecified()) { - NewVD->setConcept(true); + if (VarTemplateDecl *VTD = NewVD->getDescribedVarTemplate()) + VTD->setConcept(); // C++ Concepts TS [dcl.spec.concept]p2: A concept definition shall not // be declared with the thread_local, inline, friend, or constexpr @@ -9760,10 +9761,12 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl, // C++ Concepts TS [dcl.spec.concept]p1: [...] A variable template // definition having the concept specifier is called a variable concept. A // concept definition refers to [...] a variable concept and its initializer. - if (Var->isConcept()) { - Diag(Var->getLocation(), diag::err_var_concept_not_initialized); - Var->setInvalidDecl(); - return; + if (VarTemplateDecl *VTD = Var->getDescribedVarTemplate()) { + if (VTD->isConcept()) { + Diag(Var->getLocation(), diag::err_var_concept_not_initialized); + Var->setInvalidDecl(); + return; + } } // OpenCL v1.1 s6.5.3: variables declared in the constant address space must |