https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104804
--- Comment #4 from 。 <570070308 at qq dot com> --- (In reply to Jakub Jelinek from comment #3) > 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)? Yes, in x86 that's true. But if there is an Instruction Set, which support ``` movq ((%rax)), %rax ``` And in test.c : ``` void kkk() { char a; char *pa=&a; char *ppa=&pa; __asm__ ( :"+m"(pa) :"m"(a) : ); } ``` gcc can use %rax to represent ppa, (%rax) to represent pa, ((%rax)) to represent a., then "+&m"(pa) will make difference.