[llvm-commits] [llvm-gcc-4.2] r86892 - /llvm-gcc-4.2/trunk/gcc/llvm-abi.h

Bob Wilson bob.wilson at apple.com
Fri Dec 11 16:14:33 PST 2009


On Dec 11, 2009, at 2:02 PM, Rafael Espindola wrote:

>> I don't know.
>> 
>> Honestly, I think those choices may be the least of your worries.  If llvm-gcc is going to figure out exactly how each argument will be passed, there are a lot of details to get right.  If you can come up with something that works with APCS, AAPCS, and AAPCS-hardfloat, preferably both big- and little-endian (watch out for structure padding differences with those), and passes the GCC ABI compatibility testsuite, I don't much care how you do it.
>> 
>> If I don't get pulled into other work, I'll probably go ahead with the "byval" implementation.  That would at least give you a baseline to compare against.
> 
> Just to be explicit, the above case with a char[5] should expand to
> 
> %struct.foo_part = type { i8 }
> declare arm_aapcscc void @f(i32, i32, i32, i32, %struct.foo_part* byval)
> 
> I am happy to do as much testing as needed, but I will try to fix just
> pr5406 first.
> 
> Can you provide some details on how do I run the "GCC ABI
> compatibility testsuite" for APCS, AAPCS, and AAPCS-hardfloat? I will
> make sure I don't introduce a regression on it.

See llvm-gcc-4.2/gcc/testsuite/README.compat.



More information about the llvm-commits mailing list