]> granicus.if.org Git - clang/commitdiff
Move -Wcovered-switch-default out of -Wswitch (and -Wall), and make it an opt-in...
authorTed Kremenek <kremenek@apple.com>
Wed, 8 Feb 2012 05:08:58 +0000 (05:08 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 8 Feb 2012 05:08:58 +0000 (05:08 +0000)
This is a great warning, but it was observed that a ton of real world code violates
it all the time for (semi-)legitimate reasons.  This warnings is fairly pedantic, which is good,
but not for everyone.  For example, there is a fair amount of idiomatic code out there
that does "default: abort()", and similar idioms.

Addresses <rdar://problem/10814651>.

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

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
test/Sema/switch.c

index f3e2634d64a0d2ee205ee169b6aa221059b0d25f..1a733d28e0f874f9a008db9ea2abc967fb924927 100644 (file)
@@ -184,9 +184,9 @@ def InvalidOffsetof : DiagGroup<"invalid-offsetof">;
 def : DiagGroup<"strict-prototypes">;
 def StrictSelector : DiagGroup<"strict-selector-match">;
 def MethodDuplicate : DiagGroup<"duplicate-method-match">;
-def SwitchEnum     : DiagGroup<"switch-enum">;
 def CoveredSwitchDefault : DiagGroup<"covered-switch-default">;
-def Switch         : DiagGroup<"switch", [CoveredSwitchDefault]>;
+def SwitchEnum     : DiagGroup<"switch-enum">;
+def Switch         : DiagGroup<"switch">;
 def Trigraphs      : DiagGroup<"trigraphs">;
 
 def : DiagGroup<"type-limits">;
index 4366cd4dee80b0d46d64c38d355b56bfbe7d5a35..f255b88a8e3065339e058837680eae6661760866 100644 (file)
@@ -5064,7 +5064,7 @@ def warn_missing_cases : Warning<
 
 def warn_unreachable_default : Warning<
   "default label in switch which covers all enumeration values">,
-  InGroup<CoveredSwitchDefault>;
+  InGroup<CoveredSwitchDefault>, DefaultIgnore;
 def warn_not_in_enum : Warning<"case value not in enumerated type %0">,
   InGroup<Switch>; 
 def err_typecheck_statement_requires_scalar : Error<
index ea9be590244d22d26469d9a2676b7bb5a87d44ac..8325b4e8237f0699f179e758aadedc79350b1bff 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wswitch-enum %s
+// RUN: %clang_cc1 -fsyntax-only -verify -Wswitch-enum -Wcovered-switch-default %s
 void f (int z) { 
   while (z) { 
     default: z--;            // expected-error {{statement not in switch}}