Re: [patch] x86: phase out forced inlining

Sam Ravnborg
2008-03-04T08:26:56Z

On Mon, Mar 03, 2008 at 10:42:31PM -0800, Andrew Morton wrote:
> On Mon, 3 Mar 2008 13:13:35 +0100 Ingo Molnar <mingo@elte.hu> wrote:
>
> > +config OPTIMIZE_INLINING
> > + bool "Allow gcc to uninline functions marked 'inline'"
> > + default y
> > + help
> > + This option determines if the kernel forces gcc to inline the functions
> > + developers have marked 'inline'. Doing so takes away freedom from gcc to
> > + do what it thinks is best, which is desirable for the gcc 3.x series of
> > + compilers. The gcc 4.x series have a rewritten inlining algorithm and
> > + disabling this option will generate a smaller kernel there. Hopefully
> > + this algorithm is so good that allowing gcc4 to make the decision can
> > + become the default in the future, until then this option is there to
> > + test gcc for this.
>
> urgh. This will cause whatever problem
> 4507a6a59cfc6997e532cd812a8bd244181e6205 fixed five years ago to resurface
> for incautious gcc-3.x users.
>
> I'd suggest that this
>
> > +#ifndef CONFIG_OPTIMIZE_INLINING
>
> become something along the lines of
>
> > +#ifndef CONFIG_OPTIMIZE_INLINING && (__GNUC__ > 3)
>
> It would be nice to be able to feed the gcc version into the Kconfig logic,
> really..
We can do this using a few environment options.

Somewhere in a Makefile:
export CC_MAJOR=`magic`
export CC_MINOR=`more magic`

And in a Kconfig file:

config CC_MAJOR
string
option env=CC_MAJOR

And then we can do:
config CC_DEFAULT_INLINE
bool "Force inline of functions annotated inline"
default y if CC_MAJOR = 04

Shall I try to cook up a patch for this?
[I may get access to my dev box tonight - cannot promise..]

Sam