[fortran,patch] Higher-level access to floating-point builtins
Tobias Burnus
tobias.burnus@physik.fu-berlin.de
Fri Jun 11 15:40:00 GMT 2010
Hi Fabriçe-Xavier,
FX wrote:
> In the front-end is deeply hardcoded the universal truth that
> real(kind=4) corresponds to the C "float" type, real(kind=8) to
> the C "double", and that one and only one of real(kind=10) and
> real(kind=16) exists, which corresponds to the "long double" type.
> [...] The goal of this patch is to get rid of this, in order to:
> 1. simplify the code
f95-lang.c | 3
mathbuiltins.def | 17 +
trans-intrinsic.c | 506 +++++++++++++++++-------------------------------------
3 files changed, 182 insertions(+), 344 deletions(-)
That looks good - I always like code-size reductions.
> 3. have only one place to change to introduce new floating-point
> types, such as __float128
Nit:
+ /* For now, we assume that if real(kind=10) exists, it is long double.
+ Later, we will deal with __float128 and break this assumption. */
I think that should be kind=16.
> Bootstrapped and regtested on x86_64-linux (both 32 and 64-bit, with LTO).
> OK to commit?
Looks fine to me - and it is certainly better not to assume the
real(kind=4/8/(10,16)) = C's float/double/long double correspondence.
Tobias
More information about the Fortran
mailing list