2009-11-11 H.J. Lu <hongjiu.lu@intel.com>

* config/tc-i386.c (build_modrm_byte): Don't set register
	operand twice.
This commit is contained in:
H.J. Lu 2009-11-12 02:21:46 +00:00
parent f310f33d50
commit 1b9f0c97ad
2 changed files with 21 additions and 12 deletions

View File

@ -1,3 +1,8 @@
2009-11-11 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (build_modrm_byte): Don't set register
operand twice.
2009-11-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.in: Call ACX_LARGEFILE. Stop calling AC_SYS_LARGEFILE.

View File

@ -5344,19 +5344,23 @@ build_modrm_byte (void)
i.vex.register_specifier = i.op[vex_reg].regs;
}
/* If there is an extension opcode to put here, the
register number must be put into the regmem field. */
if (i.tm.extension_opcode != None)
/* Don't set OP operand twice. */
if (vex_reg != op)
{
i.rm.regmem = i.op[op].regs->reg_num;
if ((i.op[op].regs->reg_flags & RegRex) != 0)
i.rex |= REX_B;
}
else
{
i.rm.reg = i.op[op].regs->reg_num;
if ((i.op[op].regs->reg_flags & RegRex) != 0)
i.rex |= REX_R;
/* If there is an extension opcode to put here, the
register number must be put into the regmem field. */
if (i.tm.extension_opcode != None)
{
i.rm.regmem = i.op[op].regs->reg_num;
if ((i.op[op].regs->reg_flags & RegRex) != 0)
i.rex |= REX_B;
}
else
{
i.rm.reg = i.op[op].regs->reg_num;
if ((i.op[op].regs->reg_flags & RegRex) != 0)
i.rex |= REX_R;
}
}
/* Now, if no memory operand has set i.rm.mode = 0, 1, 2 we