https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108539
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |jakub at gcc dot gnu.org Resolution|--- |INVALID --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That is just misunderstanding of the inline asm syntax, please read the documentation. "=dl" doesn't mean that _a output is in %dl register, but either in %edx register or in any of the index registers (%eax %ebx %ecx %edx %esi %edi %ebp). "=dh" means either in %edx register or in nowhere (h isn't a valid constraint). So, when doing RA _b needs to be put into %edx (the low 8 bits of that aka %dl) and _a into some index register other than %edx.