r285386 - Sema: do not warn about unused const vars if main file is a header

Erik Verbruggen via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 28 01:28:44 PDT 2016


Author: erikjv
Date: Fri Oct 28 03:28:42 2016
New Revision: 285386

URL: http://llvm.org/viewvc/llvm-project?rev=285386&view=rev
Log:
Sema: do not warn about unused const vars if main file is a header

If we pass a header to libclang, e.g. because it's open in an editor in
an IDE, warnings about unused const vars are not useful: other files
that include the header might use those constants. So when -x *-header
is passed as command-line option, suppress this warning.

Added:
    cfe/trunk/test/Sema/no-warn-unused-const-variables.c
Modified:
    cfe/trunk/lib/Sema/Sema.cpp

Modified: cfe/trunk/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=285386&r1=285385&r2=285386&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.cpp (original)
+++ cfe/trunk/lib/Sema/Sema.cpp Fri Oct 28 03:28:42 2016
@@ -865,8 +865,11 @@ void Sema::ActOnEndOfTranslationUnit() {
           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();
+          const SourceManager &SM = SourceMgr;
+          if (SM.getMainFileID() != SM.getFileID(DiagD->getLocation()) ||
+              !PP.getLangOpts().IsHeaderFile)
+            Diag(DiagD->getLocation(), diag::warn_unused_const_variable)
+                << DiagD->getDeclName();
         } else {
           Diag(DiagD->getLocation(), diag::warn_unused_variable)
               << DiagD->getDeclName();

Added: cfe/trunk/test/Sema/no-warn-unused-const-variables.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/no-warn-unused-const-variables.c?rev=285386&view=auto
==============================================================================
--- cfe/trunk/test/Sema/no-warn-unused-const-variables.c (added)
+++ cfe/trunk/test/Sema/no-warn-unused-const-variables.c Fri Oct 28 03:28:42 2016
@@ -0,0 +1,4 @@
+// RUN: %clang_cc1 -fsyntax-only -Wunused-const-variable -x c-header -ffreestanding -verify %s
+// RUN: %clang_cc1 -fsyntax-only -Wunused-const-variable -x c++-header -ffreestanding -verify %s
+// expected-no-diagnostics
+static const int unused[] = { 2, 3, 5, 7, 11, 13 };




More information about the cfe-commits mailing list