Index: clang-tools-extra/clangd/CompileCommands.cpp =================================================================== --- clang-tools-extra/clangd/CompileCommands.cpp +++ clang-tools-extra/clangd/CompileCommands.cpp @@ -352,6 +352,10 @@ }; // Also grab prefixes for each option, these are not fully exposed. const char *const *Prefixes[DriverID::LastOption] = {nullptr}; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-compare" + // the generated code is expected to generate tautological comparison #define PREFIX(NAME, VALUE) static const char *const NAME[] = VALUE; #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELP, METAVAR, VALUES) \ @@ -361,6 +365,7 @@ #include "clang/Driver/Options.inc" #undef OPTION #undef PREFIX +#pragma clang diagnostic pop auto Result = std::make_unique(); // Iterate over distinct options (represented by the canonical alias). Index: clang/lib/Sema/SemaCodeComplete.cpp =================================================================== --- clang/lib/Sema/SemaCodeComplete.cpp +++ clang/lib/Sema/SemaCodeComplete.cpp @@ -6227,12 +6227,17 @@ &ResultBuilder::IsType); Results.EnterNewScope(); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-compare" + // The generated code is expected to generate tautological comparison + // Add the names of overloadable operators. Note that OO_Conditional is not // actually overloadable. #define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) \ if (OO_##Name != OO_Conditional) \ Results.AddResult(Result(Spelling)); #include "clang/Basic/OperatorKinds.def" +#pragma clang diagnostic pop // Add any type names visible from the current scope Results.allowNestedNameSpecifiers(); Index: llvm/lib/Frontend/OpenMP/OMPContext.cpp =================================================================== --- llvm/lib/Frontend/OpenMP/OMPContext.cpp +++ llvm/lib/Frontend/OpenMP/OMPContext.cpp @@ -58,6 +58,10 @@ break; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-compare" + // The generated code is expected to generate tautological comparison + // Add the appropriate device architecture trait based on the triple. #define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) \ if (TraitSelector::TraitSelectorEnum == TraitSelector::device_arch) { \ @@ -68,6 +72,7 @@ ActiveTraits.set(unsigned(TraitProperty::Enum)); \ } #include "llvm/Frontend/OpenMP/OMPKinds.def" +#pragma clang diagnostic pop // TODO: What exactly do we want to see as device ISA trait? // The discussion on the list did not seem to have come to an agreed