Vladmir Makarov wrote: > * config/s390/s390.h (IRA_COVER_CLASSES, > IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno)): Define.
In debugging PR 53854 I noticed a strange behavior in IRA costs that seems to trace back to the very first definition of the IRA_HARD_REGNO_ADD_COST_MULTIPLIER on s390: > +/* In some case register allocation order is not enough for IRA to > + generate a good code. The following macro (if defined) increases > + cost of REGNO for a pseudo approximately by pseudo usage frequency > + multiplied by the macro value. > + > + We avoid usage of BASE_REGNUM by nonzero macro value because the > + reload can decide not to use the hard register because some > + constant was forced to be in memory. */ > +#define IRA_HARD_REGNO_ADD_COST_MULTIPLIER(regno) \ > + (regno == BASE_REGNUM ? 0.0 : 0.5) (which is still unchanged in current sources.) Now, the comment says BASE_REGNUM should be avoided, but the actual implementation of the macro seems to avoid *all* registers *but* BASE_REGNUM ... Am I misreading this, or is there indeed a logic error here? Bye, Ulrich -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com