<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82525>82525</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Incorrect diagnose on procedure pointer assignment target being the containing function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
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:
```
PROCEDURE(ModFun), POINTER :: ProcPtr
CONTAINS
RECURSIVE FUNCTION ModFun()
REAL :: ModFun
ProcPtr => ModFun
ModFun = 1.0
END FUNCTION
END
```
Flang currently issues an error:
```
./t.f:6:5: error: In assignment to procedure pointer 'procptr', the target is not a procedure or procedure pointer
ProcPtr => ModFun
^^^^^^^^^^^^^^^^^
./t.f:5:18: Declaration of 'modfun'
REAL :: ModFun
^^^^^^
```
I can't find anything in the standard that disallow this code.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVEtv4yoU_jV4c1TLwSaPhRe-fkiR7k2itL17DNhm5EAExzPqvx_huJ12mo40CCUiwHf4Hifce90bpXLC_iGsiviEg3V5xY1WY1kOykStlS95aY3XUjnAQUFnx9H-0KYHYaUiaUGSiiQFWSfLnJcwj9P5WNbV87kmdPuflc1kCN0RWsLpuD881WcI19MCTs6KE7rlank8PBX7w-MCvOCd6_L5_Lj_v4bm-VA-7Y8HeIXcBtS3sue6-PdWfkFfjt0OLKWApBVJ6497AMs67MIqfuNSH6q3qh9eVR-qu_Rvn83Ig0yTc8rg-ALa-0l54AaUc9Z9pV1MaINxR9JiTdKCBQqv52Fv4ObaRRkEtHB1Vig5OQVXqw0qB4Ruwo9XdIRugtjBNeSuVwjag7EI_N016z5jfPDwD4IRVv_1_I1ioLfaBmqVEiN3HLU1YLtA42JlF_zdvH_PbO89Zz-Pr6rfNWsPgodaCJ02Erh5wSGkXJtZQI_cSO4k4MARpPY8tAHgoP3cCHEk81Tu0h2PVL7aJFuWsTRbR0OuGBVZx1cbsWvT9WYtmOra7VZ2GVtnu6yNdE4TmiWUrlY7xrJ1LCRPVMoylrRJwgQnWaIuXI_xOH6_xNb10ZykfEsZZdHIWzX6uYcpbaeeUEpoSSjtQvxIWnTOGlRGhg1WRS4PMA_t1HuSJaP26H8Bo8Zx_j-Ys0tYBXsjrHNKBNK8N9YrsOZO7N7H8ha2VgX9gnjCGuTahGU3GTFbHE1uzAfEqw9m0obQptc4TG0s7IXQJjxp-Xq4OvtNCSS0ubUQoc3M_WcAAAD__3RaYTs">