On 07/21/2016 10:29 AM, Bernd Edlinger wrote:
But I think we have a use case where "X" means really more possible
registers (i.e. includes ss2, mmx etc.) than "g" (only general
registers).  Otherwise, in the test cases of pr59155 we would not
have any benefit for using "+X" instead of "+g" or "+r".

Does that sound reasonable?
If it's the case that the real benefit of +X is that it's allowing more
registers, then that argues that the backend ought to be providing
another (larger) register class.


X allows more different registers than r, and it is already documented.
In the cases where it is already used, the patch should not break
anything.  I would not understand, why we should forbid the use of X and
waste another letter of the alphabet for a slightly modified version
of X.
Doing so essentially allows us to deprecate "X" to used by target patterns only -- where what's acceptable is limited by the operand predicates. Those limits ultimately protect the rest of the routines from having to handle arbitrary RTL.

Meanwhile asms can use the new letter to say "I'll take any register of any class". Which is, AFAICT, what's desired here.

jeff

Reply via email to