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)

Reply via email to