Mesa (master): util: Add a NORETURN macro

Jason Ekstrand jekstrand at kemper.freedesktop.org
Mon Dec 4 17:21:23 UTC 2017


Module: Mesa
Branch: master
Commit: 0c49aa0624c289164b5501a8724b6d9fdbae7f49
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c49aa0624c289164b5501a8724b6d9fdbae7f49

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Aug 16 17:16:45 2017 -0700

util: Add a NORETURN macro

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>
Reviewed-by: Ian Romanick <idr at freedesktop.org>

---

 configure.ac      | 1 +
 meson.build       | 4 ++++
 src/util/macros.h | 6 ++++++
 3 files changed, 11 insertions(+)

diff --git a/configure.ac b/configure.ac
index 475155a96e..a4564d23f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -250,6 +250,7 @@ AX_GCC_FUNC_ATTRIBUTE([visibility])
 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
 AX_GCC_FUNC_ATTRIBUTE([weak])
 AX_GCC_FUNC_ATTRIBUTE([alias])
+AX_GCC_FUNC_ATTRIBUTE([noreturn])
 
 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
 
diff --git a/meson.build b/meson.build
index f227bc3e01..ddc4a44eb6 100644
--- a/meson.build
+++ b/meson.build
@@ -479,6 +479,10 @@ if cc.compiles('int foo(void) { return 0; } int bar(void) __attribute__((alias("
                name : '__attribute__((alias(...)))')
   pre_args += '-DHAVE_FUNC_ATTRIBUTE_ALIAS'
 endif
+if cc.compiles('int foo(void) __attribute__((__noreturn__));',
+               name : '__attribute__((__noreturn__))')
+  pre_args += '-DHAVE_FUNC_ATTRIBUTE_NORETURN'
+endif
 
 # TODO: this is very incomplete
 if ['linux', 'cygwin'].contains(host_machine.system())
diff --git a/src/util/macros.h b/src/util/macros.h
index aa36253217..d6e37053b1 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -171,6 +171,12 @@ do {                       \
 #define ATTRIBUTE_RETURNS_NONNULL
 #endif
 
+#ifdef HAVE_FUNC_ATTRIBUTE_NORETURN
+#define NORETURN __attribute__((__noreturn__))
+#else
+#define NORETURN
+#endif
+
 #ifdef __cplusplus
 /**
  * Macro function that evaluates to true if T is a trivially




More information about the mesa-commit mailing list