<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/66176>66176</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong code at -O2/3 on x86_64 (recent regression since d01aec4)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
shao-hua-li
</td>
</tr>
</table>
<pre>
clang at -O2/3 produced the wrong code.
Bisected to d01aec4c769d50fb92e86decd41d077c94105841, which was committed by @nikic
Compiler explorer: https://godbolt.org/z/9bhhc5rGM
```console
% cat a.c
int printf(const char *, ...);
int a, c;
long b, g;
static int d[1] = {5};
unsigned h;
long *i() {
c = 0;
for (; c <= 2; c++) {
for (;;) {
char e[1] = {97};
char f = *e + c;
if (d[f - 97]) {
int *j[] = {&d[0], &d[0]};
h++;
break;
}
return &b;
}
for (; h <= 2;)
return &g;
}
for (;;)
;
}
int main() {
i();
printf("%d\n", a);
}
%
% clang -O0 a.c && ./a.out
0
% clang -O2 a.c
% ./a.out
(Timeout)
%
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsVE2P4ygQ_TXlSykWLhvbHHzIh7Kn1VxW2uMKY2Iz45gI8PbM_voVTndCpydCSShevSoeVSW9N-OidQf8APyUyTVM1nV-knY3rXI3m6y3w69OzXIZUQbcfSOgc4k3Z4dV6QHDpPHN2WVEZQedAzsB29-_D8ZrFSLG4sAKqVWlmloMnF16QbqtB62GqhhY0yhRFYy3VQF0xLfJqAnfpEdlr1cTIkX_C6Fii_lhFKYxjvZ6M7N2qH_eZuu0g3KPUwg3D-Ue6Ax0Hu3Q2znk1o1A5_-AzqKfJsXdH3-mTFCz-1J28XbW71biqGRAmau7wSwBb84s4QLURmhANUmHQPuYe57nQALKwxMto109THPUqo-28WHzQQajMKIH4IcC-AmhPCE0Bw7N6YFbl-25Bpw-0wHtDVALJKLL_QBRbRzsAUW82JhoC-VhOzzGc9p2QIdtpQRPdFyfueNnu7d-yVc0acIJ8HJH0F4j0CERBFOoucSQUYQL7lA0wE-_iYybVED77_e6_QgOVEdXtnkdMd2mSU3vty1fSHun5Y8Xa3RMtk6H1S2Ruf8E_ARLZJ5SmWNl_JZrTLgSptcHSMJ94B_oKMhVmuVrGbxXRhLiUb9ABMQH4Mdl-3uMxSq-kgPxpB22WbD7xmJTxOyBasyBzjK3a7jj2Fc4PXsoml8cgNq_zFXH_cc9n0E_OjMbunIQpZCZ7opaVLwVrC6zqSvLopGqblVZN4zzpq_aXuhC8KGmuuSXzHTEqGSiKFlTFKzM64IPg-g51YVuStFCxfRVmjmf53-vcVRkxvtVd3VdNHU2y17PfhuSRIt-w-0wSsZPmeuiz65fRw8Vm40P_skSTJh19_djQKYz1C74s63_qav4yE4rvQR0enTae2MX9GZR-mNwAolsdXP3MtpMmNY-V_YKdI4x3392N2e_axWAzlumHui83eT_AAAA__9uSYz3">