Commit 68d8db77 by Janus Weil

re PR fortran/44718 (Procedure-pointer name is wrongly regarded as "external procedure")

2010-06-29  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/44718
	* resolve.c (is_external_proc): Prevent procedure pointers from being
	regarded as external procedures.

2010-06-29  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/44718
	* gfortran.dg/proc_ptr_28.f90: New.

From-SVN: r161569
parent 4d64faec
2010-06-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/44718
* resolve.c (is_external_proc): Prevent procedure pointers from being
regarded as external procedures.
2010-06-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/44696
* trans-intrinsic.c (gfc_conv_associated): Handle polymorphic variables
passed as second argument of ASSOCIATED.
......
......@@ -2259,6 +2259,7 @@ is_external_proc (gfc_symbol *sym)
&& !(sym->attr.intrinsic
|| gfc_is_intrinsic (sym, sym->attr.subroutine, sym->declared_at))
&& sym->attr.proc != PROC_ST_FUNCTION
&& !sym->attr.proc_pointer
&& !sym->attr.use_assoc
&& sym->name)
return true;
......
2010-06-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/44718
* gfortran.dg/proc_ptr_28.f90: New.
2010-06-29 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/43801
......
! { dg-do compile }
!
! PR 44718: Procedure-pointer name is wrongly regarded as "external procedure"
!
! Contributed by John McFarland <john.mcfarland@swri.org>
MODULE m
IMPLICIT NONE
CONTAINS
FUNCTION func(x) RESULT(y)
INTEGER :: x,y
y = x *2
END FUNCTION func
SUBROUTINE sub(x)
INTEGER :: x
PRINT*, x
END SUBROUTINE sub
SUBROUTINE use_func()
PROCEDURE(func), POINTER :: f
INTEGER :: y
f => func
y = f(2)
END SUBROUTINE use_func
SUBROUTINE use_sub()
PROCEDURE(sub), POINTER :: f
f => sub
CALL f(2)
END SUBROUTINE use_sub
END MODULE m
! { dg-final { cleanup-modules "m" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment