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

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Incorrect diagnose when proc-iface in a procedure declaration statement is a function that returns a polymorphic procedure pointer
        </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 test case
```
  MODULE M

    TYPE :: DT
 real :: r
    END TYPE

    INTERFACE
      FUNCTION FunI()
 IMPORT
        CLASS(DT), POINTER :: FunI
      END FUNCTION
 END INTERFACE

    INTERFACE
      FUNCTION FunRetPtr1()
 IMPORT
        PROCEDURE(FunI), POINTER :: FunRetPtr1
      END FUNCTION
    END INTERFACE
  END MODULE


  PROGRAM PrtAssignTarExpr
  USE M
  IMPLICIT NONE

 PROCEDURE(FunRetPtr1), POINTER :: Ptr1
  END
```

Flang currently issues an error:
```
./t.f:27:37: error: CLASS entity 'ptr1' must be a dummy argument, allocatable, or object pointer
    PROCEDURE(FunRetPtr1), POINTER :: Ptr1
                                      ^^^^
 ```
 
 The code seems conforming to me and the error message doesn't quite make sense to me.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVN2OszYQfRpzM9oITEjCBReUnyrSbhJl2YteGhjArbFT2_Rr3r4yIbvpdvv3RQjkY8_JmZkzZsbwXiImJPqBRLnHJjsoneRMchRZNqD0atVek0xJw1vUYAeETgmhvnHZg0VjoWEGiZ8TPyUbf3nmJcDLMX97LuBl2V5QgOqnUwEkTEmYQl4tuEYm7qD-OFsc8vn8Z479oSrOZZoVHxBA-XbIqv3xAOUk94TuCI2X7f3L6XiuHs8CZM_p6yuhu7xy52gGp-PMelcxkzxEOCn3f1hwB31S8j8kntGerA7-VejpfMyK_O1cELq7ZfY3cu-E_yx6Qf8iz4G3lj1mct89nY8_ntMXOGmbzrapmC5-v7y36u31vdPgsnjeZ_sKDsfDn-vyKZf3EnyV0WMuxSH_0mW3dymY7KGZtEZpxRW4MRMaYBJQa6Ud31fBK0JLu-pImNItCdPQvd4jbv4AlJbbKxC6vcxCtzBOxkKNwKCdxvEKTPfTiNK6DJgQqmGW1QLdUmlQ9c_YWLgoLi0-GPt7C_FffiQqPp5b3OfhXD7VgNCoFsEgjgYaJTulx3m4FYwITLbz0M9FgRGNYT1Cq9BIQrcWfp24RRjZL45BGryFrbw2Cds4jJmHSbD14yCM1_HGGxIWBHEUbKOg6TYB26zZrunaJl5HrNlttkHt8YT6dO1Tugs20S6IVnUQ11s_6KIuXncUfbL2cWRcrIT4bVwp3Xtzs5NdSGPqCVajMPN9Rmk99YRSQjNCaeccQsK000palK3biHJPJ47mqZ56Q9a-4MaaD2LLrZjvxtleJMphLxultetny1kvlUH4NqCEi1bNE-9Yg8AlsHmN7aQRWmwE08xyJcFYZtE5BbgBBt0kmxm3A7Og0U5aOvyixHVU-jLw5oFoMZA3aZEM1l6M8wYtCS17boepXjVqJLR04pfP00Ur5z1Cy9s8EFrOVfojAAD__1IIr2E">