https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123381

--- Comment #5 from Jeffrey A. Law <law at gcc dot gnu.org> ---
I've always seen '?' and its cousin '^' as cost guidance and not really
appropriate to fix a correctness bug.  '!' and '$' on the other hand could in
rare cases be used to fix bugs.

We used '!', IIRC, to handle really oddball cases that could occur and which we
had to handle, but didn't want to really expose.

For example, consider a decrement-and-branch insn on the m68k in the reload
era.  We would use '!' to expose a potential reload path if the decremented
object happened to be held in an FP register.

But I'd tend to think that constraint twiddling isn't a great way to go here. 
I think your idea of identifying a move with clobber as a move had promise.

Reply via email to