mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 00:51:00 +08:00
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:
parent
660de2bae3
commit
b5c26787c4
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
24
gcc/testsuite/gfortran.dg/pointer_init_10.f90
Normal file
24
gcc/testsuite/gfortran.dg/pointer_init_10.f90
Normal 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
|
Loading…
x
Reference in New Issue
Block a user