t_fpclassify: Show the floating-point bits more carefully.
Use formatbits(&f) rather than formatbits(f). This serves two
purposes:
1. Type-checking.
Can't accidentally pass a double where a float is needed -- a bug
that previously appeared a few times in this code.
2. Reducing the chance that the data will pass through floating-point
load/store instructions on x87.
Floating-point load of binary32 (float) or binary64 (double)
converts to x87 80-bit extended precision format internally, which
preserves all floating-point _numbers_ and _infinities_ but has
the side effect of changing signalling NaN to quiet NaN (and
raising FE_INVALID). This means that signalling NaNs were getting
wrongly printed _as if_ they were quiet NaNs, which is frustrating
[4 lines not shown]
More cleanups and simplifications (more of the previous).
In particular, there is no need to say "using the swapctl(2)
system call", the SEE ALSO to that page should make that clear
enough to anyone who actually cares, which is not required of
a user of swapctl(8).
Minor other changes (a few grammar cleanups), and one new
BUGS entry added (should have been there for ages now).
swapctl(8): edit to g/c ornate verbosity
In a typical
-x The -x option is used to cause swapctl to frob.
description the relevant bits of information are 1) "-x" and 2)
"frob", so just make it say:
-x Frob.
The pleonastic repetitions just get in the way. The effect is
cumulative and by the second page it makes you want to bang your head
against the wall and not in a good way.
Take 2 on attempted build fix.
The issue seems to be the
#define makequietsignallingl makequietsignalling
which happens when ! defined(__HAVE_LONG_DOUBLE)
That worked before as
long double f = makequietsignalling(...);
(effectively) just did a type conversion from double to long double
(which might be a no-op, but is still a type conversion) and so was
OK.
But the new method
makequietsignalling(&ldvar, ...)
[10 lines not shown]
Shorten some long function names.
This is an attempt to fix 2/3 of the NetBSD builds (50 of 75) which are
all failing the same way, and the only way I can make any sense of the
compiler's error message, would be if the function names were exceeding
a limit for the length withing which they are required to be distinct.
That is, this code had makequietsignalling() makequietsignallingf() and
makequietsignallingl() and gcc is complaining that the parameters to
makequietsignalling() are of incorrect types, and then showing what is
very clearly a call to makequietsignallingl() for which the parame are
the correct types.
So, make those names shorter, and with any luck, this will all build
and work. (It builds on amd64, but that was one of the 25 where it
did with the long names, do that's little help.)
Feel free to revert this if it doesn't work!