Correct fix for reuse of SCEV results in FORL.

This commit is contained in:
Mike Pall 2014-04-01 10:07:15 +02:00
parent 19b69f21d4
commit b293063eb8

View File

@ -437,7 +437,7 @@ static LoopEvent rec_for(jit_State *J, const BCIns *fori, int isforl)
IRType t;
if (isforl) { /* Handle FORL/JFORL opcodes. */
TRef idx = tr[FORL_IDX];
if (mref(J->scev.pc, const BCIns) == fori) {
if (mref(J->scev.pc, const BCIns) == fori && tref_ref(idx) == J->scev.idx) {
t = J->scev.t.irt;
stop = J->scev.stop;
idx = emitir(IRT(IR_ADD, t), idx, J->scev.step);