This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]


ORDER_REGS_FOR_LOCAL_ALLOC is a target macros that allows ports to
override the default for REG_ALLOC_ORDER.  On arm, this is used to
prefer low registers over high ones when in Thumb mode.  However, this
does not work at the moment, since the macro was used only in
local-alloc, and that code was lost with IRA.  The patch below
reintroduces a call to the macro.

This still does not solve the problem in PR 42895.  IRA also has code to
add extra cost for call-saved registers if they haven't been used yet in
the function, and this prevents us from using low registers in some
cases.  Given that a port that defines REG_ALLOC_ORDER can take into
account whether a register is call-used or call-saved, I think it's best
if IRA does not override the port's choice of alloc order.  Hence, I've
made the extra cost calculation conditional.

Bootstrapped and regression tested on i686-linux.  SPEC2000 tested on
Cortex-A9; overall result unchanged with a few fluctuations up and down
in the individual benchmarks.  Ok?


Attachment: ira-order.diff
Description: Text document

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]