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