The following code:
program abs_test1
implicit none
intrinsic cdabs
! write(*,*) cdabs((4,3)) ! Causes ICE, as well
call sub(cdabs)
end program abs_test1
subroutine sub(f)
implicit none
interface
elemental function f(x)
complex(kind(1.0d0)), intent(in) :: x
real(kind(x)) :: f
end function f
end interface
complex(kind(1.0d0)) x
x = (4,3)
write(*,*) f(x)
end subroutine sub
has an incorrect behavior when -std=f95 is specified (according to James Van
Buskirk, see
http://home.comcast.net/~kmbtib/gfortran_bugs/REF_JVB_GFTN_003.html). On
powerpc-apple-darwin, I get:
$ gfortran abs_test1.f90 && ./a.out
5.00000000000000
$ gfortran abs_test1.f90 -std=f95 && ./a.out
2.25000000000000
while on i686-mingw:
$ gfortran abs_test1.f90 && ./a.out
5.00000000000000
$ gfortran abs_test1.f90 -std=f95 && ./a.out
NaN
Another related issue: when uncommenting the commented line, the behavior is
correct without -std=f95 (error issued at compile-time), but -std=f95 causes
ICE:
$ gfortran abs_test1.f90 -std=f95 && ./a.out
abs_test1.f90: In function 'MAIN__':
abs_test1.f90:12: internal compiler error: in gfc_typenode_for_spec, at
fortran/trans-types.c:613
--
Summary: cdabs intrinsic incorrectly handled with -std=f95
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: coudert at clipper dot ens dot fr
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19575