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 }; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits