mirror of git://sourceware.org/git/glibc.git
Testing on mips64 showed missing underflow exceptions (from exp, for example) in non-default rounding modes, caused by libc_feresetround*_ctx wrongly restoring a saved environment without preserving exceptions, when that's only valid for the _noex variants. (I don't know why Steve didn't see this in his testing.) This patch fixes this by using libc_feupdateenv_mips_ctx for the relevant macros and removing the problem definitions. The problem definitions aren't suitable for the _noex macros either because they only discard exceptions in non-default rounding modes, and while for some uses of *_noex/*_NOEX it doesn't matter whether exceptions are discarded, dbl-64/e_remainder.c requires SET_RESTORE_ROUND_NOEX to cause exceptions to be discarded. I think the accumulated set of macros / functions for optimized exception / rounding mode handling could do with a careful review by now, and possible refactoring, and at least one new feature (extracting the saved rounding mode from an environment / context variable - see dbl-64/e_sqrt.c for a case where this could be used). Tested mips64. * sysdeps/mips/math_private.h [__mips_hard_float] (libc_feresetround_ctx): Define to libc_feupdateenv_mips_ctx not libc_feresetround_mips_ctx. [__mips_hard_float] (libc_feresetroundf_ctx): Likewise. [__mips_hard_float] (libc_feresetroundl_ctx): Likewise. [__mips_hard_float] (libc_feresetround_mips_ctx): Remove. |
||
|---|---|---|
| .. | ||
| bits | ||
| fpu | ||
| ieee754 | ||
| include/sys | ||
| mips32 | ||
| mips64 | ||
| nptl | ||
| soft-fp | ||
| sys | ||
| Implies | ||
| Makefile | ||
| __longjmp.c | ||
| abort-instr.h | ||
| add_n.S | ||
| addmul_1.S | ||
| backtrace.c | ||
| bsd-_setjmp.S | ||
| bsd-setjmp.S | ||
| configure | ||
| configure.ac | ||
| dl-dtprocnum.h | ||
| dl-machine.h | ||
| dl-procinfo.c | ||
| dl-procinfo.h | ||
| dl-tls.h | ||
| dl-trampoline.c | ||
| fpregdef.h | ||
| fpu_control.h | ||
| gccframe.h | ||
| jmpbuf-unwind.h | ||
| ldsodefs.h | ||
| libc-tls.c | ||
| lshift.S | ||
| machine-gmon.h | ||
| math-tests.h | ||
| math_private.h | ||
| memcpy.S | ||
| memset.S | ||
| memusage.h | ||
| mul_1.S | ||
| preconfigure | ||
| regdef.h | ||
| rshift.S | ||
| setjmp.S | ||
| setjmp_aux.c | ||
| sgidefs.h | ||
| shlib-versions | ||
| sotruss-lib.c | ||
| stackinfo.h | ||
| start.S | ||
| sub_n.S | ||
| submul_1.S | ||
| tininess.h | ||
| tls-macros.h | ||
| tst-audit.h | ||