On 6/3/2015 11:39, Thomas Quinot wrote:
> Patch looks good to me. The story with floats is that on FreeBSD, the
> i386 FPU is set to 53-bit floats, but the GNAT runtime library always
> issues a "finit" instruction to reset it to full precision, so we need
> to reset TARGET_96_ROUND_53_LONG_DOUBLE to 0.

I have this fixed in an interesting way on gnat-aux.  I found that
setting TARGET_96_ROUND_53_LONG_DOUBLE affects other front ends, so you
have to choose which one you want to be correct, GNAT or the C (or
whatever, can't remember which ones were affected now)

My solution was to create two common backends, one for gnat and one for
the others.  An example of the main patch is here:

https://raw.githubusercontent.com/jrmarino/draco/master/misc/flux5/patch-gcc_Makefile.in

(note the new s-modes-ada target)

and then this patch is needed:

https://raw.githubusercontent.com/jrmarino/draco/master/misc/flux5/patch-gcc_ada_gcc-interface_Make-lang.in


With those modifications, all the ACATS tests pass on i386 and the other
front ends work as expected.

I don't know if such a modification would ever be considered for GCC but
I've been running it for a couple of years with no reported problems.

John

Reply via email to