2007-04-07 Paul Thomas <pault@gcc.gnu.org>
+ PR fortran/31222
+ * check.c (numeric_check): If an expresson has not got a type,
+ see if it is a symbol for which a default type applies.
+
+2007-04-07 Paul Thomas <pault@gcc.gnu.org>
+
PR fortran/31214
* trans-decl.c (gfc_get_symbol_decl): Allow unreferenced use
associated symbols.
if (gfc_numeric_ts (&e->ts))
return SUCCESS;
+ /* If the expression has not got a type, check if its namespace can
+ offer a default type. */
+ if ((e->expr_type == EXPR_VARIABLE || e->expr_type == EXPR_VARIABLE)
+ && e->symtree->n.sym->ts.type == BT_UNKNOWN
+ && gfc_set_default_type (e->symtree->n.sym, 0,
+ e->symtree->n.sym->ns) == SUCCESS
+ && gfc_numeric_ts (&e->symtree->n.sym->ts))
+ {
+ e->ts = e->symtree->n.sym->ts;
+ return SUCCESS;
+ }
+
gfc_error ("'%s' argument of '%s' intrinsic at %L must be a numeric type",
gfc_current_intrinsic_arg[n], gfc_current_intrinsic, &e->where);
2007-04-07 Paul Thomas <pault@gcc.gnu.org>
+ PR fortran/31222
+ * gfortran.dg/default_numeric_type_1.f90: New test.
+
+2007-04-07 Paul Thomas <pault@gcc.gnu.org>
+
PR fortran/31424
* gfortran.dg/unreferenced_use_assoc_1.f90: New test.
--- /dev/null
+! { dg-do compile}
+! { dg-options "-fdump-tree-original" }
+! Tests the fix for PR 31222, in which the type of the arguments of abs
+! and int below were not detected to be of default numeric type..
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+!
+subroutine mysub1(a,b,mode,dis)
+! integer :: mode
+! real :: dis
+ dimension a(abs(mode)),b(int(dis))
+ print *, mod
+ write (*,*) abs(mode), nint(dis)
+end subroutine
+
+program testprog
+ call mysub1((/1.,2./),(/1.,2.,3./),-2, 3.2)
+end