aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>1999-05-13 09:18:43 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>1999-05-13 09:18:43 +0000
commit6de8697e4d786fd71ac04036038190e3e5109bc4 (patch)
treec8c32a4585690be44ff28a34d16c583e18eca586 /gcc
parent16f322e33c0fc49e8f3283cad331a8a7a5f55c53 (diff)
downloadgcc-6de8697e4d786fd71ac04036038190e3e5109bc4.zip
gcc-6de8697e4d786fd71ac04036038190e3e5109bc4.tar.gz
gcc-6de8697e4d786fd71ac04036038190e3e5109bc4.tar.bz2
* gcc.dg/noreturn-1.c: New test.
From-SVN: r26923
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/noreturn-1.c43
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 619a1b7..e846e88 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+1999-05-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * gcc.dg/noreturn-1.c: New test.
+
Thu May 13 02:07:21 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* gcc.dg/990513-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/noreturn-1.c b/gcc/testsuite/gcc.dg/noreturn-1.c
new file mode 100644
index 0000000..3d68cbc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/noreturn-1.c
@@ -0,0 +1,43 @@
+/* Check for various valid and erroneous "noreturn" cases. */
+/* { dg-do compile } */
+/* { dg-options "-O -Wmissing-noreturn" } */
+
+extern void foo1(void) __attribute__ ((__noreturn__));
+void
+foo1(void)
+{
+} /* { dg-warning "`noreturn' function does return" "detect falling off end of noreturn" } */
+
+extern void foo2(void) __attribute__ ((__noreturn__));
+void
+foo2(void)
+{
+ exit(0);
+} /* { dg-bogus "warning:" "this function should not get any warnings" } */
+
+extern void foo3(void);
+void
+foo3(void)
+{
+} /* { dg-bogus "warning:" "this function should not get any warnings" } */
+
+extern void foo4(void);
+void
+foo4(void)
+{
+ exit(0);
+} /* { dg-warning "candidate for attribute `noreturn'" "detect noreturn candidate" } */
+
+extern void foo5(void) __attribute__ ((__noreturn__));
+void
+foo5(void)
+{
+ return; /* { dg-warning "`noreturn' has a `return' statement" "detect invalid return" } */
+} /* { dg-warning "`noreturn' function does return" "detect return from noreturn" } */
+
+extern void foo6(void);
+void
+foo6(void)
+{
+ return;
+} /* { dg-bogus "warning:" "this function should not get any warnings" } */