[Bug 204671] clang floating point wrong around Inf (i386)

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Nov 27 14:37:21 UTC 2015


--- Comment #4 from Jilles Tjoelker <jilles at FreeBSD.org> ---
It may be reasonable to make i386 fesetround() a non-inline function, at least
when compiling without SSE (__test_sse() may be called). In that case,
compilers are likely to save caller-save registers already, so part of the cost
of a function call is already paid, even though an actual function call only
happens the first time.

Alternatively, __test_sse() could be called somewhere during startup, so the
function call in the inlined fesetround() is not needed. This will reduce code
size of fesetround() calls considerably, but rounding to float or double is
still likely to use an incorrect rounding mode.

When compiling with SSE, there is no __test_sse() call and the behaviour for
the x87 is similar; however, if SSE2 is enabled, the x87 is probably only used
for long double.

You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-bugs mailing list