瀏覽代碼

Fix soft-float math.abs() and negation.

Broken since SIMD constants were switched to IR_FLOAD REF_NIL.
Mike Pall 8 年之前
父節點
當前提交
019fb9d1e9
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/lj_opt_split.c

+ 2 - 1
src/lj_opt_split.c

@@ -436,7 +436,8 @@ static void split_ir(jit_State *J)
 	nir->o = IR_CONV;  /* Pass through loword. */
 	nir->op2 = (IRT_INT << 5) | IRT_INT;
 	hi = split_emit(J, IRT(ir->o == IR_NEG ? IR_BXOR : IR_BAND, IRT_SOFTFP),
-			hisubst[ir->op1], hisubst[ir->op2]);
+	       hisubst[ir->op1],
+	       lj_ir_kint(J, (int32_t)(0x7fffffffu + (ir->o == IR_NEG))));
 	break;
       case IR_SLOAD:
 	if ((nir->op2 & IRSLOAD_CONVERT)) {  /* Convert from int to number. */