<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111571>111571</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLVM trunk emits ~40% larger code at -Oz compared to -O2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dcci
</td>
</tr>
</table>
<pre>
Reduced from a large example:
```
long patatino() {
long x = 0;
for (int i = 0; i < 5; ++i) {
while (x < 37) {
if (x % 4 == 0) {
x += 4;
}
}
}
return x;
}
```
-Oz
```
patatino():
xorl %eax, %eax
xorl %ecx, %ecx
.LBB0_1:
cmpl $5, %ecx
jne .LBB0_4
jmp .LBB0_2
.LBB0_5:
testb $3, %al
jne .LBB0_4
addq $4, %rax
.LBB0_4:
cmpq $36, %rax
jle .LBB0_5
incl %ecx
jmp .LBB0_1
.LBB0_2:
retq
```
-O2
```
patatino():
movl $40, %eax
retq
```
Godbolt link: https://godbolt.org/z/fzxWM693x
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVE1vqzoQ_TVmM0pkxjjAgkXTKG_TqtJbvLd8MsYkbg1OjWl5WdzffmVCPvtxde8IgeGcmXNmsCy6Tm9apQrCl4SvItH7rXVFJaWOSlv9X_ytql6qCmpnGxBghNsoUINodkYRdkfoitDjfUGna3w1tt3ATnjhdWsJZgRzIOnyAAIAjIQBCFsBJewCqK0DgpluPegTPC7vgYclwSXBpf5QMcT7VhsV0oeRz9JPWSF0PdGQQxJ0DlJf0UMMozRbQXJl-BgkXV1_vPpwfnHK966F4VTkBN3M8HCfPe2_mfP1iE__5GTZOhNaVGIgeH9cfaQEg8iVPLHkxJo_LJf0v_hDYdnspqyE3-YcOc-tGp-HGskN2OwuQLxU42c1rzpfHmTYJCPMb6iIqnqdbCZTvhNXrSWftXbMYYvbpJOquVTlE6hbeTnLbxqOLz3g2YNT_vXbzYB_vhka-3b8Zwn9ajv8wsBftiqt8WB0-0LYHWy933VBCdcE15sDOrduQ3C9J7iu98O_j4ucDVFVsCpnuYhUEaeYJTTPszTaFjVTabnI0prRMhd1RisWx1laUZ5KXso60gVSTGJKszjljKZzREYFR55LjJGngiRUNUKbuTFvTdCOdNf1qojjmKdxZESpTDeecYiteocRJYjhyHNFSJqV_aYjCTW68925jNfeqOLh4Z9H8K5vX0A12nfwI0yPH05DB9JWCoSH2dMepG12wqkKvIXZE0a9M8XNhLTf9uVc2obgOghNj9nO2WclPcH1aK8juJ78vxX4MwAA__-8Um0K">