[Bug target/59316] gcc.dg/atomic/c11-atomic-exec-5.c FAILs on Solaris/SPARC

ebotcazou at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 2 22:48:00 GMT 2013


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?



More information about the Gcc-bugs mailing list