diff options
author | Mike Pall <mike> | 2010-03-08 23:43:16 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-03-08 23:43:16 +0100 |
commit | 2e614adb21b3c0c46038a7897b88accab2498ec4 (patch) | |
tree | 87769d5c5facca62fdac7f941e08b2674cfd2bab /src | |
parent | 09e875519b153bf7bc6fa5e1dbc1cfcdcb1e9aff (diff) | |
download | luajit-2e614adb21b3c0c46038a7897b88accab2498ec4.tar.gz luajit-2e614adb21b3c0c46038a7897b88accab2498ec4.tar.bz2 luajit-2e614adb21b3c0c46038a7897b88accab2498ec4.zip |
Do not fuse SLOAD across RETF.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_asm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c index 367fe430..cd1c0dbd 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
@@ -1277,7 +1277,8 @@ static Reg asm_fuseload(ASMState *as, IRRef ref, RegSet allow) | |||
1277 | } else if (mayfuse(as, ref)) { | 1277 | } else if (mayfuse(as, ref)) { |
1278 | RegSet xallow = (allow & RSET_GPR) ? allow : RSET_GPR; | 1278 | RegSet xallow = (allow & RSET_GPR) ? allow : RSET_GPR; |
1279 | if (ir->o == IR_SLOAD) { | 1279 | if (ir->o == IR_SLOAD) { |
1280 | if (!irt_isint(ir->t) && !(ir->op2 & IRSLOAD_PARENT)) { | 1280 | if (!irt_isint(ir->t) && !(ir->op2 & IRSLOAD_PARENT) && |
1281 | noconflict(as, ref, IR_RETF)) { | ||
1281 | as->mrm.base = (uint8_t)ra_alloc1(as, REF_BASE, xallow); | 1282 | as->mrm.base = (uint8_t)ra_alloc1(as, REF_BASE, xallow); |
1282 | as->mrm.ofs = 8*((int32_t)ir->op1-1); | 1283 | as->mrm.ofs = 8*((int32_t)ir->op1-1); |
1283 | as->mrm.idx = RID_NONE; | 1284 | as->mrm.idx = RID_NONE; |