https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/204043
>From 1bfc4012e7835fff65ae020eaa7074347ce45a83 Mon Sep 17 00:00:00 2001 From: Wenju He <[email protected]> Date: Tue, 16 Jun 2026 03:20:40 +0200 Subject: [PATCH 1/2] [Clang][OpenCL] Add OpenCL 3.1 language version OpenCL 3.1 was recently added to spec in https://github.com/KhronosGroup/OpenCL-Docs/commit/9fff1a87a975 This PR adds version 3.1 to clang support, including frontend flag `-std=cl3.1` (and its alias `-std=CL3.1`). Add a new OpenCLVersions.def to share OpenCL versions between OpenCLOptions.h and ClangOpenCLBuiltinEmitter.cpp. Updated release note. A few extensions are promoted to 3.1 core. They'll be handled in follow-up PRs. Assisted-by: Claude Sonnet 4.6 --- clang/docs/ReleaseNotes.rst | 4 +++ clang/include/clang/Basic/LangStandards.def | 4 +++ clang/include/clang/Basic/OpenCLOptions.h | 26 +++++++---------- clang/include/clang/Basic/OpenCLVersions.def | 29 +++++++++++++++++++ clang/lib/Basic/LangOptions.cpp | 2 ++ clang/lib/Basic/TargetInfo.cpp | 2 +- clang/lib/Frontend/CompilerInvocation.cpp | 1 + clang/lib/Frontend/InitPreprocessor.cpp | 4 +++ clang/test/Driver/opencl.cl | 2 ++ clang/test/Driver/unknown-std.cl | 1 + clang/test/Preprocessor/predefined-macros.c | 15 ++++++++++ .../TableGen/ClangOpenCLBuiltinEmitter.cpp | 7 +++-- 12 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 clang/include/clang/Basic/OpenCLVersions.def diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 7828135a6edbc..eda1327fc0eea 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -822,6 +822,10 @@ Miscellaneous Clang Crashes Fixed OpenACC Specific Changes ------------------------ +OpenCL Specific Changes +----------------------- +- Added support for OpenCL C 3.1 language version (``-cl-std=CL3.1``). + Target Specific Changes ----------------------- diff --git a/clang/include/clang/Basic/LangStandards.def b/clang/include/clang/Basic/LangStandards.def index 4edc93503cdf5..809240978d013 100644 --- a/clang/include/clang/Basic/LangStandards.def +++ b/clang/include/clang/Basic/LangStandards.def @@ -209,6 +209,9 @@ LANGSTANDARD(opencl20, "cl2.0", LANGSTANDARD(opencl30, "cl3.0", OpenCL, "OpenCL 3.0", LineComment | C99 | Digraphs | HexFloat | OpenCL, std::nullopt) +LANGSTANDARD(opencl31, "cl3.1", + OpenCL, "OpenCL 3.1", + LineComment | C99 | Digraphs | HexFloat | OpenCL, std::nullopt) LANGSTANDARD(openclcpp10, "clc++1.0", OpenCL, "C++ for OpenCL 1.0", @@ -226,6 +229,7 @@ LANGSTANDARD_ALIAS_DEPR(opencl11, "CL1.1") LANGSTANDARD_ALIAS_DEPR(opencl12, "CL1.2") LANGSTANDARD_ALIAS_DEPR(opencl20, "CL2.0") LANGSTANDARD_ALIAS_DEPR(opencl30, "CL3.0") +LANGSTANDARD_ALIAS_DEPR(opencl31, "CL3.1") LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++") LANGSTANDARD_ALIAS_DEPR(openclcpp10, "CLC++1.0") LANGSTANDARD_ALIAS_DEPR(openclcpp2021, "CLC++2021") diff --git a/clang/include/clang/Basic/OpenCLOptions.h b/clang/include/clang/Basic/OpenCLOptions.h index d6cb1a210519d..6eb08a183c244 100644 --- a/clang/include/clang/Basic/OpenCLOptions.h +++ b/clang/include/clang/Basic/OpenCLOptions.h @@ -27,12 +27,12 @@ namespace { // a mask to indicate in which OpenCL version(s) extension is a core or // optional core feature. enum OpenCLVersionID : unsigned int { - OCL_C_10 = 0x1, - OCL_C_11 = 0x2, - OCL_C_12 = 0x4, - OCL_C_20 = 0x8, - OCL_C_30 = 0x10, - OCL_C_ALL = 0x1f, +#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) Enumerator = BitValue, +#include "clang/Basic/OpenCLVersions.def" + OCL_C_ALL = 0 +#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) | (Enumerator) +#include "clang/Basic/OpenCLVersions.def" + , OCL_C_11P = OCL_C_ALL ^ OCL_C_10, // OpenCL C 1.1+ OCL_C_12P = OCL_C_ALL ^ (OCL_C_10 | OCL_C_11), // OpenCL C 1.2+ }; @@ -41,16 +41,10 @@ static inline OpenCLVersionID encodeOpenCLVersion(unsigned OpenCLVersion) { switch (OpenCLVersion) { default: llvm_unreachable("Unknown OpenCL version code"); - case 100: - return OCL_C_10; - case 110: - return OCL_C_11; - case 120: - return OCL_C_12; - case 200: - return OCL_C_20; - case 300: - return OCL_C_30; +#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) \ + case VersionCode: \ + return Enumerator; +#include "clang/Basic/OpenCLVersions.def" } } diff --git a/clang/include/clang/Basic/OpenCLVersions.def b/clang/include/clang/Basic/OpenCLVersions.def new file mode 100644 index 0000000000000..9952ce8c92d33 --- /dev/null +++ b/clang/include/clang/Basic/OpenCLVersions.def @@ -0,0 +1,29 @@ +//===--- OpenCLVersions.def - OpenCL version list ---------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines the list of supported OpenCL C versions. +// +// OPENCL_VERSION(VersionCode, Enumerator, BitValue) +// +// VersionCode - integer representation (e.g., 100 for OpenCL C 1.0). +// Enumerator - OpenCLVersionID enum name. +// BitValue - bitmask value for OpenCLVersionID. +// + +#ifndef OPENCL_VERSION +#error "OPENCL_VERSION macro must be defined before including this file" +#endif + +OPENCL_VERSION(100, OCL_C_10, 0x01) +OPENCL_VERSION(110, OCL_C_11, 0x02) +OPENCL_VERSION(120, OCL_C_12, 0x04) +OPENCL_VERSION(200, OCL_C_20, 0x08) +OPENCL_VERSION(300, OCL_C_30, 0x10) +OPENCL_VERSION(310, OCL_C_31, 0x20) + +#undef OPENCL_VERSION diff --git a/clang/lib/Basic/LangOptions.cpp b/clang/lib/Basic/LangOptions.cpp index 7e75bf1221eb7..7e0ee665d4493 100644 --- a/clang/lib/Basic/LangOptions.cpp +++ b/clang/lib/Basic/LangOptions.cpp @@ -153,6 +153,8 @@ void LangOptions::setLangDefaults(LangOptions &Opts, Language Lang, Opts.OpenCLVersion = 200; else if (LangStd == LangStandard::lang_opencl30) Opts.OpenCLVersion = 300; + else if (LangStd == LangStandard::lang_opencl31) + Opts.OpenCLVersion = 310; else if (LangStd == LangStandard::lang_openclcpp10) Opts.OpenCLCPlusPlusVersion = 100; else if (LangStd == LangStandard::lang_openclcpp2021) diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 854d23cadaea2..9a25384347073 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -491,7 +491,7 @@ void TargetInfo::adjust(DiagnosticsEngine &Diags, LangOptions &Opts, // for OpenCL C 2.0 but with no access to target capabilities. Target // should be immutable once created and thus these language options need // to be defined only once. - if (Opts.getOpenCLCompatibleVersion() == 300) { + if (Opts.getOpenCLCompatibleVersion() >= 300) { const auto &OpenCLFeaturesMap = getSupportedOpenCLOpts(); Opts.OpenCLGenericAddressSpace = hasFeatureEnabled( OpenCLFeaturesMap, "__opencl_c_generic_address_space"); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index c564748ddabc1..d2847739e3143 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -4099,6 +4099,7 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, .Cases({"cl1.2", "CL1.2"}, LangStandard::lang_opencl12) .Cases({"cl2.0", "CL2.0"}, LangStandard::lang_opencl20) .Cases({"cl3.0", "CL3.0"}, LangStandard::lang_opencl30) + .Cases({"cl3.1", "CL3.1"}, LangStandard::lang_opencl31) .Cases({"clc++", "CLC++"}, LangStandard::lang_openclcpp10) .Cases({"clc++1.0", "CLC++1.0"}, LangStandard::lang_openclcpp10) .Cases({"clc++2021", "CLC++2021"}, LangStandard::lang_openclcpp2021) diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 3f0468a938149..ec009211ec6de 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -545,6 +545,9 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, case 300: Builder.defineMacro("__OPENCL_C_VERSION__", "300"); break; + case 310: + Builder.defineMacro("__OPENCL_C_VERSION__", "310"); + break; default: llvm_unreachable("Unsupported OpenCL version"); } @@ -554,6 +557,7 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("CL_VERSION_1_2", "120"); Builder.defineMacro("CL_VERSION_2_0", "200"); Builder.defineMacro("CL_VERSION_3_0", "300"); + Builder.defineMacro("CL_VERSION_3_1", "310"); if (TI.isLittleEndian()) Builder.defineMacro("__ENDIAN_LITTLE__"); diff --git a/clang/test/Driver/opencl.cl b/clang/test/Driver/opencl.cl index 5b2a1033de081..ba941d5f48feb 100644 --- a/clang/test/Driver/opencl.cl +++ b/clang/test/Driver/opencl.cl @@ -4,6 +4,7 @@ // RUN: %clang -S -### -cl-std=CL1.2 %s 2>&1 | FileCheck --check-prefix=CHECK-CL12 %s // RUN: %clang -S -### -cl-std=CL2.0 %s 2>&1 | FileCheck --check-prefix=CHECK-CL20 %s // RUN: %clang -S -### -cl-std=CL3.0 %s 2>&1 | FileCheck --check-prefix=CHECK-CL30 %s +// RUN: %clang -S -### -cl-std=CL3.1 %s 2>&1 | FileCheck --check-prefix=CHECK-CL31 %s // RUN: %clang -S -### -cl-std=clc++ %s 2>&1 | FileCheck --check-prefix=CHECK-CLCPP %s // RUN: %clang -S -### -cl-opt-disable %s 2>&1 | FileCheck --check-prefix=CHECK-OPT-DISABLE %s // RUN: %clang -S -### -cl-strict-aliasing %s 2>&1 | FileCheck --check-prefix=CHECK-STRICT-ALIASING %s @@ -31,6 +32,7 @@ // CHECK-CL12: "-cc1" {{.*}} "-cl-std=CL1.2" // CHECK-CL20: "-cc1" {{.*}} "-cl-std=CL2.0" // CHECK-CL30: "-cc1" {{.*}} "-cl-std=CL3.0" +// CHECK-CL31: "-cc1" {{.*}} "-cl-std=CL3.1" // CHECK-CLCPP: "-cc1" {{.*}} "-cl-std=clc++" // CHECK-OPT-DISABLE: "-cc1" {{.*}} "-cl-opt-disable" // CHECK-STRICT-ALIASING: "-cc1" {{.*}} "-cl-strict-aliasing" diff --git a/clang/test/Driver/unknown-std.cl b/clang/test/Driver/unknown-std.cl index 3570515ad076d..a6d065d9a7d44 100644 --- a/clang/test/Driver/unknown-std.cl +++ b/clang/test/Driver/unknown-std.cl @@ -11,6 +11,7 @@ // CHECK-NEXT: note: use 'cl1.2' for 'OpenCL 1.2' standard // CHECK-NEXT: note: use 'cl2.0' for 'OpenCL 2.0' standard // CHECK-NEXT: note: use 'cl3.0' for 'OpenCL 3.0' standard +// CHECK-NEXT: note: use 'cl3.1' for 'OpenCL 3.1' standard // CHECK-NEXT: note: use 'clc++1.0' or 'clc++' for 'C++ for OpenCL 1.0' standard // CHECK-NEXT: note: use 'clc++2021' for 'C++ for OpenCL 2021' standard diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c index ab85cfc00b42a..2dd4b78238a7b 100644 --- a/clang/test/Preprocessor/predefined-macros.c +++ b/clang/test/Preprocessor/predefined-macros.c @@ -145,6 +145,8 @@ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL20 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL3.0 \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL30 +// RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=CL3.1 \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-CL31 // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-fast-relaxed-math \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-FRM // RUN: %clang_cc1 %s -E -dM -o - -x cl -cl-std=clc++ \ @@ -158,6 +160,7 @@ // CHECK-CL10: #define CL_VERSION_1_2 120 // CHECK-CL10: #define CL_VERSION_2_0 200 // CHECK-CL10: #define CL_VERSION_3_0 300 +// CHECK-CL10: #define CL_VERSION_3_1 310 // CHECK-CL10: #define __OPENCL_C_VERSION__ 100 // CHECK-CL10-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-CL11: #define CL_VERSION_1_0 100 @@ -165,6 +168,7 @@ // CHECK-CL11: #define CL_VERSION_1_2 120 // CHECK-CL11: #define CL_VERSION_2_0 200 // CHECK-CL11: #define CL_VERSION_3_0 300 +// CHECK-CL11: #define CL_VERSION_3_1 310 // CHECK-CL11: #define __OPENCL_C_VERSION__ 110 // CHECK-CL11-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-CL12: #define CL_VERSION_1_0 100 @@ -172,6 +176,7 @@ // CHECK-CL12: #define CL_VERSION_1_2 120 // CHECK-CL12: #define CL_VERSION_2_0 200 // CHECK-CL12: #define CL_VERSION_3_0 300 +// CHECK-CL12: #define CL_VERSION_3_1 310 // CHECK-CL12: #define __OPENCL_C_VERSION__ 120 // CHECK-CL12-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-CL20: #define CL_VERSION_1_0 100 @@ -179,6 +184,7 @@ // CHECK-CL20: #define CL_VERSION_1_2 120 // CHECK-CL20: #define CL_VERSION_2_0 200 // CHECK-CL20: #define CL_VERSION_3_0 300 +// CHECK-CL20: #define CL_VERSION_3_1 310 // CHECK-CL20: #define __OPENCL_C_VERSION__ 200 // CHECK-CL20-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-CL30: #define CL_VERSION_1_0 100 @@ -186,8 +192,17 @@ // CHECK-CL30: #define CL_VERSION_1_2 120 // CHECK-CL30: #define CL_VERSION_2_0 200 // CHECK-CL30: #define CL_VERSION_3_0 300 +// CHECK-CL30: #define CL_VERSION_3_1 310 // CHECK-CL30: #define __OPENCL_C_VERSION__ 300 // CHECK-CL30-NOT: #define __FAST_RELAXED_MATH__ 1 +// CHECK-CL31: #define CL_VERSION_1_0 100 +// CHECK-CL31: #define CL_VERSION_1_1 110 +// CHECK-CL31: #define CL_VERSION_1_2 120 +// CHECK-CL31: #define CL_VERSION_2_0 200 +// CHECK-CL31: #define CL_VERSION_3_0 300 +// CHECK-CL31: #define CL_VERSION_3_1 310 +// CHECK-CL31: #define __OPENCL_C_VERSION__ 310 +// CHECK-CL31-NOT: #define __FAST_RELAXED_MATH__ 1 // CHECK-FRM: #define __FAST_RELAXED_MATH__ 1 // CHECK-CLCPP10: #define __CL_CPP_VERSION_1_0__ 100 // CHECK-CLCPP10: #define __CL_CPP_VERSION_2021__ 202100 diff --git a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp index 720afea8b0965..d888e6e40cfa1 100644 --- a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp +++ b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp @@ -593,8 +593,6 @@ void BuiltinNameEmitter::EmitSignatureTable() { // Encode a range MinVersion..MaxVersion into a single bit mask that can be // checked against LangOpts using isOpenCLVersionContainedInMask(). -// This must be kept in sync with OpenCLVersionID in OpenCLOptions.h. -// (Including OpenCLOptions.h here would be a layering violation.) static unsigned short EncodeVersions(unsigned int MinVersion, unsigned int MaxVersion) { unsigned short Encoded = 0; @@ -604,7 +602,10 @@ static unsigned short EncodeVersions(unsigned int MinVersion, MaxVersion = UINT_MAX; } - unsigned VersionIDs[] = {100, 110, 120, 200, 300}; + unsigned VersionIDs[] = { +#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) VersionCode, +#include "clang/Basic/OpenCLVersions.def" + }; for (unsigned I = 0; I < std::size(VersionIDs); I++) { if (VersionIDs[I] >= MinVersion && VersionIDs[I] < MaxVersion) { Encoded |= 1 << I; >From 0d60499fecaf279f9293b7886935cbb4b37693ba Mon Sep 17 00:00:00 2001 From: Wenju He <[email protected]> Date: Tue, 16 Jun 2026 12:00:25 +0200 Subject: [PATCH 2/2] delete OpenCLVersions.def --- clang/include/clang/Basic/OpenCLOptions.h | 29 ++++++++++++------- clang/include/clang/Basic/OpenCLVersions.def | 29 ------------------- .../TableGen/ClangOpenCLBuiltinEmitter.cpp | 7 ++--- 3 files changed, 22 insertions(+), 43 deletions(-) delete mode 100644 clang/include/clang/Basic/OpenCLVersions.def diff --git a/clang/include/clang/Basic/OpenCLOptions.h b/clang/include/clang/Basic/OpenCLOptions.h index 6eb08a183c244..ec661bba94adb 100644 --- a/clang/include/clang/Basic/OpenCLOptions.h +++ b/clang/include/clang/Basic/OpenCLOptions.h @@ -27,12 +27,13 @@ namespace { // a mask to indicate in which OpenCL version(s) extension is a core or // optional core feature. enum OpenCLVersionID : unsigned int { -#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) Enumerator = BitValue, -#include "clang/Basic/OpenCLVersions.def" - OCL_C_ALL = 0 -#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) | (Enumerator) -#include "clang/Basic/OpenCLVersions.def" - , + OCL_C_10 = 0x1, + OCL_C_11 = 0x2, + OCL_C_12 = 0x4, + OCL_C_20 = 0x8, + OCL_C_30 = 0x10, + OCL_C_31 = 0x20, + OCL_C_ALL = 0x3f, OCL_C_11P = OCL_C_ALL ^ OCL_C_10, // OpenCL C 1.1+ OCL_C_12P = OCL_C_ALL ^ (OCL_C_10 | OCL_C_11), // OpenCL C 1.2+ }; @@ -41,10 +42,18 @@ static inline OpenCLVersionID encodeOpenCLVersion(unsigned OpenCLVersion) { switch (OpenCLVersion) { default: llvm_unreachable("Unknown OpenCL version code"); -#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) \ - case VersionCode: \ - return Enumerator; -#include "clang/Basic/OpenCLVersions.def" + case 100: + return OCL_C_10; + case 110: + return OCL_C_11; + case 120: + return OCL_C_12; + case 200: + return OCL_C_20; + case 300: + return OCL_C_30; + case 310: + return OCL_C_31; } } diff --git a/clang/include/clang/Basic/OpenCLVersions.def b/clang/include/clang/Basic/OpenCLVersions.def deleted file mode 100644 index 9952ce8c92d33..0000000000000 --- a/clang/include/clang/Basic/OpenCLVersions.def +++ /dev/null @@ -1,29 +0,0 @@ -//===--- OpenCLVersions.def - OpenCL version list ---------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file defines the list of supported OpenCL C versions. -// -// OPENCL_VERSION(VersionCode, Enumerator, BitValue) -// -// VersionCode - integer representation (e.g., 100 for OpenCL C 1.0). -// Enumerator - OpenCLVersionID enum name. -// BitValue - bitmask value for OpenCLVersionID. -// - -#ifndef OPENCL_VERSION -#error "OPENCL_VERSION macro must be defined before including this file" -#endif - -OPENCL_VERSION(100, OCL_C_10, 0x01) -OPENCL_VERSION(110, OCL_C_11, 0x02) -OPENCL_VERSION(120, OCL_C_12, 0x04) -OPENCL_VERSION(200, OCL_C_20, 0x08) -OPENCL_VERSION(300, OCL_C_30, 0x10) -OPENCL_VERSION(310, OCL_C_31, 0x20) - -#undef OPENCL_VERSION diff --git a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp index d888e6e40cfa1..a666dd1ed795d 100644 --- a/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp +++ b/clang/utils/TableGen/ClangOpenCLBuiltinEmitter.cpp @@ -593,6 +593,8 @@ void BuiltinNameEmitter::EmitSignatureTable() { // Encode a range MinVersion..MaxVersion into a single bit mask that can be // checked against LangOpts using isOpenCLVersionContainedInMask(). +// This must be kept in sync with OpenCLVersionID in OpenCLOptions.h. +// (Including OpenCLOptions.h here would be a layering violation.) static unsigned short EncodeVersions(unsigned int MinVersion, unsigned int MaxVersion) { unsigned short Encoded = 0; @@ -602,10 +604,7 @@ static unsigned short EncodeVersions(unsigned int MinVersion, MaxVersion = UINT_MAX; } - unsigned VersionIDs[] = { -#define OPENCL_VERSION(VersionCode, Enumerator, BitValue) VersionCode, -#include "clang/Basic/OpenCLVersions.def" - }; + unsigned VersionIDs[] = {100, 110, 120, 200, 300, 310}; for (unsigned I = 0; I < std::size(VersionIDs); I++) { if (VersionIDs[I] >= MinVersion && VersionIDs[I] < MaxVersion) { Encoded |= 1 << I; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
