diff options
author | Mike Pall <mike> | 2021-12-19 18:35:27 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2021-12-19 18:35:27 +0100 |
commit | e73916d811710ab02a4dfe447d621c99f4e7186c (patch) | |
tree | 50f7ddc6854c2e9fedb26ef2d0c727b0c623f7e4 | |
parent | 7b994e0ee0399caf6319865bbac88ddf62129a36 (diff) | |
download | luajit2-e73916d811710ab02a4dfe447d621c99f4e7186c.tar.gz |
Prevent CSE of a REF_BASE operand across IR_RETF.
Reported by XmiliaH.
-rw-r--r-- | src/lj_opt_fold.c | 11 |
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) LJFOLD(XLOAD any any) LJFOLDX(lj_opt_fwd_xload) +/* -- Frame handling ------------------------------------------------------ */ + +/* Prevent CSE of a REF_BASE operand across IR_RETF. */ +LJFOLD(SUB any BASE) +LJFOLD(SUB BASE any) +LJFOLD(EQ any BASE) +LJFOLDF(fold_base) +{ + return lj_opt_cselim(J, J->chain[IR_RETF]); +} + /* -- Write barriers ------------------------------------------------------ */ /* Write barriers are amenable to CSE, but not across any incremental |