From: Mike Pall Date: Wed, 11 Apr 2012 14:22:05 +0000 (+0200) Subject: Fix DSE of USTORE. Have to remove OBAR, too. X-Git-Tag: v2.0.0-beta10~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ed5172fe49ab9cd08e803c3bec1fc29492e24fe;p=thirdparty%2FLuaJIT.git Fix DSE of USTORE. Have to remove OBAR, too. --- diff --git a/src/lj_opt_mem.c b/src/lj_opt_mem.c index d64d2e6e..17e29569 100644 --- a/src/lj_opt_mem.c +++ b/src/lj_opt_mem.c @@ -422,6 +422,19 @@ TRef LJ_FASTCALL lj_opt_dse_ustore(jit_State *J) store->t.irt = IRT_NIL; store->op1 = store->op2 = 0; store->prev = 0; + if (ref+1 < J->cur.nins && + store[1].o == IR_OBAR && store[1].op1 == xref) { + IRRef1 *bp = &J->chain[IR_OBAR]; + IRIns *obar; + for (obar = IR(*bp); *bp > ref+1; obar = IR(*bp)) + bp = &obar->prev; + /* Remove OBAR, too. */ + *bp = obar->prev; + obar->o = IR_NOP; + obar->t.irt = IRT_NIL; + obar->op1 = obar->op2 = 0; + obar->prev = 0; + } /* Now emit the new store instead. */ } goto doemit;