<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">