Dave Korn wrote:
  When regclass determines that placing an operand into either one of several
register classes would have the same cost, it picks the numerically highest
one in enum reg_class ordering.

One possible solution is to give the special registers a higher REGISTER_MOVE_COST to discourage their use.

Another solution is to use ! and ? in the constraints to increase the cost of alternatives that are inconvenient.

There is also CLASS_LIKELY_SPILLED_P which is supposed to discourage local-alloc from using registers in single-reg classes. At least there is code for this in gcc-2.95.3. It looks like things have changed in this area since then.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com

Reply via email to