mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 08:06:06 +00:00

Files compiled with C++ for OpenCL mode can now have a distinct file extension - clcpp, then clang driver picks the compilation mode automatically (-x clcpp) without the use of -cl-std=clc++. Differential Revision: https://reviews.llvm.org/D96771
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}}
|
|
}
|