PR tree-optimization/86571 - AIX NaNQ and NaNS output format conflicts with __builtin...
authorMartin Sebor <msebor@redhat.com>
Sat, 4 Aug 2018 22:14:41 +0000 (22:14 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Sat, 4 Aug 2018 22:14:41 +0000 (16:14 -0600)
gcc/ChangeLog:

PR tree-optimization/86571
* gimple-ssa-sprintf.c (format_floating): Extend upper bound of
NaN output to 4.

From-SVN: r263312

gcc/ChangeLog
gcc/gimple-ssa-sprintf.c

index 5894b6de9e02455c9996c262b3d772158f7c65a0..7d2323983ec26aab89715e685708b3d93e59d5be 100644 (file)
@@ -1,3 +1,9 @@
+2018-08-04  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/86571
+       * gimple-ssa-sprintf.c (format_floating): Extend upper bound of
+       NaN output to 4.
+
 2018-08-03  Sandra Loosemore  <sandra@codesourcery.com>
 
        * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
index bda738de937c6eb6bcae4426bf3173ddd821d202..c652c556f9762e4efed3f395d9277abbc445f66b 100644 (file)
@@ -2014,8 +2014,15 @@ format_floating (const directive &dir, tree arg, vr_values *)
 
       res.range.likely = res.range.min;
       res.range.max = res.range.min;
-      /* The inlikely maximum is "[-/+]infinity" or "[-/+]nan".  */
-      res.range.unlikely = sign + (real_isinf (rvp) ? 8 : 3);
+      /* The unlikely maximum is "[-/+]infinity" or "[-/+][qs]nan".
+        For NaN, the C/POSIX standards specify two formats:
+          "[-/+]nan"
+        and
+          "[-/+]nan(n-char-sequence)"
+        No known printf implementation outputs the latter format but AIX
+        outputs QNaN and SNaN for quiet and signalling NaN, respectively,
+        so the unlikely maximum reflects that.  */
+      res.range.unlikely = sign + (real_isinf (rvp) ? 8 : 4);
 
       /* The range for infinity and NaN is known unless either width
         or precision is unknown.  Width has the same effect regardless