https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99680
--- Comment #5 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #4) > I was worried that letters that introduce multi-letter constraints followed > by '\0' could be a problem too. Or do we rely on those being dropped > already earlier? > Something like "=B" on x86_64 etc. In what I've tried it was dropped during > vregs pass though. > And when cn already is CONSTRAINT__UNKNOWN, performing checks whether to set > it to CONSTRAINT__UNKNOWN is just wasted time. I like more direct approach. Just looking at CONSTRAINT_LEN. Multichracter constraints returns their length, all others (including modifiers and '\0') returns 1. Using CONSTRAINT__UNKNOWN adds one more function (lookup_constraint) in the decision chain. If somebody uses starting character of multi-character constraint without all constraint characters, a lot of things will be broken at least in RA. If this happens RA will read besides constraint string anyway in other RA code places and also RA will also consider garbage after the string as additional constraints and make unwanted reloads. Reading behind constraint string in process_address_1 would have less serious consequences.