-
- Downloads
Predefine __NO_MATH_ERRNO__ for -fno-math-errno.
This patch adds a predefined macro __NO_MATH_ERRNO__ for when -fno-math-errno is passed or implied. This allows math.h to provide a more accurate definition of the C99 math_errhandling macro that takes this option into account, and allows for choice of libm functions to be optimized at compile time based on this option. (There may be a case for such interfaces for -fno-rounding-math (default) and -fno-trapping-math as well, but as C99 standard pragmas would allow those to vary on a per-block basis, predefined macros would be problematic as the interface; you can't select a -fno-trapping-math or -fno-rounding-math version of a function in a standard header if a conforming program could then use "#pragma STDC FENV_ACCESS ON" to require a -ftrapping-math -frounding-math version in a particular block. So built-in functions might be a better way of providing access to information about those options.) Bootstrapped with no regressions on x86_64-unknown-linux-gnu. OK to commit? * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Define __NO_MATH_ERRNO__ if -fno-math-errno. * doc/cpp.texi (__NO_MATH_ERRNO__): Document predefined macro. c-family: * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Define and undefine __NO_MATH_ERRNO__ based on changes to -fmath-errno state. testsuite: * gcc.dg/no-math-errno-1.c, gcc.dg/no-math-errno-2.c, gcc.dg/no-math-errno-3.c, gcc.dg/no-math-errno-4.c: New tests. From-SVN: r217420
Showing
- gcc/ChangeLog 6 additions, 0 deletionsgcc/ChangeLog
- gcc/c-family/ChangeLog 5 additions, 0 deletionsgcc/c-family/ChangeLog
- gcc/c-family/c-cppbuiltin.c 5 additions, 0 deletionsgcc/c-family/c-cppbuiltin.c
- gcc/cppbuiltin.c 2 additions, 0 deletionsgcc/cppbuiltin.c
- gcc/doc/cpp.texi 4 additions, 0 deletionsgcc/doc/cpp.texi
- gcc/testsuite/ChangeLog 5 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.dg/no-math-errno-1.c 7 additions, 0 deletionsgcc/testsuite/gcc.dg/no-math-errno-1.c
- gcc/testsuite/gcc.dg/no-math-errno-2.c 7 additions, 0 deletionsgcc/testsuite/gcc.dg/no-math-errno-2.c
- gcc/testsuite/gcc.dg/no-math-errno-3.c 7 additions, 0 deletionsgcc/testsuite/gcc.dg/no-math-errno-3.c
- gcc/testsuite/gcc.dg/no-math-errno-4.c 17 additions, 0 deletionsgcc/testsuite/gcc.dg/no-math-errno-4.c
Loading
Please register or sign in to comment