<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/124829>124829</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] Failure at `fir.convert` when a procedure pointer points to an external function with character type result
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:fir-hlfir
</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
IMPLICIT NONE
INTERFACE
CHARACTER(1) FUNCTION FOO()
END FUNCTION
END INTERFACE
PROCEDURE(FOO), POINTER :: ProcPtr
CONTAINS
SUBROUTINE SUB()
ProcPtr => foo
END SUBROUTINE
END
```
Flang fails at
```
error: loc("/home/cdchen/temp/t.f":13:5): 'fir.convert' op invalid type conversion'!fir.boxproc<() -> ()>' / 'tuple<!fir.boxproc<() -> ()>, i64>'
error: verification of lowering to FIR failed
```
All ifort, gfortran and XLF compiled the code successfully.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMU02PozgQ_TXmUurIlPMBBw4Mgd1IM9Bi0tJeHWOCV46NbJOe_vcr05np1uxlpEh26uPx6tUz915djZQF2X0hu2PClzBZVxy5UVJX1SRNcrHDW1FZ49UgHYRJwmi1tq_KXEHYQRJWElqSPX38aAnw3Hd_9eU3uHFl1sDp2_PXU3U6Q9u1dSxfg-257puyigGo_i77sjrXPcEsJZhD89JW51PXQtN1BDOC-doEULfHX8k1FAOfsWLwue-q-vjS1wSzFSAnWMFzt9ZB5MwiT2fFc3A_CVVdey5P7ff1z_eXL333cj61dbx-MHj0AGFHwmoYrf1F4qPlJ2LdHn8Th9Cy0dxcYeRKe-Dht7x0zrpITluxfhQJNpO9SYKNGMQkDcEmyNscj80Y86xMGWHlLhJkJRA8jMpthDV36QLBA9gZlLlzrQYIb7OE95RX1hA8EExj-cX-mJ0VhFXvo8JTnO4xNqsjDMEmgodl1nKt-7PGCtR--w7xeb67dGpUggdlDdgRtH2VLpoqWGhO_aqPHP6vXqk1qNHGySq4xovjBrgZ4J-vDQh7m2PfatRoT_CLENL7cdH6bZMMBRtylvNEFumBZTTfHhgmU5FzkTMcGZWC8yHf78U2OxxSxkY6sHTYJqpAijuaYoaU7hhuMKMcxZbSfcqy_DCSLZU3rvRG6_ttY901Ud4vskhxm2GeaH6R2q_vDHGMDiCsHJV7mvSoXFzj7pi4IjY_XZarJ1uqlQ_-Ay6ooNeHuvqH7I7QcKUXJ4EHIHv6eel7Cq-TNMAh7kYOsWq2ygTp3k8fZeYG5I8gneEaxsWIdRWvKkwgJu64iNWrYZz0iw7J4nQxhTD7-H6wIdhcVZiWy0bYG8EmMn0cT7Oz_0oRCDarCp5g8xDiXuB_AQAA__8KMVEI">