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

--- Comment #35 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Martin Liška from comment #15)
> Started with r10-6919-gf3ce088645e5305d932380c7520809181b2d2eb9.

This change goes against what HONOR_REG_ALLOC_ORDER is documented on doing (I
Mean the false case of HONOR_REG_ALLOC_ORDER):
Normally, IRA tries to estimate the costs for saving a register in the
prologue and restoring it in the epilogue.  This discourages it from
using call-saved registers.  If a machine wants to ensure that IRA
allocates registers in the order given by REG_ALLOC_ORDER even if some
call-saved registers appear earlier than call-used ones, then define this
macro as a C expression to nonzero. Default is 0.

Since r8 is still a caller-saved register, HONOR_REG_ALLOC_ORDER should not
make a difference here.
The order for rs6000 is:
   MAYBE_R2_AVAILABLE                                           \
   9, 10, 8, 7, 6, 5, 4,                                        \
   3, EARLY_R12 11, 0,                                          \

Still that should apply here rather than register number based.  Really doing
cost based on register # seems incorrect anyways.  These are all caller-saved
registers IIRC.

r0 is special in rs6000 where it sometimes cannot show up; e.g. base+reg base
cannot be r0.

Reply via email to