On Sat, Nov 3, 2012 at 12:55 AM, Mischa Baars <mjbaars1...@gmail.com> wrote:
> On 11/02/2012 07:11 PM, Ian Lance Taylor wrote:
>>
>> On Fri, Nov 2, 2012 at 8:13 AM, Mischa Baars <mjbaars1...@gmail.com>
>> wrote:
>>>
>>> I have been writing this piece of example code, but it seems that someone
>>> has been modifying the compiler in the meantime such that arguments are
>>> now
>>> passed in xmm registers instead of over the stack. Also the npx top of
>>> stack
>>> pointer isn't handled alike for all three different types of real numbers
>>> on
>>> function return any more.
>>
>> I have not looked at your code.  However, I can tell you that on
>> 32-bit x86 floating point function arguments are normally passed on
>> the stack and on 64-bit x86 floating point arguments are normally
>> passed in the xmm registers.  There are various ways that you can
>> change this default behaviour, but if you are seeing an unexpected
>> change then I would guess that you changed from 32-bit compilation to
>> 64-bit compilation.
>>
>> Ian
>
>
> By the way, it seems this only holds for single and double real numbers.
> These are indeed passed in xmm registers, the long double however is still
> passed over the stack.

Yes.

> Do we have any compiler options that change this behaviour back to the
> original? The default behaviour in 64-bit mode is not even the same for all
> real number types.

There is no "original."  The 32-bit and 64-bit ABIs are different.
The 64-bit ABI has always passed arguments in registers.  There is no
option to force the 64-bit compiler to pass arguments on the stack.

Ian

Reply via email to