Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: I would be very careful to tread here. regstack is a can of worms and not very good worms. We have had a lot of trouble retrofitting better dataflow into regstack because of the fragile nature of it's implementation. Well, the approach so far has been 'don't touch cha

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> >> >> is it really necessary to do your pass after reg stack. Given that >> there is no if conversion that runs after regstack what is your point? >> >> > I am talking about cross-jumping after regstack. > >> I should point out that there are

Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: is it really necessary to do your pass after reg stack. Given that there is no if conversion that runs after regstack what is your point? I am talking about cross-jumping after regstack. I should point out that there are no passes that currently use any dataflow a

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> Updating the LR dataflow when splitting a basic block is generally >> pretty easy. You start from the end of the block and just interpret >> the uses and defs >> for each insn. >> >> > This means duplicating this aspect of the propagate_block fun

Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: Updating the LR dataflow when splitting a basic block is generally pretty easy. You start from the end of the block and just interpret the uses and defs for each insn. This means duplicating this aspect of the propagate_block functionality. If we really have to do thi

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> >> >> You should do this starting from the dataflow branch. The version of >> if-cvt there works as I have mentioned in the previous mail and does not >> use propagate block at all. >> >> > if-conversion always joins blocks. But cross-jumping

Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: You should do this starting from the dataflow branch. The version of if-cvt there works as I have mentioned in the previous mail and does not use propagate block at all. if-conversion always joins blocks. But cross-jumping merges blocks or partial blocks. If the la

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> From that description I assumed that you really did care which uses >> actually reached which other uses. The reaching uses problem tracks >> each use separately. If this isn't what you need then you are free to >> use LR which is certainly much

Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: From that description I assumed that you really did care which uses actually reached which other uses. The reaching uses problem tracks each use separately. If this isn't what you need then you are free to use LR which is certainly much cheaper than RU. Yes, LR is perf

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >>> I suppose reg-live-at-start / reg-live-at-end information is >>> actually easier >>> to maintain during if-conversion that def-use chains. >> This is true, certainly in theory, a lot less so in practice. >> The way that you order things is thi

Re: local data flow

2006-07-17 Thread Joern RENNECKE
Kenneth Zadeck wrote: I suppose reg-live-at-start / reg-live-at-end information is actually easier to maintain during if-conversion that def-use chains. This is true, certainly in theory, a lot less so in practice. The way that you order things is this. while (something changes and we

Re: local data flow

2006-07-17 Thread Kenneth Zadeck
Joern Rennecke wrote: > In http://gcc.gnu.org/ml/gcc/2006-07/msg00390.html, you write: > >> depending on what you are doing, you can update the solution in place. >> The point of the dataflow talk was not to say that you cannot do >> anything incremental, it was to say that there are no good GEN

Re: local data flow

2006-07-16 Thread Joern Rennecke
In http://gcc.gnu.org/ml/gcc/2006-07/msg00390.html, you write: > depending on what you are doing, you can update the solution in place. > The point of the dataflow talk was not to say that you cannot do > anything incremental, it was to say that there are no good GENERAL > techniques. Many times i

Re: local data flow

2006-07-16 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> >> >> The right way to do this is not to build chains but to define your own >> dataflow problem to do this. >> > But wouldn't I need to update the problem solution every time a change > a bit of the > program - which would be much more costly

Re: local data flow

2006-07-16 Thread Joern RENNECKE
Kenneth Zadeck wrote: The right way to do this is not to build chains but to define your own dataflow problem to do this. But wouldn't I need to update the problem solution every time a change a bit of the program - which would be much more costly then doing a local update of some local

Re: local data flow

2006-07-16 Thread Kenneth Zadeck
Joern RENNECKE wrote: > Kenneth Zadeck wrote: > >> >> >> you can have def-use chains, you can have use-def chains or you can have >> both. >> It seems like what you are asking for are use-def chains, >> > No, I want to know if there exists a path from the current *use* of a > register to > some o

Re: local data flow

2006-07-16 Thread Joern RENNECKE
Kenneth Zadeck wrote: you can have def-use chains, you can have use-def chains or you can have both. It seems like what you are asking for are use-def chains, No, I want to know if there exists a path from the current *use* of a register to some other *use* of the same register without goi

Re: local data flow

2006-07-16 Thread Kenneth Zadeck
Joern RENNECKE wrote: > I 've been looking at the problem of converting the struct-equiv code > to use DEF-USE chains > instead of global dataflow information, but I have hit a snag. > We can find local registers as being registers that are defined > somewhere in the examined (partial) block, > and

local data flow

2006-07-16 Thread Joern RENNECKE
I 've been looking at the problem of converting the struct-equiv code to use DEF-USE chains instead of global dataflow information, but I have hit a snag. We can find local registers as being registers that are defined somewhere in the examined (partial) block, and have all their uses within the