https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104804
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- As I wrote, the only way to implement +m reliably in gcc is to lower it immediately as "=m" (whatever) ... "0" (whatever) with ensuring that side-effects in whatever are evaluated just once. And, in that case & prevents overlap not just with other inputs, but also with the "0" input which is just another one. What exactly are you trying to achieve (because & on your testcase makes no sense at all, the other input is "r" and therefore can't ever match the memory)?