<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/124387>124387</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] Miscompile with -O2/3/s
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cardigan1008
</td>
</tr>
</table>
<pre>
This code prints random value at `-O2/3/s` and -1 at `-O0/1`:
```c
int printf(const char *, ...);
int a, b;
void c(char d) { a = d; }
int e(int d) {
if (d < 0)
return 1;
return 0;
}
int f() {
if (b)
return 0;
return 1;
}
int g(int d) {
int h = 0;
if (3 + d)
h = f() - 1 - 1;
return e(h) + h + h;
}
int main() {
int i = g(0);
c(i);
printf("%d\n", a);
}
```
Compiler Explorer: https://godbolt.org/z/KfWsKxcvE
It starts from x86_64 clang 19.1.0.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxsU12vmzAM_TXmxSpKHMLHAw_9uEjT1bSXSXucAklLJgpVErq7_fop0NvedZMCwcHn-NiOlff2NBpTg9yBPCRqDv3k6k45bU9q5IyVSTvpX_XX3nrsJm3w4uwYPDo16umMVzXMBlVAyNnmCwE1AqjxkDNUo8YNv_9jQA2HnIHYAltWztbVAdvaMazMR6Cym0YfsOuVQ6At0B7TNAWqQOxurioetqt9nazGLsIiQANVCMUOFYI4oAaxQygON5wBKuP-7gVsi2iPCFRqBLFHFsPEQ0RnwuxG5GuUu81W-8EZFf9L196I_kY9sz5YTv9VNgbslzzu-JVdINBu8b2JXb3epWyQx-cpZky-X-hpFwHx_SzjrOz4nM8Y0C70USO792GpuX2Yj_4BEZDUIPfj8rmP_ao-hrr3fr0K--l8sYNx-PJ2GSZnHIgt9iFcfLwt1AA1p0m30xDSyZ2Amt9Azevxm399664vK8engD4oFzwe3XTGtzL_nmfYDWo8Ia9SnrIUE10LXYlKJabmhSiKQmYVJX0tNaty03VKSc4zKfjRiMKwIy-pKiUrE1sTI8k4SSYok5QeudEZyZzlmWkrZiBj5qzskA7D9RxVJtb72dScMlEWyaBaM_hlzIgWUbEy8pC4OgI27XzykLHB-uAfFMGGYZnNFSEP-Nn6bi0W_rShxw8zl8xuqJ-KZkM_t2k3nYGayHrbNhc3_TBdAGoWlT7O5ir0WtOfAAAA__-URx7k">