This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] convert TREE_CHAIN to DECL_CHAIN where appropriate
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Nathan Froyd <froydnj at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 23 Jul 2010 17:42:26 -0700
- Subject: Re: [PATCH] convert TREE_CHAIN to DECL_CHAIN where appropriate
- References: <20100715041916.GP12333@codesourcery.com>
On Wed, Jul 14, 2010 at 9:19 PM, Nathan Froyd <froydnj@codesourcery.com> wrote:
> One of the problems with slimming down the common bits of the tree data
> structure is the multi-purposing of fields in that common part. ?While
> abstraction macros have been used for many other multi-purposed fields,
> they have (generally) not been used for the fields in tree_common.
>
> The attached patch addresses (part of) that by introducing DECL_CHAIN to
> make it obvious when DECLs are being chained together as opposed to
> generic TREE_LISTs or similar. ?Such a change has already been done for
> BLOCK_CHAIN. ?Making this change paves the way for an eventual pushing
> down of tree_common.chain into only structures that use it. ?(There are
> a number of changes remaining before that pushdown can happen:
> cp/cp-tree.h needs extensive housekeeping, there's some GC issues to
> address, etc.)
>
> This patch does not add specialized functions like decl_nreverse to be
> used on chains of decls. ?That would be an appropriate followup patch.
>
> I don't claim to have caught all places where this substitution needs to
> occur. ?My strategy for producing this patch was, roughly:
>
> - make TREE_CHAIN error when given a DECL;
>
> - replace erroring occurrences with DECL_CHAIN.
>
> (I'm not submitting the erroring bits at this time, though they would be
> a useful followup patch once, say, the C++ FE is cleaned up.)
>
> So it's certainly possible that there are some codepaths that still use
> TREE_CHAIN when they could be using DECL_CHAIN. ?This patch is a good
> start, though.
>
> The tree this patch is against is a couple days old. ?If the patch is
> approved, I'd like to rebase it against trunk with the above error
> checking enabled, re-bootstrap, fix errors, and commit. ?If the
> reviewer(s) don't like that idea, I'm happy to submit followup patches
> for smaller-scale DECL_CHAINification.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu with all languages
> and checking enabled, no regressions. ?Tested with cross to arm-eabi,
> powerpc-eabispe, and mips-elf with --enable-languages=c, no regressions.
> (Testing with powerpc and mips still ongoing, but no surprises
> expected.) ?OK to commit?
>
> -Nathan
>
> gcc/
> ? ? ? ?* tree.h (DECL_CHAIN): Define.
> ? ? ? ?* alias.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
> ? ? ? ?* c-decl.c: Likewise.
> ? ? ? ?* c-parser.c: Likewise.
> ? ? ? ?* c-typeck.c: Likewise.
> ? ? ? ?* cfgexpand.c: Likewise.
> ? ? ? ?* cgraph.c: Likewise.
> ? ? ? ?* cgraphunit.c: Likewise.
> ? ? ? ?* combine.c: Likewise.
> ? ? ? ?* config/alpha/alpha.c: Likewise.
> ? ? ? ?* config/arm/arm.c: Likewise.
> ? ? ? ?* config/frv/frv.c: Likewise.
> ? ? ? ?* config/i386/i386.c: Likewise.
> ? ? ? ?* config/i386/winnt-cxx.c: Likewise.
> ? ? ? ?* config/ia64/ia64.c: Likewise.
> ? ? ? ?* config/iq2000/iq2000.c: Likewise.
> ? ? ? ?* config/mep/mep.c: Likewise.
> ? ? ? ?* config/mips/mips.c: Likewise.
> ? ? ? ?* config/pa/som.h: Likewise.
> ? ? ? ?* config/rs6000/rs6000.c: Likewise.
> ? ? ? ?* config/s390/s390.c: Likewise.
> ? ? ? ?* config/sh/sh.c: Likewise.
> ? ? ? ?* config/sh/symbian-cxx.c: Likewise.
> ? ? ? ?* config/sparc/sparc.c: Likewise.
> ? ? ? ?* config/spu/spu.c: Likewise.
> ? ? ? ?* config/stormy16/stormy16.c: Likewise.
> ? ? ? ?* config/vxworks.c: Likewise.
> ? ? ? ?* config/xtensa/xtensa.c: Likewise.
> ? ? ? ?* coverage.c: Likewise.
> ? ? ? ?* dbxout.c: Likewise.
> ? ? ? ?* dwarf2out.c: Likewise.
> ? ? ? ?* emit-rtl.c: Likewise.
> ? ? ? ?* expr.c: Likewise.
> ? ? ? ?* function.c: Likewise.
> ? ? ? ?* gimple-low.c: Likewise.
> ? ? ? ?* gimple-pretty-print.c: Likewise.
> ? ? ? ?* gimplify.c: Likewise.
> ? ? ? ?* integrate.c: Likewise.
> ? ? ? ?* ipa-inline.c: Likewise.
> ? ? ? ?* ipa-prop.c: Likewise.
> ? ? ? ?* ipa-split.c: Likewise.
> ? ? ? ?* ipa-struct-reorg.c: Likewise.
> ? ? ? ?* ipa-type-escape.c: Likewise.
> ? ? ? ?* langhooks.c: Likewise.
> ? ? ? ?* lto-cgraph.c: Likewise.
> ? ? ? ?* omp-low.c: Likewise.
> ? ? ? ?* stor-layout.c: Likewise.
> ? ? ? ?* tree-cfg.c: Likewise.
> ? ? ? ?* tree-complex.c: Likewise.
> ? ? ? ?* tree-dfa.c: Likewise.
> ? ? ? ?* tree-dump.c: Likewise.
> ? ? ? ?* tree-inline.c: Likewise.
> ? ? ? ?* tree-mudflap.c: Likewise.
> ? ? ? ?* tree-nested.c: Likewise.
> ? ? ? ?* tree-object-size.c: Likewise.
> ? ? ? ?* tree-pretty-print.c: Likewise.
> ? ? ? ?* tree-sra.c: Likewise.
> ? ? ? ?* tree-ssa-live.c: Likewise.
> ? ? ? ?* tree-ssa-loop-niter.c: Likewise.
> ? ? ? ?* tree-ssa-math-opts.c: Likewise.
> ? ? ? ?* tree-ssa-reassoc.c: Likewise.
> ? ? ? ?* tree-ssa-sccvn.c: Likewise.
> ? ? ? ?* tree-ssa-structalias.c: Likewise.
> ? ? ? ?* tree-tailcall.c: Likewise.
> ? ? ? ?* tree-vrp.c: Likewise.
> ? ? ? ?* tree.c: Likewise.
> ? ? ? ?* var-tracking.c: Likewise.
> ? ? ? ?* varasm.c: Likewise.
>
> gcc/ada/
> ? ? ? ?* gcc-interface/decl.c: Carefully replace TREE_CHAIN with
> ? ? ? ?DECL_CHAIN.
> ? ? ? ?* gcc-interface/trans.c: Likewise.
> ? ? ? ?* gcc-interface/utils.c: Likewise.
> ? ? ? ?* gcc-interface/utils2.c: Likewise.
>
> gcc/c-family/
> ? ? ? ?* c-common.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
> ? ? ? ?* c-format.c: Likewise.
>
> gcc/cp/
> ? ? ? ?* cp-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
> ? ? ? ?* call.c: Likewise.
> ? ? ? ?* class.c: Likewise.
> ? ? ? ?* cp-gimplify.c: Likewise.
> ? ? ? ?* decl.c: Likewise.
> ? ? ? ?* decl2.c: Likewise.
> ? ? ? ?* init.c: Likewise.
> ? ? ? ?* mangle.c: Likewise.
> ? ? ? ?* name-lookup.c: Likewise.
> ? ? ? ?* optimize.c: Likewise.
> ? ? ? ?* parser.c: Likewise.
> ? ? ? ?* pt.c: Likewise.
> ? ? ? ?* rtti.c: Likewise.
> ? ? ? ?* search.c: Likewise.
> ? ? ? ?* semantics.c: Likewise.
> ? ? ? ?* typeck.c: Likewise.
> ? ? ? ?* typeck2.c: Likewise.
>
> gcc/fortran/
> ? ? ? ?* f95-lang.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
> ? ? ? ?* trans-common.c: Likewise.
> ? ? ? ?* trans-decl.c: Likewise.
> ? ? ? ?* trans-types.c: Likewise.
> ? ? ? ?* trans.c: Likewise.
>
> gcc/java/
> ? ? ? ?* java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
> ? ? ? ?* boehm.c: Likewise.
> ? ? ? ?* class.c: Likewise.
> ? ? ? ?* decl.c: Likewise.
> ? ? ? ?* expr.c: Likewise.
> ? ? ? ?* jcf-parse.c: Likewise.
> ? ? ? ?* typeck.c: Likewise.
> ? ? ? ?* verify-glue.c: Likewise.
>
> gcc/objc/
> ? ? ? ?* objc-act.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
>
> gcc/testsuite/
> ? ? ? ?* g++.dg/plugin/attribute_plugin.c: Carefully replace TREE_CHAIN
> ? ? ? ?with DECL_CHAIN.
>
This caused:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45049
--
H.J.