https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91886
--- Comment #23 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to rsand...@gcc.gnu.org from comment #21) > > I am saying it is a mistake that GCC ever documented this for public > > use. Every use of "ws" in inline asm should be "wa". > > But it was a mistake made by the GCC developers. Once something > is documented publicly, we shouldn't just remove it without > warning unless there's no realistic alternative. And it sounds > from what Jakub says like it's simple to keep this working. Sure, and I'll do that, *if there are users*, *after they fix their stuff*. I will not add back all constraints I removed. I *cannot* add back many of those constraints, not with similar semantics anyway. Oh, and there were 24 I removed for 10, if I count correctly. All were internal. That they were documented was a bug; that one was actually used by any program was unexpected (and it took literally half a year before this was found out, or reported here at least). > I also disagree that this is as common a problem as you're saying. > Like Jakub says, there's long been a distinction between internal > and public constraints. Yeah, since 2006, and multiple ports still haven't caught up. And only x86 documents the output modifiers so far, and that only since 2014. > And for the most part, the public constraints > for MIPS and AArch64 were chosen to be ones that we thought were useful > and that we could continue to support. Which is exactly what I plan to do for GCC 10. The point is that we will never get to a good state if we cannot fix up any historical mistakes. > There's also precedent for defining compatibility constraints. Sure, I know that. That isn't the same thing as keeping all mistakes around forever. > The MIPS "v" constraint is only provided for asm compatibility, > even though no internal patterns use it any more. We have at least M N P es like that -- we don't delete them, because someone *might* use them. And we put back some output modifiers that are used by some headers, and even the alternate syntax thing (so that people can write inline asm that also supports old POWER, never mind that no one ever uses that any more).