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

    <tr>
        <th>Summary</th>
        <td>
            clang hangs when compile at -O3 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/PdsEMbY6b

When compile the following program using clang under `-O3`, it hangs. 

```c
int a;
int b;
short c() {
  volatile unsigned char d = 2;
  int e = 1;
  a = 0;
  for (; a < 3; a++) {
    b = 0;
    for (; b < 10; b++)
 do {
        e -= 3;
        d;
      } while (e > 2);
  }
 for (int f = 0;;)
    ;
}
int main() {}
```

I found this bug exists on `clang-16.0.0`, `clang-17.0.1` and the latest `trunk`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkU89v4yoQ_mvGl5EtfjiOffChaRrpHZ76bk97WmEb23QJRICbbv_6FSRNnC5CNvMx8_ExzAjv1WSkbGGzg80-E0uYrWvfFpOfpco_pZmyzg6_22d7PCktHcqPk7ZOOuBPOIdw8sCfgB2AHSY7dFaHwroJ2OET2OG_wb_82_2oOiB7IE-X7_-zNNhf6DDMEkertT0rM-HJ2cmJIy4-Wr0WZsLFDNIhVCR_5VARYM-oAs7CTL7ANW_cTLO_2MoEFMB3d6u7WX62LmAPrAbWIGyvMOK71SJEYYtJiRmwn4XDAYHvkd3iESOfTChdoSIhZIWM1mE8hu_S5jPytAS2S_PhcMTur_gHhi4xUJLWN4qr62AfueKQmEdC_kAYx_ANge0ez3O8OLA63usFWaS-e8F2f11eBcUMjHe9fCUlEn5F3uKi_1Eos0r619bt6dbv-Q-OdjEDhll57JYJ5YfywaM1sRpSceS0KkhBrmVxR7cFKShUBEWKl6hFkD5Ej-AW8wsqUmRDy4eGNyKTLa2aui7LDS-zuW2olHXNWF03tOp7Vo68akbBNpLzcktkplpGGKeUUMrphpfFuCEl60bGJK3pQDmURB6F0oXW78fYDpnyfpHtljS8yrTopPap4RhLgoGx2Huujf55t0weSqLjZe8MQQUt20tLpOLH87qPRMD8lcfcfNTVz6rMFqfbb-2pwrx0RW-PwA6R9_rLT86-yT4AOySZHtghKf0TAAD__34bIFU">