Просмотр исходного кода

Handle joining IR_HIOP in SPLIT pass.

Mike Pall 13 лет назад
Родитель
Сommit
f093a34a2f
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      src/lj_opt_split.c

+ 10 - 0
src/lj_opt_split.c

@@ -365,6 +365,11 @@ static void split_ir(jit_State *J)
 	  split_emit(J, IRT(IR_PHI, IRT_SOFTFP),
 		     hisubst[ir->op1], hisubst[ir->op2]);
 	break;
+      case IR_HIOP:
+	J->cur.nins--;  /* Drop joining HIOP. */
+	ir->prev = nir->op1;
+	hi = nir->op2;
+	break;
       default:
 	lua_assert(ir->o <= IR_NE || ir->o == IR_MIN || ir->o == IR_MAX);
 	hi = split_emit(J, IRTG(IR_HIOP, IRT_SOFTFP),
@@ -469,6 +474,11 @@ static void split_ir(jit_State *J)
 	  split_emit(J, IRTI(IR_PHI), hiref, hiref2);
 	break;
 	}
+      case IR_HIOP:
+	J->cur.nins--;  /* Drop joining HIOP. */
+	ir->prev = nir->op1;
+	hi = nir->op2;
+	break;
       default:
 	lua_assert(ir->o <= IR_NE);  /* Comparisons. */
 	split_emit(J, IRTGI(IR_HIOP), hiref, hisubst[ir->op2]);