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]

Re: Trunk frustration


> trying to replace jump.c with a CFG equivalent and keep the CFG consistent
> throughout compilation.
> 
> The changes are quite extensive and have been consistently breaking the
> tree across a number of architectures.
> 
> While Jan tried to do this work incrementally it hasn't been that successful
> IMHO.
Gentlemens,
I really apologize for any frustration I've caused.
Originally I've consedered creating public branch for this work, but my
decision has been driven by following:
1) I need to change many parts of compiler, that means it will be dificult
   to maitain branch and avoid duplication of effort on mainline
2) I've created plan to do changes incrementaly, where each change is small
   and can be tested separately
3) I've implemented major body (up to killing jump pass) and tested concept
   as a whole, then break again to the incremental changes, so I've expected
   my way to be equally safe to the branch, just w/o doing it officially.
   (I've scheduled the work for 14 days I was mostly offline)
4) There has been number of design decisions and I wanted to see reviews
   before I get too far wrong way.

I've hoped this scheme to be safe and better than the branching.  I've
obviously underestimated the need to test multiple architectures
(again I've tested the "wholepatch" at sparc/mips/ppc/i686) and the
effect I get to other optimizations - number of bugs has been de-facto
latent problems everywhere, that didn't show because old jump didn't
the optimizations.

I feel really frustrated by the amount of problems I've caused and
didn't seleep much this week. Some of them were caused by my
ignorance about issues on reorg pass and others by cleanups I've made
after thesting the "wholepatch" and bootstrapped only on i686.

For this purpose I've decided to move my future work to the branch.  The major
failure I've made was definitly my lack of ability to recognize "problematic"
patches, that needs testing on multiple platforms and "simple" patches.  I've
gave lots of testing to patches I was affraid of, but dodn't payed enought
attention to the "simple" ones.  So I am going to test each on all platofrms I
have access to.

Unlike situation when I've started, now I don't need so much changes
to each pass (I hope) and I want to proceed by short-lived goals,
each time I reach goal, test major platforms, prepare patches,
test again and send for review.

So I hope I've learned something from the lesson and would be able
to do the rest without more major breakage.

The goals I consider for CFG are for instance:
1) Finishing the jump threading pass
2) Converting rest of passes except loop to CFG
3) Implementing better infrastructure to manipulate with CFG, mailny
   to do basic block duplication easilly.
4) Implement tracer and BB duplication pass using that infrastructure
3) Converting loop to CFG (I would like to discuss this with Michael
   Hayes, as I believe he did most of work needed for this goal)
4) Killing the leftout of jump infrastructure - LABEL_NUSES, barriers,
   jump tables lurking in insn stream etc. should go
5) ....

So please send me your comments and ideas.

Thank you for your understanding,
Honza


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