+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
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 =
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 =
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
gfortran.dg/csqrt.f: New test.
--- /dev/null
+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
+