mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 17:06:07 +00:00

In C++ and C2x, we would avoid calling ImplicitlyDefineFunction at all, but in OpenCL mode we would still call the function and have it produce an error diagnostic. Instead, we now have a helper function to determine when implicit function definitions are allowed and we use that to determine whether to call ImplicitlyDefineFunction so that the behavior is more consistent across language modes. This changes the diagnostic behavior from telling the users that an implicit function declaration is not allowed in OpenCL to reporting use of an unknown identifier and going through typo correction, as done in C++ and C2x.
20 lines
1.1 KiB
Common Lisp
20 lines
1.1 KiB
Common Lisp
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -finclude-default-header -fdeclare-opencl-builtins -verify -cl-std=CL1.2 -emit-llvm -o - -cl-ext=-all
|
|
|
|
void test_negative() {
|
|
uchar4 ua8, ub8;
|
|
char4 sa8, sb8;
|
|
ushort2 ua16, ub16;
|
|
short2 sa16, sb16;
|
|
uint ur;
|
|
int sr;
|
|
ur = arm_dot(ua8, ub8); // expected-error{{use of undeclared identifier 'arm_dot'}}
|
|
sr = arm_dot(sa8, sb8); // expected-error{{use of undeclared identifier 'arm_dot'}}
|
|
ur = arm_dot_acc(ua8, ub8, ur); // expected-error{{use of undeclared identifier 'arm_dot_acc'}}
|
|
sr = arm_dot_acc(sa8, sb8, sr); // expected-error{{use of undeclared identifier 'arm_dot_acc'}}
|
|
ur = arm_dot_acc(ua16, ub16, ur); // expected-error{{use of undeclared identifier 'arm_dot_acc'}}
|
|
sr = arm_dot_acc(sa16, sb16, sr); // expected-error{{use of undeclared identifier 'arm_dot_acc'}}
|
|
ur = arm_dot_acc_sat(ua8, ub8, ur); // expected-error{{use of undeclared identifier 'arm_dot_acc_sat'}}
|
|
sr = arm_dot_acc_sat(sa8, sb8, sr); // expected-error{{use of undeclared identifier 'arm_dot_acc_sat'}}
|
|
}
|
|
|