[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