This is the mail archive of the gcc@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: Great example of why "everything is a tree" sucks


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.

	Jakub


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