https://gcc.gnu.org/bugzilla/show_bug.cgi?id=15089
Ilya Lesokhin <ilya.lesokhin at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ilya.lesokhin at gmail dot com --- Comment #26 from Ilya Lesokhin <ilya.lesokhin at gmail dot com> --- Created attachment 44888 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44888&action=edit Test case demonstrating the problem Looks like issue still exists. #include <array> uint64_t test() { register uint64_t t0; register uint64_t t1; register uint64_t t2 ; register uint64_t rdx; register uint64_t r0 asm("rsi"); register uint64_t r1 ; register uint64_t r2 ; register uint64_t r3 ; register uint64_t m3; register uint64_t y0; register uint64_t y1; register uint64_t y2; register uint64_t y3; asm( "mov %[res0],%[res0]" : "=&d"(rdx), [res0] "=&r"(r0), [res1] "=&r"(r1), [res2] "=&r"(r2), [res3] "=&r"(r3), [t0] "=&r"(t0), [t1] "=&r"(t1), [t2] "=&r"(t2) : [m3] "r"(m3), [y0] "r"(y0), [y1] "r"(y1), [y2] "r"(y2) : "cc"); return r0; } Results in: test(): push %r14 xor %eax,%eax xor %ecx,%ecx push %rbp xor %esi,%esi xor %edi,%edi push %rbx mov %r14,%r14 <--------- should be rsi. mov %r14,%rax pop %rbx pop %rbp pop %r14 retq https://godbolt.org/z/RLTDbY