This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Symtab, cgraph and varpool nodes are now a real class hierarchy
- From: David Malcolm <dmalcolm at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 29 Oct 2013 15:05:42 -0400
- Subject: Symtab, cgraph and varpool nodes are now a real class hierarchy
- Authentication-results: sourceware.org; auth=none
- References: <1379685919-9437-1-git-send-email-dmalcolm at redhat dot com> <1379685919-9437-4-git-send-email-dmalcolm at redhat dot com> <20130920153337 dot GB10723 at kam dot mff dot cuni dot cz> <1383015457 dot 29677 dot 50 dot camel at surprise> <526F49A1 dot 5000109 at redhat dot com>
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 <dmalcolm@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.iyer@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