// RUN: %clang_cc1 -verify %s -cl-std=CL1.2 // RUN: %clang_cc1 -verify %s -pedantic -DPEDANTIC -cl-std=CL1.2 // RUN: %clang_cc1 -verify %s -cl-std=CLC++ // RUN: %clang_cc1 -verify %s -pedantic -cl-std=CLC++ #define NO_VAR_FUNC(...) 5 #define VAR_FUNC(...) func(__VA_ARGS__); #define VAR_PRINTF(str, ...) printf(str, __VA_ARGS__); #ifdef PEDANTIC // expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} // expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} // expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} #endif int printf(__constant const char *st, ...); void foo() { NO_VAR_FUNC(1, 2, 3); VAR_FUNC(1, 2, 3); #if !__OPENCL_CPP_VERSION__ // expected-error@-2{{implicit declaration of function 'func' is invalid in OpenCL}} #else // expected-error@-4{{use of undeclared identifier 'func'}} #endif VAR_PRINTF("%i", 1); }