public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [4.7 PATCH 00/18] slim down a number of tree nodes
@ 2011-03-11  4:23 Nathan Froyd
  2011-03-11  4:23 ` [PATCH 05/18] remove TREE_CHAIN from CONSTRUCTOR nodes Nathan Froyd
                   ` (19 more replies)
  0 siblings, 20 replies; 68+ messages in thread
From: Nathan Froyd @ 2011-03-11  4:23 UTC (permalink / raw)
  To: gcc-patches; +Cc: Nathan Froyd, fortran, java-patches

This patch series does something similar to what:

http://gcc.gnu.org/ml/gcc-patches/2010-11/msg02491.html

did, only it does it in a cleaner way and it addresses the problem more
generally.  It introduces a separate substructure (base class) for tree
nodes that include TREE_TYPE so that a tree node can use TREE_TYPE
without having to deal with TREE_CHAIN.  It then goes about making
changes where necessary to both use this new substructure and eliminate
unnecessary TREE_CHAIN usage.

Eliminating the block field from tree_exp would be another nice-to-have
for 4.7, but that's not on my radar of things to address at the moment.
(Matz, you want to do that? :)  Eliminating TREE_TYPE from tree_exp as
suggested on the wiki would be another interesting project, but not one
I plan on tackling.

The patch series touches every front-end in various places.  I have CC'd
the appropriate mailing lists with this introductory email, but I will
only CC those mailing lists on followup patches that touch the
appropriate FE.

I have not rigorously measured memory savings with this patch.  Based on
a (very small) sample, this patch saves ~5% of tree memory according to
dump_tree_statistics...though the amount of tree memory as reported by
dump_tree_statistics is somewhat suspect, since it doesn't include
statistics from copy_node_stat.

The patch series has been bootstrapped on x86_64-unknown-linux-gnu, both
in its entirety and with sub-patches along the way.  Indeed, the patches
were not developed in this order; the checking bits were introduced
first, then any bootstrap or testsuite failures were fixed up, then the
patches were committed in the proper order.

Nathan Froyd (18):
  add typed_tree structure
  enforce TREE_CHAIN and TREE_TYPE accesses
  remove TREE_CHAIN from *_CST nodes
  remove TREE_CHAIN from SSA_NAME nodes
  remove TREE_CHAIN from CONSTRUCTOR nodes
  define CASE_CHAIN accessor for CASE_LABEL_EXPR
  generalize build_case_label to the rest of the compiler
  convert cp *FOR_STMTs to use private scope fields
  convert cp IF_STMTs to use private scope fields
  convert cp SWITCH_STMTs to use private scope fields
  mark EXPR_PACK_EXPANSION as typed only
  make CASE_LABEL_EXPR not abuse TREE_CHAIN
  move TS_EXP to be a substructure of TS_TYPED
  move TS_STATEMENT_LIST to be a substructure of TS_TYPED
  move REAL_IDENTIFIER_TYPE_VALUE to be a field of lang_identifier
  make TS_IDENTIFIER be a substructure of TS_BASE
  introduce block_chainon and use BLOCK_CHAIN more
  make TS_BLOCK a substructure of TS_BASE

 gcc/ada/gcc-interface/ada-tree.h |    2 +-
 gcc/ada/gcc-interface/misc.c     |   16 ++++++
 gcc/ada/gcc-interface/trans.c    |    5 +-
 gcc/ada/gcc-interface/utils.c    |    4 +-
 gcc/c-decl.c                     |    8 ++-
 gcc/c-family/c-common.c          |   14 +++++-
 gcc/c-family/c-common.h          |   20 +++++---
 gcc/c-family/c-semantics.c       |   28 ++++-------
 gcc/c-lang.c                     |    2 +
 gcc/c-parser.c                   |    2 +-
 gcc/c-typeck.c                   |    2 +-
 gcc/cp/cp-lang.c                 |   22 +--------
 gcc/cp/cp-objcp-common.c         |   74 +++++++++++++++++++++++++++
 gcc/cp/cp-objcp-common.h         |    1 +
 gcc/cp/cp-tree.def               |   19 ++++---
 gcc/cp/cp-tree.h                 |   43 ++++++++++------
 gcc/cp/decl.c                    |   28 ++++++----
 gcc/cp/decl2.c                   |   20 ++++---
 gcc/cp/error.c                   |    2 +-
 gcc/cp/init.c                    |    6 +-
 gcc/cp/mangle.c                  |   28 +++++++---
 gcc/cp/name-lookup.c             |   10 ++--
 gcc/cp/pt.c                      |   40 +++++++++------
 gcc/cp/repo.c                    |    2 +-
 gcc/cp/rtti.c                    |    6 +-
 gcc/cp/search.c                  |    4 +-
 gcc/cp/semantics.c               |   41 +++++++++------
 gcc/cp/typeck.c                  |    4 +-
 gcc/except.c                     |    5 +-
 gcc/fortran/f95-lang.c           |    8 ++--
 gcc/fortran/trans-decl.c         |    2 +-
 gcc/fortran/trans-io.c           |    2 +-
 gcc/fortran/trans-stmt.c         |   14 ++---
 gcc/function.c                   |   28 ++++++++++
 gcc/function.h                   |    1 +
 gcc/gimplify.c                   |   14 +++---
 gcc/go/go-lang.c                 |    2 +-
 gcc/java/decl.c                  |   13 ++---
 gcc/java/expr.c                  |    9 ++--
 gcc/java/java-tree.h             |    2 +-
 gcc/lto-streamer-in.c            |    2 +-
 gcc/lto-streamer-out.c           |    2 +-
 gcc/lto-streamer.c               |    1 +
 gcc/lto/lto-tree.h               |    2 +-
 gcc/lto/lto.c                    |    3 +-
 gcc/objc/objc-act.c              |   18 +++++++
 gcc/objc/objc-act.h              |    1 +
 gcc/objc/objc-lang.c             |   32 +-----------
 gcc/objcp/objcp-lang.c           |   48 +-----------------
 gcc/omp-low.c                    |    7 +--
 gcc/print-tree.c                 |   11 +---
 gcc/tree-cfg.c                   |   12 ++--
 gcc/tree-eh.c                    |   22 +++-----
 gcc/tree-flow.h                  |    2 +-
 gcc/tree-inline.c                |    3 +-
 gcc/tree-iterator.c              |   17 ++----
 gcc/tree-ssanames.c              |   28 +++-------
 gcc/tree.c                       |   96 ++++++++++++-----------------------
 gcc/tree.def                     |    2 +-
 gcc/tree.h                       |  103 +++++++++++++++++++++++++++++--------
 gcc/treestruct.def               |    1 +
 gcc/varasm.c                     |    1 -
 62 files changed, 535 insertions(+), 432 deletions(-)

^ permalink raw reply	[flat|nested] 68+ messages in thread

end of thread, other threads:[~2011-05-26 17:40 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-11  4:23 [4.7 PATCH 00/18] slim down a number of tree nodes Nathan Froyd
2011-03-11  4:23 ` [PATCH 05/18] remove TREE_CHAIN from CONSTRUCTOR nodes Nathan Froyd
2011-03-11 13:05   ` Richard Guenther
2011-03-11  4:23 ` [PATCH 04/18] remove TREE_CHAIN from SSA_NAME nodes Nathan Froyd
2011-03-11 13:06   ` Richard Guenther
2011-03-11  4:24 ` [PATCH 06/18] define CASE_CHAIN accessor for CASE_LABEL_EXPR Nathan Froyd
2011-03-11 13:07   ` Richard Guenther
2011-03-11  4:24 ` [PATCH 08/18] convert cp *FOR_STMTs to use private scope fields Nathan Froyd
2011-03-11  4:24 ` [PATCH 10/18] convert cp SWITCH_STMTs " Nathan Froyd
2011-03-11  4:24 ` [PATCH 15/18] move REAL_IDENTIFIER_TYPE_VALUE to be a field of lang_identifier Nathan Froyd
2011-03-11 13:40   ` Jason Merrill
2011-03-11 14:04     ` Nathan Froyd
2011-03-11 14:20       ` Nathan Froyd
2011-03-11 15:04         ` Jason Merrill
2011-03-11 16:23           ` Nathan Froyd
2011-03-11 17:17             ` Jason Merrill
2011-03-11 14:41     ` Joseph S. Myers
2011-03-11  4:24 ` [PATCH 01/18] add typed_tree structure Nathan Froyd
2011-03-11 13:05   ` Richard Guenther
2011-03-11 15:21   ` Michael Matz
2011-03-11  4:24 ` [PATCH 13/18] move TS_EXP to be a substructure of TS_TYPED Nathan Froyd
2011-05-11  0:34   ` Nathan Froyd
2011-05-17 17:51     ` [PING][PATCH " Nathan Froyd
2011-05-23 14:58       ` Nathan Froyd
2011-05-23 15:34         ` Richard Guenther
2011-05-24 18:52           ` Nathan Froyd
2011-05-25  9:59             ` Richard Guenther
2011-03-11  4:24 ` [PATCH 03/18] remove TREE_CHAIN from *_CST nodes Nathan Froyd
2011-03-11 13:05   ` Richard Guenther
2011-03-11  4:24 ` [PATCH 07/18] generalize build_case_label to the rest of the compiler Nathan Froyd
2011-03-11 13:01   ` Joseph S. Myers
2011-03-11 13:10     ` Richard Guenther
2011-03-11 14:56   ` Tom Tromey
2011-03-11  4:24 ` [PATCH 16/18] make TS_IDENTIFIER be a substructure of TS_BASE Nathan Froyd
2011-03-11 13:12   ` Richard Guenther
2011-03-11 17:21     ` Nathan Froyd
2011-03-11  4:24 ` [PATCH 14/18] move TS_STATEMENT_LIST to be a substructure of TS_TYPED Nathan Froyd
2011-03-11  6:01   ` Jason Merrill
2011-03-11 12:23     ` Nathan Froyd
2011-03-11  4:30 ` [PATCH 11/18] mark EXPR_PACK_EXPANSION as typed only Nathan Froyd
2011-03-11  4:30 ` [PATCH 09/18] convert cp IF_STMTs to use private scope fields Nathan Froyd
2011-03-11  4:31 ` [PATCH 17/18] introduce block_chainon and use BLOCK_CHAIN more Nathan Froyd
2011-03-11 13:15   ` Richard Guenther
2011-03-11 13:19     ` Nathan Froyd
2011-03-11 15:14   ` Tom Tromey
2011-03-12 12:23   ` Eric Botcazou
2011-03-11  4:31 ` [PATCH 18/18] make TS_BLOCK a substructure of TS_BASE Nathan Froyd
2011-05-26 18:30   ` Nathan Froyd
2011-03-11  4:31 ` [PATCH 02/18] enforce TREE_CHAIN and TREE_TYPE accesses Nathan Froyd
2011-03-11  8:12   ` Mike Stump
2011-03-11 13:21   ` Richard Guenther
2011-03-11 15:24   ` Tom Tromey
2011-03-12 12:13   ` Eric Botcazou
2011-03-21 13:50     ` Nathan Froyd
2011-03-21 17:50       ` Eric Botcazou
2011-04-13  2:43   ` Nathan Froyd
2011-04-13  2:57     ` Diego Novillo
2011-04-13  4:02     ` Ian Lance Taylor
2011-03-11  4:50 ` [PATCH 12/18] make CASE_LABEL_EXPR not abuse TREE_CHAIN Nathan Froyd
2011-03-11 13:19   ` Richard Guenther
2011-05-10 20:08     ` Nathan Froyd
2011-05-10 20:19     ` Diego Novillo
2011-05-11  9:21       ` Richard Guenther
2011-05-11 19:22   ` H.J. Lu
2011-03-11  8:18 ` [4.7 PATCH 00/18] slim down a number of tree nodes Mike Stump
2011-03-11 16:00   ` Nathan Froyd
2011-03-11 13:25 ` Richard Guenther
2011-03-11 13:42   ` Nathan Froyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).