diff options
| author | Mike Pall <mike> | 2024-08-15 00:07:34 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2024-08-15 00:07:34 +0200 |
| commit | 3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540 (patch) | |
| tree | 983ae8af5337389ab12ae0a6661f97ea2f80247f /src | |
| parent | 7a608e4425ce0777f5c980dad9f4fdc1bcce0b8c (diff) | |
| download | luajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.tar.gz luajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.tar.bz2 luajit-3bdc6498c4c012a8fbf9cfa2756a5b07f56f1540.zip | |
Limit CSE for IR_CARG to fix loop optimizations.
Thanks to Peter Cawley. #1244
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_opt_fold.c | 11 |
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) | |||
| 2171 | LJFOLD(XSNEW any any) | 2171 | LJFOLD(XSNEW any any) |
| 2172 | LJFOLDX(lj_ir_emit) | 2172 | LJFOLDX(lj_ir_emit) |
| 2173 | 2173 | ||
| 2174 | /* -- Miscellaneous ------------------------------------------------------- */ | ||
| 2175 | |||
| 2176 | LJFOLD(CARG any any) | ||
| 2177 | LJFOLDF(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: |
