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