Quellcode durchsuchen

Prevent CSE of a REF_BASE operand across IR_RETF.

Reported by XmiliaH.
Mike Pall vor 3 Jahren
Ursprung
Commit
e73916d811
1 geänderte Dateien mit 11 neuen und 0 gelöschten Zeilen
  1. 11 0
      src/lj_opt_fold.c

+ 11 - 0
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