On 2/16/06, François-Xavier Coudert <[EMAIL PROTECTED]> wrote:
> Hi all,
>
> I'm sending this mail because I'm a bit confused about the
> -mlong-double-128 option on (for example) ppc64-linux, and its impact
> on gfortran/libgfortran.
>
> When I simply bootstrap a compiler with "configure
> --with-cpu=default32", I get a gfortran that does only have kind=4 and
> kind=8 reals (corresponding to C types float and double) by default.
> When I use this gfortran with the -mlong-double-128 option, the
> real(kind=16) floating point type is accepted at compile-time, but the
> I/O library in libgfortran doesn't know how to deal with it (since,
> when libgfortran was compiled, it did not detect that real(kind=16)
> was available), and the code fails at runtime.
>
> What should we do about that? I see a few options:
>   1. refuse -mlong-double-128 for Fortran code; easiest, but not
> exactly satisfying
>   2. build multiple instances of the library, as is currently done for
> the -m32/-m64 options
>   3. build only one instance of the library, but build it with
> -mlong-double-128 enabled, since as far as libgfortran is concerned,
> it only adds a new floating-point type.

I guess libgfortran has configury to figure out if kind=16 is available?  If
so then libgfortran should be built with -mlong-double-128, as this
should only add extra symbols that do not conflict with kind=4 and kind=8
ones.  Am I correct that for gfortran there is no such thing as long double
== double for -mlong-double-64?  If so, then this is really the way to go.

Richard.

Reply via email to