diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-14 09:51:43 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-08-14 09:51:43 -0400 |
commit | 86b38416af1ff5483510c0e6179d583643e8bb16 (patch) | |
tree | fe5d712140286e4fbfc60660d4c41f88e8a39c2d /gcc/print-tree.c | |
parent | 066aca280f5d83e2afcf755e2627e4d40571aef7 (diff) | |
download | gcc-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.c | 55 |
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: |