This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Trunk frustration
- To: gcc at gcc dot gnu dot org, geoffk at geoffk dot org, kenner at vlsi1 dot ultra dot nyu dot edu, law at redhat dot com
- Subject: Re: Trunk frustration
- From: Jan Hubicka <jh at suse dot cz>
- Date: Wed, 25 Jul 2001 18:34:20 +0200
> 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