diff options
Diffstat (limited to 'luajit-2.0/src/lj_opt_sink.c')
-rw-r--r-- | luajit-2.0/src/lj_opt_sink.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/luajit-2.0/src/lj_opt_sink.c b/luajit-2.0/src/lj_opt_sink.c index a98e9df..6a00d04 100644 --- a/luajit-2.0/src/lj_opt_sink.c +++ b/luajit-2.0/src/lj_opt_sink.c @@ -1,6 +1,6 @@ /* ** SINK: Allocation Sinking and Store Sinking. -** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h +** Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h */ #define lj_opt_sink_c @@ -153,10 +153,9 @@ static void sink_remark_phi(jit_State *J) remark = 0; for (ir = IR(J->cur.nins-1); ir->o == IR_PHI; ir--) { IRIns *irl = IR(ir->op1), *irr = IR(ir->op2); - if (((irl->t.irt ^ irr->t.irt) & IRT_MARK)) - remark = 1; - else if (irl->prev == irr->prev) + if (!((irl->t.irt ^ irr->t.irt) & IRT_MARK) && irl->prev == irr->prev) continue; + remark |= (~(irl->t.irt & irr->t.irt) & IRT_MARK); irt_setmark(IR(ir->op1)->t); irt_setmark(IR(ir->op2)->t); } |