Compiler projects using llvm
//RUN: %clang_cc1 %s -triple spir -verify -fsyntax-only
//RUN: %clang_cc1 %s -triple spir -verify -fsyntax-only -DFUNCPTREXT

#ifdef FUNCPTREXT
#pragma OPENCL EXTENSION __cl_clang_function_pointers : enable
//expected-no-diagnostics
#endif

// Check that pointer to member functions are diagnosed
// unless specific clang extension is enabled.
struct C {
  void f(int n);
};

typedef void (C::*p_t)(int);
#ifndef FUNCPTREXT
//expected-error@-2{{pointers to functions are not allowed}}
#endif

void test() {
  void (C::*p)(int);
#ifndef FUNCPTREXT
//expected-error@-2{{pointers to functions are not allowed}}
#endif
}