diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-03 20:29:11 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-10-03 20:29:11 +0000 |
commit | a667bcda272cd84414b68aae0e63d8f620f80fc3 (patch) | |
tree | d1400cf3f50e10a41876f5c11fdbd88fcdfad44e /gcc/godump.c | |
parent | 87ea3b4e1e846f2a62591c6abcd0eba4a4c17fee (diff) | |
download | gcc-a667bcda272cd84414b68aae0e63d8f620f80fc3.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/branches/gcc-4_6-branch@179480 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/godump.c')
-rw-r--r-- | gcc/godump.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/godump.c b/gcc/godump.c index 7ee7af0e861..e18bb38bfe3 100644 --- a/gcc/godump.c +++ b/gcc/godump.c @@ -844,9 +844,24 @@ go_output_typedef (struct godump_container *container, tree decl) for (element = TYPE_VALUES (TREE_TYPE (decl)); element != NULL_TREE; element = TREE_CHAIN (element)) - fprintf (go_dump_file, "const _%s = " HOST_WIDE_INT_PRINT_DEC "\n", - IDENTIFIER_POINTER (TREE_PURPOSE (element)), - tree_low_cst (TREE_VALUE (element), 0)); + { + fprintf (go_dump_file, "const _%s = ", + IDENTIFIER_POINTER (TREE_PURPOSE (element))); + 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)); if (TYPE_CANONICAL (TREE_TYPE (decl)) != NULL_TREE) pointer_set_insert (container->decls_seen, |