• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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