This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Symtab, cgraph and varpool nodes are now a real class hierarchy


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]