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.

Reply via email to