On 6/30/2021 2:59 AM, Matthias Kretz wrote:
Library code, especially in headers, sometimes needs to know how the
compiler interprets / optimizes floating-point types and operations.
This information can be used for additional optimizations or for
ensuring correctness. This change makes -freciprocal-math,
-fno-signed-zeros, -fno-trapping-math, -fassociative-math, and
-frounding-math report their state via corresponding pre-defined macros.

Signed-off-by: Matthias Kretz <m.kr...@gsi.de>

gcc/testsuite/ChangeLog:

        * gcc.dg/associative-math-1.c: New test.
        * gcc.dg/associative-math-2.c: New test.
        * gcc.dg/no-signed-zeros-1.c: New test.
        * gcc.dg/no-signed-zeros-2.c: New test.
        * gcc.dg/no-trapping-math-1.c: New test.
        * gcc.dg/no-trapping-math-2.c: New test.
        * gcc.dg/reciprocal-math-1.c: New test.
        * gcc.dg/reciprocal-math-2.c: New test.
        * gcc.dg/rounding-math-1.c: New test.
        * gcc.dg/rounding-math-2.c: New test.

gcc/c-family/ChangeLog:

        * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Define or
        undefine __RECIPROCAL_MATH__, __NO_SIGNED_ZEROS__,
        __NO_TRAPPING_MATH__, __ASSOCIATIVE_MATH__, and
        __ROUNDING_MATH__ according to the new optimization flags.

gcc/ChangeLog:

        * cppbuiltin.c (define_builtin_macros_for_compilation_flags):
        Define __RECIPROCAL_MATH__, __NO_SIGNED_ZEROS__,
        __NO_TRAPPING_MATH__, __ASSOCIATIVE_MATH__, and
        __ROUNDING_MATH__ according to their corresponding flags.
        * doc/cpp.texi: Document __RECIPROCAL_MATH__,
        __NO_SIGNED_ZEROS__, __NO_TRAPPING_MATH__, __ASSOCIATIVE_MATH__,
        and __ROUNDING_MATH__.
OK.  Sorry about the long wait.

jeff

Reply via email to