diff options
Diffstat (limited to 'gcc/tree-dump.c')
-rw-r--r-- | gcc/tree-dump.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c index 1ac01750e87..f370bcd738e 100644 --- a/gcc/tree-dump.c +++ b/gcc/tree-dump.c @@ -32,6 +32,7 @@ along with GCC; see the file COPYING3. If not see #include "langhooks.h" #include "tree-iterator.h" #include "real.h" +#include "fixed-value.h" static unsigned int queue (dump_info_p, tree, int); static void dump_index (dump_info_p, unsigned int); @@ -191,6 +192,18 @@ dump_real (dump_info_p di, const char *field, const REAL_VALUE_TYPE *r) di->column += strlen (buf) + 7; } +/* Dump the fixed-point value F, using FIELD to identify it. */ + +static void +dump_fixed (dump_info_p di, const char *field, const FIXED_VALUE_TYPE *f) +{ + char buf[32]; + fixed_to_decimal (buf, f, sizeof (buf)); + dump_maybe_newline (di); + fprintf (di->stream, "%-4s: %s ", field, buf); + di->column += strlen (buf) + 7; +} + /* Dump the string S. */ @@ -453,6 +466,13 @@ dequeue_and_dump (dump_info_p di) dump_int (di, "prec", TYPE_PRECISION (t)); break; + case FIXED_POINT_TYPE: + dump_int (di, "prec", TYPE_PRECISION (t)); + dump_string_field (di, "sign", TYPE_UNSIGNED (t) ? "unsigned": "signed"); + dump_string_field (di, "saturating", + TYPE_SATURATING (t) ? "saturating": "non-saturating"); + break; + case POINTER_TYPE: dump_child ("ptd", TREE_TYPE (t)); break; @@ -549,6 +569,10 @@ dequeue_and_dump (dump_info_p di) dump_real (di, "valu", TREE_REAL_CST_PTR (t)); break; + case FIXED_CST: + dump_fixed (di, "valu", TREE_FIXED_CST_PTR (t)); + break; + case TRUTH_NOT_EXPR: case ADDR_EXPR: case INDIRECT_REF: |