GenLongRegOrMemOp function expects arithmetic on core regs but does not
ensure that operand in core reg.
The patch adds the conversion if it is required.
Change-Id: Ibb6928b8cc2c63ede1a20d6ee45d9a64884231b6
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
X86OpCode x86op = GetOpcode(op, rl_dest, rl_src, false);
if (rl_src.location == kLocPhysReg) {
// Both operands are in registers.
+ // But we must ensure that rl_src is in pair
+ rl_src = EvalLocWide(rl_src, kCoreReg, true);
if (rl_dest.reg.GetReg() == rl_src.reg.GetHighReg()) {
// The registers are the same, so we would clobber it before the use.
int temp_reg = AllocTemp();