https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114597
--- Comment #5 from wierton <141242068 at smail dot nju.edu.cn> --- (In reply to Xi Ruoyao from comment #4) > I believe the second form is still incorrect and it just works by luck. To > ensure it work you have to do: > > asm("mov %1,%0":"=r"(n.p):"r"(n.p)); > > Or > > asm("":"+r"(n.p)); > > Not so sure about the third form. Thank you for your explanation, it helps me a lot :).