]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
stdbit-h: avoid <byteswap.h> namespace pollution
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 14 Mar 2026 22:15:50 +0000 (15:15 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 14 Mar 2026 22:39:49 +0000 (15:39 -0700)
* lib/stdbit.in.h (_GL_STDBIT_HAS_BUILTIN_BSWAP16)
(_GL_STDBIT_HAS_BUILTIN_BSWAP32, _GL_STDBIT_HAS_BUILTIN_BSWAP64)
(_GL_STDBIT_BSWAP16, _GL_STDBIT_BSWAP32, _GL_STDBIT_BSWAP64):
New macros.  All uses of bswap_16, bswap_32, bswap_64 changed.

ChangeLog
lib/stdbit.in.h

index c716be02b3e30318e370c6f236dc549650f21983..916981ff2ff30641ce2ba57c08f6f37dafa3d891 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2026-03-14  Paul Eggert  <eggert@cs.ucla.edu>
 
+       stdbit-h: avoid <byteswap.h> namespace pollution
+       * lib/stdbit.in.h (_GL_STDBIT_HAS_BUILTIN_BSWAP16)
+       (_GL_STDBIT_HAS_BUILTIN_BSWAP32, _GL_STDBIT_HAS_BUILTIN_BSWAP64)
+       (_GL_STDBIT_BSWAP16, _GL_STDBIT_BSWAP32, _GL_STDBIT_BSWAP64):
+       New macros.  All uses of bswap_16, bswap_32, bswap_64 changed.
+
        stdbit-h: avoid <string.h> namespace pollution
        * lib/stdbit.in.h (_GL_STDBIT_MEMCPY): New macro.
        All uses of memcpy changed.
index f8f79c825c38dbab6ee04d5118f6c167ffe10e1b..562796b8e41c781c670a343b99c73fba6aa0baac 100644 (file)
 
 #if @GNULIB_STDC_LOAD8_ALIGNED@ || @GNULIB_STDC_STORE8_ALIGNED@
 
-/* Get bswap_16, bswap_32, bswap_64.  */
-# include <byteswap.h>
+/* Get bswap_16, bswap_32, bswap_64, but keep namespace clean on GNU.  */
+# if defined __GNUC__ && 4 < __GNUC__ + (8 <= __GNUC_MINOR__)
+#  define _GL_STDBIT_HAS_BUILTIN_BSWAP16 1
+# elif defined __has_builtin
+#  if __has_builtin (__builtin_bswap16)
+#   define _GL_STDBIT_HAS_BUILTIN_BSWAP16 1
+#  endif
+# endif
+# if defined __GNUC__ && 4 < __GNUC__ + (3 <= __GNUC_MINOR__)
+#  define _GL_STDBIT_HAS_BUILTIN_BSWAP32 1
+#  define _GL_STDBIT_HAS_BUILTIN_BSWAP64 1
+# elif defined __has_builtin
+#  if __has_builtin (__builtin_bswap32)
+#   define _GL_STDBIT_HAS_BUILTIN_BSWAP32 1
+#  endif
+#  if __has_builtin (__builtin_bswap64)
+#   define _GL_STDBIT_HAS_BUILTIN_BSWAP64 1
+#  endif
+# endif
+# if ! (defined _GL_STDBIT_HAS_BUILTIN_BSWAP16 \
+        && defined _GL_STDBIT_HAS_BUILTIN_BSWAP32 \
+        && defined _GL_STDBIT_HAS_BUILTIN_BSWAP64)
+#  include <byteswap.h>
+# endif
+# ifdef _GL_STDBIT_HAS_BUILTIN_BSWAP16
+#  define _GL_STDBIT_BSWAP16(x) __builtin_bswap16 (x)
+# else
+#  define _GL_STDBIT_BSWAP16(x) bswap_16 (x)
+# endif
+# ifdef _GL_STDBIT_HAS_BUILTIN_BSWAP32
+#  define _GL_STDBIT_BSWAP32(x) __builtin_bswap32 (x)
+# else
+#  define _GL_STDBIT_BSWAP32(x) bswap_32 (x)
+# endif
+# ifdef _GL_STDBIT_HAS_BUILTIN_BSWAP64
+#  define _GL_STDBIT_BSWAP64(x) __builtin_bswap64 (x)
+# else
+#  define _GL_STDBIT_BSWAP64(x) bswap_64 (x)
+# endif
 
 /* Get memcpy, but keep namespace clean on GNU.  */
 # ifdef __has_builtin
@@ -1373,7 +1410,7 @@ stdc_load8_aligned_beu16 (const unsigned char ptr[2])
       uint_least16_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 2), 2);
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_16 (value);
+        value = _GL_STDBIT_BSWAP16 (value);
       return value;
     }
   else
@@ -1388,7 +1425,7 @@ stdc_load8_aligned_beu32 (const unsigned char ptr[4])
       uint_least32_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 4), 4);
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_32 (value);
+        value = _GL_STDBIT_BSWAP32 (value);
       return value;
     }
   else
@@ -1403,7 +1440,7 @@ stdc_load8_aligned_beu64 (const unsigned char ptr[8])
       uint_least64_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 8), 8);
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_64 (value);
+        value = _GL_STDBIT_BSWAP64 (value);
       return value;
     }
   else
@@ -1424,7 +1461,7 @@ stdc_load8_aligned_leu16 (const unsigned char ptr[2])
       uint_least16_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 2), 2);
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_16 (value);
+        value = _GL_STDBIT_BSWAP16 (value);
       return value;
     }
   else
@@ -1439,7 +1476,7 @@ stdc_load8_aligned_leu32 (const unsigned char ptr[4])
       uint_least32_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 4), 4);
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_32 (value);
+        value = _GL_STDBIT_BSWAP32 (value);
       return value;
     }
   else
@@ -1454,7 +1491,7 @@ stdc_load8_aligned_leu64 (const unsigned char ptr[8])
       uint_least64_t value;
       _GL_STDBIT_MEMCPY (&value, _GL_STDBIT_ASSUME_ALIGNED (ptr, 8), 8);
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_64 (value);
+        value = _GL_STDBIT_BSWAP64 (value);
       return value;
     }
   else
@@ -1650,7 +1687,7 @@ stdc_store8_aligned_beu16 (uint_least16_t value, unsigned char ptr[2])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_16 (value);
+        value = _GL_STDBIT_BSWAP16 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 2), &value, 2);
     }
   else
@@ -1663,7 +1700,7 @@ stdc_store8_aligned_beu32 (uint_least32_t value, unsigned char ptr[4])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_32 (value);
+        value = _GL_STDBIT_BSWAP32 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 4), &value, 4);
     }
   else
@@ -1676,7 +1713,7 @@ stdc_store8_aligned_beu64 (uint_least64_t value, unsigned char ptr[8])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (!_GL_STDBIT_BIGENDIAN)
-        value = bswap_64 (value);
+        value = _GL_STDBIT_BSWAP64 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 8), &value, 8);
     }
   else
@@ -1695,7 +1732,7 @@ stdc_store8_aligned_leu16 (uint_least16_t value, unsigned char ptr[2])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_16 (value);
+        value = _GL_STDBIT_BSWAP16 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 2), &value, 2);
     }
   else
@@ -1708,7 +1745,7 @@ stdc_store8_aligned_leu32 (uint_least32_t value, unsigned char ptr[4])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_32 (value);
+        value = _GL_STDBIT_BSWAP32 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 4), &value, 4);
     }
   else
@@ -1721,7 +1758,7 @@ stdc_store8_aligned_leu64 (uint_least64_t value, unsigned char ptr[8])
   if (_GL_STDBIT_OPTIMIZE_VIA_MEMCPY)
     {
       if (_GL_STDBIT_BIGENDIAN)
-        value = bswap_64 (value);
+        value = _GL_STDBIT_BSWAP64 (value);
       _GL_STDBIT_MEMCPY (_GL_STDBIT_ASSUME_ALIGNED (ptr, 8), &value, 8);
     }
   else