On Thu, Feb 27, 2014 at 10:37 AM, Tobias Burnus <tobias.bur...@physik.fu-berlin.de> wrote: > Hi Richard, hi all, > > I wrote: >> @@ -1713,21 +1733,24 @@ dump_generic_node (pretty_printer *buffer, tree >> node, int spc, int flags, >> case BIND_EXPR: > ... >> for (op0 = BIND_EXPR_VARS (node); op0; op0 = DECL_CHAIN (op0)) >> { >>- print_declaration (buffer, op0, spc+2, flags); >>+ if (TREE_CODE(op0) == NAMELIST_DECL) > ... > > Richard Biener wrote: >> Works for me, but doesn't the simpler > >> --- tree-pretty-print.c (revision 208066) >> +++ tree-pretty-print.c (working copy) >> @@ -1390,6 +1390,7 @@ >> case FIELD_DECL: >> case DEBUG_EXPR_DECL: >> case NAMESPACE_DECL: >>+ case NAMELIST_DECL: >> dump_decl_name (buffer, node, flags); >> break; >> >> also work? It's odd that we need to do sth special just for namelist-decls. > > It won't do - at least not like that. NAMELIST_DECL are stored in BIND_EXPR, > hence, one ends up in the code I quote above. That code calls > print_declaration() > > NAMELIST_DECL are created as > decl = make_node (NAMELIST_DECL); > TREE_TYPE (decl) = void_type_node; > NAMELIST_DECL_ASSOCIATED_DECL (decl) = build_constructor (NULL_TREE, > nml_decls); > Hence, TREE_TYPE() is void_type_node and dereferencing that one leads to an > ICE.
Where is it "dereferenced"? void_type_node is a valid type. > > However, the following should work - do you like it more? > > Tobias > > > --- a/gcc/tree-pretty-print.c > +++ b/gcc/tree-pretty-print.c > @@ -2686,6 +2686,13 @@ print_declaration (pretty_printer *buffer, tree t, int > spc, int flags) > { > INDENT (spc); > > + if (TREE_CODE(t) == NAMELIST_DECL) > + { > + pp_string(buffer, "namelist "); > + dump_decl_name (buffer, t, flags); > + goto done; > + } > + > if (TREE_CODE (t) == TYPE_DECL) > pp_string (buffer, "typedef "); > > @@ -2767,6 +2774,7 @@ print_declaration (pretty_printer *buffer, tree t, int > spc, int flags) > pp_right_bracket (buffer); > } > > +done: > pp_semicolon (buffer); Instead of the goto please duplicate the pp_semicolon and return. Ok with that change. You probably still want to add the NAMELIST_DECL case to dump_generic_node (to avoid the << Unknown tree: ...). Thanks, Richard. > }