[llvm-commits] [llvm-gcc-4.2] r46412 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h config/i386/llvm-i386.cpp llvm-abi.h llvm-convert.cpp
Chris Lattner
clattner at apple.com
Sun Jan 27 14:49:00 PST 2008
On Jan 27, 2008, at 10:09 AM, Dale Johannesen wrote:
> On Jan 26, 2008, at 11:18 PM, Chris Lattner wrote:
>> Author: lattner
>> Date: Sun Jan 27 01:18:20 2008
>> New Revision: 46412
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=46412&view=rev
>> Log:
>> Change x86-32 aggregate passing code to pass many aggregates "by
>> pieces"
>> instead of passing them with byval. This allows us to get
>> significantly
>> better code without affecting the ABI (because x86-32 passes stuff
>> on the
>> stack). Most significantly, we pass _Complex as a two scalar fp
>> values
>> now. For example, before we compiled ccosf to:
>
> Not everything is passed on the stack with -msseregparm, which doesn't
> work now but should. In that mode a _Complex is not passed the same
> as two scalars.
Right, in that case, the scalars need to be marked with the inreg
attribute though. In this case, they never will be marked with that,
so I don't think this could cause a problem. The corollary is when
you use -mregparm, which marks integer registers as inreg.
-Chris
More information about the llvm-commits
mailing list