* gcc.dg/noreturn-1.c: New test.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Thu, 13 May 1999 09:18:43 +0000 (09:18 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Thu, 13 May 1999 09:18:43 +0000 (09:18 +0000)
From-SVN: r26923

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/noreturn-1.c [new file with mode: 0644]

index 619a1b75f718bf6e72b6c22f810a4b2c78a4be5f..e846e889f07f94fdb12fbbf87c35dc73a36c5010 100644 (file)
@@ -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 (file)
index 0000000..3d68cbc
--- /dev/null
@@ -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" } */