Hi, According to the "Procedure Call Standard for the ARM Architecture", a function which returns a struct larger than 4 bytes must pass the return value in memory provided by the caller. This is true when using the base AAPCS calling convention, and the AAPCS-VFP extension when the callee is variadic. However, clang currently does not do the necessary transformation to return the result in memory when using the AAPCS-VFP calling convention, and when the struct is a homogeneous aggregate of floating-point types.
The attached patch corrects this behaviour. Note, that this change will break ABI backwards-compatibility with previous versions of clang/llvm. Oliver
arm-hfa-variadic-vfp-return.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
