On 01/27/15 07:08, Richard Sandiford wrote:
Yeah, but in practice that's only ever going to be a partial transition.
Many port maintainers won't look at this, so we'll have to support both
versions indefinitely, even if the new behaviour turns out to be the
best for all cases.
Yes, most likely. I find myself pondering the related question of how
we get ports to transition to LRA and if we could tie these together.
Maintainers are going to need to transition to LRA if we're ever going
to start removing blobs of reload. As a part of that transition they're
presumably going to be looking closely at their backend and could make
the constraint transition.
In an ideal world, we'd declare release X.Y has a cut-off point. Ports
that haven't transitioned to LRA get deprecated at that point. Those
ports are the ones most likely not to make the constraint transition as
well. I think we would have to consider any uses of ?! that remain
after that point as intentional.
I just think we're going to regret having two sets of constraints with
such subtly different meanings.
But isn't that inevitable? While I suspect that most instances of ?!
should be converted, there may be some that should not. If that's the
case then we're going to have both forever.
Looking back at the original PR, Jakub said:
The ! has been added by me for PR63594, so it isn't there from the era
when i?86 backend was using reload. If there is a better way to
express that RA should prefer to use memory or xmm register and only
use r constraint if it already is in a r register and doesn't need to
be reloaded, I can use that. Whether it is ?, ??? or something else.
! description in gcc docs just fitted most what I wanted...
In some ways this seems to match the intention of "*". Originally I think
it was just an RA-only thing and was ignored by reload, but LRA does take it
into account too (which sounds like progress to me).
If I revert the patch locally and change the *vec_dup<mode> pattern to
use "*", it passes both the test for PR64110 and the tests for PR63594.
Would that be OK as an alternative?
I think that's up to Uros and Jakub to sort out.
Jeff