diff options
author | Daniel Jasper <djasper@google.com> | 2013-09-11 10:37:35 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-09-11 10:37:35 +0000 |
commit | c531daefd9cc627c8c348eee1547273660a1e3c5 (patch) | |
tree | 75cc05d4ecf835d07154c8b1ebc9e9e1dfeb30fe | |
parent | fa5ab1c8563843f0d05cccd43822e84ea8df2394 (diff) | |
download | bcm5719-llvm-c531daefd9cc627c8c348eee1547273660a1e3c5.tar.gz bcm5719-llvm-c531daefd9cc627c8c348eee1547273660a1e3c5.zip |
Split -Wunused-variable warning.
With r190382, -Wunused-variable warns about unused const variables when
appropriate. For codebases that use -Werror, this poses a problem as
existing unused const variables need to be cleaned up first. To make the
transistion easier, this patch splits -Wunused-variable by pulling out
an additional -Wunused-const-variable (by default activated along with
-Wunused-variable).
llvm-svn: 190508
-rw-r--r-- | clang/include/clang/Basic/DiagnosticGroups.td | 4 | ||||
-rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaCXX/no-warn-unused-const-variables.cpp | 6 |
4 files changed, 14 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index 1577dd2a205..eb2c744da48 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -336,7 +336,9 @@ def UnusedLabel : DiagGroup<"unused-label">; def UnusedParameter : DiagGroup<"unused-parameter">; def UnusedResult : DiagGroup<"unused-result">; def UnusedValue : DiagGroup<"unused-value", [UnusedComparison, UnusedResult]>; -def UnusedVariable : DiagGroup<"unused-variable">; +def UnusedConstVariable : DiagGroup<"unused-const-variable">; +def UnusedVariable : DiagGroup<"unused-variable", + [UnusedConstVariable]>; def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; def UserDefinedLiterals : DiagGroup<"user-defined-literals">; def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index cfc3c08cda6..7f8184cdb18 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -155,6 +155,8 @@ def warn_unused_parameter : Warning<"unused parameter %0">, InGroup<UnusedParameter>, DefaultIgnore; def warn_unused_variable : Warning<"unused variable %0">, InGroup<UnusedVariable>, DefaultIgnore; +def warn_unused_const_variable : Warning<"unused variable %0">, + InGroup<UnusedConstVariable>, DefaultIgnore; def warn_unused_exception_param : Warning<"unused exception parameter %0">, InGroup<UnusedExceptionParameter>, DefaultIgnore; def warn_decl_in_param_list : Warning< diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 91f6d5f7c21..c6f213a7380 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -758,6 +758,9 @@ void Sema::ActOnEndOfTranslationUnit() { if (DiagD->isReferenced()) { Diag(DiagD->getLocation(), diag::warn_unneeded_internal_decl) << /*variable*/1 << DiagD->getDeclName(); + } else if (DiagD->getType().isConstQualified()) { + Diag(DiagD->getLocation(), diag::warn_unused_const_variable) + << DiagD->getDeclName(); } else { Diag(DiagD->getLocation(), diag::warn_unused_variable) << DiagD->getDeclName(); diff --git a/clang/test/SemaCXX/no-warn-unused-const-variables.cpp b/clang/test/SemaCXX/no-warn-unused-const-variables.cpp new file mode 100644 index 00000000000..c146ca04f83 --- /dev/null +++ b/clang/test/SemaCXX/no-warn-unused-const-variables.cpp @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Wno-unused-const-variable -verify %s + +namespace { + int i = 0; // expected-warning {{unused variable 'i'}} + const int j = 0;; +} |