re PR fortran/66257 (ELEMENTAL procedure pointer component XX is not allowed as an actual argument)

PR fortran/66257
gcc/fortran/
	* resolve.c (resolve_actual_arglist): Don't throw an error
	if the argument with procedure pointer component is not a variable.
gcc/testsuite/
	* typebound_call_27.f90: New file.

From-SVN: r223631
This commit is contained in:
Mikael Morin 2015-05-24 14:55:50 +00:00
parent 70e7f2a2df
commit bc0c7f396b
4 changed files with 54 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-05-24 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/66257
* resolve.c (resolve_actual_arglist): Don't throw an error
if the argument with procedure pointer component is not a variable.
2015-05-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/44054

View File

@ -1981,7 +1981,8 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype,
}
comp = gfc_get_proc_ptr_comp(e);
if (comp && comp->attr.elemental)
if (e->expr_type == EXPR_VARIABLE
&& comp && comp->attr.elemental)
{
gfc_error ("ELEMENTAL procedure pointer component %qs is not "
"allowed as an actual argument at %L", comp->name,

View File

@ -1,3 +1,8 @@
2015-05-24 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/66257
* typebound_call_27.f90: New file.
2015-05-23 Nathan Sidwell <nathan@acm.org>
PR c++/65936

View File

@ -0,0 +1,41 @@
! { dg-do compile }
!
! PR fortran/66257
! Check that typebound function calls are accepted as actual argument.
!
MODULE test_class
IMPLICIT NONE
PRIVATE
PUBLIC:: test
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
TYPE test
PRIVATE
CONTAINS
PRIVATE
PROCEDURE, PUBLIC:: E
PROCEDURE, PUBLIC:: Om
END TYPE test
CONTAINS
ELEMENTAL FUNCTION E (self, a)
IMPLICIT NONE
CLASS(test), INTENT(IN):: self
REAL(kind=dp), INTENT(IN):: a
REAL(kind=dp):: E
E = a
END FUNCTION E
ELEMENTAL FUNCTION Om (self, z)
IMPLICIT NONE
CLASS(test), INTENT(IN):: self
REAL(kind=dp), INTENT(IN):: z
REAL(kind=dp):: Om
Om = self%E(self%E(z))
Om = log10(self%E(z))
END FUNCTION Om
END MODULE test_class