cpplearner created this revision. cpplearner added reviewers: aaron.ballman, rsmith. Herald added a subscriber: cfe-commits.
IIUC a static data member is a variable, so [[maybe_unused]] should be allowed to apply to a static data member. Repository: rC Clang https://reviews.llvm.org/D45403 Files: lib/Sema/SemaDeclAttr.cpp test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp Index: test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp =================================================================== --- test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp +++ test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp @@ -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 { Index: lib/Sema/SemaDeclAttr.cpp =================================================================== --- lib/Sema/SemaDeclAttr.cpp +++ lib/Sema/SemaDeclAttr.cpp @@ -2042,16 +2042,6 @@ 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)
Index: test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp =================================================================== --- test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp +++ test/CXX/dcl.dcl/dcl.attr/dcl.attr.unused/p2.cpp @@ -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 { Index: lib/Sema/SemaDeclAttr.cpp =================================================================== --- lib/Sema/SemaDeclAttr.cpp +++ lib/Sema/SemaDeclAttr.cpp @@ -2042,16 +2042,6 @@ 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)
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits