Hi!

Both __builtin_bitreverseg and __builtin_bswapg are magic
keyword builtins resolved in the FEs, added back in June.
Unfortunately I forgot to make sure __has_builtin supports
those.

Fixed thusly, ok for trunk if it passes full bootstrap/regtest?

2026-09-18  Jakub Jelinek  <[email protected]>

gcc/c/
        * c-decl.cc (names_builtin_p): Return 1 for
        RID_BUILTIN_BITREVERSEG and RID_BUILTIN_BSWAPG.
gcc/cp/
        * cp-objcp-common.cc (names_builtin_p): Return 1 for
        RID_BUILTIN_BITREVERSEG and RID_BUILTIN_BSWAPG.
gcc/testsuite/
        * c-c++-common/builtin-bswapg-1.c: Test
        __has_builtin(__builtin_bswapg).
        * c-c++-common/builtin-bitreverseg-1.c: Test
        __has_builtin(__builtin_bitreverseg).

--- a/gcc/c/c-decl.cc   2026-07-10 08:56:56.454169566 +0200
+++ b/gcc/c/c-decl.cc   2026-09-18 15:35:11.881509921 +0200
@@ -11934,6 +11934,8 @@ names_builtin_p (const char *name)
   switch (C_RID_CODE (id))
     {
     case RID_BUILTIN_ASSOC_BARRIER:
+    case RID_BUILTIN_BITREVERSEG:
+    case RID_BUILTIN_BSWAPG:
     case RID_BUILTIN_CONVERTVECTOR:
     case RID_BUILTIN_HAS_ATTRIBUTE:
     case RID_BUILTIN_SHUFFLE:
--- a/gcc/cp/cp-objcp-common.cc 2026-09-14 10:37:36.862105183 +0200
+++ b/gcc/cp/cp-objcp-common.cc 2026-09-18 15:37:11.554926052 +0200
@@ -572,6 +572,8 @@ names_builtin_p (const char *name)
   switch (C_RID_CODE (id))
     {
     case RID_ADDRESSOF:
+    case RID_BUILTIN_BITREVERSEG:
+    case RID_BUILTIN_BSWAPG:
     case RID_BUILTIN_CONVERTVECTOR:
     case RID_BUILTIN_HAS_ATTRIBUTE:
     case RID_BUILTIN_SHUFFLE:
--- a/gcc/testsuite/c-c++-common/builtin-bswapg-1.c     2026-06-05 
10:39:31.152015958 +0200
+++ b/gcc/testsuite/c-c++-common/builtin-bswapg-1.c     2026-09-18 
15:38:14.386094476 +0200
@@ -2,6 +2,10 @@
 /* { dg-do run { target { c || c++11 } } } */
 /* { dg-options "-O2" } */
 
+#if !__has_builtin(__builtin_bswapg)
+#error __builtin_bswapg unsupported
+#endif
+
 #if __CHAR_BIT__ == 8
 #if __SIZEOF_INT__ == 4
 static_assert (__builtin_bswapg (0x12345678U) == 0x78563412U, "");
--- a/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c        2026-06-05 
10:39:31.152296912 +0200
+++ b/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c        2026-09-18 
15:38:35.754811661 +0200
@@ -2,6 +2,10 @@
 /* { dg-do run { target { c || c++11 } } } */
 /* { dg-options "-O2" } */
 
+#if !__has_builtin(__builtin_bitreverseg)
+#error __builtin_bitreverseg unsupported
+#endif
+
 #if __CHAR_BIT__ == 8
 #if __SIZEOF_INT__ == 4
 static_assert (__builtin_bitreverseg (0x2fa889a7U) == 0xe59115f4U, "");

        Jakub

Reply via email to