[Bug c/90817] i386 inline assembly invalid register emitted
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jun 10 17:42:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90817
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |DUPLICATE
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Dup. You are using the inline-asm incorrectly.
sil is the lower part of the (16bit) SI register.
Yes in 32bit x86, there is no register named that. But you are using the
inline-asm to still to use name the full (32bit) ESI register with it (e.g.
%k0). If you want to have registers that have a lower part existing in 32bit
mode, you need to use q constraint. NOTE Q constraint is for the upper half of
the 16bit register, not the lower half.
This is all documented too including the modifier for output template.
*** This bug has been marked as a duplicate of bug 35102 ***
More information about the Gcc-bugs
mailing list