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

    <tr>
        <th>Summary</th>
        <td>
            clang hangs when compile at -O2/3 on x86_64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          jun-wei-zeng
      </td>
    </tr>
</table>

<pre>
    Compiler explorer: https://godbolt.org/z/z9PxYdbs6

When compiled the following program using clang under `-O2/3`, it hangs. 

I found this bug exists on `clang-16.0.0`, `clang-17.0.1` and the latest `trunk`.

```c
static unsigned short a() {
  char b = 8;
 volatile unsigned int c;
  int d = 2147483648;
  int e;
  int f;
 for (f = 0; f <= 7; f++)
    for (e = 0; e < 2; e++)
      do {
 d += 5;
        c = b;
      } while (d < 0);
}
void main() { a(); }
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsk8-P4yoMx_8a52I1AvL7kMO0VaV3eu_2tKcVCTRhlkIFZNqdv34FmU6qaiua2OTrD45jc-_VZKTsodpDdcz4Embr-vfF7G5S7T6lmbLBit_9wV6uSkuH8n7V1kkHxRvOIVw9FG_ATsBOkxWD1SG3bgJ2-oz_7r_7DzH4GsgRyNt6_X-WBscVJzDMEs9Wa3tTZsKrs5PjF1x89EbNzYSLEdIh1GT3LwN2KqAmwA6oAs7cTD7HZ_g_eLaLiVjlcVgmlHflg0drIiEBd7TOSU6-MNtuk5OcQk2QmzUtzYP0ISqCW8wvqEn-fFQEpDWuvg88qBEXkyoq0M_WBeTAWmAdQrNfZYjjzB0OCMURWyge2x9W86C03ADKBBw3QfJFCmO0bMq2qMv25bF88c-bf7YOgbXnBCBQ7DGah-g1yQO2T6t7APARI7eYaB6QJfMvAYjCPr2qwCgojlg95bX-xsQcXvahOeJtjlUA1op0FokHPFTQHFfjwyqBF67MVt5HqWNu37rvj5SJvhBd0fFM9rTuOtp0BS2zuW9p25GBCFE1tBrq7jwKLkQlZSNJ1ZI6Uz0jrKCUVJTQipY5r7uu42VBRyLHth2hJPLClc61_rjE7s-U94vsG1pQmmk-SO3TfDGWWg0Yi6Pm-qjfDcvkoSQ6tulGCCpo2a8DkNocb09jgzzg1zTEzr639c-6zBan-5eJVGFehny0F2CnyP667a7OvssxADulVD2wU8r2TwAAAP__8cQijw">