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