[Bug middle-end/64225] -funsafe-math-optimizations generates call to pow where multiply instruction would do
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 8 16:56:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64225
--- Comment #8 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
Expanding x * x (or any such multiplication) to a call to pow is
inherently dubious because the semantics of multiplication never include
clobbering errno, though maybe it's OK with -funsafe-math-optimizations to
introduce such a clobber.
I think it would be useful to have no-errno-setting-needed versions of
libm function builtins that users can call explicitly, as well as for
internal use by GCC when it generates a built-in function call from code
that doesn't set errno.
(For example: glibc uses __builtin_fma to expand to an fma instruction
when _FP_FAST_FMA indicates one is available. But strictly it's incorrect
to expand fma / __builtin_fma calls to such an instruction without
considering errno, unless -fno-math-errno. None of those glibc uses
require fma to set errno (and glibc fma has its own bug where it fails to
do so), so it would be beneficial to have __builtin_fma_noerrno to reflect
what's actually required - this function would expand inline if possible,
and failing that would call an fma function that might or might not end up
settting errno.)
More information about the Gcc-bugs
mailing list