about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2013-01-18 14:16:25 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2013-01-18 14:16:25 +0530
commit0b57daebab36f59af1d2a02616ee636a7b13ba12 (patch)
treecbc2cf9636fc92436d62ce5a99179715615d8a19
parentcaa99d06e7f1403887294442af520b0f8c6f3de0 (diff)
downloadglibc-0b57daebab36f59af1d2a02616ee636a7b13ba12.tar.gz
glibc-0b57daebab36f59af1d2a02616ee636a7b13ba12.tar.xz
glibc-0b57daebab36f59af1d2a02616ee636a7b13ba12.zip
Fix application of the exception mask
Fixes BZ #14496.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/i386/fpu/fenv_private.h2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 52a95426d1..647ce1d496 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2013-01-18  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
+	[BZ #14496]
+	* sysdeps/i386/fpu/fenv_private.h (libc_feupdateenv_test_sse):
+	Fix application of SIMD FP exception mask.
+
 	* sysdeps/ieee754/dbl-64/mpa.h (__pow_mp): New function to get an
 	mp_no from a power of two.
 	* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Remove
diff --git a/sysdeps/i386/fpu/fenv_private.h b/sysdeps/i386/fpu/fenv_private.h
index 03f4c97a9c..1f8336cf96 100644
--- a/sysdeps/i386/fpu/fenv_private.h
+++ b/sysdeps/i386/fpu/fenv_private.h
@@ -176,7 +176,7 @@ libc_feupdateenv_test_sse (fenv_t *e, int ex)
 
   /* Raise SIGFPE for any new exceptions since the hold.  Expect that
      the normal environment has all exceptions masked.  */
-  if (__builtin_expect ((old_mxcsr >> 7) & cur_ex, 0))
+  if (__glibc_unlikely (~(old_mxcsr >> 7) & cur_ex))
     __feraiseexcept (cur_ex);
 
   /* Test for exceptions raised since the hold.  */