diff options
author | Mike Pall <mike> | 2014-04-01 10:07:15 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2014-04-01 10:07:15 +0200 |
commit | b293063eb823160d3f87c1d56f98a742ee8ee58e (patch) | |
tree | e7ae773d1983882e9dfa6be3f98b7255d6c9bc9b /src | |
parent | 19b69f21d409375ad8362c04186b246c1749fc8e (diff) | |
download | luajit-b293063eb823160d3f87c1d56f98a742ee8ee58e.tar.gz luajit-b293063eb823160d3f87c1d56f98a742ee8ee58e.tar.bz2 luajit-b293063eb823160d3f87c1d56f98a742ee8ee58e.zip |
Correct fix for reuse of SCEV results in FORL.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_record.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_record.c b/src/lj_record.c index 95957d31..47d7115b 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -437,7 +437,7 @@ static LoopEvent rec_for(jit_State *J, const BCIns *fori, int isforl) | |||
437 | IRType t; | 437 | IRType t; |
438 | if (isforl) { /* Handle FORL/JFORL opcodes. */ | 438 | if (isforl) { /* Handle FORL/JFORL opcodes. */ |
439 | TRef idx = tr[FORL_IDX]; | 439 | TRef idx = tr[FORL_IDX]; |
440 | if (mref(J->scev.pc, const BCIns) == fori) { | 440 | if (mref(J->scev.pc, const BCIns) == fori && tref_ref(idx) == J->scev.idx) { |
441 | t = J->scev.t.irt; | 441 | t = J->scev.t.irt; |
442 | stop = J->scev.stop; | 442 | stop = J->scev.stop; |
443 | idx = emitir(IRT(IR_ADD, t), idx, J->scev.step); | 443 | idx = emitir(IRT(IR_ADD, t), idx, J->scev.step); |