birthpoints in rtl.
Andrew MacLeod
amacleod@redhat.com
Thu Feb 28 16:23:00 GMT 2008
Kenneth Zadeck wrote:
>
> Birthpoints are not nearly as useful as phi-functions because the
> algorithms that use birthpoints do not generally leave the birthpoints
> in the right places when they are finished. There is a lot of value
> added by the operand of phi-functions. But they do solve the n**2
> case for DU and UD chains (and because of the better SSA building
> algorithms than were available when Reif and Lewis first proposed
> their technique, will be much faster).
>
I wonder if we could use these factored copies with a threshold value
instead, such that we only use them when they will replace X uses or
defs, something that is tunable and start with high values for X. This
means the copies won't get in the way normally, and will make a big
difference when large/pathological cases come along. Experiments could
then determine a good value for X.
The copies will then only interfere with optimizations when the
situation is already horrible. In fact, it wouldn't surprise me if this
could actually *help* a number of passes, including RA, for larger
values of X :-)
Does RTL have an efficient copy prop? That could then naturally remove
these copies when desired, and then they could be added back in as
needed the next time DU/UD chains are built. If they weren't removed,
the next DU/UD build wouldn't trigger the threshold machinery since the
copy is already there, and we still end up with the same results.
> There is the complication of how to add the noop move in the presence
> of SUBREGs, and given the amount of pain that I suffered in adding the
>
If we used thresholding, you could try simply punting on these initially
and see what happens, and only deal with it when it becomes an issue.
Anyway, just a thought on how to make it less intrusive.
Andrew
More information about the Gcc
mailing list