https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114475
Bug ID: 114475
Summary: [14.0 Regression] Regression with iso_c_binding and
submodules
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: juergen.reuter at desy dot de
Target Milestone: ---
Between ca. March 18 and March 25, a regression has been introduced into the
gfortran 14.0.1 code, which makes the following valid code fail to compile, cf.
below:
gfortran -c t1.f90
t1.f90:28:13:
28 | submodule (t1) t1_s
| 1
Error: Variable ‘n_external’ cannot appear in the expression at (1)
It would be cool if that could be fixed before the release of gcc 14.1 which I
believe is very soon.
module t1
use, intrinsic :: iso_c_binding !NODEP!
implicit none
private
public :: t1_t
integer :: N_EXTERNAL = 0
type :: t1_t
contains
procedure :: set_n_external => t1_set_n_external
end type t1_t
abstract interface
subroutine ol_eval (id, pp, emitter) bind(C)
import
real(kind = c_double), intent(in) :: pp(5 * N_EXTERNAL)
end subroutine ol_eval
end interface
interface
module subroutine t1_set_n_external (object, n)
class(t1_t), intent(inout) :: object
integer, intent(in) :: n
end subroutine t1_set_n_external
end interface
end module t1
submodule (t1) t1_s
implicit none
contains
module subroutine t1_set_n_external (object, n)
class(t1_t), intent(inout) :: object
integer, intent(in) :: n
N_EXTERNAL = n
end subroutine t1_set_n_external
end submodule t1_s