This is the mail archive of the gcc-patches@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: [tree-ssa] Removal of gotos from cfg based ir


> On Fri, 2003-11-14 at 05:40, Jan Hubicka wrote:
> > > Hello,
> > > > Could you give examples of your other points?  (creation of a basic
> > > > block when redirecting edges
> > > 
> > > Consider a basic block that ends in statement causing an exception.  You
> > > cannot redirect the outgoing fallthru edge without creating a new basic
> > > block.
> 
> > 
> > We do hit problem of implicity inventing new basic blocks on other
> > places too.  For instance we do delay edge splitting for this reason and
> > have very convenient machinery to temporarily emit instructions to
> > edges.
> > 
> > I've seen different techniques to deal with this.  Either you relax
> > fallthru edges to not follow to consetuctive blocks, like (as long as I
> > remember) Impact and RTL cfglayout mode does, or you do manipulation via
> > more complex API allowing you to temporarily break relations in between
> > CFG and code like MipsPro, or you hide the gotos in shadows of basic
> > blocks (relax definition of basic block) like SUIF does, or you do
> > everything in code based manner having CFG only for analysis, not for
> > manipulation (LLVM for instance).
> > 
> > I do believe that approach of making CFG part of the IL (not making IL
> > uncomplette) is the most consistent sollution and probably easiest to
> > deal with.
> > My next candidate would be the idea of shadow gotos, but I would preffer
> > to avoid it.
> 
> IF you are entering a part of the optimizer where you are going to do
> this kind of manipulation a lot,  why not simply change all FALLTHRU
> edges in the program to be explicit GOTOs until such time that you no
> longer need it?  Is this what LLVM does? Its seems like the most natural

This is not possible with presence of EH edges - trapping instruction
must be last in the block and you can not insert GOTO after it.

Honza
> way of dealing with the problem if its that sticky of an issue. then
> presumably cfg_cleanup will get rid of them all when you are done, if
> the blocks are indeed still consecutive.
> 
> Andrew
> 


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