aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2021-12-19 18:35:27 +0100
committerMike Pall <mike>2021-12-19 18:35:27 +0100
commite73916d811710ab02a4dfe447d621c99f4e7186c (patch)
tree50f7ddc6854c2e9fedb26ef2d0c727b0c623f7e4 /src
parent7b994e0ee0399caf6319865bbac88ddf62129a36 (diff)
downloadluajit-e73916d811710ab02a4dfe447d621c99f4e7186c.tar.gz
luajit-e73916d811710ab02a4dfe447d621c99f4e7186c.tar.bz2
luajit-e73916d811710ab02a4dfe447d621c99f4e7186c.zip
Prevent CSE of a REF_BASE operand across IR_RETF.
Reported by XmiliaH.
Diffstat (limited to 'src')
-rw-r--r--src/lj_opt_fold.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index b9efb0a1..6bb3fc59 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -2096,6 +2096,17 @@ LJFOLDF(xload_kptr)
2096LJFOLD(XLOAD any any) 2096LJFOLD(XLOAD any any)
2097LJFOLDX(lj_opt_fwd_xload) 2097LJFOLDX(lj_opt_fwd_xload)
2098 2098
2099/* -- Frame handling ------------------------------------------------------ */
2100
2101/* Prevent CSE of a REF_BASE operand across IR_RETF. */
2102LJFOLD(SUB any BASE)
2103LJFOLD(SUB BASE any)
2104LJFOLD(EQ any BASE)
2105LJFOLDF(fold_base)
2106{
2107 return lj_opt_cselim(J, J->chain[IR_RETF]);
2108}
2109
2099/* -- Write barriers ------------------------------------------------------ */ 2110/* -- Write barriers ------------------------------------------------------ */
2100 2111
2101/* Write barriers are amenable to CSE, but not across any incremental 2112/* Write barriers are amenable to CSE, but not across any incremental