From 21ac7f65b8d16f21a6143d637697ef28e77e57ac Mon Sep 17 00:00:00 2001
From: Jerry DeLisle <jvdelisle@gcc.gnu.org>
Date: Tue, 1 Feb 2011 02:29:18 +0000
Subject: [PATCH] re PR libquadmath/47293 (libquadmath: strtoflt128 - NAN not
 correctly read and C99 hex floating point format missing)

2011-01-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libquadmath/47293
	* gdtoa/qd_qnan.h: Fix NAN bit patterns.
	* gdtoa/strtopQ.c (strtoflt128): Handle endianess with NAN.

From-SVN: r169466
---
 libquadmath/ChangeLog       |  6 ++++++
 libquadmath/gdtoa/gd_qnan.h | 12 ++++++------
 libquadmath/gdtoa/strtopQ.c |  8 ++++----
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index b6929df0258d..d2dcf45ae6dc 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR libquadmath/47293
+	* gdtoa/qd_qnan.h: Fix NAN bit patterns.
+	* gdtoa/strtopQ.c (strtoflt128): Handle endianess with NAN.
+
 2011-01-17  Tobias Burnus  <burnus@net-b.de>
 
 	PR fortran/47295
diff --git a/libquadmath/gdtoa/gd_qnan.h b/libquadmath/gdtoa/gd_qnan.h
index 87eba8fb3190..68d90e440f2b 100644
--- a/libquadmath/gdtoa/gd_qnan.h
+++ b/libquadmath/gdtoa/gd_qnan.h
@@ -1,12 +1,12 @@
-#define f_QNAN 0xffc00000
+#define f_QNAN 0x7fc00000
 #define d_QNAN0 0x0
-#define d_QNAN1 0xfff80000
+#define d_QNAN1 0x7ff80000
 #define ld_QNAN0 0x0
-#define ld_QNAN1 0xc0000000
-#define ld_QNAN2 0xffff
-#define ld_QNAN3 0x0
+#define ld_QNAN1 0x0
+#define ld_QNAN2 0x0
+#define ld_QNAN3 0x7fff8000
 #define ldus_QNAN0 0x0
 #define ldus_QNAN1 0x0
 #define ldus_QNAN2 0x0
 #define ldus_QNAN3 0xc000
-#define ldus_QNAN4 0xffff
+#define ldus_QNAN4 0x7fff
diff --git a/libquadmath/gdtoa/strtopQ.c b/libquadmath/gdtoa/strtopQ.c
index 0d34c1c04547..6a84173a47fb 100644
--- a/libquadmath/gdtoa/strtopQ.c
+++ b/libquadmath/gdtoa/strtopQ.c
@@ -92,10 +92,10 @@ strtoflt128(CONST char *s, char **sp)
 		break;
 
 	  case STRTOG_NaN:
-		L[0] = ld_QNAN0;
-		L[1] = ld_QNAN1;
-		L[2] = ld_QNAN2;
-		L[3] = ld_QNAN3;
+		L[_0] = ld_QNAN3;
+		L[_1] = ld_QNAN2;
+		L[_2] = ld_QNAN1;
+		L[_3] = ld_QNAN0;
 	  }
 	if (k & STRTOG_Neg)
 		L[_0] |= 0x80000000L;
-- 
GitLab