https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117123
Bug ID: 117123
Summary: [12/13/14/15 regression] Generated code at -Os on
trunk is larger than GCC 14.4
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: dccitaliano at gmail dot com
Target Milestone: ---
https://godbolt.org/z/ern8cbPzr
Inline code:
struct Potato {
int size;
bool isMashed;
};
int dont_be_here();
int patatino(int a) {
if (a > 5 && a % 2 == 0 && a != 10) {
return a * 2;
} else {
Potato spud;
spud.size = a;
spud.isMashed = false;
for (int i = 0; i < 10; i++) {
if (i > 10 && i < 5 && a == -1) {
for (int j = 0; j < 5; j++) {
spud.size += j;
}
}
}
// Added a loop that never gets executed with a complex condition and
statement inside
for (int k = 0; k < 10 && a == -100 && spud.size > 1000; k++) {
for (int l = 0; l < 5; l++) {
spud.size += l * k;
}
}
// Modified to add a loop that never gets executed with a call to
dont_be_here()
for (int m = 0; m < 10 && a == -1000 && spud.size < -1000; m++) {
dont_be_here();
}
// Modified function with added conditional statement
if (a > 10000 && spud.size < -10000) {
spud.size *= 2;
}
// Added another loop that never gets executed with a complex condition and
statement inside
for (int n = 0; n < 10 && a == -2000 && spud.size > 2000; n++) {
for (int o = 0; o < 5; o++) {
spud.size -= o * n;
}
}
return spud.size;
}
}