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

Rafael Espindola espindola at google.com
Fri Dec 11 14:02:04 PST 2009


> 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.

Cheers,
-- 
Rafael Ávila de Espíndola




More information about the llvm-commits mailing list