On Mon, Mar 15, 2021 at 05:23:44PM +0100, Rasmus Villemoes wrote: > On 12/03/2021 03.29, Segher Boessenkool wrote: > > On Tue, Mar 09, 2021 at 06:19:30AM +0000, Christophe Leroy wrote: > >> With some defconfig including CONFIG_CC_OPTIMIZE_FOR_SIZE, > >> (for instance mvme5100_defconfig and ps3_defconfig), gcc 5 > >> generates a call to _restgpr_31_x. > > > >> I don't know if there is a way to tell GCC not to emit that call, because > >> at the end we get more instructions than needed. > > > > The function is required by the ABI, you need to have it. > > > > You get *fewer* insns statically, and that is what -Os is about: reduce > > the size of the binaries. > > Is there any reason to not just always build the vdso with -O2? It's one > page/one VMA either way, and the vdso is about making certain system > calls cheaper, so if unconditional -O2 could save a few cycles compared > to -Os, why not? (And if, as it seems, there's only one user within the > DSO of _restgpr_31_x, yes, the overall size of the .text segment > probably increases slightly).
You can use exactly the same reasoning for using -O2 instead of -Os anywhere else. -Os doesn't mean "smaller code, but only where that is reasonable". It means "smaller code". Segher