Before I submit it officially for review, I want this patch to get some 
exposure while I clean up a few remaining dusty corners. To test the patch on 
x86_64-linux, proceed as follows:

  -- Get libquad from http://quatramaran.ens.fr/~coudert/tmp/libquad.tar.bz2 , 
then ./configure --prefix=/foo && make && make install 
  -- Build GCC with the extra configure argument: --with-quad=/foo (to be given 
to the toplevel configure command, like --with-gmp, nothing fancy)

Things to test in particular:

  -- I've tested this on linux and Mac OS; although it's pretty much 
OS-insensitive, does it work on things like FreeBSD and Windows?
  -- check carefully I/O support; in particular, the "output formatting" (i.e. 
writing out the values) involves a wrapper of my own around the gdtoa code, 
which was a bit painful to write, so bugs might have crawled in there


Things that do not yet work, or may change:

  -- this is only for platform that support __float128 (targets without TFmode 
would break); I'm working on an updated front-end patch as proposed by Andrew 
and Tobias

  -- I realized that the exponentiation builtins are not properly handled by 
the front-end (all exponentiations involving __float128 or its complex 
counterpart give wrong code); I'll work on a fix

  -- Array intrinsics *do not work at all*. This is a limitation of the array 
descriptor structure, which I cannot overcome by myself. The current patch only 
changes these files (in_pack_generic.c, in_unpack_generic.c, pack_generic.c, 
spread_generic.c, unpack_generic.c, cshift0.c) to make them compile, but they 
will yield wrong results.

  -- the integration of libquad depends on how the discussion with the SC turns 
out; the current scheme is not nice at all in case of multilibs, see below

Please note: in case of a multilib build, unless you have a system which 
supports fat libraries (MacOS), only the variant that corresponds to the 
libquad you've built will have support enabled. Typically, on a x86_64 system 
where you've built libquad with the default 64-bit compiler, you'll only have 
libquad support in the -m64 variant of libgfortran, and not the -m32 variant.



All comment are of course welcome. I think the two preliminary commits allowed 
to keep the size of this final patch to a reasonable value under 1kLOC (less 
than 600 without regenerated files).

FX

Attachment: full_testing.diff
Description: Binary data

Reply via email to