On 11/26/11 12:50, Richard Sandiford wrote:
> Could we use DF_REF_USES/DEFS here instead?

I suppose we could, but I can't really get excited about it...

> Also:
> 
> +/* Look for sets of call-saved registers in the first block of the
> +   function, and move them down into successor blocks if the register
> +   is used only on one path.  This exposes more opportunities for
> +   shrink-wrapping.
> +   These kinds of sets often occur when incoming argument registers are
> +   moved to call-saved registers because their values are live across
> +   one or more calls during the function.  */
> +
> +static void
> +prepare_shrink_wrap (basic_block entry_block)
> 
> There's no check for call-savedness.  Is that deliberate?

At least one could argue that it the transformation always saves some
unnecessary work on at least one path.

> The reason I'm suddenly "reviewing" the code now is that it
> doesn't prevent shrink-wrapping, because nothing adds register 2
> to the liveness info of the affected blocks.  The temporary prologue
> value of register 2 is then moved into register 15.

Hmm. Are we just missing another df_analyze call?


Bernd

Reply via email to