<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/116567>116567</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Compilation error when subroutine is declared in interface-body in ancestor module and subroutine is declared in generic interface block in submodule
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ohno-fj
</td>
</tr>
</table>
<pre>
```
Version of flang-new : 20.0.0(7111d031f19ce7d523796b4812d6afcb2958b025)/AArch64
```
When `subroutine (f2) `is declared in `interface-body` in `ancestor module` and `subroutine (f2)` is declared in `generic interface block` in `submodule`, a compilation error occurs.
The following are the test program, Flang-new, Gfortran and ifx compilation/execution result.
sngg451h_2.f90:
```fortran
module m
implicit none
interface
module subroutine sub(xv)
integer::xv
end subroutine sub
module subroutine f2(k1)
integer,intent(in)::k1
end subroutine f2
end interface
end module m
submodule (m) xx
implicit none
interface gen2
procedure f2
end interface
contains
module subroutine sub(xv)
integer::xv
call gen2(xv)
end subroutine sub
module procedure f2
if (k1/=2) print *,101
end procedure f2
end submodule xx
program main
use m
call sub(2)
print *,'pass'
end program main
```
```
$ flang-new sngg451h_2.f90
error: Semantic errors in sngg451h_2.f90
./sngg451h_2.f90:15:13: error: Procedure 'f2' is referenced before being sufficiently defined in a context where it must be so
interface gen2
^^^^
$
```
```
$ gfortran sngg451h_2.f90; ./a.out
pass
$
```
```
$ ifx sngg451h_2.f90; ./a.out
pass
$
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zYQ_TX0ZRBDHEm2ddDBm9S9FmjRHguKHEnclUiDpBLvvy-oD9uRk3ZbNBAUa0i-x3nzJbzXjSEqWf6F5S8bMYTWutK2xj7VXzeVVd9LtkvmJ3lhyfF3cl5bA7aGuhOmeTL0Biw9AibbZJswPOw55ypJec0LSXuVY7ovdlV24Kh2opYVFvmhSjBnWDA8HY9OtrtsAl9xTe8_WjLAdokfKmeHoA0Bw0ONDIto1h4UyU44UqDHjdoEcrWQ9BQdYLtktgsjyQfroLdq6CguCKM-gR6PPUA3ZMhpCVcKqDorv904_FBd0Rk-gwBp-7PuRIiikXPWgZVycH577-NvLUFtu86-adOAcAShJQjkA5ydbZzoI9hpETx-_FxbF5wwow-6vtwTMTzRheQwkjryQxfe0XnTNFnO2z9xWxcJS48r-WfoyTr5A_30BaD7c6elDmCsoatxEWQxwKwy3Gnrh4rh4fIa5b1um8425OI10uPldV4io9Zn_wY6xuzwjd-QF1B8jr9MYHjQJi6PLN_4DWxFVOOyFBdWfkXTez1mQZewx_zpY2ZeLj-mFzRkFsazs5LU4P7hEtKaILTxy5YfFPpjmQFAiq6brrE682kIZsaP7guga5hjcWLpy1imZ6dNAIZHhs884ff4jxgz68yx6Di952KAXmizoAz-LjlHXyb38ebJPT_D_Vl4z3B_o3uE_bATrY2Y3fXAVU1N2LHeY3P8lXphgpZTB_CxWXy0f8vw9FCbPI-vNMJc8X65qsZwH3N_H5uVo5ocGUkKKqqtI6go9hM_1LWWmkzovoOiWpupocXmZAJdAry15Ah0gH7wASoCb-_q6CFR7_9Y_tPtWXT5dyI2Sytb-_4FoiJia4ewRDKG7r-xxB75fxBsVJmqIi3Ehkq-T_mhSLMi3bSlFCLDXGZFUgmpipSEUkVWKUKZF5XkG11ighnn_JDwlKfpNksOdV4UO5K5UoQFyxLqhe62Xffab61rNtr7gUrOd_luv-lERZ0fhzXimHksPdYuxtAohhhHuCvj2adqaDzLkk774G9oQYduHPbjJGH5Czw_TKe3OG7vqn41BN8P1zGL3o_VcR59fv6TCTpWxFL0m8F1ZRvC2cdmhSeGp0aHdqi20vYMT9Gf-d_T2dmvJAPD0yiVZ3ia1Xot8a8AAAD___ehqYg">