diff options
Diffstat (limited to 'test/Sema/attr-noreturn.c')
-rw-r--r-- | test/Sema/attr-noreturn.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/Sema/attr-noreturn.c b/test/Sema/attr-noreturn.c new file mode 100644 index 0000000..d1417f0 --- /dev/null +++ b/test/Sema/attr-noreturn.c @@ -0,0 +1,27 @@ +// RUN: clang-cc -verify -fsyntax-only %s + +static void (*fp0)(void) __attribute__((noreturn)); + +static void __attribute__((noreturn)) f0(void) { + fatal(); +} + +// On K&R +int f1() __attribute__((noreturn)); + +int g0 __attribute__((noreturn)); // expected-warning {{'noreturn' attribute only applies to function types}} + +int f2() __attribute__((noreturn(1, 2))); // expected-error {{attribute requires 0 argument(s)}} + +void f3() __attribute__((noreturn)); +void f3() { + return; // expected-error {{function 'f3' declared 'noreturn' should not return}} +} + +#pragma clang diagnostic warning "-Winvalid-noreturn" + +void f4() __attribute__((noreturn)); +void f4() { + return; // expected-warning {{function 'f4' declared 'noreturn' should not return}} +} + |