https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83294
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I'm not aware of a standard requirement not to use plain int for int32_t (even with unsigned bit-fields), though it may well be useful to make the signedness explicit. After all, int is a signed integer type with 32 bits in the cases where it's used for int32_t. (However, plain char is never OK as int8_t / uint8_t etc. because char is an integer type but not a signed integer type or unsigned integer type.) On most platforms, except with -ffreestanding GCC just wraps libc's stdint.h, so this is mostly a libc quality-of-implementation issue, not just a GCC one.