attr-noreturn.c revision 8662587fa75d3fb04f873e265841c9314c7f5523
1d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc -verify -fsyntax-only %s
2d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar
3d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarstatic void (*fp0)(void) __attribute__((noreturn));
4d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar
5d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarstatic void __attribute__((noreturn)) f0(void) {
6d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar  fatal();
7d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar}
8d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar
9d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar// On K&R
10d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarint f1() __attribute__((noreturn));
11d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar
12d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarint g0 __attribute__((noreturn)); // expected-warning {{'noreturn' attribute only applies to function types}}
13d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar
14d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarint f2() __attribute__((noreturn(1, 2))); // expected-error {{attribute requires 0 argument(s)}}
15f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump
16f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stumpvoid f3() __attribute__((noreturn));
17f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stumpvoid f3() {
18f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump  return;  // expected-error {{function 'f3' declared 'noreturn' should not return}}
19f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump}
20f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump
218662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner#pragma clang diagnostic warning "-Winvalid-noreturn"
228662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner
238662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() __attribute__((noreturn));
248662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() {
258662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner  return;  // expected-warning {{function 'f4' declared 'noreturn' should not return}}
268662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner}
278662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner
28