aboutsummaryrefslogtreecommitdiff
path: root/gcc/print-tree.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-14 09:51:43 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-14 09:51:43 -0400
commit86b38416af1ff5483510c0e6179d583643e8bb16 (patch)
treefe5d712140286e4fbfc60660d4c41f88e8a39c2d /gcc/print-tree.c
parent066aca280f5d83e2afcf755e2627e4d40571aef7 (diff)
downloadgcc-86b38416af1ff5483510c0e6179d583643e8bb16.zip
gcc-86b38416af1ff5483510c0e6179d583643e8bb16.tar.gz
gcc-86b38416af1ff5483510c0e6179d583643e8bb16.tar.bz2
(print_node{,_brief}): Use REAL_VALUE_TO_DECIMAL to print REAL_CST
ifdef REAL_ARITHMETIC. From-SVN: r7916
Diffstat (limited to 'gcc/print-tree.c')
-rw-r--r--gcc/print-tree.c55
1 files changed, 43 insertions, 12 deletions
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 9b406fc..7419b53 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -144,8 +144,22 @@ print_node_brief (file, prefix, node, indent)
}
if (TREE_CODE (node) == REAL_CST)
{
-#ifndef REAL_IS_NOT_DOUBLE
- fprintf (file, " %e", TREE_REAL_CST (node));
+ REAL_VALUE_TYPE d = TREE_REAL_CST (node);
+ if (TREE_OVERFLOW (node))
+ fprintf (file, " overflow");
+
+#if !defined(REAL_IS_NOT_DOUBLE) || defined(REAL_ARITHMETIC)
+ if (REAL_VALUE_ISINF (d))
+ fprintf (file, " Inf");
+ else if (REAL_VALUE_ISNAN (d))
+ fprintf (file, " Nan");
+ else
+ {
+ char string[100];
+
+ REAL_VALUE_TO_DECIMAL (d, "%e", string);
+ fprintf (file, " %s", string);
+ }
#else
{
int i;
@@ -155,7 +169,7 @@ print_node_brief (file, prefix, node, indent)
fprintf (file, "%02x", *p++);
fprintf (file, "");
}
-#endif /* REAL_IS_NOT_DOUBLE */
+#endif
}
fprintf (file, ">");
@@ -605,17 +619,34 @@ print_node (file, prefix, node, indent)
break;
case REAL_CST:
-#ifndef REAL_IS_NOT_DOUBLE
- fprintf (file, " %e", TREE_REAL_CST (node));
-#else
{
- char *p = (char *) &TREE_REAL_CST (node);
- fprintf (file, " 0x");
- for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
- fprintf (file, "%02x", *p++);
- fprintf (file, "");
+ REAL_VALUE_TYPE d = TREE_REAL_CST (node);
+ if (TREE_OVERFLOW (node))
+ fprintf (file, " overflow");
+
+#if !defined(REAL_IS_NOT_DOUBLE) || defined(REAL_ARITHMETIC)
+ if (REAL_VALUE_ISINF (d))
+ fprintf (file, " Inf");
+ else if (REAL_VALUE_ISNAN (d))
+ fprintf (file, " Nan");
+ else
+ {
+ char string[100];
+
+ REAL_VALUE_TO_DECIMAL (d, "%e", string);
+ fprintf (file, " %s", string);
+ }
+#else
+ {
+ int i;
+ unsigned char *p = (unsigned char *) &TREE_REAL_CST (node);
+ fprintf (file, " 0x");
+ for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
+ fprintf (file, "%02x", *p++);
+ fprintf (file, "");
+ }
+#endif
}
-#endif /* REAL_IS_NOT_DOUBLE */
break;
case COMPLEX_CST: