<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150975>150975</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang][OpenMP] Lowering crashes for composite do simd constructs with private clause
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
mrkajetanp
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mrkajetanp
</td>
</tr>
</table>
<pre>
After recent changes to the lowering of composite do simd constructs, programs like the following no longer ignore the simd information.
```
program main
integer, allocatable :: tmp
allocate(tmp)
!$omp do simd private(tmp)
do i=1, 10
tmp = tmp + 1
end do
end program
```
Instead, they crash with:
```
error: loc("/repr.f90":4:9): 'omp.wsloop' op loop wrapper does not contain exactly one nested op
error: verification of lowering to FIR failed
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8U92OtDYMfZpwY30jMDAMF1ywHY20UqtWfYOQGMhuiKMkM9N9-yrs7E_3ohJSgu1zfKzjyBjN4ogG0T4JxC28yhdK0nmBKNpzIa9p5TB8xYuJ9dswzokCBFLkEqhVuoUiJIa0Eli-UzBuAZ5B8eY5mkSgGaLZNCh2MYWrSlHgb-ADL0FuEax5pR09s7V8z3DHYNktFMAsjsN7eucwbuawyWTYHUQ5imP5-MrxQQibNE6UIxiXaKGQe0lrWckkJ0sg6lHUI6TN56KPFAk85RD2e1RgJbDhzX-K98HcfpZpBiPqc5VbVOUOhEwMoj6_n_gE1R4np0GzKMd8eSj9of_ZxURSZ7K00huoIOMKd5PWLPm_tRQChzyGZSXwlB3DSyAfDnNf5r96bEQ99lloPYLAjjd_uEfL7AV2wB7yFe5Bek8BNFMExyl7lKRxQP9IlewbsCNwFBNpYP-98Y2CmY3anch2f1qfGC7Pf8MsjSX9XXahh1r3dS8LGqqurbvqeGpPxToo7HQ7I3bzsdG6bmaUpZSq0VPZNVM_FWbAEtuyw1PV1k11OkzqWLayk1gjTl1fiaakTRp7sPa2HTgshYnxSkPVln3XFlZOZONjz2cr3fJY8TBkwK_pukTRlNbEFL8okkl2fxzviPYs2qc_Pbk__hLtGX7_mHe3iSLMHP5353cnP9YIlJXXSMU12GFNycdsMV4EXhaT1ut0ULwJvGQtj-OXD_xCKgm87LNFgZfHeLcB_w0AAP__7HY3WA">