Re: [PATCH] asm-generic: Force inlining of get_order() to work around gcc10 poor decision

From: Segher Boessenkool
Date: Mon Oct 19 2020 - 13:59:33 EST


On Mon, Oct 19, 2020 at 10:54:40AM +0200, Christophe Leroy wrote:
> Le 19/10/2020 à 10:32, Segher Boessenkool a écrit :
> >The kernel should just use __always_inline if that is what it *wants*;
> >that is true here most likely. GCC could perhaps improve its heuristics
> >so that it no longer thinks these functions are often too big for
> >inlining (they *are* pretty big, but not after basic optimisations with
> >constant integer arguments).
>
> Yes I guess __always_inline is to be added on functions like this defined
> in headers for exactly that, and that's the purpose of this patch.
>
> However I find it odd that get_order() is outlined by GCC even in some
> object files that don't use it at all, for instance in fs/pipe.o

It is (arguably) too big too always inline if you do not consider that
__builtin_constant_p will remove half of the function one way or
another. Not sure if that is what happens here, but now we have a PR
(thanks!) and we will find out.


Segher