diff options
Diffstat (limited to 'usr.bin/xlint/lint1/func.c')
-rw-r--r-- | usr.bin/xlint/lint1/func.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/usr.bin/xlint/lint1/func.c b/usr.bin/xlint/lint1/func.c index c3ee8e6350b..5d73a4e896b 100644 --- a/usr.bin/xlint/lint1/func.c +++ b/usr.bin/xlint/lint1/func.c @@ -1,4 +1,4 @@ -/* $OpenBSD: func.c,v 1.9 2005/12/17 20:19:46 cloder Exp $ */ +/* $OpenBSD: func.c,v 1.10 2005/12/17 21:08:27 cloder Exp $ */ /* $NetBSD: func.c,v 1.7 1995/10/02 17:31:40 jpo Exp $ */ /* @@ -33,7 +33,7 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: func.c,v 1.9 2005/12/17 20:19:46 cloder Exp $"; +static char rcsid[] = "$OpenBSD: func.c,v 1.10 2005/12/17 21:08:27 cloder Exp $"; #endif #include <stdlib.h> @@ -84,6 +84,12 @@ int nargusg = -1; pos_t aupos; /* + * If the following function has been declared NORETURN, noretflg is set + * to 1. Otherwise it is set to 0. + */ +int noretflg = 0; + +/* * Number of arguments of the following function definition whose types * shall be checked by lint2. -1 stands for all arguments. * @@ -387,6 +393,10 @@ funcend(void) } nargusg = -1; + if (noretflg) + funcsym->s_noreturn = 1; + noretflg = 0; + /* * write the information about the function definition to the * output file @@ -1101,6 +1111,18 @@ argsused(int n) } /* + * NORETURN comment + * + * The following function will never return, which means any code + * following a call to this function is unreachable. + */ +void +noreturn(int n) +{ + noretflg = 1; +} + +/* * VARARGS comment * * Makes that lint2 checks only the first n arguments for compatibility |