Skip modifying exception mask and flags in SET_RESTORE_ROUND_53BIT

We only need to set/restore rounding mode to ensure correct
computation for non-default rounding modes.
This commit is contained in:
Siddhesh Poyarekar 2013-06-05 13:56:19 +05:30
parent 96df079a42
commit 4c60cb0c83
2 changed files with 15 additions and 6 deletions

View File

@ -1,3 +1,12 @@
2013-06-05 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/generic/math_private.h
(libc_feholdexcept_setround_53bit): Replace with
libc_feholdsetround_53bit.
(libc_feupdateenv_53bit): Replace with
libc_feresetround_53bit.
(SET_RESTORE_ROUND_53BIT): Adjust.
2013-06-03 Siddhesh Poyarekar <siddhesh@redhat.com>
* string/test-strchrnul.c: Add copyright header.

View File

@ -446,8 +446,8 @@ default_libc_feholdexcept_setround (fenv_t *e, int r)
# define libc_feholdexcept_setroundl default_libc_feholdexcept_setround
#endif
#ifndef libc_feholdexcept_setround_53bit
# define libc_feholdexcept_setround_53bit libc_feholdexcept_setround
#ifndef libc_feholdsetround_53bit
# define libc_feholdsetround_53bit libc_feholdsetround
#endif
#ifndef libc_fetestexcept
@ -492,8 +492,8 @@ default_libc_feupdateenv (fenv_t *e)
# define libc_feupdateenvl default_libc_feupdateenv
#endif
#ifndef libc_feupdateenv_53bit
# define libc_feupdateenv_53bit libc_feupdateenv
#ifndef libc_feresetround_53bit
# define libc_feresetround_53bit libc_feresetround
#endif
static __always_inline int
@ -580,8 +580,8 @@ default_libc_feupdateenv_test (fenv_t *e, int ex)
/* Like SET_RESTORE_ROUND, but also set rounding precision to 53 bits. */
#define SET_RESTORE_ROUND_53BIT(RM) \
fenv_t __libc_save_rm __attribute__((cleanup(libc_feupdateenv_53bit))); \
libc_feholdexcept_setround_53bit (&__libc_save_rm, (RM))
fenv_t __libc_save_rm __attribute__((cleanup(libc_feresetround_53bit))); \
libc_feholdsetround_53bit (&__libc_save_rm, (RM))
#define __nan(str) \
(__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str))