This is the mail archive of the 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: birthpoints in rtl.

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.

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. 


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