This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix feholdexcept on s390{,x}


Hi!

feholdexcept is supposed to save the current fenv, then clear the
status flags and stop generating all exceptions.  But on s390{,x}
feholdexcept was also clearing the exceptions in the saved fenv_t.
Fixes test-fenv on s390*.

2007-05-09  Jakub Jelinek  <jakub@redhat.com>

	[BZ #3427]
	* sysdeps/s390/fpu/feholdexcpt.c (feholdexcept): Don't clear exceptions
	in *envp.

--- libc/sysdeps/s390/fpu/feholdexcpt.c.jj	2005-07-08 14:52:46.000000000 -0400
+++ libc/sysdeps/s390/fpu/feholdexcpt.c	2007-05-09 12:09:01.000000000 -0400
@@ -1,5 +1,5 @@
 /* Store current floating-point environment and clear exceptions.
-   Copyright (C) 2000, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2005, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
 
@@ -23,13 +23,14 @@
 
 int feholdexcept (fenv_t *envp)
 {
+  fexcept_t fpc;
   /* Store the environment.  */
   fegetenv (envp);
   /* Clear the current sticky bits as more than one exception
      may be generated.  */
-  envp->fpc &= ~(FPC_FLAGS_MASK | FPC_DXC_MASK);
+  fpc = envp->fpc & ~(FPC_FLAGS_MASK | FPC_DXC_MASK);
   /* Hold from generating fpu exceptions temporarily.  */
-  _FPU_SETCW ((envp->fpc & ~(FE_ALL_EXCEPT << FPC_EXCEPTION_MASK_SHIFT)));
+  _FPU_SETCW ((fpc & ~(FE_ALL_EXCEPT << FPC_EXCEPTION_MASK_SHIFT)));
   return 0;
 }
 libm_hidden_def (feholdexcept)

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]