1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -verify -fsyntax-only %s 2d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar 3d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarstatic void (*fp0)(void) __attribute__((noreturn)); 4d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar 5e030358cc06e1cbce3c2e00ca67c946f9164b2a8Chris Lattnervoid fatal(); 6e030358cc06e1cbce3c2e00ca67c946f9164b2a8Chris Lattner 7d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbarstatic void __attribute__((noreturn)) f0(void) { 8d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar fatal(); 929813c3509a0229947e35897a9a145c4fb3bc147Mike Stump} // expected-warning {{function declared 'noreturn' should not return}} 10d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar 11d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar// On K&R 125d1d7ae120c2c8e6cba5d2a712b33500a5aecc10Anders Carlssonint f1() __attribute__((noreturn)); 13d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar 1404a67a6aa3dfdc92d57f7f8d93ba397348c868a4John McCallint g0 __attribute__((noreturn)); // expected-warning {{'noreturn' only applies to function types; type here is 'int'}} 15d3f2c10f881311831a84114179342ff4db55e0c3Daniel Dunbar 16baec77865b3ce64bb942dddc5dc2fada84ce5099Aaron Ballmanint f2() __attribute__((noreturn(1, 2))); // expected-error {{'noreturn' attribute takes no arguments}} 17f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump 18f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stumpvoid f3() __attribute__((noreturn)); 19f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stumpvoid f3() { 209dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor return; // expected-warning {{function 'f3' declared 'noreturn' should not return}} 21f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump} 22f7c41dab1a8de29b0991e853b8822bb0d1ddc01cMike Stump 239dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor#pragma clang diagnostic error "-Winvalid-noreturn" 248662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner 258662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() __attribute__((noreturn)); 268662587fa75d3fb04f873e265841c9314c7f5523Chris Lattnervoid f4() { 279dc9c376a9f3e0c72f33e27075caa0647dadb350Douglas Gregor return; // expected-error {{function 'f4' declared 'noreturn' should not return}} 288662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner} 298662587fa75d3fb04f873e265841c9314c7f5523Chris Lattner 3047259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor// PR4685 3147259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorextern void f5 (unsigned long) __attribute__ ((__noreturn__)); 3247259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor 3347259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorvoid 3447259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregorf5 (unsigned long size) 3547259d9ca7840dd66f06f5f11da7768b23d1e0fdDouglas Gregor{ 36baec77865b3ce64bb942dddc5dc2fada84ce5099Aaron Ballman 3729813c3509a0229947e35897a9a145c4fb3bc147Mike Stump} 38edd722e38b883236c9f214d5df309110500b3529Mike Stump 39edd722e38b883236c9f214d5df309110500b3529Mike Stump// PR2461 40edd722e38b883236c9f214d5df309110500b3529Mike Stump__attribute__((noreturn)) void f(__attribute__((noreturn)) void (*x)(void)) { 41edd722e38b883236c9f214d5df309110500b3529Mike Stump x(); 42edd722e38b883236c9f214d5df309110500b3529Mike Stump} 43b1f1b267351be74013f966f4834cde1eddbe0233Abramo Bagnara 44baec77865b3ce64bb942dddc5dc2fada84ce5099Aaron Ballmantypedef void (*Fun)(void) __attribute__ ((noreturn(2))); // expected-error {{'noreturn' attribute takes no arguments}} 45