diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-18 20:30:12 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-06 20:11:55 +0000 | 
| commit | 5f757f3ff9144b609b3c433dfd370cc6bdc191ad (patch) | |
| tree | 1b4e980b866cd26a00af34c0a653eb640bd09caf /contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp | |
| parent | 3e1c8a35f741a5d114d0ba670b15191355711fe9 (diff) | |
| parent | 312c0ed19cc5276a17bacf2120097bec4515b0f1 (diff) | |
Diffstat (limited to 'contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp')
| -rw-r--r-- | contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp | 47 | 
1 files changed, 39 insertions, 8 deletions
| diff --git a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp index f8fae82fba12..d83128adb511 100644 --- a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp +++ b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp @@ -438,9 +438,8 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,    //      value is, are implementation-defined.    // (Removed in C++20.)    if (!LangOpts.CPlusPlus) { -    // FIXME: Use correct value for C23. -    if (LangOpts.C2x) -      Builder.defineMacro("__STDC_VERSION__", "202000L"); +    if (LangOpts.C23) +      Builder.defineMacro("__STDC_VERSION__", "202311L");      else if (LangOpts.C17)        Builder.defineMacro("__STDC_VERSION__", "201710L");      else if (LangOpts.C11) @@ -586,6 +585,11 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,      Builder.defineMacro("__HIP_MEMORY_SCOPE_WORKGROUP", "3");      Builder.defineMacro("__HIP_MEMORY_SCOPE_AGENT", "4");      Builder.defineMacro("__HIP_MEMORY_SCOPE_SYSTEM", "5"); +    if (LangOpts.HIPStdPar) { +      Builder.defineMacro("__HIPSTDPAR__"); +      if (LangOpts.HIPStdParInterposeAlloc) +        Builder.defineMacro("__HIPSTDPAR_INTERPOSE_ALLOC__"); +    }      if (LangOpts.CUDAIsDevice) {        Builder.defineMacro("__HIP_DEVICE_COMPILE__");        if (!TI.hasHIPImageSupport()) { @@ -601,6 +605,17 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,        Builder.defineMacro("HIP_API_PER_THREAD_DEFAULT_STREAM");      }    } + +  if (LangOpts.OpenACC) { +    // FIXME: When we have full support for OpenACC, we should set this to the +    // version we support. Until then, set as '1' by default, but provide a +    // temporary mechanism for users to override this so real-world examples can +    // be tested against. +    if (!LangOpts.OpenACCMacroOverride.empty()) +      Builder.defineMacro("_OPENACC", LangOpts.OpenACCMacroOverride); +    else +      Builder.defineMacro("_OPENACC", "1"); +  }  }  /// Initialize the predefined C++ language feature test macros defined in @@ -720,6 +735,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,    if (LangOpts.CPlusPlus11)      Builder.defineMacro("__cpp_static_call_operator", "202207L");    Builder.defineMacro("__cpp_named_character_escapes", "202207L"); +  Builder.defineMacro("__cpp_placeholder_variables", "202306L");    if (LangOpts.Char8)      Builder.defineMacro("__cpp_char8_t", "202207L"); @@ -793,6 +809,13 @@ static void InitializePredefinedMacros(const TargetInfo &TI,    Builder.defineMacro("__ATOMIC_ACQ_REL", "4");    Builder.defineMacro("__ATOMIC_SEQ_CST", "5"); +  // Define macros for the clang atomic scopes. +  Builder.defineMacro("__MEMORY_SCOPE_SYSTEM", "0"); +  Builder.defineMacro("__MEMORY_SCOPE_DEVICE", "1"); +  Builder.defineMacro("__MEMORY_SCOPE_WRKGRP", "2"); +  Builder.defineMacro("__MEMORY_SCOPE_WVFRNT", "3"); +  Builder.defineMacro("__MEMORY_SCOPE_SINGLE", "4"); +    // Define macros for the OpenCL memory scope.    // The values should match AtomicScopeOpenCLModel::ID enum.    static_assert( @@ -1297,11 +1320,10 @@ static void InitializePredefinedMacros(const TargetInfo &TI,      Builder.defineMacro("__CUDA_ARCH__");    } -  // We need to communicate this to our CUDA header wrapper, which in turn -  // informs the proper CUDA headers of this choice. -  if (LangOpts.CUDADeviceApproxTranscendentals || LangOpts.FastMath) { -    Builder.defineMacro("__CLANG_CUDA_APPROX_TRANSCENDENTALS__"); -  } +  // We need to communicate this to our CUDA/HIP header wrapper, which in turn +  // informs the proper CUDA/HIP headers of this choice. +  if (LangOpts.GPUDeviceApproxTranscendentals) +    Builder.defineMacro("__CLANG_GPU_APPROX_TRANSCENDENTALS__");    // Define a macro indicating that the source file is being compiled with a    // SYCL device compiler which doesn't produce host binary. @@ -1329,6 +1351,15 @@ static void InitializePredefinedMacros(const TargetInfo &TI,    if (TI.getTriple().isOSBinFormatELF())      Builder.defineMacro("__ELF__"); +  // Target OS macro definitions. +  if (PPOpts.DefineTargetOSMacros) { +    const llvm::Triple &Triple = TI.getTriple(); +#define TARGET_OS(Name, Predicate)                                             \ +  Builder.defineMacro(#Name, (Predicate) ? "1" : "0"); +#include "clang/Basic/TargetOSMacros.def" +#undef TARGET_OS +  } +    // Get other target #defines.    TI.getTargetDefines(LangOpts, Builder);  } | 
