https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110047
--- Comment #2 from Eric Gallager <egallager at gcc dot gnu.org> --- Oh, one other thing I'd note here is that gcc/README.portability contains a part about this, too; I'm copying and pasting it here: Implicit int ------------ In C, the 'int' keyword can often be omitted from type declarations. For instance, you can write unsigned variable; as shorthand for unsigned int variable; There are several places where this can cause trouble. First, suppose 'variable' is a long; then you might think (unsigned) variable would convert it to unsigned long. It does not. It converts to unsigned int. This mostly causes problems on 64-bit platforms, where long and int are not the same size. Ref: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/README.Portability;h=af6904728833193ba57e74ec5bdd4070992efe42;hb=HEAD#l93