<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82243>82243</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong code at -Os on x86-64_gnu-linux (recent regression)
</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 -Os produced the wrong code.
Bisected to dce77a357948709e335910ddc07f9c3f2eb2ac4b, which was committed by @fhahn
Compiler explorer: https://godbolt.org/z/fTrenPK4h
```console
% cat reduced.c
int printf(const char *, ...);
int a, b, c, d, e;
int f[9];
int g(int i) {
c = 1 << i;
if (b & c)
return 4;
return 0;
}
int j(int i) {
int h = g(i);
return h;
}
int k() {
d = 6;
for (; d; d--) {
e = 0;
for (; e <= 6; e++) {
f[j(d - 1)] = f[d];
for (; e + d;)
return 0;
}
}
return 0;
}
int main() {
k();
printf("%d\n", a);
}
%
% clang -O3 reduced.c && ./a.out
0
% clang -Os reduced.c && ./a.out
%
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVMGuqzYQ_ZphMwLB2ARYsLhJlE0Xr4tKXVbGGPArsSPb9N7Xr69MchOS2_ZJyKDDnDMzh2GE93o0SrVQ7qE8JmIJk3Wtn4RNp0Wks0462_9oD7MwI4qA6TePF2f7Raoew6Tw3VkzorS9yiA_Qv52PffaKxlijMVeqqoSrKwaXld5oxgrmyLve5lXQyPZQKojIXkHdMD3ScsJ34VHac9nHaJE9wOB58MkJoPbHAd7vuhZOVQfl9k65YC94RTCxQN7AzoBnUbbd3YOmXUj0OlvoNPwm1Pm11_4tFWCXX69pDXezuqGUolSBHRqbTeTV1ibgBenTRiA6kgIKCfhEOgtdpBlGVADbP-IFhFf25Px6OOhniIGKPcNlMcncASq410DNQjV7Q2iRGBHLBDYAdgB9Z2EqAcEqjsE2sVczSeO6FRYnEG-Cb5B-R2C6vjI_v0_skdsWitY69v2epec_l3yT6D6Ra1flXYbicFGK2tge-zXI01fOIhqZeUb1hNPXa256qIC2q_Xiwiursc2e0yxiI2Ux1U44v32a9zCnzLQtb4nkzdGPxd3t-Hp8f8_wFlo89Wwm4cP9fsoAhFQ2UN5MOvjIc5d81UbqNzM9_pjp9_YY8rj8MT5yYBOIrNLuEbnX0n-p6TXjJ__WdK3rG9YIxLVFlVeM75riCVTq5gQvKi7vhikLJUomrITXFYN8W6oBEt0SznxnIqmIF5zlvGCeNUNktVFJ0RXA8_VWeg5m-e_zvHHT7T3i2prIs6SWXRq9uu6IzLqHdeX0a_ymLg2ctJuGT3wfNY--IdK0GFW7e_3dfe5Da3Bj3qX7vgfo1nSWZvlI06JU1KZuDtGp7zX1gA1yeLm9mVB6TAtXSbtGegUc91u6cXZ70oGoNNaoQc6rR38EwAA__9wU4dc">