re PR fortran/84504 ([F08] procedure pointer variables cannot be initialized with functions returning pointers)

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
This commit is contained in:
Janus Weil 2019-03-09 19:25:39 +01:00
parent 660de2bae3
commit b5c26787c4
4 changed files with 36 additions and 1 deletions

View File

@ -1,3 +1,9 @@
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

View File

@ -4321,7 +4321,7 @@ gfc_check_assign_symbol (gfc_symbol *sym, gfc_component *comp, gfc_expr *rvalue)
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;

View File

@ -1,3 +1,8 @@
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.

View File

@ -0,0 +1,24 @@
! { 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