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