Make the __bitcount*() functions unconditionally available, by moving

them out of the #if _BSD_VISIBLE block.  Other headers may depend on
__bitcount().  The dependencies can be a header not specified by
POSIX, and then namespace restrictions by _XOPEN_SOURCE are not
applicable, as it was reported.  Or, we might grow an implementation
of some POSIX facility using __bitcount(), which also should work.

Reported by:	Jason Schulz <schulz.j@gmail.com>
Discussed with:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
This commit is contained in:
kib 2015-09-26 07:30:45 +00:00
parent a96b01fd6f
commit 278a90b919

View File

@ -290,9 +290,6 @@ typedef _Bool bool;
* The following are all things that really shouldn't exist in this header, * The following are all things that really shouldn't exist in this header,
* since its purpose is to provide typedefs, not miscellaneous doodads. * since its purpose is to provide typedefs, not miscellaneous doodads.
*/ */
#if __BSD_VISIBLE
#include <sys/select.h>
#ifdef __POPCNT__ #ifdef __POPCNT__
#define __bitcount64(x) __builtin_popcountll((__uint64_t)(x)) #define __bitcount64(x) __builtin_popcountll((__uint64_t)(x))
@ -356,6 +353,10 @@ __bitcount64(__uint64_t _x)
#define __bitcount(x) __bitcount32((unsigned int)(x)) #define __bitcount(x) __bitcount32((unsigned int)(x))
#endif #endif
#if __BSD_VISIBLE
#include <sys/select.h>
/* /*
* minor() gives a cookie instead of an index since we don't want to * minor() gives a cookie instead of an index since we don't want to
* change the meanings of bits 0-15 or waste time and space shifting * change the meanings of bits 0-15 or waste time and space shifting