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.