Page MenuHomeFreeBSD

D28938.id84746.diff
No OneTemporary

D28938.id84746.diff

Index: lib/libc/tests/stdio/printfloat_test.c
===================================================================
--- lib/libc/tests/stdio/printfloat_test.c
+++ lib/libc/tests/stdio/printfloat_test.c
@@ -50,7 +50,7 @@
{
static uint32_t junk = 0xdeadbeef;
uint32_t buf[512];
- int i;
+ size_t i;
for (i = 0; i < sizeof(buf) / sizeof(buf[0]); i++)
buf[i] = junk;
@@ -370,6 +370,37 @@
testfmt("0x1.83p+0", "%.2a", 1.51);
}
+ATF_TC_WITHOUT_HEAD(subnormal_double);
+ATF_TC_BODY(subnormal_double, tc)
+{
+ /* Regression test for https://bugs.freebsd.org/253847 */
+ double positive = __DBL_DENORM_MIN__;
+ testfmt("4.9406564584124654418e-324", "%20.20g", positive);
+ testfmt("4.9406564584124654418E-324", "%20.20G", positive);
+ testfmt("0x1p-1074", "%a", positive);
+ testfmt("0X1P-1074", "%A", positive);
+ double negative = -__DBL_DENORM_MIN__;
+ testfmt("-4.9406564584124654418e-324", "%20.20g", negative);
+ testfmt("-4.9406564584124654418E-324", "%20.20G", negative);
+ testfmt("-0x1p-1074", "%a", negative);
+ testfmt("-0X1P-1074", "%A", negative);
+}
+
+ATF_TC_WITHOUT_HEAD(subnormal_float);
+ATF_TC_BODY(subnormal_float, tc)
+{
+ float positive = __FLT_DENORM_MIN__;
+ testfmt("1.4012984643248170709e-45", "%20.20g", positive);
+ testfmt("1.4012984643248170709E-45", "%20.20G", positive);
+ testfmt("0x1p-149", "%a", positive);
+ testfmt("0X1P-149", "%A", positive);
+ float negative = -__FLT_DENORM_MIN__;
+ testfmt("-1.4012984643248170709e-45", "%20.20g", negative);
+ testfmt("-1.4012984643248170709E-45", "%20.20G", negative);
+ testfmt("-0x1p-149", "%a", negative);
+ testfmt("-0X1P-149", "%A", negative);
+}
+
ATF_TP_ADD_TCS(tp)
{
@@ -384,6 +415,8 @@
ATF_TP_ADD_TC(tp, decimal_rounding);
ATF_TP_ADD_TC(tp, hexadecimal_floating_point);
ATF_TP_ADD_TC(tp, hexadecimal_rounding);
+ ATF_TP_ADD_TC(tp, subnormal_double);
+ ATF_TP_ADD_TC(tp, subnormal_float);
return (atf_no_error());
}
Index: sys/arm64/arm64/vm_machdep.c
===================================================================
--- sys/arm64/arm64/vm_machdep.c
+++ sys/arm64/arm64/vm_machdep.c
@@ -55,7 +55,7 @@
#include <machine/vfp.h>
#endif
-uint32_t initial_fpcr = VFPCR_DN | VFPCR_FZ;
+uint32_t initial_fpcr = VFPCR_DN;
#include <dev/psci/psci.h>

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 21, 6:45 AM (16 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15538854
Default Alt Text
D28938.id84746.diff (2 KB)

Event Timeline