aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r--contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp70
1 files changed, 60 insertions, 10 deletions
diff --git a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp
index e259ab47c558..fe3736c07c3c 100644
--- a/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp
@@ -371,6 +371,50 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
const LangOptions &LangOpts,
const FrontendOptions &FEOpts,
MacroBuilder &Builder) {
+ if (LangOpts.HLSL) {
+ Builder.defineMacro("__hlsl_clang");
+ // HLSL Version
+ Builder.defineMacro("__HLSL_VERSION",
+ Twine((unsigned)LangOpts.getHLSLVersion()));
+
+ if (LangOpts.NativeHalfType)
+ Builder.defineMacro("__HLSL_ENABLE_16_BIT",
+ Twine((unsigned)LangOpts.getHLSLVersion()));
+
+ // Shader target information
+ // "enums" for shader stages
+ Builder.defineMacro("__SHADER_STAGE_VERTEX",
+ Twine((uint32_t)ShaderStage::Vertex));
+ Builder.defineMacro("__SHADER_STAGE_PIXEL",
+ Twine((uint32_t)ShaderStage::Pixel));
+ Builder.defineMacro("__SHADER_STAGE_GEOMETRY",
+ Twine((uint32_t)ShaderStage::Geometry));
+ Builder.defineMacro("__SHADER_STAGE_HULL",
+ Twine((uint32_t)ShaderStage::Hull));
+ Builder.defineMacro("__SHADER_STAGE_DOMAIN",
+ Twine((uint32_t)ShaderStage::Domain));
+ Builder.defineMacro("__SHADER_STAGE_COMPUTE",
+ Twine((uint32_t)ShaderStage::Compute));
+ Builder.defineMacro("__SHADER_STAGE_AMPLIFICATION",
+ Twine((uint32_t)ShaderStage::Amplification));
+ Builder.defineMacro("__SHADER_STAGE_MESH",
+ Twine((uint32_t)ShaderStage::Mesh));
+ Builder.defineMacro("__SHADER_STAGE_LIBRARY",
+ Twine((uint32_t)ShaderStage::Library));
+ // The current shader stage itself
+ uint32_t StageInteger = (uint32_t)TI.getTriple().getEnvironment() -
+ (uint32_t)llvm::Triple::Pixel;
+
+ Builder.defineMacro("__SHADER_TARGET_STAGE", Twine(StageInteger));
+ // Add target versions
+ if (TI.getTriple().getOS() == llvm::Triple::ShaderModel) {
+ VersionTuple Version = TI.getTriple().getOSVersion();
+ Builder.defineMacro("__SHADER_TARGET_MAJOR", Twine(Version.getMajor()));
+ unsigned Minor = Version.getMinor().value_or(0);
+ Builder.defineMacro("__SHADER_TARGET_MINOR", Twine(Minor));
+ }
+ return;
+ }
// C++ [cpp.predefined]p1:
// The following macro names shall be defined by the implementation:
@@ -538,6 +582,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
Builder.defineMacro("__HIP_MEMORY_SCOPE_SYSTEM", "5");
if (LangOpts.CUDAIsDevice)
Builder.defineMacro("__HIP_DEVICE_COMPILE__");
+ if (LangOpts.GPUDefaultStream ==
+ LangOptions::GPUDefaultStreamKind::PerThread)
+ Builder.defineMacro("HIP_API_PER_THREAD_DEFAULT_STREAM");
}
}
@@ -558,10 +605,11 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
Builder.defineMacro("__cpp_unicode_literals", "200710L");
Builder.defineMacro("__cpp_user_defined_literals", "200809L");
Builder.defineMacro("__cpp_lambdas", "200907L");
- Builder.defineMacro("__cpp_constexpr",
- LangOpts.CPlusPlus20 ? "201907L" :
- LangOpts.CPlusPlus17 ? "201603L" :
- LangOpts.CPlusPlus14 ? "201304L" : "200704");
+ Builder.defineMacro("__cpp_constexpr", LangOpts.CPlusPlus2b ? "202110L"
+ : LangOpts.CPlusPlus20 ? "201907L"
+ : LangOpts.CPlusPlus17 ? "201603L"
+ : LangOpts.CPlusPlus14 ? "201304L"
+ : "200704");
Builder.defineMacro("__cpp_constexpr_in_decltype", "201711L");
Builder.defineMacro("__cpp_range_based_for",
LangOpts.CPlusPlus17 ? "201603L" : "200907");
@@ -642,6 +690,7 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
Builder.defineMacro("__cpp_implicit_move", "202011L");
Builder.defineMacro("__cpp_size_t_suffix", "202011L");
Builder.defineMacro("__cpp_if_consteval", "202106L");
+ Builder.defineMacro("__cpp_multidimensional_subscript", "202110L");
}
if (LangOpts.Char8)
Builder.defineMacro("__cpp_char8_t", "201811L");
@@ -773,19 +822,20 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
if (version >= VersionTuple(2, 0))
Builder.defineMacro("__OBJC_GNUSTEP_RUNTIME_ABI__", "20");
else
- Builder.defineMacro("__OBJC_GNUSTEP_RUNTIME_ABI__",
- "1" + Twine(std::min(8U, version.getMinor().getValueOr(0))));
+ Builder.defineMacro(
+ "__OBJC_GNUSTEP_RUNTIME_ABI__",
+ "1" + Twine(std::min(8U, version.getMinor().value_or(0))));
}
if (LangOpts.ObjCRuntime.getKind() == ObjCRuntime::ObjFW) {
VersionTuple tuple = LangOpts.ObjCRuntime.getVersion();
unsigned minor = 0;
- if (tuple.getMinor().hasValue())
+ if (tuple.getMinor())
minor = tuple.getMinor().getValue();
unsigned subminor = 0;
- if (tuple.getSubminor().hasValue())
+ if (tuple.getSubminor())
subminor = tuple.getSubminor().getValue();
Builder.defineMacro("__OBJFW_RUNTIME_ABI__",
@@ -1135,7 +1185,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
}
// Macros to control C99 numerics and <float.h>
- Builder.defineMacro("__FLT_EVAL_METHOD__", Twine(TI.getFloatEvalMethod()));
Builder.defineMacro("__FLT_RADIX__", "2");
Builder.defineMacro("__DECIMAL_DIG__", "__LDBL_DECIMAL_DIG__");
@@ -1205,6 +1254,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
case 52:
Builder.defineMacro("_OPENMP", "202111");
break;
+ case 50:
default:
// Default version is OpenMP 5.0
Builder.defineMacro("_OPENMP", "201811");
@@ -1343,5 +1393,5 @@ void clang::InitializePreprocessor(
InitOpts.PrecompiledPreambleBytes.second);
// Copy PredefinedBuffer into the Preprocessor.
- PP.setPredefines(Predefines.str());
+ PP.setPredefines(std::move(PredefineBuffer));
}