<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110674>110674</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang][runtime] REDUCE likely uses wrong callback signatures for COMPLEX VALUE
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
flang:runtime
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jeanPerier
</td>
</tr>
</table>
<pre>
I am removing fir.complex, and doing so, I realize that the REDUCE runtime implementation for COMPLEX is likely not correct for all targets since it uses std::complex values for the interface of the user defined function. The user function defined in Fortran is equivalent to C Complex.
This likely does not matter on aarch64 / x86-64, so I do not have a program demonstrating the issue functionally. On windows 32 bits, that would most likely cause issues.
https://github.com/llvm/llvm-project/blob/00ab44ee66dbcf0d32819dbc6e4eefd1b7c48dfa/flang/runtime/reduce.cpp#L528
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU0uP2zYQ_jXUZRBDot4HHRx7BSywRYIiKXodkiOJCUW6fHiz_fWFZHsXPeaiB8kZfo_5MAQ9W6KB1Z9Zfc4wxcX54Qeh_Upek8-EU2_DM-AKnlZ31XaGSfuDdOvF0C_GT4BWgXLbRnDb_zN4QqP_JYgLRogLwZ9P5--nJ_DJRr0S6K12JRsxamdhch5OX_74-vL0N-gARv8k8wbWRZDOe5JxP4HGQEQ_UwwQtJUEOkIKFCBExcojK493UHBFkyjsVdvt2kbyE0oCN-0LKZAHRZO2pGBKVm4wDvDtsfVYej-jLYzOR492A0j_JH1FQzZCdHCC0-3aA8vPLD_ent-WDybKUdjprBgjeXAWEL1cmgoYH-FX13xqqk254OAZlNvPLnglQLh4N3tcQdHqbIge4yb0ziqERO9Q0Zi3A3yx8Kqtcq8BSg5Cx7C13W14dckoWF2ID1gSU7i3Cf_DvsR4CZuifGR8nHVcktgMZ3w05vp4fbp494NkZHwUxgnGxzxHUVVETaOEnHJV8q7olZANVUSTKkQrq05NyPg4GbQz4-N9IrYvUknSQV4ujJcvNe8yNZSqL3vMaCha3rZd3_dVtgx9k1cFynoSU1uiwKaTbU3d1KoqJ5n3mR54zqsiz4uiLPu6OpR5q0StyqoTZVfznFU5rajNYeNxcH7OdhWGosibtsoMCjJhjwTnIs2Mc8ZPjPMb6vL4jppvmfHDLodIc2BVbnSI4aNx1NHs6brV1mdWf36U1-dHMO6O7NP86p2dQaIxAuVP2PKJMfn7PD9y8tfx5fsTZMmb4bftulnO-Hjnex34fwEAAP__y51XUQ">