This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFC patch: Add libquadmath - and use it in gfortran (round two)
- From: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- To: gfortran <fortran at gcc dot gnu dot org>, gcc patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 8 Nov 2010 18:33:15 -0500
- Subject: Re: RFC patch: Add libquadmath - and use it in gfortran (round two)
- References: <4CD85E91.9000506@net-b.de>
On Mon, Nov 08, 2010 at 09:33:21PM +0100, Tobias Burnus wrote:
> Hi all,
>
> that's an updated version of my patch at
> http://gcc.gnu.org/ml/gcc-patches/2010-11/msg00653.html
> which is in turn based on FX's patch at
> http://gcc.gnu.org/ml/gcc-patches/2010-10/msg02388.html
>
> The patch contains:
>
> a) libquadmath(.tar.bz2): __float128 math library. It exports all math
> functions with the suffix "q" ("tanq", "jnq" etc.); it also exports two
> I/O related functions with the prefix quadmath_. The library is used
> from libgfortran but can also be used from C/C++. However, there is no
> printf hook thus doing I/O from C/C++ is a bit more effort. The library
> is automatically build if language=fortran is enabled, but on systems
> without __float128 it is a no op.
>
> b) quad.diff: The changes to the toplevel Makefile.def/configure.ac to
> build libquad with language=fortran; changes to gcc/fortran to use
> __float128; changes to libgfortran to use libquadmath.
> Libgfortran automatically links libquadmath if it is available; if
> -static-libgfortran is used, the (dynamically linked) libquadmath is
> surounded by --as-needed/--no-as-needed.
>
> c) quad_gen.diff: Due to popular request, the generated files.
>
> Changes to previous patch:
>
> - Fixed several issues regarding configure. I hope that it now builds on
> Darwin and creates a DLL under Cygwin/MinGW(.org/64)*
> - It does no longer use weakrefs for the math functions
> - It uses a weakref for I/O (write_float etc.), but
> - There is now a transfer_{complex,real}{,write}128 function, whose only
> purpose is to drag in the libquadmath I/O function.
> Comments?
>
Tobias,
Where is __gfortran_transfer_real_write128 supposed to reside? I see...
[MacPro:~/gcc-4.6-20101108/libgfortran] howarth% grep gfortran_transfer_real_write128 *
gfortran.map: _gfortran_transfer_real_write128;
but there doesn't seem to be any actual code generated for that subroutine.
Jack
> Tobias
>
> $ diffstat quad.diff
> b/Makefile.def | 3 +
> b/configure.ac | 1
> b/gcc/fortran/gfortranspec.c | 38 +++++++++++++++++++
> b/gcc/fortran/trans-io.c | 49
> +++++++++++++++++++++++--
> b/gcc/fortran/trans-types.c | 8 +++-
> b/libgfortran/Makefile.am | 6 ++-
> b/libgfortran/acinclude.m4 | 51
> ++++++++++++++++++++++++++
> b/libgfortran/configure.ac | 13 +++++-
> b/libgfortran/gfortran.map | 5 ++
> b/libgfortran/intrinsics/cshift0.c | 28 +++++++++++---
> b/libgfortran/intrinsics/erfc_scaled_inc.c | 11 +++++
> b/libgfortran/intrinsics/pack_generic.c | 28 +++++++++++---
> b/libgfortran/intrinsics/spread_generic.c | 56
> ++++++++++++++++++++++-------
> b/libgfortran/intrinsics/unpack_generic.c | 56
> ++++++++++++++++++++++-------
> b/libgfortran/io/read.c | 8 +++-
> b/libgfortran/io/transfer.c | 56
> ++++++++++++++++++++++++++++-
> b/libgfortran/io/write.c | 1
> b/libgfortran/io/write_float.def | 11 +++++
> b/libgfortran/libgfortran.h | 18 ++++++++-
> b/libgfortran/m4/mtype.m4 | 2 -
> b/libgfortran/mk-kinds-h.sh | 39 +++++++++++++-------
> b/libgfortran/runtime/in_pack_generic.c | 29 +++++++++++----
> b/libgfortran/runtime/in_unpack_generic.c | 31 ++++++++++++----
> gcc/libgfortran/kinds-override.h | 46 +++++++++++++++++++++++
> gcc/libgfortran/libgfortran.spec.in | 8 ++++
> 25 files changed, 524 insertions(+), 78 deletions(-)
>
> $ diffstat quad-gen.diff
> b/Makefile.in | 467 +
> b/configure | 1
> b/libgfortran/Makefile.in | 74
> b/libgfortran/config.h.in | 3
> b/libgfortran/configure | 139
> gcc/libgfortran/generated/pow_r16_i4.c | 75
> gcc/libquadmath/Makefile.in | 1219 +++
> gcc/libquadmath/aclocal.m4 | 979 ++
> gcc/libquadmath/config.h.in | 68
> gcc/libquadmath/configure |13288
> +++++++++++++++++++++++++++++++++
> 10 files changed, 16289 insertions(+), 24 deletions(-)
>