regressions?
Dominique Dhumieres
dominiq@lps.ens.fr
Wed Oct 4 21:08:00 GMT 2006
> What does -fdump-tree-original show? It should contain something
> like
>
> D.1250 = _gfortran_fraction_r4 (a);
> _gfortran_transfer_real (&dt_parm.1, &D.1250, 4);
> }
> {
> int4 D.1251;
>
> D.1251 = _gfortran_exponent_r4 (a);
>
> These functions use libm's frexp to get the fraction and exponent.
> frexp may be expanded into a GCC builtin function or it could be
> from libm. Either case, frexp appears to be broken.
I get:
[karma] bug/failed% cat exponent_1_red.f90.003t.original
MAIN__ ()
{
static real4 a = 1.0e+0;
_gfortran_set_std (70, 127, 0);
{
struct __st_parameter_dt dt_parm.0;
dt_parm.0.common.filename = "exponent_1_red.f90";
dt_parm.0.common.line = 11;
dt_parm.0.common.unit = 6;
dt_parm.0.common.flags = 128;
_gfortran_st_write (&dt_parm.0);
{
real4 C.880 = 5.0e-1;
_gfortran_transfer_real (&dt_parm.0, &C.880, 4);
}
{
int4 C.881 = 1;
_gfortran_transfer_integer (&dt_parm.0, &C.881, 4);
}
{
real4 C.882 = 1.0e+0;
_gfortran_transfer_real (&dt_parm.0, &C.882, 4);
}
_gfortran_st_write_done (&dt_parm.0);
}
{
struct __st_parameter_dt dt_parm.1;
dt_parm.1.common.filename = "exponent_1_red.f90";
dt_parm.1.common.line = 12;
dt_parm.1.common.unit = 6;
dt_parm.1.common.flags = 128;
_gfortran_st_write (&dt_parm.1);
{
real4 D.884;
D.884 = (real4) _gfortran_iargc ();
_gfortran_transfer_real (&dt_parm.1, &D.884, 4);
}
{
int4 D.885;
D.885 = _gfortran_iargc ();
_gfortran_transfer_integer (&dt_parm.1, &D.885, 4);
}
{
real4 D.887;
D.887 = scalbnf ((real4) _gfortran_iargc (), _gfortran_iargc ());
_gfortran_transfer_real (&dt_parm.1, &D.887, 4);
}
_gfortran_st_write_done (&dt_parm.1);
}
}
No _gfortran_fraction_r4 nor _gfortran_exponent_r4.
Note that I cannot rule out that I did not applied the patch properly.
Dominique
More information about the Fortran
mailing list