avoid "inline" in public headers for strict c89 compatibility

while musl itself requires a c99 compiler, some applications insist on
being compiled with c89 compilers, and use of "inline" in the headers
was breaking them. much of this had been avoided already by just
skipping the inline keyword in pre-c99 compilers or modes, but this
new unified solution is cleaner and may/should result in better code
generation in the default gcc configuration.
This commit is contained in:
Rich Felker 2012-09-02 12:46:06 -04:00
commit fb247fafa0
8 changed files with 57 additions and 62 deletions

View file

@ -3,26 +3,21 @@
#include <stdint.h>
#if __STDC_VERSION__ >= 199901L
inline
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
#define __inline inline
#endif
static uint16_t __bswap_16(uint16_t __x)
static __inline uint16_t __bswap_16(uint16_t __x)
{
return __x<<8 | __x>>8;
}
#if __STDC_VERSION__ >= 199901L
inline
#endif
static uint32_t __bswap_32(uint32_t __x)
static __inline uint32_t __bswap_32(uint32_t __x)
{
return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
}
#if __STDC_VERSION__ >= 199901L
inline
#endif
static uint64_t __bswap_64(uint64_t __x)
static __inline uint64_t __bswap_64(uint64_t __x)
{
return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
}

View file

@ -1,6 +1,10 @@
#ifndef _ENDIAN_H
#define _ENDIAN_H
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
#define __inline inline
#endif
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412
@ -20,26 +24,17 @@
#include <stdint.h>
#if __STDC_VERSION__ >= 199901L
inline
#endif
static uint16_t __bswap16(uint16_t __x)
static __inline uint16_t __bswap16(uint16_t __x)
{
return __x<<8 | __x>>8;
}
#if __STDC_VERSION__ >= 199901L
inline
#endif
static uint32_t __bswap32(uint32_t __x)
static __inline uint32_t __bswap32(uint32_t __x)
{
return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
}
#if __STDC_VERSION__ >= 199901L
inline
#endif
static uint64_t __bswap64(uint64_t __x)
static __inline uint64_t __bswap64(uint64_t __x)
{
return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
}

View file

@ -5,6 +5,10 @@
extern "C" {
#endif
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
#define __inline inline
#endif
#define __NEED_float_t
#define __NEED_double_t
#define __NEED___uint16_t
@ -83,10 +87,7 @@ int __signbitl(long double);
#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
#if __STDC_VERSION__ >= 199901L
inline
#endif
static int __isrel(long double __x, long double __y, int __rel)
static __inline int __isrel(long double __x, long double __y, int __rel)
{
if (isunordered(__x, __y)) return 0;
if (__rel==-2) return __x < __y;

View file

@ -4,6 +4,10 @@
extern "C" {
#endif
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
#define __inline inline
#endif
long __syscall_ret(unsigned long);
long __syscall(long, ...);
long syscall(long, ...);