diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-06-13 19:31:46 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-06-13 19:37:19 +0000 |
commit | e8d8bef961a50d4dc22501cde4fb9fb0be1b2532 (patch) | |
tree | 94f04805f47bb7c59ae29690d8952b6074fff602 /contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp | |
parent | bb130ff39747b94592cb26d71b7cb097b9a4ea6b (diff) | |
parent | b60736ec1405bb0a8dd40989f67ef4c93da068ab (diff) |
Diffstat (limited to 'contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp index 6eef1e2376f6..d47ad1b74649 100644 --- a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp +++ b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp @@ -376,8 +376,11 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__STDC_VERSION__", "199409L"); } else { // -- __cplusplus + // FIXME: Use correct value for C++23. + if (LangOpts.CPlusPlus2b) + Builder.defineMacro("__cplusplus", "202101L"); // [C++20] The integer literal 202002L. - if (LangOpts.CPlusPlus20) + else if (LangOpts.CPlusPlus20) Builder.defineMacro("__cplusplus", "202002L"); // [C++17] The integer literal 201703L. else if (LangOpts.CPlusPlus17) @@ -403,6 +406,12 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__STDCPP_DEFAULT_NEW_ALIGNMENT__", Twine(TI.getNewAlign() / TI.getCharWidth()) + TI.getTypeConstantSuffix(TI.getSizeType())); + + // -- __STDCPP_THREADS__ + // Defined, and has the value integer literal 1, if and only if a + // program can have more than one thread of execution. + if (LangOpts.getThreadModel() == LangOptions::ThreadModelKind::POSIX) + Builder.defineMacro("__STDCPP_THREADS__", "1"); } // In C11 these are environment macros. In C++11 they are only defined @@ -445,6 +454,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, case 200: Builder.defineMacro("__OPENCL_C_VERSION__", "200"); break; + case 300: + Builder.defineMacro("__OPENCL_C_VERSION__", "300"); + break; default: llvm_unreachable("Unsupported OpenCL version"); } @@ -453,6 +465,7 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("CL_VERSION_1_1", "110"); Builder.defineMacro("CL_VERSION_1_2", "120"); Builder.defineMacro("CL_VERSION_2_0", "200"); + Builder.defineMacro("CL_VERSION_3_0", "300"); if (TI.isLittleEndian()) Builder.defineMacro("__ENDIAN_LITTLE__"); @@ -463,7 +476,7 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, if (LangOpts.SYCL) { // SYCL Version is set to a value when building SYCL applications - if (LangOpts.SYCLVersion == 2017) + if (LangOpts.getSYCLVersion() == LangOptions::SYCL_2017) Builder.defineMacro("CL_SYCL_LANGUAGE_VERSION", "121"); } @@ -552,7 +565,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, Builder.defineMacro("__cpp_aggregate_bases", "201603L"); Builder.defineMacro("__cpp_structured_bindings", "201606L"); Builder.defineMacro("__cpp_nontype_template_args", - "201411L"); // (not latest) + LangOpts.CPlusPlus20 ? "201911L" : "201411L"); Builder.defineMacro("__cpp_fold_expressions", "201603L"); Builder.defineMacro("__cpp_guaranteed_copy_elision", "201606L"); Builder.defineMacro("__cpp_nontype_template_parameter_auto", "201606L"); @@ -740,12 +753,12 @@ static void InitializePredefinedMacros(const TargetInfo &TI, if (LangOpts.GNUCVersion && LangOpts.RTTI) Builder.defineMacro("__GXX_RTTI"); - if (LangOpts.SjLjExceptions) + if (LangOpts.hasSjLjExceptions()) Builder.defineMacro("__USING_SJLJ_EXCEPTIONS__"); - else if (LangOpts.SEHExceptions) + else if (LangOpts.hasSEHExceptions()) Builder.defineMacro("__SEH__"); - else if (LangOpts.DWARFExceptions && - (TI.getTriple().isThumb() || TI.getTriple().isARM())) + else if (LangOpts.hasDWARFExceptions() && + (TI.getTriple().isThumb() || TI.getTriple().isARM())) Builder.defineMacro("__ARM_DWARF_EH__"); if (LangOpts.Deprecated) @@ -1107,10 +1120,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, // OpenCL definitions. if (LangOpts.OpenCL) { -#define OPENCLEXT(Ext) \ - if (TI.getSupportedOpenCLOpts().isSupported(#Ext, LangOpts)) \ - Builder.defineMacro(#Ext); -#include "clang/Basic/OpenCLExtensions.def" + TI.getOpenCLFeatureDefines(LangOpts, Builder); if (TI.getTriple().isSPIR()) Builder.defineMacro("__IMAGE_SUPPORT__"); |