https://github.com/dipeshs809 updated https://github.com/llvm/llvm-project/pull/117149
>From c55e4eedcddf6bad5191eae87a01f933267b83fa Mon Sep 17 00:00:00 2001 From: dipeshs809 <dipeshs...@gmail.com> Date: Thu, 21 Nov 2024 17:48:22 +0530 Subject: [PATCH] [clang] guard __STDC_NO_THREADS__ defination for MSVCVersion 2022 17.9 and above --- clang/include/clang/Basic/LangOptions.h | 1 + clang/lib/Basic/Targets/OSTargets.cpp | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Basic/LangOptions.h b/clang/include/clang/Basic/LangOptions.h index 949c8f5d448bcf..114a5d34a008bd 100644 --- a/clang/include/clang/Basic/LangOptions.h +++ b/clang/include/clang/Basic/LangOptions.h @@ -144,6 +144,7 @@ class LangOptionsBase { MSVC2019_5 = 1925, MSVC2019_8 = 1928, MSVC2022_3 = 1933, + MSVC2022_9 = 1939, }; enum SYCLMajorVersion { diff --git a/clang/lib/Basic/Targets/OSTargets.cpp b/clang/lib/Basic/Targets/OSTargets.cpp index bf10f9a725567d..17f845d4ffd7ca 100644 --- a/clang/lib/Basic/Targets/OSTargets.cpp +++ b/clang/lib/Basic/Targets/OSTargets.cpp @@ -259,8 +259,19 @@ static void addVisualCDefines(const LangOptions &Opts, MacroBuilder &Builder) { Builder.defineMacro("_KERNEL_MODE"); Builder.defineMacro("_INTEGRAL_MAX_BITS", "64"); - Builder.defineMacro("__STDC_NO_THREADS__"); - + // Define __STDC_NO_THREADS__ based on MSVC version, threads.h availability, + // and language standard. + if (!Opts.isCompatibleWithMSVC(LangOptions::MSVC2022_9)) { + Builder.defineMacro("__STDC_NO_THREADS__"); + } else { +#if defined(__has_include) && !__has_include(<threads.h>) + Builder.defineMacro("__STDC_NO_THREADS__"); +#endif +#if defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L + Builder.defineMacro("__STDC_NO_THREADS__"); +#endif + } + // Builder.defineMacro("__STDC_NO_THREADS__"); // Starting with VS 2022 17.1, MSVC predefines the below macro to inform // users of the execution character set defined at compile time. // The value given is the Windows Code Page Identifier: _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits