https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91886
--- Comment #17 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Rich Felker from comment #13) > > That does not look at types. It complains that "x" lives in memory, > > while the constraint requires a register (a floating point register). > > That does not sound accurate. But it is. > > No, they are not. The constraints are an implementation detail. And > > they *have* to be, or we could never again improve anything. > > If they are in the documentation, they're not implementation details. There also is a documentation bug, yes. > > Unfortunately we currently document most of them in the user manual as > > well. It's on my list of things to change, for GCC 10. Most targets > > still have this problem, fwiw. > > If you intend to remove documented functionality on an even larger scale, > that is a breaking change, and one which I will (loudly) oppose. Feel free. What I will do is remove the buggy documentation. > > What I am talking about is that people rely on implementation details > > no matter what we do, and then prevent us from changing them. > > That may be true, but it's not related to this bug report and I have not > seen evidence of it happening. I'll gladly fix it if we're doing that > anywhere. So use "wa" instead of "ws" in the two files you use it, and can we get on with our lives? The places where in the past we put old internal constraints (and output modifiers) back are places where for example glibc used it in installed headers. That takes a decade or more to fix.