The source of the bug is some kind of internal naming conflict between type(debug_t) :: debug and procedure(base_debug), deferred :: debug.
module base_m
type debug_t
end type debug_t
type(debug_t) :: debug
type, abstract :: base_t
contains
procedure(base_debug), deferred :: debug
end type base_t
abstract interface
subroutine base_debug(this)
import base_t
class(base_t) :: this
end subroutine base_debug
end interface
end module base_m
module derived_m
use base_m
type, extends(base_t) :: derived_t
contains
procedure :: debug => derived_debug
end type derived_t
contains
subroutine derived_debug(this)
class(derived_t) :: this
end subroutine derived_debug
end module derived_m
$ nvfortran --version
nvfortran 26.1-0 64-bit target on x86-64 Linux -tp icelake-server
NVIDIA Compilers and Tools
Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
$ nvfortran -c repro.F90
ILM file: can't find intrinsic ..sqrt
NVFORTRAN-F-0000-Internal compiler error. Errors in ILM file 1 (repro.F90)