]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix PHI remarking in SINK pass.
authorMike Pall <mike>
Sun, 5 Jun 2016 10:53:37 +0000 (12:53 +0200)
committerMike Pall <mike>
Sun, 5 Jun 2016 10:53:37 +0000 (12:53 +0200)
Thanks to Vyacheslav Egorov.

src/lj_opt_sink.c

index 975ee831d912fbcf80bd09168058f22db13aa926..c988cdfbee4187796d96da13098f367f1e749136 100644 (file)
@@ -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);
     }