summaryrefslogtreecommitdiff
path: root/gcc/tree-dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-dump.c')
-rw-r--r--gcc/tree-dump.c24
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: