aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2024-08-15 00:07:34 +0200
committerMike Pall <mike>2024-08-15 00:07:34 +0200
commit3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540 (patch)
tree983ae8af5337389ab12ae0a6661f97ea2f80247f
parent7a608e4425ce0777f5c980dad9f4fdc1bcce0b8c (diff)
downloadluajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.tar.gz
luajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.tar.bz2
luajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.zip
Limit CSE for IR_CARG to fix loop optimizations.
Thanks to Peter Cawley. #1244
-rw-r--r--src/lj_opt_fold.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index b437d672..98ec28c6 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -2171,6 +2171,17 @@ LJFOLD(CNEW any any)
2171LJFOLD(XSNEW any any) 2171LJFOLD(XSNEW any any)
2172LJFOLDX(lj_ir_emit) 2172LJFOLDX(lj_ir_emit)
2173 2173
2174/* -- Miscellaneous ------------------------------------------------------- */
2175
2176LJFOLD(CARG any any)
2177LJFOLDF(cse_carg)
2178{
2179 TRef tr = lj_opt_cse(J);
2180 if (tref_ref(tr) < J->chain[IR_LOOP]) /* CSE across loop? */
2181 return EMITFOLD; /* Raw emit. Assumes fins is left intact by CSE. */
2182 return tr;
2183}
2184
2174/* ------------------------------------------------------------------------ */ 2185/* ------------------------------------------------------------------------ */
2175 2186
2176/* Every entry in the generated hash table is a 32 bit pattern: 2187/* Every entry in the generated hash table is a 32 bit pattern: