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