local data flow
Joern RENNECKE
joern.rennecke@st.com
Mon Jul 17 14:24:00 GMT 2006
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 have not done too many passes)
> do the analysis
> do one properly ordered pass over the cfg changing what you can
>change without using information that has been corrupted during this pass.
>
>
Except that with the current def-use chains updating def-use chains is
pointless since they
don't have the required information in the first place.
>>In my problem, the gen set is the set of uses, and the kill set are
>>defs, clobbers and uses. Hence, it's still backwards problem.
>>
>>
>You could define it either way. However, the backwards problem is
>already there in both the mainline and the dataflow branch. It is
>called reaching uses or DF_RU.
>
>
When the block has one or more uses, but no def of a register, the question
to ask is 'which uses of this register reaches this *use* site'
(backwards). That's
different from DF_RU, which calculates this information for def sites
instead.
> I think you should look closely are DF_RU.
What more is there to see? When the block I'm looking at only has uses of a
register, I don't want to know about uses in 'siblings' in the control
flow graph -
what I want to know is if the register is live at the end of the block.
LR should
answer that, and I can keep this information up-to-date inasmuch as it will
mention all live registers, and remain self-consistent.
More information about the Gcc
mailing list