]> granicus.if.org Git - clang/commitdiff
Add warning group -Wdeprecated-register for C++11 warning on 'register' being
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 17 Jun 2013 00:01:58 +0000 (00:01 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 17 Jun 2013 00:01:58 +0000 (00:01 +0000)
deprecated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184068 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticParseKinds.td
test/SemaCXX/deprecated.cpp

index c6a6fedefa2240156b2e009b76b6009b4eb36bcc..31b0b5623efb75cc43842cc26e1823b1abc2ff3d 100644 (file)
@@ -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">;
index 38c7c78a5c75870605fbb168c1c4c559a5dd0e6f..4ffb34ba0f526de107abdc3792b133fd5a4d2c37 100644 (file)
@@ -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<Deprecated>;
+  "'register' storage class specifier is deprecated">,
+  InGroup<DeprecatedRegister>;
 
 def err_expected_case_before_expression: Error<
   "expected 'case' keyword before expression">;
index 75ec0bc4196319b4223a2b1fcd8cd430d3500be4..5b56b03a000c9f9e418f469a48be6db3bfd6c099 100644 (file)
@@ -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