The issue comes from builtin add-carry and sub-borrow.
Nim uint64 maps to NU64 which itself maps to uint64_t which itself maps to long unsigned int on x86-64.
However _addcarry_u64 has for signature unsigned char _addcarry_u64 (unsigned char c_in, unsigned __int64 a, unsigned __int64 b, unsigned __int64 * out)
unsigned __int64 maps to unsigned long long which is deemed incompatible with uint64_t so we need an explicit cast.
GCC 14 made passing an "incompatible" pointer type to another function an error.
The issue comes from builtin add-carry and sub-borrow. Nim
uint64
maps toNU64
which itself maps touint64_t
which itself maps tolong unsigned int
on x86-64.However
_addcarry_u64
has for signatureunsigned char _addcarry_u64 (unsigned char c_in, unsigned __int64 a, unsigned __int64 b, unsigned __int64 * out)
unsigned __int64
maps tounsigned long long
which is deemed incompatible withuint64_t
so we need an explicit cast.