================ @@ -470,8 +470,16 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, if (LangOpts.CPlusPlus26) // FIXME: Use correct value for C++26. Builder.defineMacro("__cplusplus", "202400L"); - else if (LangOpts.CPlusPlus23) + else if (LangOpts.CPlusPlus23) { Builder.defineMacro("__cplusplus", "202302L"); + // [C++23] 15.11p2 [cpp.predefined] + if (TI.hasFloat16Type()) { + Builder.defineMacro("__STDCPP_FLOAT16_T__", "1"); + } + if (TI.hasFullBFloat16Type()) { + Builder.defineMacro("__STDCPP_BFLOAT16_T__", "1"); + } ---------------- frederick-vs-ja wrote:
They will get defined in C++26 mode. `LangOpts.CPlusPlus23` means "C++23 and later", not simply "C++23". Although I think it will make a bit more sense to define these macros in all modes. https://github.com/llvm/llvm-project/pull/78503 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits