https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113887
--- Comment #5 from Joseph S. Myers <jsm28 at gcc dot gnu.org> --- Compiler and library are not in practice independent for this issue. GCC typically provides <stdint.h> for freestanding compilations and forwards to a libc version for hosted compilations, and in both cases it needs to know what the types are for correct format checking (for example, whether int64_t is long or long long) - and it needs to know that even in files that didn't include <stdint.h>, and preferably the types should be the same for hosted and freestanding. In fact it needs to know the types even when not compiling C or C++ - Fortran ISO_C_BINDING supports those types (though the Fortran standard has a specific list, not mentioning int128_t or general intN_t). And to properly support <stdint.h> implementation - whether in GCC's <stdint.h> or one provided by libc - any int128_t support should come with all the associated predefined macros - including __INT128_C and __UINT128_C defined to use an appropriate constant suffix.