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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] FunctionOpInterfaceSignatureConversion does not work for gpu::GPUFuncOp
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Even though `gpu::GPUFuncOp` does implement the `FunctionOpInterface`, the generic FunctionOpInterfaceSignatureConversion does not work in many cases:
When the entry block of the function body has more block arguments than the function type suggests, the conversion does not work (failed assertion). 
This happens as soon as one specifies "workgroup" or "private" arguments.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyckk9v1DAQxT-Ncxl15Xjj_XPIobQEcSoSIM5OMnbcOrblsbfab4-cLiAEXDhZevP85jfSU0TWeMSeyXdMPjaq5CWk_rl4syqbmjHM1_79BT3kJRSzADtwEwvb37P9_YdPX4fip6fIDhzmgAR2jQ5X9BnygtVb59kG_xQ_-oxJqwnZgTPxsBkMekx2gr-4PlvjVS4JH4K_YCIb_NsKHzK8hvQC1sOq_BUmRUgViD8yfv9t2VgR0Od0hdGF6QWC3iR9WwP1KlgUwRoS3jwqmVLJCfKi_O_-fI0IVIxByvQDfvoXGBMnrazDGRQRpprAxHkHb4BfFkuwqBjREygCCsHXN3gEijhZbZGACVGzTAolMiEgpCrFZC8qYxV-4u7eYpu538_n_Vk12LeHY9t18iR5s_S6E1Mrx_akdDvuuxM_SnXU4oyatwfd6sb2ggvRivbc8j2XfDfLWY76KLWa9IydYh3HVVm3c-6y7kIyjSUq2MuzPHWNUyM62vojhMdX2IZMiFqn1Nc_d2MxxDruLGX6lZJtdlvxVmcTk4__VwMdEvzZyKYk1y85x60ZYmBiMDYvZdxNYWViqBC35y6m8IxTZmLY0ImJYTvtewAAAP__2ecN3A">