<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/82005>82005</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Incorrect diagnose on procedure pointer dummy with corresponding actual being a function that returns a procedure pointer
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang:frontend,
            flang,
            flang:semantics
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DanielCChen
      </td>
    </tr>
</table>

<pre>
    Consider the following code.
```
  PROGRAM main
    INTERFACE
 integer FUNCTION IntF(Arg)
        integer, INTENT(IN) :: Arg
      END FUNCTION
    END INTERFACE
  PROCEDURE(IntF) :: ExtFun

  CALL IntSub(IntFun1(ExtFun))

  CONTAINS

  FUNCTION IntFun1(Proc)
 PROCEDURE(IntF) :: Proc
  PROCEDURE(IntF), POINTER :: IntFun1
 IntFun1 => Proc
  END FUNCTION

  SUBROUTINE IntSub(ProcPtr0)
 PROCEDURE(IntF), POINTER :: ProcPtr0
  END SUBROUTINE

  END
 ```
  
  Flang currently issues an error as:
  ```
   error: Actual argument associated with procedure pointer dummy argument 'procptr0=' must be a pointer unless INTENT(IN)
    CALL IntSub( IntFun1(ExtFun))
 ^^^^^^^^^^^^^^^

```

It seems the diagnose here is incorrect. The code is conforming and should be compiled successfully.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVO2O4jgQfBrnT2tRcCYQfuRHloQT0l4YMcwDGKchPjk28sftzdufbAIZ2NuRDlmA213d1aWymbXirBBLkn8neZ0w73ptypopgXK97lElR919lGutrOjQgOsRTlpK_VOoM3Dd4YykNUkrskjHFbcAr_vdH_vqTxiYULcYwLY9NPtNtW7GkFAOz2hg896uD9tdC1vlNoQWlTkTuppw4TPmErqOZdoDocW2JXQFJKtIVkEAfUI0bX2vO8VD9JlFILtu6vd9E0pGBveizT9u48cJbunr6sePwPTNH0eAV3NCizGXru7c74hde6i27dtj9GHqa4lXo_k0-Re8YuLv6QeVXndx0Bvi1uQKGndAsppkzUO5X4W7nby9f9_v3g_btpnGD8hXZ9IvWf8HnTvuU9ep_mPfpq3Hv7_47K6lZMGR3hhUTn6AsNajBaYAjdEGmA19b6DnKtekaCLuPJPAzNkPqBwwazUXzGEHP4Xr4WI0x84bhIsOjjTQ-WH4mACELkPOJYyW1YQuYfDWwRGB3SFeSbT2ycaTRx_9BV8ZDEje_I_1SdUnDa7fWwcWcbDxoneCnZW2CD0aBGFBKK6NQe5mcOgxXv8Q5lqdtBnCi8BUB7bXXnZhYK6Hi5DYgfWco7UnL-XHLOnKrFtlK5ZgOV-mRbpa5cU86csU-Wlx4vSlYywrXpYrhqeCssWcMT4vWJGIkqb0JaXzxXyRLub5bMEWK5rmuMyPC4ZpQV5SHJiQMyn_HmbanJNog7KgaZonkh1R2vjWUXoKfiFZdTJaOVQdoZTQ9f3gcZdVFgemnOA2nOR1YsrQ4tvRny15SaWwzk5NnXAyvqnRlCSvYXtTbhJVq996KRotAuxFqy4Ke7XlEeMGTl5xJ7QC1zMHBp03ygaDPVdMvJFl79wl2p9uCN2chev9ccb1QOgmcB5_vl2M_gu5I3RzvTyEbqJw_wYAAP__Y6zM8Q">