forked from OSchip/llvm-project
Allow [[maybe_unused]] on static data members; these are considered variables and the attribute should appertain to them.
Patch by S. B. Tam. llvm-svn: 329904
This commit is contained in:
parent
0cd0fbd8c5
commit
fbedb97dd2
|
@ -2834,8 +2834,7 @@ def warn_attribute_wrong_decl_type : Warning<
|
|||
"|types and namespaces"
|
||||
"|variables, functions and classes"
|
||||
"|kernel functions"
|
||||
"|non-K&R-style functions"
|
||||
"|variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members}1">,
|
||||
"|non-K&R-style functions}1">,
|
||||
InGroup<IgnoredAttributes>;
|
||||
def err_attribute_wrong_decl_type : Error<warn_attribute_wrong_decl_type.Text>;
|
||||
def warn_type_attribute_wrong_type : Warning<
|
||||
|
|
|
@ -928,7 +928,6 @@ enum AttributeDeclKind {
|
|||
ExpectedFunctionVariableOrClass,
|
||||
ExpectedKernelFunction,
|
||||
ExpectedFunctionWithProtoType,
|
||||
ExpectedForMaybeUnused,
|
||||
};
|
||||
|
||||
} // namespace clang
|
||||
|
|
|
@ -2042,16 +2042,6 @@ static void handleDependencyAttr(Sema &S, Scope *Scope, Decl *D,
|
|||
static void handleUnusedAttr(Sema &S, Decl *D, const AttributeList &AL) {
|
||||
bool IsCXX17Attr = AL.isCXX11Attribute() && !AL.getScopeName();
|
||||
|
||||
if (IsCXX17Attr && isa<VarDecl>(D)) {
|
||||
// The C++17 spelling of this attribute cannot be applied to a static data
|
||||
// member per [dcl.attr.unused]p2.
|
||||
if (cast<VarDecl>(D)->isStaticDataMember()) {
|
||||
S.Diag(AL.getLoc(), diag::warn_attribute_wrong_decl_type)
|
||||
<< AL.getName() << ExpectedForMaybeUnused;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If this is spelled as the standard C++17 attribute, but not in C++17, warn
|
||||
// about using it as an extension.
|
||||
if (!S.getLangOpts().CPlusPlus17 && IsCXX17Attr)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
struct [[maybe_unused]] S {
|
||||
int I [[maybe_unused]];
|
||||
static int SI [[maybe_unused]]; // expected-warning {{'maybe_unused' attribute only applies to variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members}}
|
||||
static int SI [[maybe_unused]];
|
||||
};
|
||||
|
||||
enum [[maybe_unused]] E1 {
|
||||
|
|
Loading…
Reference in New Issue