2006-08-20 23:54:39

by Adrian Bunk

[permalink] [raw]
Subject: Alpha: replacing "extern inline"

I want to get rid of all "extern inline" in the kernel.

Why?
"extern inline" generates a warning with -Wmissing-prototypes and I'm
currently working on getting the kernel cleaned up for adding this to
the CFLAGS since it will help us to avoid a nasty class of runtime
errors.

"extern inline" was required at the times when
__attribute__((always_inline)) wasn't avalable.

Nowadays, we use "static inline", and if there are places that really
need a forced inline, we use "static __always_inline".

Can someone tell me which of the Alpha "static inline"'s need for some
reason an __always_inline?

And a related question:
Does the never defined __IO_EXTERN_INLINE still have any purpose?

cu
Adrian

--

Gentoo kernels are 42 times more popular than SUSE kernels among
KLive users (a service by SUSE contractor Andrea Arcangeli that
gathers data about kernels from many users worldwide).

There are three kinds of lies: Lies, Damn Lies, and Statistics.
Benjamin Disraeli


2006-08-21 21:56:41

by Richard Henderson

[permalink] [raw]
Subject: Re: Alpha: replacing "extern inline"

On Mon, Aug 21, 2006 at 01:54:38AM +0200, Adrian Bunk wrote:
> Why?

Because it inlines when it needs to, and does not generate
out of line code when its address is taken.

> Can someone tell me which of the Alpha "static inline"'s need for some
> reason an __always_inline?

There shouldn't be any.

> Does the never defined __IO_EXTERN_INLINE still have any purpose?

It is defined.

$ grep 'define __IO_EXTERN_INLINE' * | wc -l
12


r~

2006-08-23 22:53:08

by Adrian Bunk

[permalink] [raw]
Subject: Re: Alpha: replacing "extern inline"

On Mon, Aug 21, 2006 at 02:55:26PM -0700, Richard Henderson wrote:
> On Mon, Aug 21, 2006 at 01:54:38AM +0200, Adrian Bunk wrote:
> > Why?
>
> Because it inlines when it needs to, and does not generate
> out of line code when its address is taken.

Ah, I start to remember.

Is this actually used anywhere in the kernel?

> > Can someone tell me which of the Alpha "static inline"'s need for some
> > reason an __always_inline?
>
> There shouldn't be any.
>
> > Does the never defined __IO_EXTERN_INLINE still have any purpose?
>
> It is defined.
>
> $ grep 'define __IO_EXTERN_INLINE' * | wc -l
> 12

Ups, I was blind...

> r~

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed