<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137588>137588</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
【clang】The while loop is lost when in -O1 or higher Optimization level
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hippyll123
</td>
</tr>
</table>
<pre>
in llvm18,the following code will be in an infinite loop at -O0, but not at -O1 or higher Optimization level, Is this expected or bug ? This problem can be avoided by using `-fno-finite-loops` .
In GCC, -O0 or higher Optimization level are all infinite loops.
```
#include <stdio.h>
void bar() {
int a = 0;
int b = 10;
printf("a = %p\n", &a);
while (a < b) {}
printf("b = %p\n", &b);
}
int main() {
bar();
return 0;
}
```
command:
`clang++ --target=x86_64-unknown-linux-gnu 1.cpp -O0 && ./a.out`
`clang++ --target=x86_64-unknown-linux-gnu 1.cpp -O1 && ./a.out`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykU02PrDYQ_DXNpQUybT4PHGbYJXqnvbx7ZMADToyNsJnZza-PPMOb3SgvySESEqLpqq5qu4RzajJSNpCfIX-JxO5nuzWzWtcPrVPiUW_Hj0YZ1Pq6pBW8dnBuoWr9LPFitbY3ZSYc7CjxprTGXqIyKAwqc1FGeYna2hWFx_iNAbXY7x6N9Y9KinbDWU2z3PBt9WpRfwivrEEtr1KH9m8O_awcyvdVDl6OAdDvEwLvEL-HP-tmey0XHIQJ08XVqlGO2H_g7oI2KFh8MTZ-yImDHAcFwwTYCdjpm8Ff2jaMit_Yv8pBsUkUWv_Vmjt4oGDHw05AXJlB76NE4K3zo7LJDPz10RkEYi82oAqoRijPwE6IiMp4FAj8BRnwr8X-Xky_VNdNGX-5M9ADApSvkLcGiIIZoEIA1Z-I26y0RKAqtLfY_xhdvvyEsv8Hyv5J-cABOwV9i1Dmb26eDj81bNLvm_nh7qD4ujd2GuyyCDMCPz3XOmhhJqAz0Bkxjr3YJumBv7xXxa9FFu_md2NvJtbK7O_xZHZMk2Fd78cJVAAVmAB1IrG7f475P7Tpz2ijseFjzWsRySYts7wintdFNDdlRsTTkmRxKTPBh4qEoIoNnMp0EDWPVEOMcpZRxYq8zoskIyF5WhV8YCwt0gIyJhehdBIimNhtipRzu2xSXuZVFWnRS-3uASY6TFHI8tYEQNzvk4OMaeW8-6TwymvZwCuHikF9LOP4Sr_P8rgv9_Aqh9o6j7dZhlz_Z26jfdPN7P3qwjFSB9RNys97nwx2AeqCiOMVr5v9TQ4eqLubckDd4eva0J8BAAD__6sIWls">