This is the mail archive of the
mailing list for the GCC project.
Re: Great example of why "everything is a tree" sucks
- From: Jakub Jelinek <jakub at redhat dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: Jeff Law <law at redhat dot com>, Steven Bosscher <stevenb dot gcc at gmail dot com>, Richard Biener <richard dot guenther at gmail dot com>, Diego Novillo <dnovillo at google dot com>, GCC <gcc at gcc dot gnu dot org>
- Date: Wed, 13 Nov 2013 17:50:02 +0100
- Subject: Re: Great example of why "everything is a tree" sucks
- Authentication-results: sourceware.org; auth=none
- References: <528288B3 dot 8010109 at redhat dot com> <20131112203509 dot GC27813 at tucnak dot zalov dot cz> <CAD_=9DQRZy92RCJEopO=XHMj9+eDHQ0MW1g__ZaFNNrWQW=QNg at mail dot gmail dot com> <CAFiYyc38jGfAaWwo5OWTxmQnNeP9=f5McGrW_3HCNJotvbBtKQ at mail dot gmail dot com> <CABu31nOpcf1EivKXYy-i4Czm84aSv+hOYhrSPpefzNVTjjNW0Q at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1311131544060 dot 24404 at digraph dot polyomino dot org dot uk> <5283A72F dot 1030300 at redhat dot com> <Pine dot LNX dot 4 dot 64 dot 1311131641270 dot 24404 at digraph dot polyomino dot org dot uk>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Wed, Nov 13, 2013 at 04:43:45PM +0000, Joseph S. Myers wrote:
> On Wed, 13 Nov 2013, Jeff Law wrote:
> > On 11/13/13 08:59, Joseph S. Myers wrote:
> > > On Wed, 13 Nov 2013, Steven Bosscher wrote:
> > >
> > > > Really the best place to start IMHO would be to evict 'tree' from the
> > > > front ends. That would really be a step towards making the front ends
> > > > independent of the rest of the compiler, and it would simplify changes
> > > > towards static 'tree' types.
> > >
> > > From a C perspective, a useful change that would facilitate moving the IR
> > > away from tree would be moving most of fold to operate on GIMPLE instead
> > > of on trees (that is, rewriting it as GIMPLE optimizations; I don't think
> > > this can be a mechanical refactoring).
> > [ ... ]
> > Yes. That is most certainly part of "the plan". Andrew, myself and others
> > have discussed it extensively. It's a lot of work, but getting the tree
> > folder disentangled from the gimple optimizers is definitely on the hit list.
> Note that *removing* things from the tree folder (and convert.c, and
> shorten_compare, and shorten_binary_op, and any other such fold-like
> things) once they've been moved to GIMPLE is a critical part of making it
> easier to clean up front-end IR; having them in both places won't help.
Richard B. had the idea of generating parts of fold-const and corresponding
GIMPLE ops from some meta definition file.
Note, in many cases, removing optimizations from fold-const.c leads to
regressions on code assuming something is folded (especially in
initializers). Sure, that is all typically undocumented GNU extensions,
but we had several such problems in the past already.