https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91886
--- Comment #26 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Rich Felker from comment #24) > > Sure, and I'll do that, *if there are users*, *after they fix their stuff*. > > Nothing is broken on our side here. We are using the documented > functionality from gcc 9 going all the way back to whatever version first > added this stuff. Yes, as I told you before, that should never have been documented like that. As powerpc maintainer, let me apologise for that. > > 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; > > How many others were actually-internal All of them. All of them are either "wa" (or "v" or "d" in some cases) if you have certain compiler options (mainly -mcpu=), and terminate the compiler if you do not have those options. (Or they generate incorrect assembler code in the really unfortunate cases). Internally to the compiler you can have multiple alternatives for different cpus (or whatever), with different assembler templates. In inline assembler, you can not. > vs having this ridiculous excuse of > "it was a bug that we documented it so we can retroactively blame > programmers for using it rather than taking responsibility for the contract > we documented"? I am not blaming you. I am telling you that you shouldn't use "ws", you should just use "wa". That is the correct constraint to use here, and always was. Again, sorry for the misleading documentation. I am also asking you to -- after that code change -- reconsider whether "ws" is still useful for you, when compiling with GCC 10. > Are any of the "*cannot* add back" ones things that were > documented? Yes, all of them made their way into the manual. > If not, then you can add back all the ones that were documented > with no harm done to anything. Adding them back cannot be done. But I can make aliases for the ones still likely to be used in the wild with GCC 10, so they behave exactly like "wa". > which seems to be your desire to break things > on a whim. I wanted to remove 24 useless, dangerous, problematical constraints, which for all intents and purposes were completely internal, and could not be used for any purpose where the more basic constraints could not. I did not expect anyone to ever have used them. > Users generally do not use > unstable GCC; my understanding is that it's not recommended to do so. But developers are encouraged to, esp. developers for things that exercise the compiler more than average code. > > The point is that we will never get to a good state if we cannot fix > > up any historical mistakes. > > That's an extreme exaggeration. It is not. What do you think I have done the last N years? Did I remove rios support and SPE and 750 PS and xilinx float etc. etc. etc. just to annoy the one remaining user of those? What about all the refactoring and rewriting and replastering and whatnot, was that just done to destabilise things? The Power backend is old. It has a lot of history. It is called "rs6000" even, internally anyway, not even PowerPC, which will be 30 years old itself in just a few short years. At some point we need to shed some of that baggage, because it has become an encumbrance. That "ws" was introduced just six years ago (with somewhat different semantics, btw!) doesn't change this much. Have I already mentioned that if any program "in the wild" will use "ws" with GCC 10, then of course we can add an alias (to "wa") for it? No program should use "ws" in inline assembler, ever, but if some programs cannot fix that, we can fix it for them, sure.