<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/107622>107622</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang] MLIR Assertion `mayBeGraphRegion(*op->getParentRegion()) && "expected that op has no uses"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir,
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mjklemm
</td>
</tr>
</table>
<pre>
When compiling the below snippet of Fortran code, Flang stops with an assertion in MLIR:
```shell
> flang-new -O1 -c assertion.f90
flang-new: /work1/omp-nightly/build/git/trunk20.0-atd/llvm-project/mlir/lib/IR/PatternMatch.cpp:181: mlir::RewriterBase::eraseOp(mlir::Operation*)::<lambda(mlir::Operation*)>: Assertion `mayBeGraphRegion(*op->getParentRegion()) && "expected that op has no uses"' failed.
```
This happens with all optimization levels > `-O0`.
```Fortran
! assertion.f90
MODULE MODE
INTERFACE MYFUNC
MODULE PROCEDURE MYFUNC_1D
END INTERFACE
CONTAINS
FUNCTION MYFUNC_1D(INPUT) RESULT(OUTPUT)
implicit none
REAL, DIMENSION(:), INTENT(IN) :: INPUT
REAL, DIMENSION(SIZE(INPUT)) :: OUTPUT
OUTPUT(:) = INPUT(:)
END FUNCTION MYFUNC_1D
END MODULE MODE
SUBROUTINE INIT(DATA)
use MODE
implicit none
TYPE MYTYPE
REAL, DIMENSION(:,:), POINTER :: D1
REAL, DIMENSION(:) , POINTER :: RES
END TYPE MYTYPE
TYPE(MYTYPE), INTENT(INOUT) :: DATA
REAL, DIMENSION(1000) :: RES
WHERE(DATA%D1(:,1)==0)
RES(:)= 0
ELSEWHERE
RES(:) = DATA%D1(:,1) / MYFUNC(DATA%D1(:,1))
END WHERE
END SUBROUTINE INIT
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVV9v6rgT_TTmZQRKxkDIAw8pSX6_SCVBAXR192VliEt86_xRbNrtfvqV8wfSW-7uvm1Vpcp45szpORMPU0pcSs7XZPFEFv6EXXVeNevix6vkRTE5VdnH-lvOSzhXRS2kKC-gcw4nLqt3UKWoa66heoGwanTDTFrGCW4glKy8gNJVreBd6BxYCUwp3mhRlSBK2D5HKaEesXxiDc-l1f2qnEvZx2gALwZrWvJ3mCY2TM93oNmLa3V5txxCPSAYvlfNq00wrIp6WopLruUHwfB0FTIjGF6EJhjq5lq-ojWzpkybqJRvxbRuqh_8bI4LKRoTFSeCYZQSDHdMa96UW6bP-exc14R69so2Hdtc6hHqpfy9EZo3T0zxLsIbpnhSE1zds5KaN8z8BwQ9gm4XJHQjWXHK2N-nBqahd9OSLK2CfTzx_zWszlN-aTNXBL2qnhIaXLjesYaXenTkEnSB4JLgEggi_6PmZ80z0DnTUNWQMwVlBVfFFUEk6MALE5Jns598Gpt3yIWCnNU1LwfHpYSq1qIQf7b8QfI3LhUYS8nSmiYGYvZwAPpp6qNoP3J8m_jH5wC2iR90AYAoPgRp6G0C2H4Pj_FmiAP0ybs02QT-MR0Sfrf9ISeI_Xv9mBRskvjgRfH-UxAADMAhSuIRFq6ieHc8GHnTYH98PhBcJcdDF-orRVFLcRYayqrkdzSANPCezafjR9sg3kdJbLyiree4abnFh7ZD6147G9C1-weQffRbMKJmymEA6NmNEAa-fW8g1O_b3Ojcso1oD2QYCWUyvjjVPffHpzQ5HqI4gCiODLzvHUb4V8U_uftAuOHo8H1nLDV_7uR-qefmruouaT0f1PDtf1HuAjwoTYP9eJS-MBpTJbjqjzoW7c_I4KQboYGUUaWvfkTKtixrlH4jMtR8-3-QBjd1F75908Fu7xOfUN_6ZKuBuJlNfei_OAie90GH9jC1HZXHXcyVPHyUv2Ryp2AUHDUyrz9Py-cLY5KtaeZSl0342nZwsZzP0XEn-Zpmc75wHTzPqWPb3LUyd8Vsh9o25c5qYU3EGi2cW661tB3qLNyZ42TOC13QZUaRuSckc4sXTMiZWQ-zqrlMhFJXvrYtZ4k4kezEpWrXJ2K3MtCMGGK7kszbwp8063a5nK4XReaWFEqrO54WWrYLuF2aZOG3y_E_uuIn10auc61r1ToTdtsyv55m56rol-TXXdlKogiGvSpva_wrAAD__6nRR10">