summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2016-05-13 13:17:02 -0700
committerMatt Turner <mattst88@gmail.com>2016-05-16 11:06:15 -0700
commit377ab2f2d781aef9408f26b24bb8b17426be6606 (patch)
treec8b863c2af4344c669590c3561091d13c5b66a68
parent40c6d54e76c5e5859a78841ed305935b2ca6922c (diff)
util: Add ATTRIBUTE_RETURNS_NONNULL.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--configure.ac1
-rw-r--r--m4/ax_gcc_func_attribute.m47
-rw-r--r--src/util/macros.h6
3 files changed, 14 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 023110e184..9fbfe4d5ea 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 4e0ecbb56c..2e67ea2926 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 c0bfb15a47..9ddf675965 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