godump.c (go_output_typedef): Put enum constants in the macro hash table to avoid duplicate Go const definitions.
* godump.c (go_output_typedef): Put enum constants in the macro hash table to avoid duplicate Go const definitions. From-SVN: r173962
This commit is contained in:
parent
2691e6d733
commit
c53aafdf3f
|
@ -1,3 +1,8 @@
|
||||||
|
2011-05-20 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
|
* godump.c (go_output_typedef): Put enum constants in the macro
|
||||||
|
hash table to avoid duplicate Go const definitions.
|
||||||
|
|
||||||
2011-05-20 Joseph Myers <joseph@codesourcery.com>
|
2011-05-20 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* Makefile.in (LIBDEPS): Add libcommon.a.
|
* Makefile.in (LIBDEPS): Add libcommon.a.
|
||||||
|
|
21
gcc/godump.c
21
gcc/godump.c
|
@ -844,9 +844,24 @@ go_output_typedef (struct godump_container *container, tree decl)
|
||||||
for (element = TYPE_VALUES (TREE_TYPE (decl));
|
for (element = TYPE_VALUES (TREE_TYPE (decl));
|
||||||
element != NULL_TREE;
|
element != NULL_TREE;
|
||||||
element = TREE_CHAIN (element))
|
element = TREE_CHAIN (element))
|
||||||
fprintf (go_dump_file, "const _%s = " HOST_WIDE_INT_PRINT_DEC "\n",
|
{
|
||||||
IDENTIFIER_POINTER (TREE_PURPOSE (element)),
|
const char *name;
|
||||||
tree_low_cst (TREE_VALUE (element), 0));
|
void **slot;
|
||||||
|
|
||||||
|
name = IDENTIFIER_POINTER (TREE_PURPOSE (element));
|
||||||
|
|
||||||
|
/* Sometimes a name will be defined as both an enum constant
|
||||||
|
and a macro. Avoid duplicate definition errors by
|
||||||
|
treating enum constants as macros. */
|
||||||
|
slot = htab_find_slot (macro_hash, name, INSERT);
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
pointer_set_insert (container->decls_seen, TREE_TYPE (decl));
|
pointer_set_insert (container->decls_seen, TREE_TYPE (decl));
|
||||||
if (TYPE_CANONICAL (TREE_TYPE (decl)) != NULL_TREE)
|
if (TYPE_CANONICAL (TREE_TYPE (decl)) != NULL_TREE)
|
||||||
pointer_set_insert (container->decls_seen,
|
pointer_set_insert (container->decls_seen,
|
||||||
|
|
Loading…
Reference in New Issue