mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-03-07 10:00:27 +00:00
[OpenCL] Support -fdeclare-opencl-builtins in C++ mode
Support for C++ mode was accidentally lacking due to not checking the OpenCLCPlusPlus LangOpts version. Differential Revision: https://reviews.llvm.org/D69233
This commit is contained in:
parent
e57f8ad914
commit
0aed36d261
@ -765,10 +765,13 @@ static void InsertOCLBuiltinDeclarationsFromTable(Sema &S, LookupResult &LR,
|
||||
ASTContext &Context = S.Context;
|
||||
|
||||
// Ignore this BIF if its version does not match the language options.
|
||||
if (Context.getLangOpts().OpenCLVersion < OpenCLBuiltin.MinVersion)
|
||||
unsigned OpenCLVersion = Context.getLangOpts().OpenCLVersion;
|
||||
if (Context.getLangOpts().OpenCLCPlusPlus)
|
||||
OpenCLVersion = 200;
|
||||
if (OpenCLVersion < OpenCLBuiltin.MinVersion)
|
||||
continue;
|
||||
if ((OpenCLBuiltin.MaxVersion != 0) &&
|
||||
(Context.getLangOpts().OpenCLVersion >= OpenCLBuiltin.MaxVersion))
|
||||
(OpenCLVersion >= OpenCLBuiltin.MaxVersion))
|
||||
continue;
|
||||
|
||||
SmallVector<QualType, 1> RetTypes;
|
||||
|
@ -4,8 +4,10 @@
|
||||
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header
|
||||
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -DNO_HEADER
|
||||
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -finclude-default-header
|
||||
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CLC++ -fdeclare-opencl-builtins -DNO_HEADER
|
||||
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CLC++ -fdeclare-opencl-builtins -finclude-default-header
|
||||
|
||||
#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
|
||||
#if defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= CL_VERSION_2_0
|
||||
// expected-no-diagnostics
|
||||
#endif
|
||||
|
||||
@ -97,7 +99,7 @@ kernel void basic_image_writeonly(write_only image1d_buffer_t image_write_only_i
|
||||
|
||||
kernel void basic_subgroup(global uint *out) {
|
||||
out[0] = get_sub_group_size();
|
||||
#if __OPENCL_C_VERSION__ < CL_VERSION_2_0
|
||||
#if !defined(__OPENCL_CPP_VERSION__) && __OPENCL_C_VERSION__ < CL_VERSION_2_0
|
||||
// expected-error@-2{{implicit declaration of function 'get_sub_group_size' is invalid in OpenCL}}
|
||||
// expected-error@-3{{implicit conversion changes signedness: 'int' to 'uint' (aka 'unsigned int')}}
|
||||
#endif
|
||||
@ -130,7 +132,7 @@ kernel void basic_work_item() {
|
||||
uint ui;
|
||||
|
||||
get_enqueued_local_size(ui);
|
||||
#if __OPENCL_C_VERSION__ < CL_VERSION_2_0
|
||||
#if !defined(__OPENCL_CPP_VERSION__) && __OPENCL_C_VERSION__ < CL_VERSION_2_0
|
||||
// expected-error@-2{{implicit declaration of function 'get_enqueued_local_size' is invalid in OpenCL}}
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user