diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index b3f2067ff68c..95288acb86c9 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -254,9 +254,6 @@ def err_missing_comma_before_ellipsis : Error< "C requires a comma prior to the ellipsis in a variadic function type">; def err_unexpected_typedef_ident : Error< "unexpected type name %0: expected identifier">; -def ext_gnu_decltype : Extension< - "'__decltype' type specifier is a GNU extension">, - InGroup, DefaultIgnore; def warn_cxx98_compat_decltype : Warning< "'decltype' type specifier is incompatible with C++98">, InGroup, DefaultIgnore; diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 5468700bc925..d798281f40f8 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -653,8 +653,8 @@ SourceLocation Parser::ParseDecltypeSpecifier(DeclSpec &DS) { return EndLoc; } } else { - Diag(Tok, Tok.getIdentifierInfo()->isStr("decltype") - ? diag::warn_cxx98_compat_decltype : diag::ext_gnu_decltype); + if (Tok.getIdentifierInfo()->isStr("decltype")) + Diag(Tok, diag::warn_cxx98_compat_decltype); ConsumeToken(); diff --git a/clang/test/SemaCXX/decltype-98.cpp b/clang/test/SemaCXX/decltype-98.cpp index 44d5896c53ea..db52565e6c74 100644 --- a/clang/test/SemaCXX/decltype-98.cpp +++ b/clang/test/SemaCXX/decltype-98.cpp @@ -1,3 +1,3 @@ -// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s -Wgnu +// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s extern int x; -__decltype(1) x = 3; // expected-warning {{is a GNU extension}} +__decltype(1) x = 3;