attr-noreturn.cpp revision 43c79c2b07abc7ba6d9f243b84ee6539de4d2652
1// RUN: clang-cc -fsyntax-only -verify %s 2 3// PR5620 4void f0() __attribute__((__noreturn__)); 5void f1(void (*)()); 6void f2() { f1(f0); } 7 8// Taking the address of a noreturn function 9void test_f0a() { 10 void (*fp)() = f0; 11 void (*fp1)() __attribute__((noreturn)) = f0; 12} 13 14// Taking the address of an overloaded noreturn function 15void f0(int) __attribute__((__noreturn__)); 16 17void test_f0b() { 18 void (*fp)() = f0; 19 void (*fp1)() __attribute__((noreturn)) = f0; 20} 21 22// No-returned function pointers 23typedef void (* noreturn_fp)() __attribute__((noreturn)); 24 25void f3(noreturn_fp); // expected-note{{candidate function}} 26 27void test_f3() { 28 f3(f0); // okay 29 f3(f2); // expected-error{{no matching function for call}} 30} 31