https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111309
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- Defined values for 0 are marginally more convenient for implementing the standard <stdbit.h> operations which have defined results for all arguments, and I think it's appropriate for the type-generic built-in functions to work for all integer types - at least all unsigned integer types (and including unsigned __int128) - rather than just _BitInt types. (<stdbit.h> itself - providing both functions and type-generic macros - makes most sense to provide in libc, I think. The type-generic macros there don't actually support bit-precise types whose width doesn't match a standard/extended type, but providing such support, given appropriate built-in functions, certainly makes sense as an extension.)