func_attr: clang/icc support NONNULL_* attr

Both clang and (apparently) icc support the nonnull attribute. So I'm not
sure why it wasn't enabled in the first place.

- clang: http://clang-analyzer.llvm.org/annotations.html#attr_nonnull
- icc: https://software.intel.com/en-us/forums/topic/280290 (not conclusive
  evidence, but the best I could find, lacking docs)
This commit is contained in:
Nicolas Hillegeer
2014-07-23 14:37:48 +02:00
parent ba04a1c306
commit f430ec5c50

View File

@@ -105,6 +105,8 @@
#define REAL_FATTR_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #define REAL_FATTR_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#define REAL_FATTR_ALWAYS_INLINE __attribute__((always_inline)) #define REAL_FATTR_ALWAYS_INLINE __attribute__((always_inline))
#define REAL_FATTR_UNUSED __attribute__((unused)) #define REAL_FATTR_UNUSED __attribute__((unused))
#define REAL_FATTR_NONNULL_ALL __attribute__((nonnull))
#define REAL_FATTR_NONNULL_ARG(...) __attribute__((nonnull(__VA_ARGS__)))
#ifdef __clang__ #ifdef __clang__
// clang only // clang only
@@ -118,8 +120,6 @@
// gcc only // gcc only
#define REAL_FATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) #define REAL_FATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
#define REAL_FATTR_ALLOC_SIZE_PROD(x,y) __attribute__((alloc_size(x,y))) #define REAL_FATTR_ALLOC_SIZE_PROD(x,y) __attribute__((alloc_size(x,y)))
#define REAL_FATTR_NONNULL_ALL __attribute__((nonnull))
#define REAL_FATTR_NONNULL_ARG(...) __attribute__((nonnull(__VA_ARGS__)))
#if GCC_VERSION >= 40900 #if GCC_VERSION >= 40900
#define REAL_FATTR_NONNULL_RET __attribute__((returns_nonnull)) #define REAL_FATTR_NONNULL_RET __attribute__((returns_nonnull))
#endif #endif