diff options
author | Erik Verbruggen <erikjv@me.com> | 2016-10-28 08:28:42 +0000 |
---|---|---|
committer | Erik Verbruggen <erikjv@me.com> | 2016-10-28 08:28:42 +0000 |
commit | 89aa7eb2ab30118dfd9c8bf5b2398cd4bc70d53e (patch) | |
tree | cf1cec7cd50488db1c818cebd32ce634a26a4a9c /clang/lib/Sema/Sema.cpp | |
parent | 984f42eed5252a487ac274e16ffcb7c48d9032f5 (diff) | |
download | bcm5719-llvm-89aa7eb2ab30118dfd9c8bf5b2398cd4bc70d53e.tar.gz bcm5719-llvm-89aa7eb2ab30118dfd9c8bf5b2398cd4bc70d53e.zip |
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.
llvm-svn: 285386
Diffstat (limited to 'clang/lib/Sema/Sema.cpp')
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 2a3be84263c..c2622ecab4b 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -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(); |