summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Sema/DeclSpec.h7
-rw-r--r--clang/lib/Sema/DeclSpec.cpp6
2 files changed, 8 insertions, 5 deletions
diff --git a/clang/include/clang/Sema/DeclSpec.h b/clang/include/clang/Sema/DeclSpec.h
index 5c549d76aaf..b417f89c0e5 100644
--- a/clang/include/clang/Sema/DeclSpec.h
+++ b/clang/include/clang/Sema/DeclSpec.h
@@ -363,7 +363,7 @@ private:
unsigned Friend_specified : 1;
// constexpr-specifier
- ConstexprSpecKind ConstexprSpecifier : 2;
+ unsigned ConstexprSpecifier : 2;
union {
UnionParsedType TypeRep;
@@ -728,7 +728,10 @@ public:
bool isModulePrivateSpecified() const { return ModulePrivateLoc.isValid(); }
SourceLocation getModulePrivateSpecLoc() const { return ModulePrivateLoc; }
- ConstexprSpecKind getConstexprSpecifier() const { return ConstexprSpecifier; }
+ ConstexprSpecKind getConstexprSpecifier() const {
+ return ConstexprSpecKind(ConstexprSpecifier);
+ }
+
SourceLocation getConstexprSpecLoc() const { return ConstexprLoc; }
bool hasConstexprSpecifier() const {
return ConstexprSpecifier != CSK_unspecified;
diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp
index 21d7f6bd426..9433efb1819 100644
--- a/clang/lib/Sema/DeclSpec.cpp
+++ b/clang/lib/Sema/DeclSpec.cpp
@@ -1037,9 +1037,9 @@ bool DeclSpec::setModulePrivateSpec(SourceLocation Loc, const char *&PrevSpec,
bool DeclSpec::SetConstexprSpec(ConstexprSpecKind ConstexprKind,
SourceLocation Loc, const char *&PrevSpec,
unsigned &DiagID) {
- if (ConstexprSpecifier != CSK_unspecified) {
- if (ConstexprSpecifier == CSK_consteval || ConstexprKind == CSK_consteval)
- return BadSpecifier(ConstexprKind, ConstexprSpecifier, PrevSpec, DiagID);
+ if (getConstexprSpecifier() != CSK_unspecified) {
+ if (getConstexprSpecifier() == CSK_consteval || ConstexprKind == CSK_consteval)
+ return BadSpecifier(ConstexprKind, getConstexprSpecifier(), PrevSpec, DiagID);
DiagID = diag::warn_duplicate_declspec;
PrevSpec = "constexpr";
return true;
OpenPOWER on IntegriCloud