[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