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