https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117006
Bug ID: 117006
Summary: [15 regression] GCC trunk generates larger code than
GCC 14 at -Os
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: dccitaliano at gmail dot com
Target Milestone: ---
Similar to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116994
https://godbolt.org/z/64bxGvnrh
long patatino() {
long x = 0;
for (int i = 0; i < 5; ++i) {
while (x < 10) {
if ((x % 2 == 0 && x % 3 != 0) || (x % 5 == 0 && x > 5)) {
if (x > 7) {
x += 4;
} else {
x += 2;
}
} else {
x += 1;
}
while (x % 4 == 0) {
x += 3;
}
}
}
return x;
}
In particular, trunk generates
.L4:
lea rax, [rcx+4]
lea rdx, [rcx+2]
cmp rcx, 8
cmovl rax, rdx
mov rcx, rax
jmp .L7
instead of:
.L4:
cmp rcx, 7
jle .L6
add rcx, 4
jmp .L7
.L6:
add rcx, 2
jmp .L7