// RUN: %clang_cc1 -fsyntax-only -verify %s // PR5620 void f0() __attribute__((__noreturn__)); void f1(void (*)()); void f2() { f1(f0); } // Taking the address of a noreturn function void test_f0a() { void (*fp)() = f0; void (*fp1)() __attribute__((noreturn)) = f0; } // Taking the address of an overloaded noreturn function void f0(int) __attribute__((__noreturn__)); void test_f0b() { void (*fp)() = f0; void (*fp1)() __attribute__((noreturn)) = f0; } // No-returned function pointers typedef void (* noreturn_fp)() __attribute__((noreturn)); void f3(noreturn_fp); // expected-note{{candidate function}} void test_f3() { f3(f0); // okay f3(f2); // expected-error{{no matching function for call}} } class xpto { int blah() __attribute__((noreturn)); }; int xpto::blah() { return 3; // expected-warning {{function 'blah' declared 'noreturn' should not return}} }