fix PR 84504
2019-03-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/84504
* expr.c (gfc_check_assign_symbol): Deal with procedure pointers to
pointer-valued functions.
2019-03-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/84504
* gfortran.dg/pointer_init_10.f90: New test case.
From-SVN: r269529
+2019-03-09 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/84504
+ * expr.c (gfc_check_assign_symbol): Deal with procedure pointers to
+ pointer-valued functions.
+
2019-03-09 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/71203
if (!r)
return r;
- if (pointer && rvalue->expr_type != EXPR_NULL)
+ if (pointer && rvalue->expr_type != EXPR_NULL && !proc_pointer)
{
/* F08:C461. Additional checks for pointer initialization. */
symbol_attribute attr;
+2019-03-09 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/84504
+ * gfortran.dg/pointer_init_10.f90: New test case.
+
2019-03-09 John David Anglin <dave.anglin@bell.net>
* gfortran.dg/ieee/ieee_9.f90: Fix typo.
--- /dev/null
+! { dg-do run }
+!
+! PR 84504: [F08] procedure pointer variables cannot be initialized with functions returning pointers
+!
+! Contributed by Sriram Swaminarayan <sriram@pobox.com>
+
+module test_mod
+ implicit none
+ private
+ integer, target :: i = 333
+ procedure(the_proc), pointer, public :: ptr => the_proc
+contains
+ function the_proc()
+ integer, pointer :: the_proc
+ the_proc => i
+ end function
+end module
+
+program test_prog
+ use test_mod
+ integer, pointer :: ip
+ ip => ptr()
+ if (ip /= 333) stop 1
+end