https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79301
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jason Merrill from comment #7) > (In reply to Jakub Jelinek from comment #4) > > That said, I think e.g. for maybe_unused or nodiscard attributes we don't > > complain with -pedantic about those attributes used in C++14 code, so either > > we should do that as well, or we shouldn't do that for fallthrough either. > > Jason? > > We certainly don't want to both have __has_cpp_attribute(fallthrough) > non-zero and also complain about its usage. My inclination would be to > remove the diagnostic. Also for deprecated attribute and C++11? else if (is_attribute_p ("deprecated", attr_id)) { if (cxx_dialect == cxx11) pedwarn (token->location, OPT_Wpedantic, "%<deprecated%> is a C++14 feature;" " use %<gnu::deprecated%>"); TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu"); } /* C++17 fallthrough attribute is equivalent to GNU's. */ else if (is_attribute_p ("fallthrough", attr_id)) { if (cxx_dialect < cxx1z) pedwarn (token->location, OPT_Wpedantic, "%<fallthrough%> is a C++17 feature;" " use %<gnu::fallthrough%>"); TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu"); } Even for that one can test #if __has_cpp_attribute(deprecated) and [[deprecated]] still won't work if -std=c++11 -pedantic-errors.