diff options
Diffstat (limited to 'clang/lib/Frontend/FrontendActions.cpp')
-rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index c0ab708..89eb0b6 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -643,16 +643,20 @@ namespace { bool ReadLanguageOptions(const LangOptions &LangOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences) override { + // FIXME: Replace with C++20 `using enum LangOptions::CompatibilityKind`. + using CK = LangOptions::CompatibilityKind; + Out.indent(2) << "Language options:\n"; -#define LANGOPT(Name, Bits, Default, Description) \ +#define LANGOPT(Name, Bits, Default, Compatibility, Description) \ + if constexpr (CK::Compatibility != CK::Benign) \ DUMP_BOOLEAN(LangOpts.Name, Description); -#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ - Out.indent(4) << Description << ": " \ +#define ENUM_LANGOPT(Name, Type, Bits, Default, Compatibility, Description) \ + if constexpr (CK::Compatibility != CK::Benign) \ + Out.indent(4) << Description << ": " \ << static_cast<unsigned>(LangOpts.get##Name()) << "\n"; -#define VALUE_LANGOPT(Name, Bits, Default, Description) \ +#define VALUE_LANGOPT(Name, Bits, Default, Compatibility, Description) \ + if constexpr (CK::Compatibility != CK::Benign) \ Out.indent(4) << Description << ": " << LangOpts.Name << "\n"; -#define BENIGN_LANGOPT(Name, Bits, Default, Description) -#define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) #include "clang/Basic/LangOptions.def" if (!LangOpts.ModuleFeatures.empty()) { |