https://gcc.gnu.org/g:26c0268ea905bd576a3696b54899f8a8dd8d329d

commit r17-4507-g26c0268ea905bd576a3696b54899f8a8dd8d329d
Author: Jakub Jelinek <[email protected]>
Date:   Mon Sep 21 09:11:37 2026 +0200

    c, c++: Fix up __has_builtin(__builtin_{bitreverse,bswap}g)
    
    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.
    
    2026-09-21  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).
    
    Reviewed-by: Joseph Myers <[email protected]>
    Reviewed-by: Jason Merrill <[email protected]>

Diff:
---
 gcc/c/c-decl.cc                                    | 2 ++
 gcc/cp/cp-objcp-common.cc                          | 2 ++
 gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c | 4 ++++
 gcc/testsuite/c-c++-common/builtin-bswapg-1.c      | 4 ++++
 4 files changed, 12 insertions(+)

diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index 42d35a87a179..ada5a5043af4 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -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:
diff --git a/gcc/cp/cp-objcp-common.cc b/gcc/cp/cp-objcp-common.cc
index 36b9d743afdd..0cdf35adaa77 100644
--- a/gcc/cp/cp-objcp-common.cc
+++ b/gcc/cp/cp-objcp-common.cc
@@ -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:
diff --git a/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c 
b/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
index dec3d6d7b2ba..d84281fc0c47 100644
--- a/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
+++ b/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
@@ -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, "");
diff --git a/gcc/testsuite/c-c++-common/builtin-bswapg-1.c 
b/gcc/testsuite/c-c++-common/builtin-bswapg-1.c
index 75bc0a11dc5c..d6ae57432129 100644
--- a/gcc/testsuite/c-c++-common/builtin-bswapg-1.c
+++ b/gcc/testsuite/c-c++-common/builtin-bswapg-1.c
@@ -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, "");

Reply via email to