https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88859
--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> --- __y is passed in %rsi: (gdb) p &__y Address requested for identifier "__y" which is in register $rsi (gdb) p __y $24 = {static npos = <optimized out>, _M_len = 10, _M_str = 0x402008 L"costa rica"} (gdb) p/x $rsi $25 = 0x4020080000000a (gdb) 0x00401690 <+32>: mov %rdi,%rdx ^^^^^^^^^^^ This should be "mov %edi, %edx". 0x00401693 <+35>: shr $0x20,%rsi 0x00401697 <+39>: shr $0x20,%rdi 0x0040169b <+43>: callq 0x401050 <wmemcmp@plt>