1// RUN: %clang_cc1 -verify %s -cl-std=CL1.2 2// RUN: %clang_cc1 -verify %s -pedantic -DPEDANTIC -cl-std=CL1.2 3// RUN: %clang_cc1 -verify %s -cl-std=CLC++ 4// RUN: %clang_cc1 -verify %s -pedantic -cl-std=CLC++ 5 6 7#define NO_VAR_FUNC(...) 5 8#define VAR_FUNC(...) func(__VA_ARGS__); 9#define VAR_PRINTF(str, ...) printf(str, __VA_ARGS__); 10#ifdef PEDANTIC 11// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} 12// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} 13// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} 14#endif 15 16int printf(__constant const char *st, ...); 17 18void foo() { 19 NO_VAR_FUNC(1, 2, 3); 20 VAR_FUNC(1, 2, 3); 21#if !__OPENCL_CPP_VERSION__ 22// expected-error@-2{{implicit declaration of function 'func' is invalid in OpenCL}} 23#else 24// expected-error@-4{{use of undeclared identifier 'func'}} 25#endif 26 VAR_PRINTF("%i", 1); 27} 28