X86: EmitArrayImm shouldn't truncate to 16 bits
The code in X86Mir2Lir::EmitArrayImm() always truncates the immediate
value to 16 bits. This can't be right. The code in EmitImm() will check
the expected immediate size from the entry.
Change-Id: I75b3b96e41777838b0f243d65f3f2ded2e1dbdd2
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
diff --git a/compiler/dex/quick/x86/assemble_x86.cc b/compiler/dex/quick/x86/assemble_x86.cc
index 7436e39..b8481e2 100644
--- a/compiler/dex/quick/x86/assemble_x86.cc
+++ b/compiler/dex/quick/x86/assemble_x86.cc
@@ -742,7 +742,7 @@
EmitPrefixAndOpcode(entry);
EmitModrmSibDisp(entry->skeleton.modrm_opcode, base, index, scale, disp);
DCHECK_EQ(0, entry->skeleton.ax_opcode);
- EmitImm(entry, static_cast<int16_t>(imm));
+ EmitImm(entry, imm);
}
void X86Mir2Lir::EmitRegThread(const X86EncodingMap* entry, uint8_t reg, int disp) {