https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119695
James K. Lowden <jklowden at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |WAITING --- Comment #4 from James K. Lowden <jklowden at gcc dot gnu.org> --- IIUC, functions that use global_dc->diagnostic_impl, such as the FE's error_msg(), can use %zu because we control the implementation; we don't rely on the host's printf(3). I removed all other uses of %zu. In most cases %u and static_cast<unsigned int> is just fine. The messages are debug messages that refer to sizes that can't possibly be even 4GB, such as the line number or element number in the symbol table, or the size of a string. (We know an int is at least 32 bits. These are messages produced by the built 64-bit parser, not while building gcobol on a 32-bit host.) With regard to %04x etc., the reverse is true. I can't believe there's a supported libc that doesn't recognize leading-zero format or field width, but they're not allowed in the diagnostic framework. Fix pending in parser 0451a1f31fa.