- Fixed: FxCompareRel::Emit() generated broken code for floating point operands.

SVN r3895 (scripting)
This commit is contained in:
Randy Heit 2012-10-18 04:04:33 +00:00
parent c1aefec1e3
commit 2c92941f6b

View file

@ -1566,7 +1566,7 @@ ExpEmit FxCompareRel::Emit(VMFunctionBuilder *build)
{ OP_LT_RR, OP_LTF_RR, 0 }, // < { OP_LT_RR, OP_LTF_RR, 0 }, // <
{ OP_LE_RR, OP_LEF_RR, 1 }, // > { OP_LE_RR, OP_LEF_RR, 1 }, // >
{ OP_LT_RR, OP_LTF_RR, 1 }, // >= { OP_LT_RR, OP_LTF_RR, 1 }, // >=
{ OP_LE_RR, OP_LE_RR, 0 } // <= { OP_LE_RR, OP_LEF_RR, 0 } // <=
}; };
int instr, check, index; int instr, check, index;
@ -1591,7 +1591,7 @@ ExpEmit FxCompareRel::Emit(VMFunctionBuilder *build)
{ {
op1.Free(build); op1.Free(build);
} }
ExpEmit to(build, op1.RegType); ExpEmit to(build, REGT_INT);
// See FxUnaryNotBoolean for comments, since it's the same thing. // See FxUnaryNotBoolean for comments, since it's the same thing.
build->Emit(OP_LI, to.RegNum, 0, 0); build->Emit(OP_LI, to.RegNum, 0, 0);