[Mesa-dev] [PATCH 1/2] util: Add ATTRIBUTE_RETURNS_NONNULL.

Matt Turner mattst88 at gmail.com
Fri May 13 21:31:30 UTC 2016


---
 configure.ac                | 1 +
 m4/ax_gcc_func_attribute.m4 | 7 +++++++
 src/util/macros.h           | 6 ++++++
 3 files changed, 14 insertions(+)

diff --git a/configure.ac b/configure.ac
index 023110e..9fbfe4d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,6 +224,7 @@ AX_GCC_FUNC_ATTRIBUTE([format])
 AX_GCC_FUNC_ATTRIBUTE([malloc])
 AX_GCC_FUNC_ATTRIBUTE([packed])
 AX_GCC_FUNC_ATTRIBUTE([pure])
+AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
 AX_GCC_FUNC_ATTRIBUTE([unused])
 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
 
diff --git a/m4/ax_gcc_func_attribute.m4 b/m4/ax_gcc_func_attribute.m4
index 4e0ecbb..2e67ea2 100644
--- a/m4/ax_gcc_func_attribute.m4
+++ b/m4/ax_gcc_func_attribute.m4
@@ -53,6 +53,7 @@
 #    optimize
 #    packed
 #    pure
+#    returns_nonnull
 #    unused
 #    used
 #    visibility
@@ -76,6 +77,9 @@
 
 #serial 2
 
+# mattst88:
+#     Added support for returns_nonnull attribute
+
 AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
     AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
 
@@ -175,6 +179,9 @@ AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
                 [pure], [
                     int foo( void ) __attribute__(($1));
                 ],
+                [returns_nonnull], [
+                    int *foo( void ) __attribute__(($1));
+                ],
                 [unused], [
                     int foo( void ) __attribute__(($1));
                 ],
diff --git a/src/util/macros.h b/src/util/macros.h
index c0bfb15..9ddf675 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -154,6 +154,12 @@ do {                       \
 #define ATTRIBUTE_PURE
 #endif
 
+#ifdef HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL
+#define ATTRIBUTE_RETURNS_NONNULL __attribute__((__returns_nonnull__))
+#else
+#define ATTRIBUTE_RETURNS_NONNULL
+#endif
+
 #ifdef __cplusplus
 /**
  * Macro function that evaluates to true if T is a trivially
-- 
2.7.3



More information about the mesa-dev mailing list