+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.
--- /dev/null
+/* 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" } */