From: Richard Smith Date: Mon, 17 Jun 2013 00:01:58 +0000 (+0000) Subject: Add warning group -Wdeprecated-register for C++11 warning on 'register' being X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=58df0426944c1bf8a80b6935bbea3815fc506474;p=clang Add warning group -Wdeprecated-register for C++11 warning on 'register' being deprecated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184068 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index c6a6fedefa..31b0b5623e 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -57,12 +57,15 @@ def DeleteNonVirtualDtor : DiagGroup<"delete-non-virtual-dtor">; 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">; diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 38c7c78a5c..4ffb34ba0f 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -310,7 +310,8 @@ def err_expected_class_name_not_template : 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; + "'register' storage class specifier is deprecated">, + InGroup; def err_expected_case_before_expression: Error< "expected 'case' keyword before expression">; diff --git a/test/SemaCXX/deprecated.cpp b/test/SemaCXX/deprecated.cpp index 75ec0bc419..5b56b03a00 100644 --- a/test/SemaCXX/deprecated.cpp +++ b/test/SemaCXX/deprecated.cpp @@ -2,6 +2,8 @@ // 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(); @@ -15,7 +17,7 @@ void h() 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