https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87495
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> --- On Mon, 15 Oct 2018, burnus at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87495 > > Tobias Burnus <burnus at gcc dot gnu.org> changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > CC| |burnus at gcc dot gnu.org > > --- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> --- > I wonder whether that's an ABI problem. > > At least, if I use "-m32", it compiles without warning – while -m64 shows the > warning on my 86-64-gnu-linux. > > I also see the following in doc/extend.texi: > > @item fastcall > @cindex @code{fastcall} function attribute, x86-32 > @cindex functions that pop the argument stack on x86-32 > On x86-32 targets, the @code{fastcall} attribute causes the compiler to > pass the first argument (if of integral type) in the register ECX and > the second argument (if of integral type) in the register EDX@. Subsequent > and other typed arguments are passed on the stack. The called function > pops the arguments off the stack. If the number of arguments is variable all > arguments are pushed on the stack. > > Side note: on Microsoft's page, I do see a __fastcall for x64 Windows: > https://msdn.microsoft.com/en-us/library/ms235286.aspx fastcall is definitely a -m32 attribute only (on x86_64 arguments are already passed by registers)