This is the mail archive of the 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 5:50 PM, Jakub Jelinek <> wrote:
> 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.

Yeah, I hope to tackle the fold-const.c vs. GIMPLE mess during stage3
when everyone else is fixing bugs.  (haha)


> 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]