Commit 6e1cdb3d authored by Rusty Russell's avatar Rusty Russell

compiler: NORETURN

parent c89f34af
......@@ -20,6 +20,24 @@
#define COLD
#endif
#if HAVE_ATTRIBUTE_NORETURN
/**
* NORETURN - a function does not return
*
* Used to mark a function which exits; useful for suppressing warnings.
*
* Example:
* static void NORETURN fail(const char *reason)
* {
* fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno));
* exit(1);
* }
*/
#define NORETURN __attribute__((noreturn))
#else
#define NORETURN
#endif
#if HAVE_ATTRIBUTE_PRINTF
/**
* PRINTF_FMT - a function takes printf-style arguments
......
......@@ -6,6 +6,7 @@
#define HAVE_ATTRIBUTE_COLD 1
#define HAVE_ATTRIBUTE_CONST 1
#define HAVE_ATTRIBUTE_MAY_ALIAS 1
#define HAVE_ATTRIBUTE_NORETURN 1
#define HAVE_ATTRIBUTE_PRINTF 1
#define HAVE_ATTRIBUTE_UNUSED 1
#define HAVE_ATTRIBUTE_USED 1
......
......@@ -44,6 +44,9 @@ static struct test tests[] = {
"static int __attribute__((const)) func(int x) { return x; }" },
{ "HAVE_ATTRIBUTE_MAY_ALIAS", OUTSIDE_MAIN, NULL,
"typedef short __attribute__((__may_alias__)) short_a;" },
{ "HAVE_ATTRIBUTE_NORETURN", DEFINES_FUNC, NULL,
"#include <stdlib.h>\n"
"static void __attribute__((noreturn)) func(int x) { exit(x); }" },
{ "HAVE_ATTRIBUTE_PRINTF", DEFINES_FUNC, NULL,
"static void __attribute__((format(__printf__, 1, 2))) func(const char *fmt, ...) { }" },
{ "HAVE_ATTRIBUTE_UNUSED", OUTSIDE_MAIN, NULL,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment