attr-noreturn.c revision 9dc9c376a9f3e0c72f33e27075caa0647dadb350
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(); 729813c3509a0229947e35897a9a145c4fb3bc147Mike Stump} // expected-warning {{function declared 'noreturn' should not return}} 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() { 189dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor return; // expected-warning {{function 'f3' declared 'noreturn' should not return}} 19f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump} 20f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump 219dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor#pragma clang diagnostic error "-Winvalid-noreturn" 228662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner 238662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() __attribute__((noreturn)); 248662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() { 259dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor return; // expected-error {{function 'f4' declared 'noreturn' should not return}} 268662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner} 278662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner 2847259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor// PR4685 2947259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorextern void f5 (unsigned long) __attribute__ ((__noreturn__)); 3047259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor 3147259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorvoid 3247259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorf5 (unsigned long size) 3347259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor{ 3447259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor 3529813c3509a0229947e35897a9a145c4fb3bc147Mike Stump} 36