def AbstractFinalClass : DiagGroup<"abstract-final-class">;
def DeprecatedDeclarations : DiagGroup<"deprecated-declarations">;
+def DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
+def DeprecatedRegister : DiagGroup<"deprecated-register">;
def DeprecatedWritableStr : DiagGroup<"deprecated-writable-strings">;
-def Deprecated : DiagGroup<"deprecated", [ DeprecatedDeclarations] >,
+// FIXME: Why are DeprecatedImplementations and DeprecatedWritableStr
+// not in this group?
+def Deprecated : DiagGroup<"deprecated", [DeprecatedDeclarations,
+ DeprecatedRegister]>,
DiagCategory<"Deprecations">;
-def DeprecatedImplementations :DiagGroup<"deprecated-implementations">;
-
def : DiagGroup<"disabled-optimization">;
def : DiagGroup<"discard-qual">;
def : DiagGroup<"div-by-zero">;
def err_unspecified_vla_size_with_static : Error<
"'static' may not be used with an unspecified variable length array size">;
def warn_deprecated_register : Warning<
- "'register' storage class specifier is deprecated">, InGroup<Deprecated>;
+ "'register' storage class specifier is deprecated">,
+ InGroup<DeprecatedRegister>;
def err_expected_case_before_expression: Error<
"expected 'case' keyword before expression">;
// RUN: %clang_cc1 -std=c++11 %s -Wdeprecated -verify
// RUN: %clang_cc1 -std=c++1y %s -Wdeprecated -verify
+// RUN: %clang_cc1 -std=c++1y %s -Wdeprecated -verify -Wno-deprecated-register -DNO_DEPRECATED_FLAGS
+
#include "Inputs/register.h"
void f() throw();
void stuff() {
register int n;
-#if __cplusplus >= 201103L
+#if __cplusplus >= 201103L && !defined(NO_DEPRECATED_FLAGS)
// expected-warning@-2 {{'register' storage class specifier is deprecated}}
#endif