2004-05-27  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Define using
	__builtin_expm1l for GCC 3.5+.
	(__expl): Define using __builtin_expl for GCC 3.4+.
	(exp, expf, expl): Don't define for GCC 3.4+.
	(tan, tanf, tanl): Don't define for GCC 3.5+.
	(__atan2l): Define using __builtin_atan2l for GCC 3.4+.
	(atan2, atan2f, atan2l): Don't define for GCC 3.4+ or !__FAST_MATH__.
	(fmod, fmodf, fmodl): Don't define for GCC 3.5+ or !__FAST_MATH__.
	(fabsf, fabsl): Only provide if __USE_MISC or __USE_ISOC99.
	(sin, sinf, sinl, cos, cosf, cosl, log, logf, logl): Don't define
	for GCC 3.4+.
	(log10, log10f, log10l, asin, asinf, asinl, acos, acosf, acosl):
	Don't define for GCC 3.5+.
	(atan, atanf, atanl): Don't define for GCC 3.4+ or !__FAST_MATH__.
	(log1p, log1pf, log1pl, logb, logbf, logbl, log2, log2f, log2l): Don't
	define for GCC 3.5+.
	(drem, dremf, dreml): Don't define for GCC 3.5+ or !__FAST_MATH__.
	* sysdeps/sparc/fpu/bits/mathinline.h (sqrt, sqrtf, sqrtl): Don't
	define for GCC 3.2+.

2004-05-27  Jakub Jelinek  <jakub@redhat.com>

	* string/bits/string2.h (__bzero): Define even for GCC 3.0+.
	* sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def.
	* sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise.
	* sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise.
	* sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise.
	* sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise.
	* sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise.
	* sysdeps/i386/stpcpy.S (stpcpy): Likewise.
	* sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise.
	* sysdeps/generic/stpcpy.c (stpcpy): Likewise.
	* sysdeps/x86_64/stpcpy.S (stpcpy): Likewise.
	* sysdeps/i386/i586/memcpy.S (memcpy): Remove
	libc_hidden_builtin_def if MEMPCPY_P.
	* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
	* sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def.
	* sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise.
	* sysdeps/generic/mempcpy.c (mempcpy): Likewise.
	* sysdeps/x86_64/mempcpy.S (mempcpy): Likewise.
This commit is contained in:
Ulrich Drepper 2004-05-28 06:56:51 +00:00
parent 44809672d3
commit 3dbfd8117c
19 changed files with 147 additions and 40 deletions

View File

@ -1,3 +1,46 @@
2004-05-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Define using
__builtin_expm1l for GCC 3.5+.
(__expl): Define using __builtin_expl for GCC 3.4+.
(exp, expf, expl): Don't define for GCC 3.4+.
(tan, tanf, tanl): Don't define for GCC 3.5+.
(__atan2l): Define using __builtin_atan2l for GCC 3.4+.
(atan2, atan2f, atan2l): Don't define for GCC 3.4+ or !__FAST_MATH__.
(fmod, fmodf, fmodl): Don't define for GCC 3.5+ or !__FAST_MATH__.
(fabsf, fabsl): Only provide if __USE_MISC or __USE_ISOC99.
(sin, sinf, sinl, cos, cosf, cosl, log, logf, logl): Don't define
for GCC 3.4+.
(log10, log10f, log10l, asin, asinf, asinl, acos, acosf, acosl):
Don't define for GCC 3.5+.
(atan, atanf, atanl): Don't define for GCC 3.4+ or !__FAST_MATH__.
(log1p, log1pf, log1pl, logb, logbf, logbl, log2, log2f, log2l): Don't
define for GCC 3.5+.
(drem, dremf, dreml): Don't define for GCC 3.5+ or !__FAST_MATH__.
* sysdeps/sparc/fpu/bits/mathinline.h (sqrt, sqrtf, sqrtl): Don't
define for GCC 3.2+.
2004-05-27 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__bzero): Define even for GCC 3.0+.
* sysdeps/alpha/stpcpy.S (stpcpy): Add libc_hidden_builtin_def.
* sysdeps/alpha/alphaev67/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/powerpc/powerpc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc32/stpcpy.S (stpcpy): Likewise.
* sysdeps/sparc/sparc64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/stpcpy.S (stpcpy): Likewise.
* sysdeps/generic/stpcpy.c (stpcpy): Likewise.
* sysdeps/x86_64/stpcpy.S (stpcpy): Likewise.
* sysdeps/i386/i586/memcpy.S (memcpy): Remove
libc_hidden_builtin_def if MEMPCPY_P.
* sysdeps/x86_64/memcpy.S (memcpy): Likewise.
* sysdeps/i386/i686/mempcpy.S (mempcpy): Add libc_hidden_builtin_def.
* sysdeps/i386/i586/mempcpy.S (mempcpy): Likewise.
* sysdeps/generic/mempcpy.c (mempcpy): Likewise.
* sysdeps/x86_64/mempcpy.S (mempcpy): Likewise.
2004-05-26 Roland McGrath <roland@frob.com> 2004-05-26 Roland McGrath <roland@frob.com>
* sysdeps/generic/bits/in.h * sysdeps/generic/bits/in.h

View File

@ -94,9 +94,10 @@ __STRING2_COPY_TYPE (8);
((size_t)(const void *)((__x) + 1) - (size_t)(const void *)(__x) == 1) ((size_t)(const void *)((__x) + 1) - (size_t)(const void *)(__x) == 1)
/* Set N bytes of S to C. */ /* Set N bytes of S to C. */
#if !defined _HAVE_STRING_ARCH_memset && ! __GNUC_PREREQ (3, 0) #if !defined _HAVE_STRING_ARCH_memset
# if _STRING_ARCH_unaligned # if !__GNUC_PREREQ (3, 0)
# define memset(s, c, n) \ # if _STRING_ARCH_unaligned
# define memset(s, c, n) \
(__extension__ (__builtin_constant_p (n) && (n) <= 16 \ (__extension__ (__builtin_constant_p (n) && (n) <= 16 \
? ((n) == 1 \ ? ((n) == 1 \
? __memset_1 (s, c) \ ? __memset_1 (s, c) \
@ -105,10 +106,10 @@ __STRING2_COPY_TYPE (8);
? ({ void *__s = (s); __bzero (__s, n); __s; }) \ ? ({ void *__s = (s); __bzero (__s, n); __s; }) \
: memset (s, c, n)))) : memset (s, c, n))))
# define __memset_1(s, c) ({ void *__s = (s); \ # define __memset_1(s, c) ({ void *__s = (s); \
*((__uint8_t *) __s) = (__uint8_t) c; __s; }) *((__uint8_t *) __s) = (__uint8_t) c; __s; })
# define __memset_gc(s, c, n) \ # define __memset_gc(s, c, n) \
({ void *__s = (s); \ ({ void *__s = (s); \
union { \ union { \
unsigned int __ui; \ unsigned int __ui; \
@ -177,15 +178,19 @@ __STRING2_COPY_TYPE (8);
} \ } \
\ \
__s; }) __s; })
# else # else
# define memset(s, c, n) \ # define memset(s, c, n) \
(__extension__ (__builtin_constant_p (c) && (c) == '\0' \ (__extension__ (__builtin_constant_p (c) && (c) == '\0' \
? ({ void *__s = (s); __bzero (__s, n); __s; }) \ ? ({ void *__s = (s); __bzero (__s, n); __s; }) \
: memset (s, c, n))) : memset (s, c, n)))
# endif
# endif # endif
/* GCC optimizes memset(s, 0, n) but not bzero(s, n). /* GCC < 3.0 optimizes memset(s, 0, n) but not bzero(s, n).
The optimization is broken before EGCS 1.1. */ The optimization is broken before EGCS 1.1.
GCC 3.0+ has __builtin_bzero as well, but at least till GCC 3.4
if it decides to call the library function, it calls memset
and not bzero. */
# if __GNUC_PREREQ (2, 91) # if __GNUC_PREREQ (2, 91)
# define __bzero(s, n) __builtin_memset (s, '\0', n) # define __bzero(s, n) __builtin_memset (s, '\0', n)
# endif # endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. /* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@redhat.com>. Contributed by Richard Henderson <rth@redhat.com>.
@ -51,3 +51,4 @@ ENTRY(__stpcpy)
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 2002 Free Software Foundation, Inc. /* Copyright (C) 1996, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1996. Contributed by Richard Henderson <rth@tamu.edu>, 1996.
@ -53,3 +53,4 @@ ENTRY(__stpcpy)
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,7 +1,7 @@
/* Copy memory to memory until the specified number of bytes /* Copy memory to memory until the specified number of bytes
has been copied, return pointer to following byte. has been copied, return pointer to following byte.
Overlap is NOT handled correctly. Overlap is NOT handled correctly.
Copyright (C) 1991, 1997, 1998, 2002 Free Software Foundation, Inc. Copyright (C) 1991, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se). Contributed by Torbjorn Granlund (tege@sics.se).
@ -66,3 +66,4 @@ __mempcpy (dstpp, srcpp, len)
} }
libc_hidden_def (__mempcpy) libc_hidden_def (__mempcpy)
weak_alias (__mempcpy, mempcpy) weak_alias (__mempcpy, mempcpy)
libc_hidden_builtin_def (mempcpy)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1995, 1997, 2002 Free Software Foundation, Inc. /* Copyright (C) 1992, 1995, 1997, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -50,3 +50,6 @@ libc_hidden_def (__stpcpy)
#ifdef weak_alias #ifdef weak_alias
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
#endif #endif
#ifdef libc_hidden_builtin_def
libc_hidden_builtin_def (stpcpy)
#endif

View File

@ -1,5 +1,6 @@
/* Inline math functions for i387. /* Inline math functions for i387.
Copyright (C) 1995,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995. Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
@ -216,7 +217,7 @@ __signbitl (long double __x) __THROW
__inline_mathcode_ (float, __CONCAT(func,f), arg, code) \ __inline_mathcode_ (float, __CONCAT(func,f), arg, code) \
__inline_mathcode_ (long double, __CONCAT(func,l), arg, code) __inline_mathcode_ (long double, __CONCAT(func,l), arg, code)
# define __inline_mathcodeNP(func, arg, code) \ # define __inline_mathcodeNP(func, arg, code) \
__inline_mathcodeNP_ (double, func, arg, code) \ __inline_mathcodeNP_ (double, func, arg, code) \
__inline_mathcodeNP_ (float, __CONCAT(func,f), arg, code) \ __inline_mathcodeNP_ (float, __CONCAT(func,f), arg, code) \
__inline_mathcodeNP_ (long double, __CONCAT(func,l), arg, code) __inline_mathcodeNP_ (long double, __CONCAT(func,l), arg, code)
# define __inline_mathcode2(func, arg1, arg2, code) \ # define __inline_mathcode2(func, arg1, arg2, code) \
@ -224,7 +225,7 @@ __signbitl (long double __x) __THROW
__inline_mathcode2_ (float, __CONCAT(func,f), arg1, arg2, code) \ __inline_mathcode2_ (float, __CONCAT(func,f), arg1, arg2, code) \
__inline_mathcode2_ (long double, __CONCAT(func,l), arg1, arg2, code) __inline_mathcode2_ (long double, __CONCAT(func,l), arg1, arg2, code)
# define __inline_mathcodeNP2(func, arg1, arg2, code) \ # define __inline_mathcodeNP2(func, arg1, arg2, code) \
__inline_mathcodeNP2_ (double, func, arg1, arg2, code) \ __inline_mathcodeNP2_ (double, func, arg1, arg2, code) \
__inline_mathcodeNP2_ (float, __CONCAT(func,f), arg1, arg2, code) \ __inline_mathcodeNP2_ (float, __CONCAT(func,f), arg1, arg2, code) \
__inline_mathcodeNP2_ (long double, __CONCAT(func,l), arg1, arg2, code) __inline_mathcodeNP2_ (long double, __CONCAT(func,l), arg1, arg2, code)
# define __inline_mathcode3(func, arg1, arg2, arg3, code) \ # define __inline_mathcode3(func, arg1, arg2, arg3, code) \
@ -233,7 +234,7 @@ __signbitl (long double __x) __THROW
__inline_mathcode3_ (long double, __CONCAT(func,l), arg1, arg2, arg3, code) __inline_mathcode3_ (long double, __CONCAT(func,l), arg1, arg2, arg3, code)
# define __inline_mathcodeNP3(func, arg1, arg2, arg3, code) \ # define __inline_mathcodeNP3(func, arg1, arg2, arg3, code) \
__inline_mathcodeNP3_ (double, func, arg1, arg2, arg3, code) \ __inline_mathcodeNP3_ (double, func, arg1, arg2, arg3, code) \
__inline_mathcodeNP3_ (float, __CONCAT(func,f), arg1, arg2, arg3, code) \ __inline_mathcodeNP3_ (float, __CONCAT(func,f), arg1, arg2, arg3, code) \
__inline_mathcodeNP3_ (long double, __CONCAT(func,l), arg1, arg2, arg3, code) __inline_mathcodeNP3_ (long double, __CONCAT(func,l), arg1, arg2, arg3, code)
#else #else
# define __inline_mathcode(func, arg, code) \ # define __inline_mathcode(func, arg, code) \
@ -362,7 +363,13 @@ __sincosl (long double __x, long double *__sinx, long double *__cosx) __THROW
/* Optimized inline implementation, sometimes with reduced precision /* Optimized inline implementation, sometimes with reduced precision
and/or argument range. */ and/or argument range. */
# define __expm1_code \ # if __GNUC_PREREQ (3, 5)
# define __expm1_code \
register long double __temp; \
__temp = __builtin_expm1l (__x); \
return __temp ? __temp : __x
# else
# define __expm1_code \
register long double __value; \ register long double __value; \
register long double __exponent; \ register long double __exponent; \
register long double __temp; \ register long double __temp; \
@ -382,10 +389,13 @@ __sincosl (long double __x, long double *__sinx, long double *__cosx) __THROW
__temp -= 1.0; \ __temp -= 1.0; \
__temp += __value; \ __temp += __value; \
return __temp ? __temp : __x return __temp ? __temp : __x
# endif
__inline_mathcodeNP_ (long double, __expm1l, __x, __expm1_code) __inline_mathcodeNP_ (long double, __expm1l, __x, __expm1_code)
# if __GNUC_PREREQ (3, 4)
# define __exp_code \ __inline_mathcodeNP_ (long double, __expl, __x, return __builtin_expl (__x))
# else
# define __exp_code \
register long double __value; \ register long double __value; \
register long double __exponent; \ register long double __exponent; \
__asm __volatile__ \ __asm __volatile__ \
@ -404,8 +414,10 @@ __inline_mathcodeNP_ (long double, __expm1l, __x, __expm1_code)
return __value return __value
__inline_mathcodeNP (exp, __x, __exp_code) __inline_mathcodeNP (exp, __x, __exp_code)
__inline_mathcodeNP_ (long double, __expl, __x, __exp_code) __inline_mathcodeNP_ (long double, __expl, __x, __exp_code)
# endif
# if !__GNUC_PREREQ (3, 5)
__inline_mathcodeNP (tan, __x, \ __inline_mathcodeNP (tan, __x, \
register long double __value; \ register long double __value; \
register long double __value2 __attribute__ ((__unused__)); \ register long double __value2 __attribute__ ((__unused__)); \
@ -413,19 +425,28 @@ __inline_mathcodeNP (tan, __x, \
("fptan" \ ("fptan" \
: "=t" (__value2), "=u" (__value) : "0" (__x)); \ : "=t" (__value2), "=u" (__value) : "0" (__x)); \
return __value) return __value)
# endif
#endif /* __FAST_MATH__ */ #endif /* __FAST_MATH__ */
#define __atan2_code \ #if __GNUC_PREREQ (3, 4)
__inline_mathcodeNP2_ (long double, __atan2l, __y, __x,
return __builtin_atan2l (__y, __x))
#else
# define __atan2_code \
register long double __value; \ register long double __value; \
__asm __volatile__ \ __asm __volatile__ \
("fpatan" \ ("fpatan" \
: "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); \ : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); \
return __value return __value
# ifdef __FAST_MATH__
__inline_mathcodeNP2 (atan2, __y, __x, __atan2_code) __inline_mathcodeNP2 (atan2, __y, __x, __atan2_code)
# endif
__inline_mathcodeNP2_ (long double, __atan2l, __y, __x, __atan2_code) __inline_mathcodeNP2_ (long double, __atan2l, __y, __x, __atan2_code)
#endif
#if defined __FAST_MATH__ && !__GNUC_PREREQ (3, 5)
__inline_mathcodeNP2 (fmod, __x, __y, \ __inline_mathcodeNP2 (fmod, __x, __y, \
register long double __value; \ register long double __value; \
__asm __volatile__ \ __asm __volatile__ \
@ -435,6 +456,7 @@ __inline_mathcodeNP2 (fmod, __x, __y, \
"jp 1b" \ "jp 1b" \
: "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); \ : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); \
return __value) return __value)
#endif
#ifdef __FAST_MATH__ #ifdef __FAST_MATH__
@ -449,8 +471,10 @@ __inline_mathopNP_ (long double, __sqrtl, "fsqrt")
#if __GNUC_PREREQ (2, 8) #if __GNUC_PREREQ (2, 8)
__inline_mathcodeNP_ (double, fabs, __x, return __builtin_fabs (__x)) __inline_mathcodeNP_ (double, fabs, __x, return __builtin_fabs (__x))
# if defined __USE_MISC || defined __USE_ISOC99
__inline_mathcodeNP_ (float, fabsf, __x, return __builtin_fabsf (__x)) __inline_mathcodeNP_ (float, fabsf, __x, return __builtin_fabsf (__x))
__inline_mathcodeNP_ (long double, fabsl, __x, return __builtin_fabsl (__x)) __inline_mathcodeNP_ (long double, fabsl, __x, return __builtin_fabsl (__x))
# endif
__inline_mathcodeNP_ (long double, __fabsl, __x, return __builtin_fabsl (__x)) __inline_mathcodeNP_ (long double, __fabsl, __x, return __builtin_fabsl (__x))
#else #else
__inline_mathop (fabs, "fabs") __inline_mathop (fabs, "fabs")
@ -458,19 +482,26 @@ __inline_mathop_ (long double, __fabsl, "fabs")
#endif #endif
#ifdef __FAST_MATH__ #ifdef __FAST_MATH__
# if !__GNUC_PREREQ (3, 4)
/* The argument range of this inline version is reduced. */ /* The argument range of this inline version is reduced. */
__inline_mathopNP (sin, "fsin") __inline_mathopNP (sin, "fsin")
/* The argument range of this inline version is reduced. */ /* The argument range of this inline version is reduced. */
__inline_mathopNP (cos, "fcos") __inline_mathopNP (cos, "fcos")
__inline_mathop_declNP (log, "fldln2; fxch; fyl2x", "0" (__x) : "st(1)") __inline_mathop_declNP (log, "fldln2; fxch; fyl2x", "0" (__x) : "st(1)")
# endif
# if !__GNUC_PREREQ (3, 5)
__inline_mathop_declNP (log10, "fldlg2; fxch; fyl2x", "0" (__x) : "st(1)") __inline_mathop_declNP (log10, "fldlg2; fxch; fyl2x", "0" (__x) : "st(1)")
__inline_mathcodeNP (asin, __x, return __atan2l (__x, __libc_sqrtl (1.0 - __x * __x))) __inline_mathcodeNP (asin, __x, return __atan2l (__x, __libc_sqrtl (1.0 - __x * __x)))
__inline_mathcodeNP (acos, __x, return __atan2l (__libc_sqrtl (1.0 - __x * __x), __x)) __inline_mathcodeNP (acos, __x, return __atan2l (__libc_sqrtl (1.0 - __x * __x), __x))
#endif /* __FAST_MATH__ */ # endif
# if !__GNUC_PREREQ (3, 4)
__inline_mathop_declNP (atan, "fld1; fpatan", "0" (__x) : "st(1)") __inline_mathop_declNP (atan, "fld1; fpatan", "0" (__x) : "st(1)")
# endif
#endif /* __FAST_MATH__ */
__inline_mathcode_ (long double, __sgn1l, __x, \ __inline_mathcode_ (long double, __sgn1l, __x, \
__extension__ union { long double __xld; unsigned int __xi[3]; } __n = \ __extension__ union { long double __xld; unsigned int __xi[3]; } __n = \
@ -544,6 +575,7 @@ __inline_mathcodeNP (expm1, __x, __expm1_code)
here. */ here. */
# define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */ # define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */
# if !__GNUC_PREREQ (3, 5)
__inline_mathcodeNP (log1p, __x, \ __inline_mathcodeNP (log1p, __x, \
register long double __value; \ register long double __value; \
if (__fabsl (__x) >= 1.0 - 0.5 * __M_SQRT2) \ if (__fabsl (__x) >= 1.0 - 0.5 * __M_SQRT2) \
@ -555,6 +587,7 @@ __inline_mathcodeNP (log1p, __x, \
"fyl2xp1" \ "fyl2xp1" \
: "=t" (__value) : "0" (__x) : "st(1)"); \ : "=t" (__value) : "0" (__x) : "st(1)"); \
return __value) return __value)
# endif
/* The argument range of the inline version of asinhl is slightly reduced. */ /* The argument range of the inline version of asinhl is slightly reduced. */
@ -574,6 +607,7 @@ __inline_mathcodeNP (atanh, __x, \
__inline_mathcodeNP2 (hypot, __x, __y, __inline_mathcodeNP2 (hypot, __x, __y,
return __libc_sqrtl (__x * __x + __y * __y)) return __libc_sqrtl (__x * __x + __y * __y))
# if !__GNUC_PREREQ (3, 5)
__inline_mathcodeNP(logb, __x, \ __inline_mathcodeNP(logb, __x, \
register long double __value; \ register long double __value; \
register long double __junk; \ register long double __junk; \
@ -581,13 +615,17 @@ __inline_mathcodeNP(logb, __x, \
("fxtract\n\t" \ ("fxtract\n\t" \
: "=t" (__junk), "=u" (__value) : "0" (__x)); \ : "=t" (__junk), "=u" (__value) : "0" (__x)); \
return __value) return __value)
# endif
# endif # endif
#endif #endif
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
#ifdef __FAST_MATH__ # ifdef __FAST_MATH__
# if !__GNUC_PREREQ (3, 5)
__inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)") __inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)")
# endif
__MATH_INLINE float __MATH_INLINE float
ldexpf (float __x, int __y) __THROW ldexpf (float __x, int __y) __THROW
@ -604,9 +642,9 @@ ldexpl (long double __x, int __y) __THROW
__inline_mathcodeNP3 (fma, __x, __y, __z, return (__x * __y) + __z) __inline_mathcodeNP3 (fma, __x, __y, __z, return (__x * __y) + __z)
__inline_mathopNP (rint, "frndint") __inline_mathopNP (rint, "frndint")
#endif /* __FAST_MATH__ */ # endif /* __FAST_MATH__ */
#define __lrint_code \ # define __lrint_code \
long int __lrintres; \ long int __lrintres; \
__asm__ __volatile__ \ __asm__ __volatile__ \
("fistpl %0" \ ("fistpl %0" \
@ -627,9 +665,9 @@ lrintl (long double __x) __THROW
{ {
__lrint_code; __lrint_code;
} }
#undef __lrint_code # undef __lrint_code
#define __llrint_code \ # define __llrint_code \
long long int __llrintres; \ long long int __llrintres; \
__asm__ __volatile__ \ __asm__ __volatile__ \
("fistpll %0" \ ("fistpll %0" \
@ -650,13 +688,14 @@ llrintl (long double __x) __THROW
{ {
__llrint_code; __llrint_code;
} }
#undef __llrint_code # undef __llrint_code
#endif #endif
#ifdef __USE_MISC #ifdef __USE_MISC
# if defined __FAST_MATH__ && !__GNUC_PREREQ (3, 5)
__inline_mathcodeNP2 (drem, __x, __y, \ __inline_mathcodeNP2 (drem, __x, __y, \
register double __value; \ register double __value; \
register int __clobbered; \ register int __clobbered; \
@ -667,6 +706,7 @@ __inline_mathcodeNP2 (drem, __x, __y, \
"jp 1b" \ "jp 1b" \
: "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); \ : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); \
return __value) return __value)
# endif
/* This function is used in the `isfinite' macro. */ /* This function is used in the `isfinite' macro. */
@ -679,7 +719,7 @@ __finite (double __x) __THROW
} }
/* Miscellaneous functions */ /* Miscellaneous functions */
#ifdef __FAST_MATH__ # ifdef __FAST_MATH__
__inline_mathcode (__coshm1, __x, \ __inline_mathcode (__coshm1, __x, \
register long double __exm1 = __expm1l (__fabsl (__x)); \ register long double __exm1 = __expm1l (__fabsl (__x)); \
return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1) return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1)
@ -687,7 +727,7 @@ __inline_mathcode (__coshm1, __x, \
__inline_mathcode (__acosh1p, __x, \ __inline_mathcode (__acosh1p, __x, \
return log1pl (__x + __libc_sqrtl (__x) * __libc_sqrtl (__x + 2.0))) return log1pl (__x + __libc_sqrtl (__x) * __libc_sqrtl (__x + 2.0)))
#endif /* __FAST_MATH__ */ # endif /* __FAST_MATH__ */
#endif /* __USE_MISC */ #endif /* __USE_MISC */
/* Undefine some of the large macros which are not used anymore. */ /* Undefine some of the large macros which are not used anymore. */

View File

@ -3,3 +3,4 @@
libc_hidden_def (BP_SYM (__mempcpy)) libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy)) weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
libc_hidden_builtin_def (mempcpy)

View File

@ -5,3 +5,4 @@
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,7 +1,7 @@
/* Copy memory block and return pointer to following byte. /* Copy memory block and return pointer to following byte.
For Intel 80x86, x>=6. For Intel 80x86, x>=6.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -59,3 +59,4 @@ ENTRY (BP_SYM (__mempcpy))
END (BP_SYM (__mempcpy)) END (BP_SYM (__mempcpy))
libc_hidden_def (BP_SYM (__mempcpy)) libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy)) weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
libc_hidden_builtin_def (mempcpy)

View File

@ -1,6 +1,7 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST. /* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For Intel 80x86, x>=3. For Intel 80x86, x>=3.
Copyright (C) 1994,1995,1996,1997,2000,2002 Free Software Foundation, Inc. Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002, 2004
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper (drepper@gnu.ai.mit.edu). Contributed by Ulrich Drepper (drepper@gnu.ai.mit.edu).
@ -94,3 +95,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy)) weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,5 +1,5 @@
/* Optimized stpcpy implementation for PowerPC. /* Optimized stpcpy implementation for PowerPC.
Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -119,3 +119,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy)) weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,5 +1,5 @@
/* Optimized stpcpy implementation for PowerPC64. /* Optimized stpcpy implementation for PowerPC64.
Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -119,3 +119,4 @@ END (BP_SYM (__stpcpy))
weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy)) weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -26,7 +26,7 @@
#ifdef __GNUC__ #ifdef __GNUC__
#if defined __USE_ISOC99 && !__GNUC_PREREQ(3,0) #if defined __USE_ISOC99 && !__GNUC_PREREQ (3, 0)
# undef isgreater # undef isgreater
# undef isgreaterequal # undef isgreaterequal
# undef isless # undef isless
@ -153,7 +153,7 @@ __signbitl (long double __x) __THROW
# endif /* __USE_ISOC99 */ # endif /* __USE_ISOC99 */
# ifndef __NO_MATH_INLINES # if !defined __NO_MATH_INLINES && !__GNUC_PREREQ (3, 2)
__MATH_INLINE double __MATH_INLINE double
sqrt (double __x) __THROW sqrt (double __x) __THROW
@ -182,7 +182,7 @@ sqrtl (long double __x) __THROW
} }
# endif /* sparc64 */ # endif /* sparc64 */
# endif /* !__NO_MATH_INLINES */ # endif /* !__NO_MATH_INLINES && !GCC 3.2+ */
/* This code is used internally in the GNU libc. */ /* This code is used internally in the GNU libc. */
# ifdef __LIBC_INTERNAL_MATH_INLINES # ifdef __LIBC_INTERNAL_MATH_INLINES

View File

@ -1,6 +1,6 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST. /* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For SPARC v7. For SPARC v7.
Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc. Copyright (C) 1996, 1999, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>. Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
@ -162,3 +162,4 @@ END(__stpcpy)
weak_alias(__stpcpy, stpcpy) weak_alias(__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,6 +1,6 @@
/* Copy SRC to DEST returning the address of the terminating '\0' in DEST. /* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
For SPARC v9. For SPARC v9.
Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
Jakub Jelinek <jj@ultra.linux.cz>. Jakub Jelinek <jj@ultra.linux.cz>.
@ -272,3 +272,4 @@ END(__stpcpy)
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)

View File

@ -1,5 +1,5 @@
/* Highly optimized version for x86-64. /* Highly optimized version for x86-64.
Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1997, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Based on i586 version contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Based on i586 version contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -90,4 +90,6 @@ ENTRY (BP_SYM (memcpy))
ret ret
END (BP_SYM (memcpy)) END (BP_SYM (memcpy))
#if !MEMPCPY_P
libc_hidden_builtin_def (memcpy) libc_hidden_builtin_def (memcpy)
#endif

View File

@ -3,3 +3,4 @@
libc_hidden_def (BP_SYM (__mempcpy)) libc_hidden_def (BP_SYM (__mempcpy))
weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy)) weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy))
libc_hidden_builtin_def (mempcpy)

View File

@ -5,3 +5,4 @@
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy) libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)