From 6de8697e4d786fd71ac04036038190e3e5109bc4 Mon Sep 17 00:00:00 2001 From: "Kaveh R. Ghazi" Date: Thu, 13 May 1999 09:18:43 +0000 Subject: [PATCH] * gcc.dg/noreturn-1.c: New test. From-SVN: r26923 --- gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.dg/noreturn-1.c | 43 +++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/noreturn-1.c 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 + + * gcc.dg/noreturn-1.c: New test. + Thu May 13 02:07:21 1999 Franz Sirl * 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" } */ -- 2.30.2