Hi, I have some questions about the strategy and behavior of function
splitting in gcc, like the following code:
int glob;
void f() {
if (glob) {
printf("short path\n");
return;
}
// do lots of expensive things
// ...
}
I hope it can be broken down like below, so that the whole function
can perhaps be inlined, which is more efficient.
int glob;
void f() {
if (glob) {
printf("short path\n");
return;
}
f_part();
}
void f_part() {
// do lots of expensive things
// ...
}
But on the contrary, gcc splits it like these, which not only does not
bring any benefits, but may increase the time consumption, because the
function call itself is a more resource-intensive thing.
int glob;
void f() {
if (glob) {
f_part();
return;
}
// do lots of expensive things
// ...
}
void f_part() {
printf("short path\n"); // just do this????
}
Are there any options I can offer to gcc to change this behavior? Or
do I need to make some changes in ipa-split.cc?