summaryrefslogtreecommitdiffstats
path: root/test/Sema/attr-noreturn.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Sema/attr-noreturn.c')
-rw-r--r--test/Sema/attr-noreturn.c27
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}}
+}
+
OpenPOWER on IntegriCloud