+2010-01-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/39304
+ * array.c (gfc_array_dimen_size): Use correct specific
+ function in the check.
+
2010-01-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/42736
return SUCCESS;
}
- if (spec_dimen_size (array->symtree->n.sym->as, dimen, result) == FAILURE)
+ if (array->symtree->n.sym->attr.generic
+ && !array->symtree->n.sym->attr.intrinsic)
+ {
+ if (spec_dimen_size (array->value.function.esym->as, dimen, result)
+ == FAILURE)
+ return FAILURE;
+ }
+ else if (spec_dimen_size (array->symtree->n.sym->as, dimen, result)
+ == FAILURE)
return FAILURE;
break;
+2010-01-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/39304
+ * gfortran.dg/generic_20.f90: New test.
+
2010-01-22 Michael Matz <matz@suse.de>
* gfortran.dg/vect/fast-math-mgrid-resid.f: Limit to x86, add
--- /dev/null
+! { dg-do run }
+!
+! PR fortran/39304
+!
+! matmul checking was checking the wrong specific function
+! ("one" instead of "two")
+!
+module m
+ implicit none
+ interface one
+ module procedure one, two
+ end interface one
+contains
+ function one()
+ real :: one(1)
+ one = 0.0
+ end function one
+ function two(x)
+ real :: x
+ real :: two(1,1)
+ two = reshape ( (/ x /), (/ 1, 1 /) )
+ end function two
+end module m
+
+use m
+real :: res(1)
+res = matmul (one(2.0), (/ 2.0/))
+if (abs (res(1)-4.0) > epsilon (res)) call abort ()
+end
+
+! { dg-final { cleanup-modules "m" } }