1 // RUN
: %clang_cc1 %s -verify -pedantic -fsyntax-only -triple spir-unknown-unknown
4 void vararg_f
(int, ...
); // expected-error {{invalid prototype, variadic arguments are not allowed in OpenCL}}
5 void __vararg_f
(int, ...
);
6 typedef void
(*vararg_fptr_t
)(int, ...
); // expected-error {{invalid prototype, variadic arguments are not allowed in OpenCL}}
7 // expected-error
@-
1{{pointers to functions are not allowed
}}
8 int printf
(__constant const char
*st
, ...
); // expected-error {{invalid prototype, variadic arguments are not allowed in OpenCL}}
10 // Struct type with function pointer field
13 void
(*f
)(struct s
*self
, int
*i
); // expected-error{{pointers to functions are not allowed}}
19 // Expect no diagnostics for an empty parameter list.
24 // declaring a function pointer is an error
25 void
(*fptr
)(int); // expected-error{{pointers to functions are not allowed}}
27 // taking the address of a function is an error
28 foo
((void*)foo
); // expected-error{{taking address of function is not allowed}}
29 foo
(&foo
); // expected-error{{taking address of function is not allowed}}
31 // initializing an array with the address of functions is an error
32 void
* vptrarr
[2] = {foo, &foo}; // expected-error{{taking address of function is not allowed}} expected-error{{taking address of function is not allowed}}
34 // just calling a function is correct