diff options
| author | Ted Kremenek <kremenek@apple.com> | 2012-02-08 05:08:58 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2012-02-08 05:08:58 +0000 |
| commit | 8d968ad5c041edf2e611d140e0ba8c624876995d (patch) | |
| tree | 8934995bf57ad717d70b4544741f0dbed9086728 /clang | |
| parent | afa6e249cbc5ecacbba96f92abed24b441fdc265 (diff) | |
| download | bcm5719-llvm-8d968ad5c041edf2e611d140e0ba8c624876995d.tar.gz bcm5719-llvm-8d968ad5c041edf2e611d140e0ba8c624876995d.zip | |
Move -Wcovered-switch-default out of -Wswitch (and -Wall), and make it an opt-in warning.
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>.
llvm-svn: 150055
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticGroups.td | 4 | ||||
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
| -rw-r--r-- | clang/test/Sema/switch.c | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index f3e2634d64a..1a733d28e0f 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -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">; diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 4366cd4dee8..f255b88a8e3 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -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< diff --git a/clang/test/Sema/switch.c b/clang/test/Sema/switch.c index ea9be590244..8325b4e8237 100644 --- a/clang/test/Sema/switch.c +++ b/clang/test/Sema/switch.c @@ -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}} |

