<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/81176>81176</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
flang-new OpenMP reduction compiler crash
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
keidavis
</td>
</tr>
</table>
<pre>
Reproducer below
flang-new -fopenmp -c -o ompmod.o ompmod.f90
llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From&) [with To = fir::ReferenceType; From = mlir::Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
Interestingly, if the array size is made explicit (e.g. replace len with 10) it gives a sensible error instead of a crash:
llvm-project/flang/lib/Lower/OpenMP.cpp:1129: not yet implemented: Reduction of some types is not supported
MODULE ompmod
USE omp_lib
IMPLICIT NONE
PRIVATE
CONTAINS
SUBROUTINE ompmods(len, fa)
INTEGER, INTENT(IN) :: len
double precision, INTENT(OUT) :: fa(len)
double precision, DIMENSION(:), ALLOCATABLE :: ary
!$omp parallel &
!$omp reduction(+:fa)
ALLOCATE(ary(len))
!$omp barrier
DEALLOCATE(ary)
!$omp end parallel
END SUBROUTINE ompmods
END MODULE ompmod
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VE2PozgQ_TXOpdQR2PmAAwfytUJKk1aanuvK4CLxrsHINt2b_fUrO9OTpHdmckCEelX1_Oq5uLXy1CNmZL4i882Ej-6sTfY3SsHfpZ3UWlyyIw5Gi7FBAzUq_UGiDYny67NVvD899fgBT60esO8GeGrgSYPuhk6L6Y-XNo3u85R6754Go__CxhG6838J3cm-UaPA24fXcRi08Yg1t072p-mZsHy-WBCWg8BGucuAhCZ8dJrQFEIaywnLG24doUmje-tgZ3RH6MIjyHz1Id0ZKg2EbaCV5oo_YosG-wYrX5GtQk6AdOoTE0Lzje-dW4vGSd0DWUTScsLWlSZsS2jyjavQyPdbAKE0UGHr6nKN-yA3p7HD3oFuQfaN7gbuZK0QrueJCaWELqHlUqGY3gtX9A4NBi3UhdA1yBbcGYEbwy9g5b8I0kLHBQL-MyjZSAeEJjg9TcHgoHiDoLCHIEIceTLSwUm-owUOFnsbeKAx2oDsrUMuPEsOjeHWq_-bMQY3-OnJmtDdXn-gIXR3GLB_fpk2w0BYHsc09QL22sEFHchuUOilQOE_H1GMTdBVt2B1d1XE-jP5DHv1A4p7Etfn82Hztt9-t9t9AADg7TVE_vTEvoSK55d9sS4qKA_l9iH4ciy-5dXDt_WhrPKifH0s8vq2Oh7eqqL8bG8JTRT2fjwtJzR9gBdltf1je_RB_1pWhCZFGSwTXObHc6Mn9OjnMRhspJW6f0g7vFV3eb7VtW36-_xN8bwtX4tD6d3Ico-na8j3-8M6r_LVfvtZkZvLg9DemDPdDTBww5VCBY-_YPgvUADzOdNg_hVheRAFvk7iOwF_R3zjH2d51O9WuebGSDT_q7PZfq30iwLYi9tJHqtsy83PxnqH8Yhfeu7-OREZEylL-QSzeBktZ3G6WLLJORPpMk2EwDlnnC0oRR6xOE1EkyzjZNGKicxoRGcRjZI4jWeMTeO65iKdtw3WQiCbk1mEHZdq6u_hVJvTRFo7YpbE8XIxUbxGZcNqp9Sv6BD0q2W-mZgs3N16PFkyi5S0zt6qOOkUZrfdfr3Bt0GC31hSobkuhcloVHZ2brDBTTtCdyfpzmM9bfze_VzmX5ZFYGMJ3QW2_wUAAP__7I7s3g">