diff options
author | Mike Pall <mike> | 2013-04-26 00:54:53 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2013-04-26 00:54:53 +0200 |
commit | 895a8bc91f1dc0c76f9cc4ae24f11bcb2ba121c3 (patch) | |
tree | 5aca518fe427c69ae712278248b50060dbaea500 | |
parent | 611ec41bcaeaf6641cffe22d6c5c9ff8d12b7321 (diff) | |
download | luajit-895a8bc91f1dc0c76f9cc4ae24f11bcb2ba121c3.tar.gz luajit-895a8bc91f1dc0c76f9cc4ae24f11bcb2ba121c3.tar.bz2 luajit-895a8bc91f1dc0c76f9cc4ae24f11bcb2ba121c3.zip |
Tighten requirements for non-default optimization flags.
FOLD is required for FWD/DSE optimizations.
-rw-r--r-- | src/lj_opt_fold.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index be50bf97..664550f1 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -2179,14 +2179,16 @@ TRef LJ_FASTCALL lj_opt_fold(jit_State *J) | |||
2179 | if (!(J->flags & JIT_F_OPT_FOLD) && irm_kind(lj_ir_mode[fins->o]) == IRM_N) | 2179 | if (!(J->flags & JIT_F_OPT_FOLD) && irm_kind(lj_ir_mode[fins->o]) == IRM_N) |
2180 | return lj_opt_cse(J); | 2180 | return lj_opt_cse(J); |
2181 | 2181 | ||
2182 | /* Forwarding or CSE disabled? Emit raw IR for loads, except for SLOAD. */ | 2182 | /* No FOLD, forwarding or CSE? Emit raw IR for loads, except for SLOAD. */ |
2183 | if ((J->flags & (JIT_F_OPT_FWD|JIT_F_OPT_CSE)) != | 2183 | if ((J->flags & (JIT_F_OPT_FOLD|JIT_F_OPT_FWD|JIT_F_OPT_CSE)) != |
2184 | (JIT_F_OPT_FWD|JIT_F_OPT_CSE) && | 2184 | (JIT_F_OPT_FOLD|JIT_F_OPT_FWD|JIT_F_OPT_CSE) && |
2185 | irm_kind(lj_ir_mode[fins->o]) == IRM_L && fins->o != IR_SLOAD) | 2185 | irm_kind(lj_ir_mode[fins->o]) == IRM_L && fins->o != IR_SLOAD) |
2186 | return lj_ir_emit(J); | 2186 | return lj_ir_emit(J); |
2187 | 2187 | ||
2188 | /* DSE disabled? Emit raw IR for stores. */ | 2188 | /* No FOLD or DSE? Emit raw IR for stores. */ |
2189 | if (!(J->flags & JIT_F_OPT_DSE) && irm_kind(lj_ir_mode[fins->o]) == IRM_S) | 2189 | if ((J->flags & (JIT_F_OPT_FOLD|JIT_F_OPT_DSE)) != |
2190 | (JIT_F_OPT_FOLD|JIT_F_OPT_DSE) && | ||
2191 | irm_kind(lj_ir_mode[fins->o]) == IRM_S) | ||
2190 | return lj_ir_emit(J); | 2192 | return lj_ir_emit(J); |
2191 | } | 2193 | } |
2192 | 2194 | ||