This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sat, Nov 3, 2012 at 12:55 AM, Mischa Baars <mjbaars1977@gmail.com> wrote:On 11/02/2012 07:11 PM, Ian Lance Taylor wrote:Yes.On Fri, Nov 2, 2012 at 8:13 AM, Mischa Baars <mjbaars1977@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.
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
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |