From 370c868c311368175045e788bcdd67a8be37dd76 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 4 Feb 2010 21:33:24 +0100 Subject: [PATCH] RETF modifies BASE. Treat it like a store or it gets CSEd. --- src/lj_ir.h | 3 ++- src/lj_opt_fold.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lj_ir.h b/src/lj_ir.h index e110607d..75519ed4 100644 --- a/src/lj_ir.h +++ b/src/lj_ir.h @@ -34,7 +34,7 @@ _(NE, GC, ref, ref) \ \ _(ABC, G , ref, ref) \ - _(RETF, G , ref, ref) \ + _(RETF, SG, ref, ref) \ \ _(LT, G , ref, ref) \ _(GE, G , ref, ref) \ @@ -288,6 +288,7 @@ typedef enum { #define IRM_GC (IRM_G|IRM_C) #define IRM_RG (IRM_R|IRM_G) #define IRM_LG (IRM_L|IRM_G) +#define IRM_SG (IRM_S|IRM_G) #define irm_op1(m) (cast(IRMode, (m)&3)) #define irm_op2(m) (cast(IRMode, ((m)>>2)&3)) diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index a8550e1f..818979b8 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -1326,6 +1326,7 @@ LJFOLDX(lj_opt_dse_fstore) LJFOLD(NEWREF any any) /* Treated like a store. */ LJFOLD(CALLS any any) LJFOLD(CALLL any any) /* Safeguard fallback. */ +LJFOLD(RETF any any) /* Modifies BASE. */ LJFOLD(TNEW any any) LJFOLD(TDUP any) LJFOLDX(lj_ir_emit)