https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102498

--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Jakub Jelinek
<ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:0dcd7625b03a1bd5be927a4ade1ddf240587fc08

commit r10-10645-g0dcd7625b03a1bd5be927a4ade1ddf240587fc08
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Sep 28 13:02:51 2021 +0200

    i386: Don't emit fldpi etc. if -frounding-math [PR102498]

    i387 has instructions to store some transcedental numbers into the top of
    stack.  The problem is that what exact bit in the last place one gets for
    those depends on the current rounding mode, the CPU knows the number with
    slightly higher precision.  The compiler assumes rounding to nearest when
    comparing them against constants in the IL, but at runtime the rounding
    can be different and so some of these depending on rounding mode and the
    constant could be 1 ulp higher or smaller than expected.
    We only support changing the rounding mode at runtime if the non-default
    -frounding-mode option is used, so the following patch just disables
    using those constants if that flag is on.

    2021-09-28  Jakub Jelinek  <ja...@redhat.com>

            PR target/102498
            * config/i386/i386.c (standard_80387_constant_p): Don't recognize
            special 80387 instruction XFmode constants if flag_rounding_math.

            * gcc.target/i386/pr102498.c: New test.

    (cherry picked from commit 3b7041e8345c2f1030e58620f28e22d64b2c196b)

Reply via email to