Richard Guenther <richard dot guenther at gmail dot com> wrote: > > I don't buy the argument that inlining math routines (apart from those we > already handle) would improve performance. What will improve performance is > to have separate entry points to the routines to skip errno handling, NaN/Inf > checking or rounding mode selection when certain compilation flags are set. > That as well as a more sane calling convention for, for example sincos, or in > general on x86_64 (have at least _some_ callee-saved XMM registers). >
If one were to create a new libm, why not dispense with the errno stuff altogether, and make -fno-math-errno the default, at least in c99/c++11 modes (and set the math_errhandling macro properly). Some quick googling suggests that libm's which don't set errno are not that uncommon, e.g. https://lists.gnu.org/archive/html/bug-gnulib/2011-11/msg00069.html http://docs.oracle.com/cd/E19422-01/819-3693/ncg_compliance.html http://www.uta.edu/faculty/rcli/papers/FP_White_Paper_v2.pdf https://www-304.ibm.com/support/docview.wss?uid=swg27005375 http://www.cz.freebsd.org/pub/FreeBSD-cvs/gnats/standards/56906 Wrappers setting errno for compatibility with C89/C++98 and older POSIX standards would probably still be desirable, though. -- Janne Blomqvist -- Janne Blomqvist