It seems that when a type-bound procedure has the same name as an intrinsic procedure, the intrinsic procedure becomes hidden and unavailable. I don’t think this is the proper behavior per the Fortran 2008 standard. ifort, gfortran, and xlf all handle type-bound procedures that have the same name as intrinsics without hiding the intrinsics.
As an example, the following program did not work for me (using pgf90 13.10 on Linux):
program pgi_hideintrinsic type :: d integer :: value contains procedure :: size => d_size end type integer :: array(5,5) print *, size(array,1) contains subroutine d_size() end subroutine d_size end program pgi_hideintrinsic
This code gives me the following error:
~> pgfortran pgi_hideintrinsic.f90 PGF90-S-0187-Too many arguments specified for d_size (pgi_hideintrinsic.f90: 11) PGF90-S-0000-Internal compiler error. size_of: bad dtype 0 (pgi_hideintrinsic.f90: 11) PGF90-S-0000-Internal compiler error. size_of: bad dtype 0 (pgi_hideintrinsic.f90: 11) 0 inform, 0 warnings, 3 severes, 0 fatal for pgi_hideintrinsic