do not emit -Wunused-macros warnings in -frewrite-includes mode (PR15614)

-frewrite-includes calls PP.SetMacroExpansionOnlyInDirectives() to avoid
macro expansions that are useless in that mode, but this can lead
to -Wunused-macros false positives. As -frewrite-includes does not emit
normal warnings, block -Wunused-macros too.

Differential Revision: https://reviews.llvm.org/D65371

llvm-svn: 372026
This commit is contained in:
Lubos Lunak 2019-09-16 19:18:37 +00:00
parent 413647d730
commit a507a5ec8f
2 changed files with 6 additions and 2 deletions

View File

@ -2782,7 +2782,8 @@ void Preprocessor::HandleDefineDirective(
// If we need warning for not using the macro, add its location in the
// warn-because-unused-macro set. If it gets used it will be removed from set.
if (getSourceManager().isInMainFile(MI->getDefinitionLoc()) &&
!Diags->isIgnored(diag::pp_macro_not_used, MI->getDefinitionLoc())) {
!Diags->isIgnored(diag::pp_macro_not_used, MI->getDefinitionLoc()) &&
!MacroExpansionInDirectivesOverride) {
MI->setIsWarnIfUnused(true);
WarnUnusedMacroLocs.insert(MI->getDefinitionLoc());
}

View File

@ -1,4 +1,7 @@
// RUN: %clang_cc1 -verify -Wall -Wextra -E -frewrite-includes %s
// RUN: %clang_cc1 -verify -Wall -Wextra -Wunused-macros -E -frewrite-includes %s
// expected-no-diagnostics
#pragma GCC visibility push (default)
#define USED_MACRO 1
int test() { return USED_MACRO; }