<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">