Here's version 2 of this patch series.

This is now 6 patches.

The first two patches correspond to the two patches from the original
patch series (and must both be applied together to make sense).  They
convert cgraph_node and varpool_node to inherit from symtab_node_base,
eliminating union symtab_node_def, and the "symbol" fields at the
top of the two subclasses.

Specifically:

  * Patch 1 of 6 is the hand-written part of the conversion to a C++
    inheritance hierarchy, plus various workarounds for dealing with
    issues in how gengtype handles GTY((user)).  It corresponds to
    "patch 1/2" in the original patch series.  It is largely unchanged
    from the previous submission.

  * Patch 2 of 6 is the automated part of the conversion to C++
    inheritance, corresponding to "patch 2/2" in the original series.
    The main improvement is that the script now removes casts to
    (symtab_node) where these are unnecessary i.e. almost all of them,
    apart from a few that I whitelisted.  See refactor_symtab.py
    within https://github.com/davidmalcolm/gcc-refactoring-scripts for
    details.

The remaining 4 patches rename some types:

"symtab_node_base" becomes "symtab_node" (Honza's preferred name, AIUI).

This would clash with the pre-existing "symtab_node", which was a
typedef for:
  union symtab_node_def *
before patch 1, and for:
  symtab_node_base *
after it.

So we eliminate this typedef, and all uses become simply a
"symtab_node *", which is the bulk of the renaming.  There is also
a "const_symtab_node" typedef, which is eliminated; all uses become
simply a "const symtab_node *".

Details of these patches

  * Patch 3 of 6: this is trivial preparatory work before running an
    automated script - split up declarations of multiple symtab_node,
    so that each gets its own declaration.

  * Patch 4 of 6: this eliminates the symtab_node and const_symtab_node
    typedefs from ipa-ref.h

  * Patch 5 of 6: generated by another automated script, this time
    "rename_symtab.py" (as opposed to "refactor_symtab.py"), with a
    testsuite "test_rename_symtab.py"; again, these can be seen at:
    https://github.com/davidmalcolm/gcc-refactoring-scripts

    This performs the big renaming described above.

    There are some mistakes in the ChangeLog of this patch.  I would
    fix these up manually before committing.

  * Patch 6 of 6: this patch updates the hand-written GTY-handling
    code from patch 1 to take into account the changing names of the
    types.

Again, all 4 patches must be applied together for the code to compile.

I've successfully bootstrapped:
   patches (1+2)
and
   all 6 patches together
on top of r202339 on x86_64-unknown-linux-gnu.

For both builds all tests showed the same test results as an unpatched
bootstrap of r202339.

OK for trunk?

David Malcolm (6):
  Convert symtab, cgraph and varpool nodes into a real class hierarchy
  Automated conversion of symtab to class hierarchy
  Split symtab_node declarations onto multiple lines
  Remove symtab_node and const_symtab_node typedefs.
  Automated renaming of symtab types
  Update hand-written GTY routines for type renaming

 gcc/ada/gcc-interface/trans.c |   2 +-
 gcc/ada/gcc-interface/utils.c |   2 +-
 gcc/asan.c                    |  10 +-
 gcc/c-family/c-gimplify.c     |   2 +-
 gcc/c-family/c-pragma.c       |   4 +-
 gcc/cfgexpand.c               |   2 +-
 gcc/cgraph.c                  | 526 +++++++++++++++++++++++++++++-------------
 gcc/cgraph.h                  | 266 +++++++++++----------
 gcc/cgraphbuild.c             |  56 ++---
 gcc/cgraphclones.c            |  90 ++++----
 gcc/cgraphunit.c              | 327 +++++++++++++-------------
 gcc/config/i386/i386.c        |  18 +-
 gcc/coverage.c                |   4 +-
 gcc/cp/call.c                 |   2 +-
 gcc/cp/decl2.c                |  26 +--
 gcc/cp/lambda.c               |   4 +-
 gcc/cp/method.c               |   4 +-
 gcc/cp/optimize.c             |   2 +-
 gcc/cp/tree.c                 |   4 +-
 gcc/dbxout.c                  |   2 +-
 gcc/dwarf2out.c               |   4 +-
 gcc/gimple-fold.c             |  10 +-
 gcc/gimplify.c                |   4 +-
 gcc/ipa-cp.c                  |  72 +++---
 gcc/ipa-devirt.c              |  44 ++--
 gcc/ipa-inline-analysis.c     |  54 ++---
 gcc/ipa-inline-transform.c    |  52 ++---
 gcc/ipa-inline.c              | 168 +++++++-------
 gcc/ipa-profile.c             |  36 +--
 gcc/ipa-prop.c                |  88 +++----
 gcc/ipa-pure-const.c          |  56 ++---
 gcc/ipa-ref-inline.h          |   4 +-
 gcc/ipa-ref.c                 |  34 +--
 gcc/ipa-ref.h                 |  26 +--
 gcc/ipa-reference.c           |  66 +++---
 gcc/ipa-split.c               |  28 +--
 gcc/ipa-utils.c               |  92 ++++----
 gcc/ipa.c                     | 444 +++++++++++++++++------------------
 gcc/is-a.h                    |   8 +-
 gcc/java/decl.c               |   2 +-
 gcc/lto-cgraph.c              | 320 ++++++++++++-------------
 gcc/lto-section-in.c          |  12 +-
 gcc/lto-streamer-in.c         |   6 +-
 gcc/lto-streamer-out.c        |  46 ++--
 gcc/lto-streamer.h            |  18 +-
 gcc/lto/lto-partition.c       | 242 +++++++++----------
 gcc/lto/lto-symtab.c          | 245 ++++++++++----------
 gcc/lto/lto.c                 |  34 +--
 gcc/passes.c                  |  34 +--
 gcc/symtab.c                  | 518 ++++++++++++++++++++---------------------
 gcc/toplev.c                  |   6 +-
 gcc/trans-mem.c               |  94 ++++----
 gcc/tree-eh.c                 |   4 +-
 gcc/tree-emutls.c             |  40 ++--
 gcc/tree-inline.c             |  42 ++--
 gcc/tree-nested.c             |  10 +-
 gcc/tree-pretty-print.c       |   2 +-
 gcc/tree-profile.c            |  20 +-
 gcc/tree-sra.c                |  20 +-
 gcc/tree-ssa-structalias.c    |  40 ++--
 gcc/tree-vectorizer.c         |   2 +-
 gcc/tree.c                    |  10 +-
 gcc/value-prof.c              |  22 +-
 gcc/varasm.c                  |  32 +--
 gcc/varpool.c                 | 142 ++++++------
 65 files changed, 2411 insertions(+), 2195 deletions(-)

-- 
1.7.11.7

Reply via email to