From e73916d811710ab02a4dfe447d621c99f4e7186c Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 19 Dec 2021 18:35:27 +0100 Subject: [PATCH] Prevent CSE of a REF_BASE operand across IR_RETF. Reported by XmiliaH. --- src/lj_opt_fold.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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