Use leaf function attribute in __THROW

This commit is contained in:
Ulrich Drepper 2011-10-16 21:29:11 -04:00
parent ad0f5cad15
commit aa78043a4a
2 changed files with 14 additions and 3 deletions

View File

@ -1,5 +1,7 @@
2011-10-16 Ulrich Drepper <drepper@gmail.com>
* misc/sys/cdefs.h: Use leaf function attribute in __THROW.
* sysdeps/ieee754/dbl-64/s_ceil.c: Avoid alias renamed.
* sysdeps/ieee754/dbl-64/s_floor.c: Likewise.
* sysdeps/ieee754/dbl-64/s_rint.c: Likewise.

View File

@ -38,18 +38,27 @@
#ifdef __GNUC__
/* All functions, except those with callbacks, are leaf functions. */
# if __GNUC_PREREQ (4, 6) && !defined _LIBC
# define __LEAF , __leaf__
# define __LEAF_ATTR __attribute__ ((__leaf__))
# else
# define __LEAF
# define __LEAF_ATTR
# endif
/* GCC can always grok prototypes. For C++ programs we add throw()
to help it optimize the function calls. But this works only with
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
as non-throwing using a function attribute since programs can use
the -fexceptions options for C code as well. */
# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
# define __THROW __attribute__ ((__nothrow__))
# define __NTH(fct) __attribute__ ((__nothrow__)) fct
# define __THROW __attribute__ ((__nothrow__ __LEAF_ATTR))
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF_ATTR)) fct
# else
# if defined __cplusplus && __GNUC_PREREQ (2,8)
# define __THROW throw ()
# define __NTH(fct) fct throw ()
# define __NTH(fct) __LEAF_ATTR fct throw ()
# else
# define __THROW
# define __NTH(fct) fct