<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/138915>138915</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Missing diagnostic on missing DEFERRED attribute
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following code:
```
module m1
type:: base
integer :: id
contains
procedure, nopass :: print1 => printbase
end type
type, extends(base), abstract :: child
contains
procedure(printif), deferred, nopass :: print1
end type
interface
subroutine printif()
end subroutine
end interface
contains
subroutine printbase()
print *,"hello"
end subroutine
end module
```
`print1` in type `child` has the `DEFERRED` attribute but its overridden `print1` in type `base` does not.
This usage should be diagnosed.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U81u9CgQfBp8aWXUxv8HH7zjmdteon0BbNo2KwZGgLObt_-E7ckk-fJJlgxFU9VVgPBezYaoZcVfrOgTsYbFurYXRpE-nxcyyWDle3u2xitJDsJCMFmt7X_KzDBaSSzrGHasxOPD7mblqgluKcMOAML7fSvKOhiEpx0EAGUCzeTgWFMyrozWBKGM_6i6OzuSXB0xfgZj78L7x467UyakwLKeZZd99hQgI3dljO3tQ34G-j-QkZ7xeivlTQTF4IMTY3gQj4vScqf53M-nVupNTU0HgaSJnCMZxz82-WNPMQA3ifEZiV8HZ9egDMGHQB01HgWR4Vn0ZP1MxbD7muJ31t35F94NB8Y7xs-M84W0tozzuP6bZAT2I_527vv0MFwiKLO5BVbinmiJsAi_3SFWYn-5Xl5fL32ERQhODWsgGNYAKniwb-SckpIM_Il081EiSEsejA0nht0_i_KwejET-MWuWsJAIJWYjfUkT4lsM9lkjUioTau8LLO6aTBZ2owqxDIb8hpxQkrLqsK8oHzABkts0kS1HHmBBVZpxZsCT3mGUyXkVOLAs1HULEe6CaVPWr_dTtbNifJ-pTbN6iYtEi0G0n57Z5xPWpiZZd3krIn3MUZd9Ilr496XYZ09y1ErH_yTLaigt3e6by56-Ft5H1_hYS-oEayB24E-4n1mm6xOt0sIdx_vJr8yfp1VWNbhNNob49codfxe7s7-S2Ng_Lq58IxfDyNvLf8VAAD__wC8Tz0">