Hi, On Tue, 20 Mar 2018, Jakub Jelinek wrote:
> It is very common that input is one of the above cases, during x86_64-linux > and i686-linux bootstraps+regtests I got: > 13201x CONST_INT, 1959x MEM, 114x SUBREG, 110x SYMBOL_REF, > 2x PLUS (the new testcase only) > and most of those were actually from input-output constraints, like: > var = 1; > asm ("" : "+g" (var)); > var2 = &static_var3; > asm ("" : "+g" (var2)); > etc. I believe the mini-pass does a useful transformation for these that > ought to make it easier for reload to actually handle the matching > constraints. Well, then, so your handling of them makes somewhat sense. > > - if (end == constraint) > > + if (end == constraint || *end) > > continue; > > That wouldn't handle e.g. > asm volatile ("" : "=m,m" (b), "=r,r" (b) : "1,1" (b)); > case. No, it wouldn't, which was my intention. I'm fine with either way, but wouldn't have bothered with these cases. Human-written asms don't use alternatives very often (the asm template can't easily make use of them), nor do they use funny matching-or-something-else constraints. But if you want to handle them: more power to you :) Ciao, Michael.