I ran into an internal compiler error on the following code (I’ve tried to simplify it as much as possible) when trying to compile with -i8:
module pgi_ice
type, abstract :: abstracttype
contains
procedure(bad_interface), deferred :: bound_procedure
end type abstracttype
abstract interface
function bad_interface(this, n) result(val)
import :: abstracttype
class(abstracttype) :: this
integer, intent(in) :: n
real :: val(n)
end function bad_interface
end interface
end module pgi_ice
Compiling this gives the following:
~> pgfortran -i8 -c pgi_ice.f90
Lowering Error: array upper bound is not a symbol for datatype 65
Lowering Error: array extnt is not a symbol for datatype 65
PGF90-F-0000-Internal compiler error. Errors in Lowering 2 (pgi_ice.f90: 17)
PGF90/x86-64 Linux 13.10-0: compilation aborted
Note that if instead of compiling with -i8, I declare the argument n as integer(8) explicitly and then compile without -i8, I still get the same ICE. With no integer(8)s, the code compiles fine. It also compiles successfully with ifort and gfortran regardless of what kind the integers are.