[Bug fortran/60717] New: Wrong code with recursive procedure with unlimited polymorphic dummy argument
vladimir.fuka at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Mar 31 08:53:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60717
Bug ID: 60717
Summary: Wrong code with recursive procedure with unlimited
polymorphic dummy argument
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: vladimir.fuka at gmail dot com
reported on comp.lang.fortran by Thomas Schnurrenberger
The output of the two parts of the following program should be the same, as
they are with some other compilers (tested with ifort 14). The output with 4.8
and 4.9 is:
Output of show_real:
0. 1. 2. 3. 4. 5.
0.
1. 2. 3. 4. 5.
1.
2. 3. 4. 5.
2.
3. 4. 5.
3.
4. 5.
4.
5.
5.
Output of show_generic:
0. 1. 2. 3. 4. 5.
0.
1. 2. 3. 4. 5.
2.
2. 3. 4. 5.
3.
3. 4. 5.
4.
4. 5.
5.
5.
0.
module m
!
implicit none
!
contains
!
recursive subroutine show_real(a)
real, intent(in) :: a(:)
!
if (size(a) > 0) then
print '(10f5.0)', a
print '(10f5.0)', a(1)
call show_real(a(2:))
end if
return
end subroutine show_real
!
recursive subroutine show_generic(a)
class(*), intent(in) :: a(:)
!
if (size(a) > 0) then
select type (a)
type is (real)
print '(10f5.0)', a
print '(10f5.0)', a(1)
end select
call show_generic(a(2:))
end if
return
end subroutine show_generic
!
end module m
program test
!
use :: m
!
implicit none
!
real :: array(1:6) = (/ 0, 1, 2, 3, 4, 5 /)
!
print *, 'Output of show_real:'
call show_real(array)
print *, 'Output of show_generic:'
call show_generic(array)
!
end program test
More information about the Gcc-bugs
mailing list