A few functions in sys/sys/tree.h are marked void, but they have return
statements that try to pass something back. I suspect these weren't
detected by clang because of the __unused flag.
The below patch removes the return statements.
I compiled and ran this modification on my personal server and it
doesn't seem to have any negative effects.
Index: sys/sys/tree.h
===================================================================
RCS file: /cvs/src/sys/sys/tree.h,v
retrieving revision 1.29
diff -u -p -r1.29 tree.h
--- sys/sys/tree.h 30 Jul 2017 19:27:20 -0000 1.29
+++ sys/sys/tree.h 24 Mar 2019 00:10:47 -0000
@@ -910,25 +910,25 @@ _name##_RBT_PARENT(struct _type *elm)
__unused static inline void \
_name##_RBT_SET_LEFT(struct _type *elm, struct _type *left) \
{ \
- return _rb_set_left(_name##_RBT_TYPE, elm, left); \
+ _rb_set_left(_name##_RBT_TYPE, elm, left); \
} \
\
__unused static inline void \
_name##_RBT_SET_RIGHT(struct _type *elm, struct _type *right) \
{ \
- return _rb_set_right(_name##_RBT_TYPE, elm, right); \
+ _rb_set_right(_name##_RBT_TYPE, elm, right); \
} \
\
__unused static inline void \
_name##_RBT_SET_PARENT(struct _type *elm, struct _type *parent)
\
{ \
- return _rb_set_parent(_name##_RBT_TYPE, elm, parent); \
+ _rb_set_parent(_name##_RBT_TYPE, elm, parent); \
} \
\
__unused static inline void \
_name##_RBT_POISON(struct _type *elm, unsigned long poison) \
{ \
- return _rb_poison(_name##_RBT_TYPE, elm, poison); \
+ _rb_poison(_name##_RBT_TYPE, elm, poison); \
} \
\
__unused static inline int \
@@ -956,7 +956,7 @@ static void
\
_name##_RBT_AUGMENT(void *ptr) \
{ \
struct _type *p = ptr; \
- return _aug(p); \
+ _aug(p); \
} \
RBT_GENERATE_INTERNAL(_name, _type, _field, _cmp, _name##_RBT_AUGMENT)