forked from OSchip/llvm-project
47 lines
1.4 KiB
Plaintext
47 lines
1.4 KiB
Plaintext
|
//RUN: %clang_cc1 %s -verify -fsyntax-only -triple spir
|
||
|
//RUN: %clang_cc1 %s -verify -fsyntax-only -DFPTREXT -triple spir
|
||
|
|
||
|
#ifdef FPTREXT
|
||
|
#pragma OPENCL EXTENSION __cl_clang_function_pointers : enable
|
||
|
#endif // FPTREXT
|
||
|
|
||
|
// References to functions are not allowed.
|
||
|
struct myclass {
|
||
|
//FIXME: Here we provide incorrect diagnostic.
|
||
|
void (&mem)(); //expected-error{{reference to function type cannot have '__generic' qualifier}}
|
||
|
};
|
||
|
|
||
|
void (&glob)();
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{references to functions are not allowed}}
|
||
|
#else
|
||
|
//expected-error@-4{{declaration of reference variable 'glob' requires an initializer}}
|
||
|
#endif // FPTREXT
|
||
|
|
||
|
using ref2fct_t = void (&)();
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{references to functions are not allowed}}
|
||
|
#endif // FPTREXT
|
||
|
typedef void (&ref2fct_t)();
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{references to functions are not allowed}}
|
||
|
#endif // FPTREXT
|
||
|
|
||
|
void test(void (&par)()) {
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{references to functions are not allowed}}
|
||
|
#endif // FPTREXT
|
||
|
void (&loc)();
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{references to functions are not allowed}}
|
||
|
#else
|
||
|
//expected-error@-4{{declaration of reference variable 'loc' requires an initializer}}
|
||
|
#endif // FPTREXT
|
||
|
|
||
|
void (*&ref2fptr)();
|
||
|
#ifndef FPTREXT
|
||
|
//expected-error@-2{{pointers to functions are not allowed}}
|
||
|
#endif // FPTREXT
|
||
|
//expected-error@-4{{declaration of reference variable 'ref2fptr' requires an initializer}}
|
||
|
}
|