This is the mail archive of the gcc-patches@gcc.gnu.org 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]

Re: RFA: patch to fix a bad code generation for PR64110 -- new constraints addition


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


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