re PR fortran/36526 (pointer in pure function)

2008-06-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/36526
	* interface.c (check_intents):  Correct error where the actual
	arg was checked for a pointer argument, rather than the formal.

2008-06-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/36526
	* gfortran.dg/proc_formal_proc_2.f90: New test.

From-SVN: r137125
This commit is contained in:
Paul Thomas 2008-06-25 23:04:33 +00:00
parent 0edb82cb9f
commit 811d3cd3df
3 changed files with 59 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2008-06-25 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36526
* interface.c (check_intents): Correct error where the actual
arg was checked for a pointer argument, rather than the formal.
2008-06-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34371

View File

@ -1,3 +1,8 @@
2008-06-25 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36526
* gfortran.dg/proc_formal_proc_2.f90: New test.
2008-06-25 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/compile/20080625-1.c: New testcase.

View File

@ -0,0 +1,48 @@
! { dg-do compile }
! Tests the fix for PR36526, in which the call to getStrLen would
! generate an error due to the use of a wrong symbol in interface.c
!
! Contributed by Bálint Aradi <aradi@bccms.uni-bremen.de>
!
module TestPure
implicit none
type T1
character(10) :: str
end type T1
contains
pure function getT1Len(self) result(t1len)
type(T1), pointer :: self
integer :: t1len
t1len = getStrLen(self%str)
end function getT1Len
pure function getStrLen(str) result(length)
character(*), intent(in) :: str
integer :: length
length = len_trim(str)
end function getStrLen
end module TestPure
program Test
use TestPure
implicit none
type(T1), pointer :: pT1
allocate(pT1)
pT1%str = "test"
write (*,*) getT1Len(pT1)
deallocate(pT1)
end program Test
! { dg-final { cleanup-modules "TestPure" } }