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.