diff options
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6633e4a..e233821 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -5222,11 +5222,14 @@ std::string CompilerInvocation::getModuleHash() const { HBuilder.add(serialization::VERSION_MAJOR, serialization::VERSION_MINOR); // Extend the signature with the language options -#define LANGOPT(Name, Bits, Default, Description) HBuilder.add(LangOpts->Name); -#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ - HBuilder.add(static_cast<unsigned>(LangOpts->get##Name())); -#define BENIGN_LANGOPT(Name, Bits, Default, Description) -#define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) + // FIXME: Replace with C++20 `using enum LangOptions::CompatibilityKind`. + using CK = LangOptions::CompatibilityKind; +#define LANGOPT(Name, Bits, Default, Compatibility, Description) \ + if constexpr (CK::Compatibility != CK::Benign) \ + HBuilder.add(LangOpts->Name); +#define ENUM_LANGOPT(Name, Type, Bits, Default, Compatibility, Description) \ + if constexpr (CK::Compatibility != CK::Benign) \ + HBuilder.add(static_cast<unsigned>(LangOpts->get##Name())); #include "clang/Basic/LangOptions.def" HBuilder.addRange(getLangOpts().ModuleFeatures); |