https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97445
--- Comment #31 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jan Hubicka from comment #27) > It is because --param inline-insns-single was reduced for -O2 from 200 > to 70. GCC 10 has newly different set of parameters for -O2 and -O3 and > enables auto-inlining at -O2. > > Problem with inlininig funtions declared inline is that C++ codebases > tends to abuse this keyword for things that are really too large (and > get_order would be such example if it did not have builtin_constant_p > check which inliner does not understand well). So having same limit at > -O2 and -O3 turned out to be problematic with respect to code size and > especially with respect to LTO, where a lot more inlining oppurtunities > appear. Do the heuristics account for that not inlining a "static inline" results in multiple copies? > I will implement the heuristics to push up inline limits of functions > having builtin_constant_p of parameter which should help a bit in this > case Thank you! > (but not very systematically: as dicussed in the PR log it is quite > hard problem to get builtin_constant_p right in the code size metrics > used by inliner before it knows exactly what is going to be constant and > what is not). That is true for many other inlining things as well... builtin_constant_p is worse than most I guess ;-)