aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaveh Ghazi <ghazi@caip.rutgers.edu>1999-05-13 09:18:43 +0000
committerKaveh Ghazi <ghazi@caip.rutgers.edu>1999-05-13 09:18:43 +0000
commit56f4fba30ef88699349509d2dc15932a92bd9706 (patch)
treec8c32a4585690be44ff28a34d16c583e18eca586
parentd70e055d0ff6fa425e2c0158f14cd259d991c978 (diff)
* gcc.dg/noreturn-1.c: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@26923 138bc75d-0d04-0410-961f-82ee72b054a4
-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 619a1b75f71..e846e889f07 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 00000000000..3d68cbcf500
--- /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" } */