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
