about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Pluzhnikov <ppluzhnikov@google.com>2014-03-03 09:18:29 -0800
committerPaul Pluzhnikov <ppluzhnikov@google.com>2014-03-03 09:18:29 -0800
commitf5f58a704cbdd6c8abaa71ce6131645d7308c63c (patch)
treea13801600822dcd481eaafb4157dda5b936ea403
parent63473c36767faa85fe43ad34c3b600adcfdb5e99 (diff)
downloadglibc-f5f58a704cbdd6c8abaa71ce6131645d7308c63c.tar.gz
glibc-f5f58a704cbdd6c8abaa71ce6131645d7308c63c.tar.xz
glibc-f5f58a704cbdd6c8abaa71ce6131645d7308c63c.zip
Effectively revert an upstream patch to print signs on NaN values.
-rw-r--r--README.google8
-rw-r--r--stdio-common/printf_fp.c4
-rw-r--r--stdio-common/printf_fphex.c12
-rw-r--r--stdio-common/tstdiomisc.c48
4 files changed, 72 insertions, 0 deletions
diff --git a/README.google b/README.google
index b1a2c0c700..6322484c30 100644
--- a/README.google
+++ b/README.google
@@ -147,3 +147,11 @@ misc/sys/cdefs.h
   Forward-ported from cl/51334004 (from cl/53404-p2).
   (swiecki, google-local)
 
+stdio-common/print_fp.c
+stdio-common/print_fphex.c
+stdio-common/tstdiomisc.c
+  Effectively revert an upstream patch to print signs on NaN values.  This
+  change causes many google3 test failures, and the signs are meaningless.
+  Forward-ported from cl/51376114 (from cl/41709-p2).
+  (ppluzhnikov, google-local)
+
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 7a3292cf97..1c8e2fcfbe 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -332,7 +332,9 @@ ___printf_fp (FILE *fp,
       int res;
       if (__isnanl (fpnum.ldbl))
 	{
+#if 0  // Google-local: don't print "-nan".
 	  is_neg = signbit (fpnum.ldbl);
+#endif
 	  if (isupper (info->spec))
 	    {
 	      special = "NAN";
@@ -377,8 +379,10 @@ ___printf_fp (FILE *fp,
       int res;
       if (__isnan (fpnum.dbl))
 	{
+#if 0  // Google-local: don't print "-nan".
 	  union ieee754_double u = { .d = fpnum.dbl };
 	  is_neg = u.ieee.negative != 0;
+#endif
 	  if (isupper (info->spec))
 	    {
 	      special = "NAN";
diff --git a/stdio-common/printf_fphex.c b/stdio-common/printf_fphex.c
index 4599867b3f..888d98888c 100644
--- a/stdio-common/printf_fphex.c
+++ b/stdio-common/printf_fphex.c
@@ -167,6 +167,9 @@ __printf_fphex (FILE *fp,
       /* Check for special values: not a number or infinity.  */
       if (__isnanl (fpnum.ldbl))
 	{
+#if 1	  // Google-local: don't print "-nan".
+	  negative = 0;
+#endif
 	  if (isupper (info->spec))
 	    {
 	      special = "NAN";
@@ -180,6 +183,9 @@ __printf_fphex (FILE *fp,
 	}
       else
 	{
+#if 1	  // Google-local: move this from below due to NaN handling.
+	  negative = signbit (fpnum.ldbl);
+#endif
 	  if (__isinfl (fpnum.ldbl))
 	    {
 	      if (isupper (info->spec))
@@ -194,7 +200,9 @@ __printf_fphex (FILE *fp,
 		}
 	    }
 	}
+#if 0 // Google-local: move this up due to NaN handling.
       negative = signbit (fpnum.ldbl);
+#endif
     }
   else
 #endif	/* no long double */
@@ -204,7 +212,11 @@ __printf_fphex (FILE *fp,
       /* Check for special values: not a number or infinity.  */
       if (__isnan (fpnum.dbl.d))
 	{
+#if 1  // Google-local: don't print "-nan".
+	  negative = 0;
+#else
 	  negative = fpnum.dbl.ieee.negative != 0;
+#endif
 	  if (isupper (info->spec))
 	    {
 	      special = "NAN";
diff --git a/stdio-common/tstdiomisc.c b/stdio-common/tstdiomisc.c
index 5a25ecc9f0..4f6fcbe6c9 100644
--- a/stdio-common/tstdiomisc.c
+++ b/stdio-common/tstdiomisc.c
@@ -76,9 +76,15 @@ F (void)
   snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
 	    -qnanval, -qnanval, -qnanval, -qnanval,
 	    -qnanval, -qnanval, -qnanval, -qnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n",
+	  buf);
+#else
   result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
 	  buf);
+#endif
 
   snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
 	    snanval, snanval, snanval, snanval,
@@ -89,9 +95,15 @@ F (void)
   snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
 	    msnanval, msnanval, msnanval, msnanval,
 	    msnanval, msnanval, msnanval, msnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n",
+	  buf);
+#else
   result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
 	  buf);
+#endif
 
   infval = DBL_MAX * DBL_MAX;
 
@@ -116,9 +128,15 @@ F (void)
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
 	    -qnanval, -qnanval, -qnanval, -qnanval,
 	    -qnanval, -qnanval, -qnanval, -qnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n",
+	  wbuf);
+#else
   result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
 	  wbuf);
+#endif
 
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
 	    snanval, snanval, snanval, snanval,
@@ -129,9 +147,15 @@ F (void)
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
 	    msnanval, msnanval, msnanval, msnanval,
 	    msnanval, msnanval, msnanval, msnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n",
+	  wbuf);
+#else
   result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
 	  wbuf);
+#endif
 
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
 	    infval, infval, infval, infval, infval, infval, infval, infval);
@@ -156,9 +180,15 @@ F (void)
   snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
 	    -lqnanval, -lqnanval, -lqnanval, -lqnanval,
 	    -lqnanval, -lqnanval, -lqnanval, -lqnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n",
+	  buf);
+#else
   result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
 	  buf);
+#endif
 
   snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
 	    lsnanval, lsnanval, lsnanval, lsnanval,
@@ -169,9 +199,15 @@ F (void)
   snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
 	    lmsnanval, lmsnanval, lmsnanval, lmsnanval,
 	    lmsnanval, lmsnanval, lmsnanval, lmsnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n",
+	  buf);
+#else
   result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
 	  buf);
+#endif
 
   linfval = LDBL_MAX * LDBL_MAX;
 
@@ -199,9 +235,15 @@ F (void)
 	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
 	    -lqnanval, -lqnanval, -lqnanval, -lqnanval,
 	    -lqnanval, -lqnanval, -lqnanval, -lqnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n",
+	  wbuf);
+#else
   result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
 	  wbuf);
+#endif
 
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
 	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
@@ -214,9 +256,15 @@ F (void)
 	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
 	    lmsnanval, lmsnanval, lmsnanval, lmsnanval,
 	    lmsnanval, lmsnanval, lmsnanval, lmsnanval);
+#if 1  // Google-local: don't print "-nan".
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n",
+	  wbuf);
+#else
   result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
   printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
 	  wbuf);
+#endif
 
   swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
 	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",