From: Mike Pall Date: Thu, 4 Feb 2010 20:33:24 +0000 (+0100) Subject: RETF modifies BASE. Treat it like a store or it gets CSEd. X-Git-Tag: v2.0.0-beta3~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=370c868c311368175045e788bcdd67a8be37dd76;p=thirdparty%2FLuaJIT.git RETF modifies BASE. Treat it like a store or it gets CSEd. --- 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)