Direct comparison may have portability concerns because a constant may
have more precision than its counterpart. Even a direct cast before
a comparison may not work (e.g. Math.atan2() assert with gcc -m32 still
fails even when both sides have an explicit double cast). So use an
internal always-inline helper for float/double comparisons, which also
allows -Wfloat-equal warning to be suppressed in a single helper; add
a clang pragma option so that both gcc and clang suppress the warning.
Other changes:
* Add -Wfloat-equal warning back to the Makefile.
* Fix all internal float comparison call sites to use the helper.
* Add code policy check for probable floating point comparison
(not very important with -Wfloat-equal enabled).
* Add DUK_BSWAP64() fill-in when 64-bit types available.
* Add DUK_BSWAP16(), DUK_BSWAP32(), and DUK_BSWAP64() GCC and Clang
built-ins. These are nice but unnecessary except at low optimizations
because the macros compile down to proper bswap instructions.
* Improve bswap self tests.
Replaced #ifdefs with DUK_U64_CONSTANT and DUK_I64_CONSTANT macros for cleaner
code and to prevent future breakage, as suggested by svaarala.
Missed a few replacements. Added.
Last one.
Changed parameter name from x to a.
Split MinGW and MSVC typedefs for 64-bit types.
Added myself to list of code contributors.