Author: llunak Date: Mon Sep 16 12:18:37 2019 New Revision: 372026 URL: http://llvm.org/viewvc/llvm-project?rev=372026&view=rev Log: 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 Modified: cfe/trunk/lib/Lex/PPDirectives.cpp cfe/trunk/test/Frontend/rewrite-includes-warnings.c Modified: cfe/trunk/lib/Lex/PPDirectives.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=372026&r1=372025&r2=372026&view=diff ============================================================================== --- cfe/trunk/lib/Lex/PPDirectives.cpp (original) +++ cfe/trunk/lib/Lex/PPDirectives.cpp Mon Sep 16 12:18:37 2019 @@ -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()); } Modified: cfe/trunk/test/Frontend/rewrite-includes-warnings.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/rewrite-includes-warnings.c?rev=372026&r1=372025&r2=372026&view=diff ============================================================================== --- cfe/trunk/test/Frontend/rewrite-includes-warnings.c (original) +++ cfe/trunk/test/Frontend/rewrite-includes-warnings.c Mon Sep 16 12:18:37 2019 @@ -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; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits