attr-noreturn.c revision 8662587fa75d3fb04f873e265841c9314c7f5523
1// RUN: clang-cc -verify -fsyntax-only %s 2 3static void (*fp0)(void) __attribute__((noreturn)); 4 5static void __attribute__((noreturn)) f0(void) { 6 fatal(); 7} 8 9// On K&R 10int f1() __attribute__((noreturn)); 11 12int g0 __attribute__((noreturn)); // expected-warning {{'noreturn' attribute only applies to function types}} 13 14int f2() __attribute__((noreturn(1, 2))); // expected-error {{attribute requires 0 argument(s)}} 15 16void f3() __attribute__((noreturn)); 17void f3() { 18 return; // expected-error {{function 'f3' declared 'noreturn' should not return}} 19} 20 21#pragma clang diagnostic warning "-Winvalid-noreturn" 22 23void f4() __attribute__((noreturn)); 24void f4() { 25 return; // expected-warning {{function 'f4' declared 'noreturn' should not return}} 26} 27 28