https://sourceware.org/bugzilla/show_bug.cgi?id=26685
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=97257 --- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Jan Beulich from comment #3) > (In reply to H.J. Lu from comment #0) > > [hjl@gnu-cfl-2 gcc]$ cat x.s > > movdir64b (%rdx), %rax > > movdir64b (%edx), %eax > > movdir64b foo(%rip), %rax > > movdir64b foo(%eip), %eax > > movdir64b foo(%rip), %eax > > [hjl@gnu-cfl-2 gcc]$ gcc -c x.s > > x.s: Assembler messages: > > x.s:5: Error: invalid register operand size for `movdir64b' > > Which is intended, expected, and correct behavior. > > > [hjl@gnu-cfl-2 gcc]$ > > > > movdir64b foo(%rip), %eax > > > > should be treated as > > > > movdir64b foo(%eip), %eax > > We should not silently change what the programmer has (mistakenly) written, > as it's ambiguous what would be meant: Could be they meant 32-bit > addressing, but could also be they means 64-bit one. This specific case came from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97257 The address prefix changes the register operand in these instructions. (%rip) is a special case. -- You are receiving this mail because: You are on the CC list for the bug.