re PR fortran/20786 (Can't use AINT intrinsic with KIND parameter)
PR fortran/20786 * iresolve.c (gfc_resolve_aint, gfc_resolve_anint ): Type conversion of the argument. gfortran.dg/aint_anint_1.f90: New test. From-SVN: r105276
This commit is contained in:
parent
4bbae09f17
commit
5dd17af574
|
@ -1,3 +1,9 @@
|
|||
2005-10-11 Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
PR fortran/20786
|
||||
*iresolve.c (gfc_resolve_aint, gfc_resolve_anint ): Type conversion
|
||||
of the argument.
|
||||
|
||||
2005-10-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* f95-lang.c (gfc_init_decl_processing): Initialize
|
||||
|
|
|
@ -105,9 +105,17 @@ gfc_resolve_aimag (gfc_expr * f, gfc_expr * x)
|
|||
void
|
||||
gfc_resolve_aint (gfc_expr * f, gfc_expr * a, gfc_expr * kind)
|
||||
{
|
||||
gfc_typespec ts;
|
||||
|
||||
f->ts.type = a->ts.type;
|
||||
f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
|
||||
|
||||
if (a->ts.kind != f->ts.kind)
|
||||
{
|
||||
ts.type = f->ts.type;
|
||||
ts.kind = f->ts.kind;
|
||||
gfc_convert_type (a, &ts, 2);
|
||||
}
|
||||
/* The resolved name is only used for specific intrinsics where
|
||||
the return kind is the same as the arg kind. */
|
||||
f->value.function.name =
|
||||
|
@ -143,9 +151,18 @@ gfc_resolve_all (gfc_expr * f, gfc_expr * mask, gfc_expr * dim)
|
|||
void
|
||||
gfc_resolve_anint (gfc_expr * f, gfc_expr * a, gfc_expr * kind)
|
||||
{
|
||||
gfc_typespec ts;
|
||||
|
||||
f->ts.type = a->ts.type;
|
||||
f->ts.kind = (kind == NULL) ? a->ts.kind : mpz_get_si (kind->value.integer);
|
||||
|
||||
if (a->ts.kind != f->ts.kind)
|
||||
{
|
||||
ts.type = f->ts.type;
|
||||
ts.kind = f->ts.kind;
|
||||
gfc_convert_type (a, &ts, 2);
|
||||
}
|
||||
|
||||
/* The resolved name is only used for specific intrinsics where
|
||||
the return kind is the same as the arg kind. */
|
||||
f->value.function.name =
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2005-10-11 Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
PR fortran/20786
|
||||
gfortran.dg/aint_anint_1.f90: New test.
|
||||
|
||||
2005-10-11 Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
PR libgfortran/24313
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
program aint_anint_1
|
||||
|
||||
implicit none
|
||||
|
||||
real(4) :: r = 42.7, r1, r2
|
||||
real(8) :: s = 42.7D0, s1, s2
|
||||
|
||||
r1 = aint(r)
|
||||
r2 = aint(r,kind=8)
|
||||
if (abs(r1 - r2) > 0.1) call abort()
|
||||
|
||||
r1 = anint(r)
|
||||
r2 = anint(r,kind=8)
|
||||
if (abs(r1 - r2) > 0.1) call abort()
|
||||
|
||||
s1 = aint(s)
|
||||
s2 = aint(s, kind=4)
|
||||
if (abs(s1 - s2) > 0.1) call abort()
|
||||
|
||||
s1 = anint(s)
|
||||
s2 = anint(s, kind=4)
|
||||
if (abs(s1 - s2) > 0.1) call abort()
|
||||
|
||||
|
||||
end program aint_anint_1
|
||||
|
Loading…
Reference in New Issue