This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
RE: [libffi testsuite] Set -ffp-contract=off for libffi.call/many.c
- From: "James Greenhalgh" <james dot greenhalgh at arm dot com>
- To: "James Greenhalgh" <James dot Greenhalgh at arm dot com>, <libffi-discuss at sourceware dot org>
- Cc: "'Anthony Green'" <green at moxielogic dot com>
- Date: Fri, 19 Apr 2013 11:01:39 +0100
- Subject: RE: [libffi testsuite] Set -ffp-contract=off for libffi.call/many.c
- References: <1365413805-5517-1-git-send-email-james dot greenhalgh at arm dot com>
*ping*
> -----Original Message-----
> From: James Greenhalgh
> Sent: 08 April 2013 10:37
> To: libffi-discuss@sourceware.org
> Subject: [libffi testsuite] Set -ffp-contract=off for
> libffi.call/many.c
>
>
> Hi,
>
> A recent patch fixed libffi.call/many.c to check that the absolute
> value of the difference of its two test results was smaller than
> FLT_EPSILON,
> rather than just checking their difference.
>
> Sadly, this exposes a problem with the testcase for targets with
> a fused-multiply-add instruction. After inlining the non-ffi function
> body, GCC will happily contract the final multiply with the subtract
> for the comparison. Thus skipping the rounding step after the multiply
> and causing an error large enough to cause the test to fail.
>
> Fixed by adding -ffp-contract=off to the list of dg-options thus
> suppressing the introduction of fused-multiply-add.
>
> Tested on aarch64-none-linux-gnu to ensure the failure becomes
> a pass.
>
> Thanks,
> James Greenhalgh
>
> ---
>
> 2013-04-08 James Greenhalgh <james.greenhalgh@arm.com>
>
> * testsuite/libffi.call/many.c: Set -ffp-contract=off.