On Mon, 2013-10-28 at 23:37 -0600, Jeff Law wrote: > On 10/28/13 20:57, David Malcolm wrote: > >>> * cgraph.h (symtab_node_base): Convert to a class; > >>> add GTY((desc ("%h.type"), tag ("SYMTAB_SYMBOL"))). > >>> (cgraph_node): Inherit from symtab_node; add GTY option > >>> tag ("SYMTAB_FUNCTION"). > >>> (varpool_node): Inherit from symtab_node; add GTY option > >>> tag ("SYMTAB_VARIABLE"). > >>> (symtab_node_def): Remove. > >>> (is_a_helper <cgraph_node>::test (symtab_node_def *)): Convert to... > >>> (is_a_helper <cgraph_node>::test (symtab_node_base *)): ...this. > >>> (is_a_helper <varpool_node>::test (symtab_node_def *)): Convert to... > >>> (is_a_helper <varpool_node>::test (symtab_node_base *)): ...this. > >>> > >>> * ipa-ref.h (symtab_node_def): Drop. > >>> (symtab_node): Change underlying type from symtab_node_def to > >>> symtab_node_base. > >>> (const_symtab_node): Likwise. > >>> > >>> * is-a.h: Update examples in comment. > >>> > >>> * symtab.c (symtab_hash): Change symtab_node_def to symtab_node_base. > >>> (assembler_name_hash): Likewise. > >> > >> This patch is OK. Thanks for working on this! > > > > These symtab changes were dependent on having gengtype support for > > inheritance, which is now in trunk, so I'm now revisiting these patches. > > > > The above patch hasn't bitrotted, though the autogenerated one that goes > > with it needed regenerating. > > > > A new version of the autogenerated patch can be seen at: > > http://dmalcolm.fedorapeople.org/gcc/large-patches/eaba9669644c84592ea32be2dcd19ba92beca381-0003-Autogenerated-fixes-of-symbol.-to.patch > > Is that new patch OK? (it's 450KB so one's eyes tend to glaze over > > after a while, but FWIW you approved an earlier version of that in: > > http://gcc.gnu.org/ml/gcc-patches/2013-09/msg00730.html > > and the test suite for the script that generated the patch can be seen > > at: > > https://github.com/davidmalcolm/gcc-refactoring-scripts/blob/master/test_refactor_symtab.py > > ) > Given it's already approved and hasn't changed in any substantial way, > it's OK for the trunk once you get through the bootstrap and regression > testing. Thanks.
The conversion of the symtab types from inheritance-in-C to a C++ class hierarchy is now in trunk: I committed the manual parts of the conversion as r204170, and the automated part as r204171. I then noticed that this broke the gdb debugging hooks for printing a (cgraph_node *). I tested and committed the attached fix for them as r204174. As a followup, I'm next looking at the renaming of the symtab types previously discussed with Honza (on 2013-09-10). Dave
Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 204173) +++ gcc/ChangeLog (revision 204174) @@ -1,3 +1,10 @@ +2013-10-29 David Malcolm <dmalc...@redhat.com> + + * gdbhooks.py (CGraphNodePrinter.to_string): Update gdb + prettyprinter for cgraph_node to reflect the conversion of the + symtable types to a C++ class hierarchy: it now *is* a + symtab_node_base, rather than having one (named "symbol"). + 2013-10-29 Balaji V. Iyer <balaji.v.i...@intel.com> * builtins.c (is_builtin_name): Added a check for __cilkrts_detach and Index: gcc/gdbhooks.py =================================================================== --- gcc/gdbhooks.py (revision 204173) +++ gcc/gdbhooks.py (revision 204174) @@ -226,8 +226,7 @@ # symtab_node_name calls lang_hooks.decl_printable_name # default implementation (lhd_decl_printable_name) is: # return IDENTIFIER_POINTER (DECL_NAME (decl)); - symbol = self.gdbval['symbol'] - tree_decl = Tree(symbol['decl']) + tree_decl = Tree(self.gdbval['decl']) result += ' "%s"' % tree_decl.DECL_NAME().IDENTIFIER_POINTER() result += '>' return result