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); |
