[Bug fortran/47844] New: Pointer-valued function: Provide wrong result when dereferenced automatically after list-write
Kdx1999 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Feb 22 07:07:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47844
Summary: Pointer-valued function: Provide wrong result when
dereferenced automatically after list-write
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: Kdx1999@gmail.com
Hello,I'm trying to compile Example 15.20 in Stephen J.Chapman's book Fortran
95/2003 for Scientists & Engineers. The purpose of the function is simple:
"Return a pointer to every fifth element in a input rank 1 array".
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Code:
PROGRAM test_pointer_value
!
! Purpose:
! Test pointer valued function
!
! Record of revisions:
! Date Programmer Description of change
! 02/22/2011 KePu Original code
!
IMPLICIT NONE
! Data dictionary
INTEGER,DIMENSION(10),TARGET::array=[1,3,5,7,9,11,13,15,17,19]! Array to be
test
INTEGER,dimension(2)::arrar_fifth
INTEGER,POINTER,DIMENSION(:)::ptr_array=>NULL() ! Pointer to array
INTEGER,POINTER,DIMENSION(:)::ptr_array_fifth=>NULL() ! Pointer return every
fifth element of array
ptr_array=>array ! Initialization
ptr_array_fifth=>every_fifth(ptr_array)
WRITE(*,*)ptr_array_fifth
WRITE(*,*)every_fifth(ptr_array)
CONTAINS
FUNCTION every_fifth(ptr_array) RESULT(ptr_fifth)
!
! Purpose:
! To produce a pointer ot every fifth element in an
! input rand 1 array.
!
! Record of revisions:
! Date Programmer Description of change
! 02/22/2011 KePu Original code
!
IMPLICIT NONE
INTEGER,POINTER,DIMENSION(:)::ptr_fifth
INTEGER,POINTER,DIMENSION(:),INTENT(in)::ptr_array
INTEGER::low
INTEGER::high
low=LBOUND(ptr_array,1)
high=UBOUND(ptr_array,1)
ptr_fifth=>ptr_array(low:high:5)
END FUNCTION every_fifth
END PROGRAM test_pointer_value
------------------------------------------------------------------------------
------------------------------------------------------------------------------
The book says "The function can also be used in a location where an integer
array is expected. Inthat case, the pointer returned by the function will
automatically be dereferenced,and will print out the value by the pointer
returned from the function". But after ran the program, two result prompt on
the screen are different(The first line is right answer):
1 11
1 3
I'm not sure if it's a bug. Any help to my problem will be appreciated. Thank
you.
More information about the Gcc-bugs
mailing list