<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56629>56629</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang][OpenMP][omp2012] Malformed basic block with -O3 flag
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            openmp,
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          NimishMishra
      </td>
    </tr>
</table>

<pre>
    Consider the following reproducer:

```f90
program sample
  !$omp critical
       do i = 1,10
       end do
  !$omp end critical
end program sample
```

When run with `flang-new -O3 -fopenmp sample.f90`, it fails as 

```
error: loc("./sample.f90":3:3): type mismatch for bb argument #0 of successor #0
error: Lowering to LLVM IR failed
error: loc("./sample.f90":3:3): block argument does not have an LLVM type
Basic Block in function '_QQmain' does not have terminator!
label %omp.critical.region3
error: failed to create the LLVM module
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydU02PmzAQ_TVwGQU5BpJw4NDd1UqVNt1uD-2xMmYAt8aObLPR_vuOTdP9PDWCYM-YN-_NGzrbP7XX1njVo4MwIQxWa3tWZgSHJ2f7RaLLyk8Zu8nY5X_H1mto2Bqhg6MTM3gxnzSuMYCMbzNe2fkE0qmgpNCXTPr1FhRk5Q3Qqeste5VD01P-PVCMvwaLkY_K_yP5kvmPCQ24xcBZhQmiAi3MuDF4hs19CZvBntBQmRWoiPoIgF-DCjAIpT0IDx-24i8Z52zsFmgrM37IOC8yfvsCjXPKlunmTTwYnk4Is_KzCHKi5jvoOhBuXGY0gYSXDOwAfpESvadsjLypdWfP6KJhwcLd3fcjfP6WyGL_v6Q6Ovn7mUVv0YOxASbxiCDMWiUyXwtcCa8kXKWXlIFhMTIoa4jr_ufDwyyUodUblIBuVkYEYkbmJhgtOtT0Uk1GFxeTC4cjYZVvpKz6omLpUARMo5tozTSy72Yg79uyb8pG5EEFjW1WXyXns_qGlvdk-vHruqbanG05beAoNPkxU5kuCVy7kiYnDgsBjPnidDuFcPLxE-G3dI2UX7pC2pk2Wj9eHhsa0l8oA22V9wt6WtS7HW_yqa06JvBQVdhsRb8vm2E_HPr-sO92Na-28pCn1vhIm8xaZzS6RoNJj1UJj5xz1XLGOduThrKuWVlUyBkTu6YW25ozybOKITmii8ipsG7MXZvodcvoKamVD_45KbxXo8HUsYgvljBZ135RNLLTkW4n8iSnTVr-AALXTaA">