Diego Novillo wrote: > On 2/29/08 7:04 PM, Steven Bosscher wrote: > >> I am not sure what would happen if GCC would start using FUD chains. >> Is it like in SSA that every register is assigned only once? > > But this would only affect the UD chains built by the DF code. My > idea is to build the same UD chains, but make them sparse instead of > the dense web we have today. None of this would be in the IL stream, > only on the DF web. > > Representing PHI nodes as a NOP could be an option for getting an > initial implementation quickly. > > > Diego. Diego,
I am leaning to just adding noop moves at the birthpoints (dominance frontiers) as real noop move insns in the streams in the passes that use ud or du chains. The back end is tolerant of noop moves and without the rest of the baggage of phi functions most of the passes that want du or ud chains will just do fine with the moves. I personally dislike the fact that the middle end keeps the phi's separate. Once you do the renaming for ssa form, the program has no meaning without the phi functions, so keeping them separate always seemed somewhat bogus. however i do not work on the middle end, so i never had standing to complain about. The two complications are: 1) libcalls 2) how do you merge different types of subregs stores. We have our best people working on (1) and the hope is that unless someone adds a killer reason to enhancement bugzilla 35413, we should be able to make that abomination go away forever. I plan to clear enhancement bugzilla 35404 this weekend. I am still hoping for one of the subreg elite to volunteer to help me with (2). Then my plan is to "adapt" as much of the tree ssa code (there is no reason for me to write dominance frontier code for the 4 time from scratch) as possible to inserting the noop moves where the phi would normally go and adapt the renaming step to build the chains. I have not read the fud papers closely, but reif's trick of using for using the birthpoints means that you can actually avoid having to solve reaching defs, and can just adapt the ssa stack based renaming algorithm to build the chains rather than rename the vars. I have no idea if wolfe ever figured this part out or not. Kenny