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]

Re: [PATCH] convert TREE_CHAIN to DECL_CHAIN where appropriate


On Fri, Jul 23, 2010 at 5:42 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> 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
>
>

This also caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45459

-- 
H.J.


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