On Wed, 1 Nov 2006, Daniel Jacobowitz wrote:

> On Wed, Nov 01, 2006 at 06:59:42PM +0000, Joseph S. Myers wrote:
> > I'd rather simply fix glibc to work with C99 inline semantics.  For the 
> > above you might use
> > 
> > #define tolower(c) __tolower_inline(c)
> > static __inline __attribute__((__always_inline__)) int tolower_inline ...
> > 
> > and #undef tolower when defining the out of line function.  That would 
> > apply to all cases where a user-visible function in a header is currently 
> > inlined directly; for a purely internal function in the header, we can 
> > arrange for all declarations to use "inline" without "extern" when in C99 
> > mode.
> 
> Isn't the whole point that the current extern inline isn't
> __always_inline__, but leaves it to the compiler's judgement?

In most cases where glibc isn't using always_inline that's a mistake 
because the glibc code predates always_inline.  (For example, the inlines 
in sys/stat.h clearly should be always_inline.)

If the extern inline function shouldn't be always_inline and only exists 
as an inline, glibc already arranges code to export the inline versions 
from the header into the library.

If it shouldn't be always_inline and has an exported version, then the 
__foo_inline could be made an alias for the real function.

-- 
Joseph S. Myers
[EMAIL PROTECTED]

Reply via email to