https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90249

--- Comment #8 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
(In reply to Richard Earnshaw from comment #7)
> (In reply to Segher Boessenkool from comment #4)
> > That is code *size*.  Code size is expected to grow a tiny bit, because of
> > *better* register allocation.
> > 
> > But we could not do make_more_copies at -Os, if that helps?  (The hard
> > register
> > changes themselves are required for correctness).
> 
> In this case, however, we get *worse* register allocation, since it is using
> the the expensive register more frequently than a cheaper register which is
> hardly used at all.
> 
> In this particular case, all the uses of the "cheap" register (r7) could use
> the 'expensive' register at no additional cost, since the cheap register is
> being used only to hold a value that will be moved to another register (a
> cheap operation regardless of the register used).

FTR, I don't think the combine changes are directly implicated in this
regression.  They just expose a latent issue with register allocation and its
costing.

Reply via email to