Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/tests/lib/libc/gen



Module Name:    src
Committed By:   riastradh
Date:           Tue Feb 17 22:32:36 UTC 2026

Modified Files:
        src/tests/lib/libc/gen: t_fpclassify.c

Log Message:
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
   for diagnostics!

   This change doesn't guarantee floating-point load instructions are
   prevented, but for the moment it seems to avoid them.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/tests/lib/libc/gen/t_fpclassify.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index