Hi,
I discovered a problem with gfortran 4.3.1 when compiling code with pure
function with pointer argument. Inside the pure function, the argument is
passed further to an other function. This seems to work, as long this other
function is an intrinsic function, but seems to fail for user defined pure
functions. The effect is demonstrated by the code below.
Best regards,
Bálint
--------------------------------------------------------
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)
!t1len = len_trim(self%str) ! <- this would work
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
------------------------------------------------------
--
Summary: pointer in pure function
Product: gcc
Version: 4.3.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: aradi at bccms dot uni-bremen dot de
GCC target triplet: x86_64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36526