1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 void escapefunc(int *); 4 void noescapefunc(__attribute__((noescape)) int *); 5 void (*escapefuncptr)(int *); 6 void (*noescapefuncptr)(__attribute__((noescape)) int *); 7 8 void func_ne(__attribute__((noescape)) int *, int *); 9 void func_en(int *, __attribute__((noescape)) int *); 10 11 void (*funcptr_ee)(int *, int *); 12 void (*funcptr_nn)(__attribute__((noescape)) int *, __attribute__((noescape)) int *); 13 test0(int c)14void test0(int c) { 15 escapefuncptr = &escapefunc; 16 escapefuncptr = &noescapefunc; 17 noescapefuncptr = &escapefunc; // expected-warning {{incompatible function pointer types assigning to 'void (*)(__attribute__((noescape)) int *)' from 'void (*)(int *)'}} 18 noescapefuncptr = &noescapefunc; 19 20 escapefuncptr = c ? &escapefunc : &noescapefunc; 21 noescapefuncptr = c ? &escapefunc : &noescapefunc; // expected-warning {{incompatible function pointer types assigning to 'void (*)(__attribute__((noescape)) int *)' from 'void (*)(int *)'}} 22 23 funcptr_ee = c ? &func_ne : &func_en; 24 funcptr_nn = c ? &func_ne : &func_en; // expected-warning {{incompatible function pointer types assigning to 'void (*)(__attribute__((noescape)) int *, __attribute__((noescape)) int *)' from 'void (*)(int *, int *)'}} 25 } 26