From: Alexander Kornienko Date: Wed, 17 Apr 2019 22:35:36 +0000 (+0000) Subject: [clang-tidy] Don't issue cppcoreguidelines-macro-usage on builtin macros X-Git-Tag: llvmorg-10-init~7590 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4c177038e096dad3646fe8fc33682e6ef2f590fa;p=platform%2Fupstream%2Fllvm.git [clang-tidy] Don't issue cppcoreguidelines-macro-usage on builtin macros Before the patch calling clang-tidy with -header-filter=.* -system-headers would result in a few hundred useless warnings: warning: macro '_GNU_SOURCE' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '_LP64' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_ACQUIRE' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_ACQ_REL' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_CONSUME' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_RELAXED' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_RELEASE' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__ATOMIC_SEQ_CST' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] warning: macro '__BIGGEST_ALIGNMENT__' used to declare a constant; consider using a 'constexpr' constant [cppcoreguidelines-macro-usage] ... and so on llvm-svn: 358621 --- diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/MacroUsageCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/MacroUsageCheck.cpp index 01c25d2..ac5ec13 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/MacroUsageCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/MacroUsageCheck.cpp @@ -36,7 +36,8 @@ public: IgnoreCommandLineMacros(IgnoreCommandLine) {} void MacroDefined(const Token &MacroNameTok, const MacroDirective *MD) override { - if (MD->getMacroInfo()->isUsedForHeaderGuard() || + if (SM.isWrittenInBuiltinFile(MD->getLocation()) || + MD->getMacroInfo()->isUsedForHeaderGuard() || MD->getMacroInfo()->getNumTokens() == 0) return; diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp index a4948f5b..edce328 100644 --- a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s cppcoreguidelines-macro-usage %t +// RUN: %check_clang_tidy %s cppcoreguidelines-macro-usage %t -- -header-filter=.* -system-headers -- #ifndef INCLUDE_GUARD #define INCLUDE_GUARD