summaryrefslogtreecommitdiff
path: root/gcc/godump.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-03 20:09:56 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-03 20:09:56 +0000
commit664801d453d6c7515562eb7d9a97740d1159bd77 (patch)
tree888d28fcfa033ade41f546726d6cf136d8232083 /gcc/godump.c
parent13f42429fbeb2b15397493cb1e18c106d59fb759 (diff)
downloadgcc-664801d453d6c7515562eb7d9a97740d1159bd77.tar.gz
* godump.c (go_output_typedef): Support printing enum values that
don't fit in a signed HOST_WIDE_INT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179477 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/godump.c')
-rw-r--r--gcc/godump.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/godump.c b/gcc/godump.c
index 11cd32998ec..f9f767c8113 100644
--- a/gcc/godump.c
+++ b/gcc/godump.c
@@ -920,9 +920,20 @@ go_output_typedef (struct godump_container *container, tree decl)
if (*slot == NULL)
{
*slot = CONST_CAST (char *, name);
- fprintf (go_dump_file,
- "const _%s = " HOST_WIDE_INT_PRINT_DEC "\n",
- name, tree_low_cst (TREE_VALUE (element), 0));
+ fprintf (go_dump_file, "const _%s = ", name);
+ if (host_integerp (TREE_VALUE (element), 0))
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_DEC,
+ tree_low_cst (TREE_VALUE (element), 0));
+ else if (host_integerp (TREE_VALUE (element), 1))
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_UNSIGNED,
+ ((unsigned HOST_WIDE_INT)
+ tree_low_cst (TREE_VALUE (element), 1)));
+ else
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
+ ((unsigned HOST_WIDE_INT)
+ TREE_INT_CST_HIGH (TREE_VALUE (element))),
+ TREE_INT_CST_LOW (TREE_VALUE (element)));
+ fprintf (go_dump_file, "\n");
}
}
pointer_set_insert (container->decls_seen, TREE_TYPE (decl));