http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59316
--- Comment #10 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Fixing on SPARC. Ugh. Linux and Solaris disagree on the values of the FE_* macros so we will need to have OS-dependent code in the sparc_atomic_assign_expand_fenv hook if we call __atomic_feraiseexcept (I wonder if the same issue exists for x86/x86-64). The feupdateenv implementation for SPARC in glibc calls feraiseexcept at the end (like the x86 implementation), but it does so only for the "old" exceptions. Yet the manpage seems to indicate that "old" and "new" exceptions play a symmetrical role: The feupdateenv() function installs the floating-point environment rep- resented by the object *envp, except that currently raised exceptions are not cleared. After calling this function, the raised exceptions will be a bitwise OR of those previously set with those in *envp. As before, the object *envp must be known to be valid. The implementation for PowerPC does not call feraiseexcept at the end and instead merges the exceptions in a symmetrical way. Rainer, can you briefly describe the implementation of feupdateenv in the libm of OpenSolaris?