diff --git a/gas/ChangeLog b/gas/ChangeLog index c3045c13ef4..26a0075e079 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2020-01-09 Jan Beulich + + * config/tc-i386.c (md_assemble): Check RegRex is clear during + REX transformations. Correct comment indentation. + 2020-01-09 Jan Beulich * config/tc-i386.c (optimize_encoding): Generalize register diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index efa43650928..645fd38a12c 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4574,6 +4574,7 @@ md_assemble (char *line) if (i.types[x].bitfield.class == Reg && i.types[x].bitfield.byte && (i.op[x].regs->reg_flags & RegRex64) == 0) { + gas_assert (!(i.op[x].regs->reg_flags & RegRex)); /* In case it is "hi" register, give up. */ if (i.op[x].regs->reg_num > 3) as_bad (_("can't encode register '%s%s' in an " @@ -4592,7 +4593,7 @@ md_assemble (char *line) if (i.rex == 0 && i.rex_encoding) { /* Check if we can add a REX_OPCODE byte. Look for 8 bit operand - that uses legacy register. If it is "hi" register, don't add + that uses legacy register. If it is "hi" register, don't add the REX_OPCODE byte. */ int x; for (x = 0; x < 2; x++) @@ -4601,6 +4602,7 @@ md_assemble (char *line) && (i.op[x].regs->reg_flags & RegRex64) == 0 && i.op[x].regs->reg_num > 3) { + gas_assert (!(i.op[x].regs->reg_flags & RegRex)); i.rex_encoding = FALSE; break; }