Re: [2.6 patch] kill __always_inline

From: Andrew Morton
Date: Tue Aug 31 2004 - 19:02:21 EST


Nigel Cunningham <ncunningham@xxxxxxxxxxxxx> wrote:
>
> Hi.
>
> On Wed, 2004-09-01 at 08:52, Adrian Bunk wrote:
> > On Tue, Aug 31, 2004 at 03:36:49PM -0700, Andrew Morton wrote:
> > > Adrian Bunk <bunk@xxxxxxxxx> wrote:
> > > >
> > > > An issue that we already discussed at 2.6.8-rc2-mm2 times:
> > > >
> > > > 2.6.9-rc1 includes __always_inline which was formerly in -mm.
> > > > __always_inline doesn't make any sense:
> > > >
> > > > __always_inline is _exactly_ the same as __inline__, __inline and inline .
> > > >
> > > >
> > > > The patch below removes __always_inline again:
> > >
> > > But what happens if we later change `inline' so that it doesn't do
> > > the `always inline' thing?
> > >
> > > An explicit usage of __always_inline is semantically different than
> > > boring old `inline'.
>
> Excuse me if I'm being ignorant, but I thought always_inline was
> introduced because with some recent versions of gcc, inline wasn't doing
> the job (suspend2, which requires a working inline, was broken by it for
> example).

IIRC, the compiler was generating out-of-line versions of functions in
every compilation unit whcih included the header file. When we the
developers just wanted `inline' to mean `inline, dammit'.

If that broke swsusp in some manner then the relevant swsusp functions
should be marked always_inline, because they have some special needs.

> That is to say, doesn't the definition of always_inline vary
> with the compiler version?

If the compiler supports attribute((always_inline)) then the kernel build
system will use that. If the compiler doesn't support
attribute((always_inline)) then we just emit `inline' from cpp and hope
that it works out.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/