On 04/18/2013 04:09 PM, Martin Jambor wrote:

I did not because I did not think it would be substantially faster
than running the pass as-is twice.
I wasn't looking to improve compile-time performance, but from a standpoint of not losing optimizations. If we can show that a second pass does virtually nothing then this becomes a moot question.


What would very likely be a working alternative for shrink-wrapping is
to have shrink-wrapping preparation invoke copyprop_hardreg_forward_1
on the first BB and the few BBs it tries to move stuff across.  But of
course that would be a bit ugly and so I think we should do it only if
there is a reason not to move the pass (or schedule it twice).
Or a pass to sink just the moves out of the incoming argument registers. From a dataflow standpoint that should be a relatively cheap problem to solve.

For each argument register you need to know the block where it's generated (usually the first block), blocks which clobber and blocks which use.

You then run a latest insertion point algorithm, or a variant thereof to determine the latest safe insertion points.

Jeff

Reply via email to